在 FreeBSD 中,他们添加了对 Linux 中使用的 Netlink 协议的支持

FreeBSD的

FreeBSD 作为构建 Internet 和 Intranet 服务器的系统已经非常成熟。 它提供了相当可靠的网络服务和高效的内存管理。

几天前 消息发布 的基本代码 FreeBSD 采用了 通信协议的新实现 网联 (RFC 3549) 在 Linux 中用于在内核和用户空间中的进程之间进行通信。

插座系列 网联 是一个 Linux 内核接口,它 用于内核和用户空间进程之间的进程间通信(IPC) 以及不同用户空间进程之间,类似于 Unix 域套接字。

与 Unix 域套接字类似,但与 INET 套接字不同,Netlink 通信不能跨越主机边界。 然而,虽然 Unix 域套接字使用文件系统命名空间,但 Netlink 进程通常由进程标识符 (PID) 寻址。

Netlink 被设计用于传输各种网络信息 内核空间和用户空间进程之间。 网络实用程序,例如 iproute2 系列和用于配置基于 mac80211 的无线驱动程序的实用程序,使用 Netlink 从用户空间与 Linux 内核进行通信。 Netlink 为用户空间进程提供了一个标准的基于套接字的接口,并为内核模块提供了一个内核端 API 供内部使用。 Netlink 最初使用 AF_NETLINK 系列的套接字。

到目前为止,以目前的形式, Netlink 支持层允许 FreeBSD 使用 Linux ip 实用程序 iproute2 数据包的管理网络接口、设置 IP 地址、配置路由和操作存储用于将数据包转发到所需目的地的状态的下一跳对象。 稍微修改一下头文件后,就可以在Bird的路由包中使用Netlink了。

FreeBSD 的 Netlink 实现 被打包为可加载的内核模块 如果可能的话, 不影响其他内核子系统并创建单独的任务队列 (tasqueue) 通过协议处理传入的消息并以异步模式执行操作。 移植Netlink的原因是缺乏标准机制 与内核子系统交互,导致不同的子系统和驱动程序发明自己的协议。

网联 提供统一的通信层和可扩展的消息格式 它可以充当中间人,自动将来自不同来源的不同数据组合到一个请求中。 例如,像 devd、jail 和 pfilctl 这样的 FreeBSD 子系统可以移植到 Netlink,现在使用它们自己的 ioctl 调用,这将大大简化构建应用程序以使用这些子系统。 此外,使用 Netlink 修改路由堆栈中的下一跳对象和组将允许与用户空间路由进程更有效的交互。

接口、地址、路由、防火墙、fib、vnet 等。 通过netlink控制。 它是一种基于 TLV 的异步协议,提供 1-1 和 1-many 通信。 当前实现支持 NETLINK_ROUTE 系列的子集。 该实现还与 NETLINK_GENERIC 系列框架兼容。

目前实现的功能:

  • 获取有关路由、下一跳对象和组、网络接口、地址和相邻主机 (arp/ndp) 的信息。
  • 形成有关网络接口的出现和断开、地址的配置和删除、路由的添加和删除的通知。
  • 添加和删​​除路由、下一跳对象和组、网关、网络接口。
  • 与 Rtsock 接口集成以管理路由表。

值得一提的是,到目前为止,该项目仅限于支持 NETLINK_ROUTE 系列操作来管理内核中网络子系统的状态。

最后,如果你有兴趣能够了解更多,可以查阅详情 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。