PFQ網(wǎng)絡(luò)監(jiān)控框架
PFQ 是一個(gè)支持多語言的網(wǎng)絡(luò)框架,主要用于 Linux 操作系統(tǒng)下進(jìn)行高效的包捕獲和傳輸,適用于多核處理器系統(tǒng)中的網(wǎng)絡(luò)監(jiān)控框架。
PFQ 專門為多核處理器而優(yōu)化,包括對(duì)多個(gè)硬件隊(duì)列的網(wǎng)絡(luò)設(shè)備優(yōu)化,支持任意網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng),并提供一個(gè)腳本用來加速和優(yōu)化對(duì)設(shè)備數(shù)據(jù)的獲取。
該框架可用來開發(fā)高性能的應(yīng)用,使用 C、C++11 和 Haskell 。此外 PFQ 還包含一個(gè)純函數(shù)語言 PFQ/lang 。
PFQ/lang 靈感來自于 Haskell 可以用來創(chuàng)建運(yùn)行在內(nèi)核空間中網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)之上的小應(yīng)用程序,例如用來創(chuàng)建高效的橋接程序、端口鏡像、簡單防火墻和網(wǎng)絡(luò)均衡器等等。
特性
完全無鎖和非堵塞架構(gòu)
預(yù)先分配 Socket 緩沖池
兼容絕大多數(shù)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)
Rx and Tx 10-Gbit line-rate (14,8Mpps), 基于 Intel ixgbe vanilla 驅(qū)動(dòng)
透明的支持核心線程,用于異步包交換
通過 socket 組并發(fā)監(jiān)控多線程應(yīng)用
通過隨機(jī)化哈希和固定分類進(jìn)行 Per-group 包管理
Per-group Berkeley 和 VLAN 過濾器.
內(nèi)核中用于包處理的函數(shù)化引擎: PFQ/lang v4.x.
為 C、C++11-14 和 Haskell 語言提供用戶空間庫
PFQ/lang as eDLS for C++11-14 and Haskell language.
加速的 pcap 庫用于包捕獲和傳輸
pfqd, 用來配置和并行化多實(shí)例傳統(tǒng)應(yīng)用的守護(hù)進(jìn)程.
pfq-omatic, 用來動(dòng)態(tài)加速 vanilla 驅(qū)動(dòng)的腳本
I/O user<->kernel 共享內(nèi)存 基于 HugePages
PFQ 的性能高度依賴于所運(yùn)行的硬件環(huán)境。在至強(qiáng)處理器、Intel 82599 10G 控制器上,PFQ 每秒可處理約 1480 萬的數(shù)據(jù)包(2 或者 3 核心線程),詳細(xì)配置請(qǐng)看 Intel processors.
