一、pfring(pf_ring)簡介網絡
pfring(pf_ring)主頁http://www.ntop.org/products/pf_ring/;tcp
pfring(pf_ring)是一種加速處理數據包的實現方法,可以比較有效地提升網卡獲取和發送數據包的速度,相似所謂的「零拷貝」技術;測試
pfring(pf_ring)的安裝包中帶有支持pfring(pf_ring)的libpcap,與原版的libpcap接口兼容;spa
二、e100e網卡上安裝pfring(pf_ring)接口
下載pfring(pf_ring),地址爲http://www.ntop.org/get-started/download/#PF_RING文檔
按照文檔中的說明進行編譯:get
cd PF_RING/kernel make sudo insmod ./pf_ring.ko cd ../userland make源碼
源碼目錄結構以下:編譯
drivers:支持pfring的網絡驅動,要是用使用pfring的話,須要進入到相應的驅動目錄用make install命令安裝;下載
kernel:內核模塊代碼;好像是5.0之後的pfring都不準要從新編譯內核,只須要按照上面的命令編譯經過之後,插入模塊sudo insmod ./pf_ring.ko就能使用;
userland:pfring提供的用戶應用程序,主要包括libpcap-1.1.1-ring(支持pfirng 的libpcap,若是要用pfring,須要卸載掉原來的libpcap安裝此libpcap)、tcpdump-4.1.1(支持pfring的tcpdump,可用來測試pfring的抓包速率)、examples(一些pfring用例,包括pfcount:一個支持數據包統計程序;pcount:未支持pfring的數據包統計程序;pfsend:支持pfring的數據包發送程序)、snort(基於pfring的snortsp的DAQ模塊);
按照上面的方法編譯完成之後,進入本身的網絡驅動對應的drivers目錄,個人驅動時e1000e,則進入PF_RING-5.0.0/drivers/PF_RING_aware/intel/e1000e/e1000e-1.3.10a/src目錄,make,makeinstall之後,新的支持pfring的e1000e驅動就安裝好了,用rmmod e1000e卸載掉舊驅動,新的就會自動加載; 三、pfring(pf_ring)用法
在用支持pfring的抓包程序來抓包之前,還須要插入pr_ring模塊,命令以下:insmod pf_ring.ko transparent_mode=2;關於pf_ring選項,在下一篇文章中講;
此時,就能夠用pfring帶的tcpdump和pfcount來抓包了。
pfring對小包的提速效果較好,我用千兆的發包儀器線速發包,對於64的小包,pfring的接受速率時通常的libpcap的2-3倍;可是對於1518的大包,速度好像就差很少了。
注意:本身程序若是要是用pfring,則須要安裝pfring自帶的libpcap-ring(在源碼包中),從新編譯程序;
四、pfring(pf_ring)安裝過程當中遇到的問題
pfring(fp_ring)使用過程當中的kernel panic(內核崩潰):
初步測試,認爲是多個使用pfring的程序同時抓包致使,同一時刻只是用一個pfring程序,通常不會出現此問題;