發布 F-Stack 1.24,一個用戶空間網路堆疊

F-Stack 1.24 已發布,這是一個基於 FreeBSD 網路協定堆疊的使用者空間版本,它利用 DPDK 框架以實現最佳效能。該項目由中國最大的電信公司騰訊創建,並應用於騰訊的產品和服務。程式碼使用 C 語言編寫,並以 BSD 許可證發布。它支持 Linux 以及 FreeBSD。

F-Stack 使應用程式能夠使用獨立於作業系統網路協定堆疊的本機網路協定棧,在使用者空間中運作並直接與網路裝置互動。 F-Stack 的定位是提高網路請求處理程序在標準協定堆疊效能不足的情況下的效能。 TCP/IP 核心堆疊 Linux 這會成為瓶頸並限制擴展性——在某些情況下,該專案允許處理的小型網路請求數量顯著增加。理論上,F-Stack 允許所用網路卡的網路效能達到其上限。

透過消除複製網路封包、調度執行緒、處理中斷和使用系統呼叫等操作來實現效能改進。為了與網卡交互,繞過作業系統核心接口,使用 DPDK(資料平面開發套件)框架,該框架開發了一組用於網路適配器低階工作的函式庫。 DPDK使得降低開銷成本並滿足接收或發送網路資料包時的最小CPU週期數成為可能。

功能 TCP/IP 此協定棧對應於 FreeBSD 13 網路協定棧,並已從該作業系統中分離出來,成為一個獨立的函式庫。應用程式開發可以使用標準的 POSIX API(socket、epoll、kqueue)或專有的基於微線程的 API,這簡化了網路應用程式的創建,並消除了對複雜非同步請求處理邏輯的需求。

此專案支援多協定的 F-Stack 轉換版本 服務器 Nginx 1.25.2 和 Redis 6.2.6 資料庫管理系統,效能優於在系統網路堆疊上運行的標準建置。

新版本中最顯著的變化:

  • config.ini 設定檔提供了使用 KNI(核心 NIC 介面)和 virtio_user 作為在內核和基於 DPDK 的封包處理應用程式之間傳遞封包的傳輸的選擇。新增了對 KNI 使用速率限制的功能。
  • 新增了啟用網路堆疊設定「net.add_addr_allfibs=1」以將位址新增至所有路由表的支援。
  • 新增ff_get_traffic API來接收流量,例如實作QoS(服務品質)。
  • 新增了函數 pthread_create 和 pthread_join,讓人想起 POSIX 中的類似函數。
  • 新增了 ff_dpdk_raw_packet_send API,以便應用程式直接透過 DPDK 而不是透過套接字發送原始資料包。
  • 實現了對自動 VLAN 配置、路由和策略路由的支援。
  • 已過渡到 DPDK 版本 22.11.6 LTS。
  • F-Stack 之上的 Nginx 實作增加了對流模組的支援。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster