用于多核架構的Linux網絡框架:PFQ

jopen 10年前發布 | 17K 次閱讀 PFQ 網絡工具包

PFQ是一個設計用于Linux操作系統的網絡框架,能夠高效地進行包捕獲和傳輸,內核處理功能,跨sockets包轉發。

PFQ 專門為多核處理器而優化,包括對多個硬件隊列的網絡設備優化,支持任意網絡設備驅動,并提供一個腳本用來加速和優化對設備數據的獲取。

該框架可用來開發高性能的應用,使用 C、C++11 和 Haskell 。此外 PFQ 還包含一個純函數語言 PFQ/lang 。

PFQ/lang 靈感來自于 Haskell 可以用來創建運行在內核空間中網絡設備驅動之上的小應用程序,例如用來創建高效的橋接程序、端口鏡像、簡單防火墻和網絡均衡器等等。

特性

  • 完全無鎖和非堵塞架構

  • 預先分配 Socket 緩沖池

  • 兼容絕大多數網絡設備驅動

  • Rx and Tx 10-Gbit line-rate (14,8Mpps), 基于 Intel ixgbe vanilla 驅動

  • 透明的支持核心線程,用于異步包交換

  • 通過 socket 組并發監控多線程應用

  • 通過隨機化哈希和固定分類進行 Per-group 包管理

  • Per-group Berkeley 和 VLAN 過濾器.

  • 內核中用于包處理的函數化引擎: PFQ/lang v4.x.

  • 為 C、C++11-14 和 Haskell 語言提供用戶空間庫

  • PFQ/lang as eDLS for C++11-14 and Haskell language.

  • 加速的 pcap 庫用于包捕獲和傳輸

  • pfqd, 用來配置和并行化多實例傳統應用的守護進程.

  • pfq-omatic, 用來動態加速 vanilla 驅動的腳本

  • I/O user<->kernel 共享內存 基于 HugePages

PFQ 的性能高度依賴于所運行的硬件環境。在至強處理器、Intel 82599 10G 控制器上,PFQ 每秒可處理約 1480 萬的數據包(2 或者 3 核心線程),詳細配置請看 Intel processors.


項目主頁:http://www.baiduhome.net/lib/view/home/1421023770031

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!