PF_RING?
PF_RING?是一種新型的網(wǎng)絡(luò )套接字,可顯著(zhù)提高數據包捕獲速度,并且具有以下特性:
1. 適用于Linux內核2.6.32及更高版本。
2. 無(wú)需修補內核:只需加載內核模塊。
3. 使用商用網(wǎng)絡(luò )適配器的10 Gbit硬件數據包過(guò)濾
4. 用戶(hù)空間ZC(新一代DNA,Direct NIC Access,直接NIC訪(fǎng)問(wèn))驅動(dòng)程序可實(shí)現極高的數據包捕獲/傳輸速度,這是因為NIC NPU(網(wǎng)絡(luò )處理單元)在沒(méi)有任何內核干預的情況下將數據包從用戶(hù)域推送/獲取數據包。使用10Gbit ZC驅動(dòng)程序,您可以以線(xiàn)速發(fā)送或接收任何大小的數據包。
5. PF_RING ZC庫,用于在線(xiàn)程、應用程序、虛擬機之間以零拷貝分發(fā)數據包。
6. 設備驅動(dòng)程序獨立。
7. 支持Accolade,Exablaze,Endace,Fiberblaze,Inveatech,Mellanox,Myricom / CSPI,Napatech,Netcope和Intel(ZC)網(wǎng)絡(luò )適配器。
8. 基于內核的數據包捕獲和采樣。
9. Libpcap支持(請參見(jiàn)下文)可與現有的基于pcap的應用程序無(wú)縫集成。
10. 除BPF外,還可以指定數百個(gè)標題過(guò)濾器。
11. 內容檢查,以便僅通過(guò)與有效負載過(guò)濾器匹配的數據包。
12. PF_RING?插件,用于高級數據包解析和內容過(guò)濾。
Vanilla PF_RING?
PF_RING?正在通過(guò)Linux NAPI輪詢(xún)來(lái)自NIC的數據包。這意味著(zhù)NAPI將數據包從NIC復制到PF_RING?循環(huán)緩沖區,然后userland應用程序從環(huán)讀取數據包。在這種情況下,有兩個(gè)輪詢(xún)程序,即應用程序和NAPI,這會(huì )導致用于此輪詢(xún)的CPU周期。優(yōu)點(diǎn)是PF_RING?可以將傳入的數據包同時(shí)分發(fā)到多個(gè)環(huán)(因此有多個(gè)應用程序)。
PF_RING?模塊
PF_RING?具有模塊化架構,可以使用除標準PF_RING?內核模塊以外的其他組件。當前,其他模塊集包括:
ZC模塊。查看ZC頁(yè)面以獲取更多信息。
基于FPGA的板卡模塊。這些模塊增加了對許多供應商的支持,包括Accolade,Exablaze,Endace,Fiberblaze,Inveatech,Mellanox,Myricom / CSPI,Napatech,Netcope。
堆棧模塊。該模塊可用于將數據包注入linux網(wǎng)絡(luò )堆棧。
時(shí)間軸模塊。該模塊可用于使用PF_RING?API從n2disk轉儲集中無(wú)縫提取流量。
Sysdig模塊。該模塊使用sysdig內核模塊捕獲系統事件。
誰(shuí)需要PF_RING??
基本上每個(gè)人都必須每秒處理許多數據包。這里的“許多”根據您用于流量分析的硬件而變化。它的范圍可以從1.2GHz ARM上的80k pkt / sec 到低端2.5GHz Xeon上的14M pkt / sec ,甚至更高。PF_RING?不僅使您可以更快地捕獲數據包,還可以更有效地捕獲數據包,從而節省CPU周期。這里列了一些數據,您可以看到nProbe(NetFlow v5 / v9探針)可以使用PF_RING?運行多快,或者看看下面的表格。
使用Core2Duo 1.86 GHz,Ubuntu Server 9.10(內核2.6.31-14)和IXIA 400流量生成器以線(xiàn)速(64字節數據包,1.48 Mpps)注入流量進(jìn)行的1Gbit測試:
注意
pfcount是在PF_RING?之上編寫(xiě)的應用程序,而pcount是在libcap-over-PF_RING?之上編寫(xiě)的。由于應用程序只是在不進(jìn)行額外處理的情況下統計數據包,因此pfcount(帶有-a表示活動(dòng)數據包輪詢(xún))有時(shí)會(huì )較慢,但是pcount需要支付libpcap費用。這可以通過(guò)以下事實(shí)來(lái)證明:pfcount比pcount更快地處理數據包,因此它消耗所有可用數據包的速度更快,因此它更頻繁地調用poll()(即等待傳入數據包)。由于poll()相當昂貴,因此在這種特殊情況下,pcount性能要優(yōu)于pfcount。通常,應用程序除了對數據包進(jìn)行計數外還必須對數據包做一些事情,因此,基于純PF_RING?的應用程序的性能應優(yōu)于基于pcap的應用程序。
即使在低端Core2Duo PF_RING?ZC(新一代DNA)上也可以進(jìn)行線(xiàn)速數據包捕獲。