在 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. 權利:您可以隨時限制,恢復和刪除您的信息。