PF_RING FT (Flow Table)
大多數(shù)網(wǎng)絡(luò)監(jiān)控和安全應(yīng)用都基于流處理,包括數(shù)據(jù)包捕獲、解碼和分類。PF_RING?是一個(gè)靈活的框架,可用于加速數(shù)據(jù)包捕獲,利用PF_RING?ZC驅(qū)動(dòng)程序或?qū)S眠m配器,并提取數(shù)據(jù)包元數(shù)據(jù)。這讓應(yīng)用程序?qū)W⒂跀?shù)據(jù)包處理,而不是處理數(shù)據(jù)包捕獲和數(shù)據(jù)包解析,同時(shí)以最佳性能運(yùn)行。
PF_RING?FT更進(jìn)一步,它在數(shù)據(jù)包分類活動(dòng)中協(xié)助任何流處理應(yīng)用程序。PF_RING?FT實(shí)現(xiàn)了可用于跟蹤流的流表,并提供了許多掛鉤,以便能夠自定義和擴(kuò)展它,以便在其上構(gòu)建任何類型的應(yīng)用程序,包括探針、IDS、IPS、L7防火墻。
盡管PF_RING?隨PF_RING?一起分發(fā),但該庫(kù)可與任何第三方數(shù)據(jù)包捕獲框架(包括Libpcap和DPDK)一起使用,因?yàn)樗臄?shù)據(jù)輸入API與捕獲無(wú)關(guān)。
清晰簡(jiǎn)單的API
在PF_RING?FT之上設(shè)計(jì)和實(shí)現(xiàn)流處理應(yīng)用程序非常簡(jiǎn)單,因?yàn)樗峁┝饲逦腁PI,可用于在幾行代碼中完成復(fù)雜的工作。以下代碼段顯示了如何使用PF_RING?FT輕松捕獲流量并導(dǎo)出流信息。有關(guān)完整的代碼示例,請(qǐng)查看PF_RING?中可用的演示應(yīng)用程序。
事件hooks
在PF_RING?FT之上設(shè)計(jì)的應(yīng)用程序流是事件驅(qū)動(dòng)的。通過(guò)幾個(gè)hooks,可以注冊(cè)諸如“新流”,“流過(guò)期”,“數(shù)據(jù)包分類”之類的事件,并訪問(wèn)流信息,以便基于流狀態(tài)計(jì)算動(dòng)作??梢允褂脩?yīng)用程序定義的自定義元數(shù)據(jù)擴(kuò)展流信息。
nDPI集成
PF_RING?FT與nDPI本地集成在一起,可直接提供L7協(xié)議信息。應(yīng)用程序本身不需要直接處理nDPI庫(kù),因?yàn)樗惺虑槎荚谀缓蟀l(fā)生,獲取L7協(xié)議就像通過(guò)API啟用L7檢測(cè)并從流元數(shù)據(jù)中讀取L7協(xié)議一樣容易。除了協(xié)議檢測(cè)之外,PF_RING?FT還利用nDPI類別和Intel Hyperscan對(duì)模式匹配的支持對(duì)流量進(jìn)行了分類。
L7過(guò)濾和分流
PF_RING?FT具有L7過(guò)濾引擎,可以供內(nèi)聯(lián)應(yīng)用程序使用,以根據(jù)應(yīng)用程序協(xié)議過(guò)濾流。除了內(nèi)置的過(guò)濾引擎之外,應(yīng)用程序還可以根據(jù)自定義策略標(biāo)記流以對(duì)其進(jìn)行過(guò)濾或分流。
IDS加速
PF_RING?FT L7過(guò)濾引擎還可用于加速CPU綁定的應(yīng)用程序,例如IDS / IPS(包括Suricata,Bro和Snort)以及基于應(yīng)用程序協(xié)議的分流。丟棄大象流已成為減少IDS / IPS需要檢查的通信量(通常是多媒體通信量)的一種常見(jiàn)而有效的做法,從而顯著減少數(shù)據(jù)包丟失并改善系統(tǒng)性能。
Suricata具有使用eBPF分流大象流的本地支持(旁路),這意味著一旦檢測(cè)到大象流,該應(yīng)用程序就會(huì)在內(nèi)核空間中注入過(guò)濾規(guī)則(5元組)。這種方法有局限性:它要求Suricata中的規(guī)則集能夠檢測(cè)所有多媒體協(xié)議,數(shù)據(jù)包解析不靈活,因?yàn)閑BPF程序無(wú)法循環(huán)(它不適用于封裝,包括vlan和QinQ),不能保持流狀態(tài)(處理流過(guò)期非常復(fù)雜)。
利用PF_RING?FT,基于PF_RING或基于Libpcap的應(yīng)用程序可以利用L7分流,而無(wú)需更改任何代碼行。由于PF_RING?FT基于nDPI進(jìn)行協(xié)議檢測(cè),因此過(guò)濾多媒體流量信息只在配置文件中列出協(xié)議名稱。
性能
PF_RING?FT經(jīng)過(guò)高度優(yōu)化,能夠在低端Xeon E3上使用單個(gè)CPU內(nèi)核處理10 Gbit的線速,并在多核系統(tǒng)上擴(kuò)展至100 Gbit。您可以使用github上的演示應(yīng)用程序自己進(jìn)行測(cè)試。