多核CPU下基于PFRING和設(shè)備輪詢機制的高性能包捕獲技術(shù)研究_第1頁
多核CPU下基于PFRING和設(shè)備輪詢機制的高性能包捕獲技術(shù)研究_第2頁
多核CPU下基于PFRING和設(shè)備輪詢機制的高性能包捕獲技術(shù)研究_第3頁
多核CPU下基于PFRING和設(shè)備輪詢機制的高性能包捕獲技術(shù)研究_第4頁
多核CPU下基于PFRING和設(shè)備輪詢機制的高性能包捕獲技術(shù)研究_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、承諾安全承諾安全 承諾非凡承諾非凡 多核cpu下基于pf_ring和設(shè)備輪詢 機制的高性能包捕獲技術(shù)研究 中心:北京分公司 部門:研發(fā)部 姓名:齊戰(zhàn)勝 1 美亞柏科美亞柏科 股票代碼:300188 內(nèi)容提要 自我介紹 技術(shù)背景 理論知識 解決方案 參考資料 2 美亞柏科美亞柏科 股票代碼:300188 1 自我介紹 齊戰(zhàn)勝,研發(fā)部,北京分公司,軟件研發(fā)工程師 主要做協(xié)議分析、還原。參與的項目有抽查工具 、nf-7800、nf-9300、nf-9600等。 為了解決nf-7800的千兆抓包問題,開始研究 linux下高性能抓包的解決方法。 3 美亞柏科美亞柏科 股票代碼:300188 2 技術(shù)背

2、景 被動數(shù)據(jù)捕獲技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域有著極其豐 富的應(yīng)用。 如ids(入侵檢測系統(tǒng))、防火墻以及 一些部署在網(wǎng)絡(luò)出口的互聯(lián)網(wǎng)內(nèi)容分析系統(tǒng)等。 隨著網(wǎng)絡(luò)帶寬的增加,網(wǎng)絡(luò)傳輸速率的提高, 傳統(tǒng)的數(shù)據(jù)包捕獲技術(shù)越來越不能滿足要求。本 文從linux/unix平臺下的libpcap網(wǎng)絡(luò)數(shù)據(jù)包捕獲 函數(shù)庫入手,研究linux/unix平臺下高性能的數(shù)據(jù) 包捕獲解決方案。 4 美亞柏科美亞柏科 股票代碼:300188 3 理論知識 libpcap簡介 1)libpcap簡介 2)libpcap工作機制 3)libpcap抓包性能分 析 napi技術(shù)簡介 1)napi技術(shù)簡介 2)napi工作機制 3)nap

3、i的性能分析 5 美亞柏科美亞柏科 股票代碼:300188 3.1 libpcap簡介 3.1.1 libpcap簡介 libpcap是 unix/linux 平臺下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲的 函數(shù)庫。它是一個獨立于系統(tǒng)的用戶層包捕獲 api 接口, 為底層網(wǎng)絡(luò)監(jiān)聽提供了一個可移植的框架。 應(yīng)用:sniffer、wireshark、snort、tcpdump等。 6 美亞柏科美亞柏科 股票代碼:300188 3.1.1 libpcap簡介 libpcap特點 1)可從以太網(wǎng)、虛擬接口等一個或多個網(wǎng)絡(luò)接口 捕獲數(shù)據(jù)包; 2)平臺無關(guān)性; 3) 具有基于bpf的數(shù)據(jù)包過濾特性。 完善了系 統(tǒng)的數(shù)據(jù)包過濾體

4、系。 7 美亞柏科美亞柏科 股票代碼:300188 3.1.2 libpcap工作機制 libpcap組成 libpcap主要由兩部分組成: 網(wǎng)絡(luò)分接頭 (network tap) 和數(shù)據(jù)過濾器(packet filter)。 網(wǎng)絡(luò)分接頭從網(wǎng)絡(luò)設(shè)備驅(qū)動程序中收集數(shù)據(jù)拷貝 , 數(shù)據(jù)過濾器決定是否接受該數(shù)據(jù)包。 8 美亞柏科美亞柏科 股票代碼:300188 3.1.2 libpcap工作機制 libpcap捕包流程 libpcap的包捕獲機制就是在數(shù)據(jù)鏈 路層加一個旁路處理。當一個數(shù)據(jù)包 到達網(wǎng)絡(luò)接口時,libpcap首先利用 已經(jīng)創(chuàng)建的socket從鏈路層驅(qū)動程序 中獲得該數(shù)據(jù)包的拷貝,再通過t

5、ap 函數(shù)將數(shù)據(jù)包發(fā)給bpf過濾器。bpf 過濾器根據(jù)用戶已經(jīng)定義好的過濾規(guī) 則對數(shù)據(jù)包進行逐一匹配,匹配成功 則放入內(nèi)核緩沖區(qū)(一次拷貝),并傳 遞給用戶緩沖區(qū)(又一次拷貝),匹 配失敗則直接丟棄。如果沒有設(shè)置過 濾規(guī)則,所有數(shù)據(jù)包都將放入內(nèi)核緩 沖區(qū),并傳遞給用戶層緩沖區(qū)。 9 美亞柏科美亞柏科 股票代碼:300188 3.1.2 libpcap工作機制 程序框架 /* 第一步:查找可以捕獲數(shù)據(jù)包的設(shè)備 */ device = pcap_lookupdev(errbuf); /* 第二步:創(chuàng)建捕獲句柄,準備進行捕獲 */ p = pcap_open_live(device, 8000, 1

6、, 500, errbuf); /* 第三步:如果用戶設(shè)置了過濾條件,則編 譯和安裝過濾代碼 */ pcap_compile(p, ; ) while(ptr = (char *)(pcap_next(p, /* 第五步:對捕獲的數(shù)據(jù)進行類型轉(zhuǎn)換, 轉(zhuǎn)化成以太數(shù)據(jù)包類型 */ eth = (struct libnet_ethernet_hdr *)ptr; /* 第六步:對以太頭部進行分析,判斷所 包含的數(shù)據(jù)包類型,做進一步的處理 */ if(eth-ether_type = ntohs(ethertype_ip) if(eth-ether_type = ntohs(ethertype_arp

7、) /* 最后一步:關(guān)閉捕獲句柄,一個簡單技 巧是在程序初始化時增加信號處理函數(shù), 以便在程序退出前執(zhí)行本條代碼 */ pcap_close(p); 10 美亞柏科美亞柏科 股票代碼:300188 3.1.3 libpcap抓包性能分析 11 美亞柏科美亞柏科 股票代碼:300188 3.1.4 libpcap抓包性能分析 高速復雜網(wǎng)絡(luò)環(huán)境下libpcap丟包的原因主要有以 下兩個方面: 1)cpu處于頻繁中斷狀態(tài),造成接收數(shù)據(jù)包效率低下。 我們可以假想一個場景,我們使用標準的 100m 網(wǎng)卡,可能實際 達到的接收速率為 80mbits/s,而此時數(shù)據(jù)包最大長度為 1500bytes ,則每秒

8、產(chǎn)生的中斷數(shù)目為: 80m bits/s / (8 bits/byte * 1500 byte) = 6667 個中斷 /s。 數(shù)據(jù)包最短長度為46bytes,則每秒產(chǎn)生的中斷數(shù)目為: 80m bits/s / (8 bits/byte * 46 byte) = 217391 個中斷 /s。 每秒 6667到217391個中斷,對于系統(tǒng)是個很大的壓力。 2)數(shù)據(jù)包被多次拷貝,浪費了大量時間和資源。從網(wǎng)卡驅(qū)動到內(nèi)核 ,再從內(nèi)核到用戶空間。 12 美亞柏科美亞柏科 股票代碼:300188 3.2 napi技術(shù)簡介 3.2.1 napi技術(shù)簡介 napi(new api) 是 linux 上采用的一

9、種提高網(wǎng) 絡(luò)處理效率的技術(shù),它的核心概念就是不采用中 斷的方式讀取數(shù)據(jù),而代之以首先采用中斷喚醒 數(shù)據(jù)接收的服務(wù)程序,然后 poll 的方法來輪詢 數(shù)據(jù)。 13 美亞柏科美亞柏科 股票代碼:300188 3.2.2 napi的工作機制 經(jīng)過分析, 發(fā)現(xiàn)在復雜網(wǎng)絡(luò)環(huán)境中, 丟包率上升的原因是在捕 包過程中, cpu一直處于接收中斷狀態(tài), 而沒有把時間用于處理數(shù) 據(jù)包的過程中來, 也就是進入了系統(tǒng)中斷活鎖狀態(tài)。 利用napi技術(shù)的設(shè)備輪詢機制可以成功解決這個問題,napi機 制的具體特點如下: ( 1) 當網(wǎng)卡接收到一個數(shù)據(jù)包, 便產(chǎn)生一個中斷信號給系統(tǒng); ( 2) 系統(tǒng)進行如下操作: 關(guān)閉網(wǎng)卡中

10、斷(只是屏蔽了中斷信號,網(wǎng)卡仍然可以接收數(shù)據(jù)包 到緩沖隊列); 激活輪詢進程, 對該網(wǎng)卡進行輪詢(處理緩沖隊列); 打開網(wǎng)卡中斷(解除屏蔽中斷信號)。 14 美亞柏科美亞柏科 股票代碼:300188 3.2.2 napi的工作機制 15 美亞柏科美亞柏科 股票代碼:300188 3.2.2 napi的工作機制 使用napi的先決條件 1)網(wǎng)卡設(shè)備有dma(direct memory access) 硬件,要支持 dma 的環(huán)形輸入隊列(也就是 ring_dma)。 2)在發(fā)送/接收數(shù)據(jù)包產(chǎn)生中斷的時候有能力關(guān) 斷 nic 中斷的事件處理,并且在關(guān)斷 nic 以后, 并不影響數(shù)據(jù)包接收到網(wǎng)絡(luò)設(shè)備

11、的環(huán)形緩沖區(qū)( 以下簡稱 rx-ring)處理隊列中。 3)有防止nic隊列中排隊的數(shù)據(jù)包沖突的能力。 16 美亞柏科美亞柏科 股票代碼:300188 3.2.3 napi的性能分析 優(yōu)點 napi技術(shù)的使用減少了中斷的數(shù)目,讓整個操作 系統(tǒng)不必花費太多的時間在中斷現(xiàn)場的保護和恢 復上,以便把贏得的時間用來在我網(wǎng)絡(luò)層上的處 理數(shù)據(jù)的傳輸,確實大幅度增強了數(shù)據(jù)包捕獲能 力和系統(tǒng)響應(yīng)速度。 17 美亞柏科美亞柏科 股票代碼:300188 3.2.3 napi的性能分析 缺點 napi 存在一些比較嚴重的缺陷: 1)對于上層的應(yīng)用程序而言,系統(tǒng)不能在每個數(shù)據(jù)包接 收到的時候都可以及時地去處理它,而且

12、隨著傳輸速度增 加,累計的數(shù)據(jù)包將會耗費大量的內(nèi)存,經(jīng)過實驗表明在 linux 平臺上這個問題會比在 freebsd 上要嚴重一些; 2)另外一個問題是對于大的數(shù)據(jù)包處理比較困難,原因 是大的數(shù)據(jù)包傳送到網(wǎng)絡(luò)層上的時候耗費的時間比短數(shù)據(jù) 包長很多(即使是采用 dma 方式),所以正如前面所說 的那樣,napi 技術(shù)適用于對高速率的短長度數(shù)據(jù)包的處 理。 18 美亞柏科美亞柏科 股票代碼:300188 4 解決方案 pf_ring解決方案 pf_ring的tnapi的改進方案 pf_ring的dna的改進方案 pf_ring的安裝使用 19 美亞柏科美亞柏科 股票代碼:300188 4.1 pf

13、_ring解決方案 4.1.1 pf_ring簡介 pf_ring是luca研究出來的基于linux內(nèi)核級的 高效數(shù)據(jù)包捕獲技術(shù)。pf_ring可以把從一個網(wǎng) 絡(luò)接口抓到的數(shù)據(jù)包分發(fā)到多個cpu核心或者線程 中,以提高數(shù)據(jù)包處理能力。 20 美亞柏科美亞柏科 股票代碼:300188 4.2 pf_ring工作機制 在大數(shù)據(jù)包的網(wǎng)絡(luò)環(huán)境下, 設(shè)備輪詢機制表現(xiàn)出了較 高的捕包能力, 但是在小包大流量的網(wǎng)絡(luò)環(huán)境下, 設(shè)備 輪詢機制雖然比libpcap的表現(xiàn)好了很多, 但依然難以達 到讓人滿意的程度。 經(jīng)過進一步分析, 在數(shù)據(jù)包捕獲的過程中, cpu的 多數(shù)時間都被用在把網(wǎng)卡接收到的數(shù)據(jù)包經(jīng)過內(nèi)核的數(shù)

14、據(jù) 結(jié)構(gòu)隊列發(fā)送到用戶空間的過程中。 也就是說是從網(wǎng)卡 到內(nèi)核, 再從內(nèi)核到用戶空間, 這兩個步驟, 花去了大 量cpu時間, 而沒有其他時間用來進行數(shù)據(jù)包的進一步 處理。 pf_ring技術(shù)解決了這個問題。 21 美亞柏科美亞柏科 股票代碼:300188 4.1.2 pf_ring工作機制 pf_ring的邏輯結(jié)構(gòu)如下圖所示: pf_ring基本原理是將網(wǎng)卡接收 的數(shù)據(jù)包存儲在一個環(huán)狀緩存, 這也是為什么叫ring的原因,這 個環(huán)狀緩存有兩個接口,一個供 網(wǎng)卡向其中寫數(shù)據(jù)包,另一個為 應(yīng)用層程序提供讀取數(shù)據(jù)包的接 口,讀取數(shù)據(jù)包的接口通過mmap 函數(shù)(將一個文件或其它對象映 射進內(nèi)存)實現(xiàn)

15、的。 22 美亞柏科美亞柏科 股票代碼:300188 4.2 pf_ring工作機制 pf_ring優(yōu)點 1)減少了內(nèi)存拷貝次數(shù) 。 2) 可以把收到的數(shù)據(jù) 包分發(fā)到多個環(huán)形緩沖 區(qū),供多線程應(yīng)用程序 讀取。 23 美亞柏科美亞柏科 股票代碼:300188 4.2 pf_ring工作機制 3)支持集群功能。 pf-ring可以通過集群和平衡機制增加包捕獲程序的 性能。這些機制允許應(yīng)用程序只處理一部分數(shù)據(jù)包, 將其余數(shù)據(jù)包傳送給其它集群。 24 美亞柏科美亞柏科 股票代碼:300188 4.1.3 pf_ring工作模式 pf_ring有3中工作模式: pf_ring有三種透明模式(transp

16、arent_mode)。 為0時走的是linux標準的napi包處理流程; 為1時,包既走linux標準包處理流程,也copy給 pf_ring一份; 為2時,驅(qū)動只將包拷貝給pf_ring,內(nèi)核則不會接 收到這些包,1和2模式需要pf_ring特殊的網(wǎng)卡驅(qū) 動的支持。 25 美亞柏科美亞柏科 股票代碼:300188 4.1.3 pf_ring工作模式 模式0 26 美亞柏科美亞柏科 股票代碼:300188 4.1.3 pf_ring工作模式 模式1和模式2 27 美亞柏科美亞柏科 股票代碼:300188 4.1.4 pf_ring性能分析 i3 虛擬4核3.3ghz、rh 6.0系統(tǒng)、e10

17、00e網(wǎng)卡 28 美亞柏科美亞柏科 股票代碼:300188 4.1.4 pf_ring性能分析 i3 虛擬4核3.3ghz 、rh 6.0系統(tǒng)、e1000e網(wǎng)卡 29 美亞柏科美亞柏科 股票代碼:300188 4.1.4 pf_ring性能分析 雙核1.86ghz、ubuntu server 9.10、e1000網(wǎng)卡 30 美亞柏科美亞柏科 股票代碼:300188 4.1.4 pf_ring性能分析 雙核1.86ghz、ubuntu server 9.10、igb網(wǎng)卡 31 美亞柏科美亞柏科 股票代碼:300188 4.1.4 pf_ring性能分析 雙核1.86ghz和xeon2.5ghz、

18、ixgbe萬兆網(wǎng)卡 32 美亞柏科美亞柏科 股票代碼:300188 4.1.5 pf_ring的不足之處 目前大部分網(wǎng)卡都支持msi-x技術(shù),可以把傳入 的rx隊列分成幾個rx隊列,每個隊列對應(yīng)一個 cpu的核心。rss技術(shù)可以通過per-flow實現(xiàn)各 個rx隊列間的負載均衡。這樣的好處是可以充分 利用cpu的多核優(yōu)勢,提高對數(shù)據(jù)包的處理速度。 但是目前的pf_ring不能充分發(fā)揮這個優(yōu)勢。原 因分析如下: 33 美亞柏科美亞柏科 股票代碼:300188 4.1.5 pf_ring的不足之處 驅(qū)動程序仍然需要依次輪詢rx queue,而不能同時訪問 所有的rx queue。操作系統(tǒng)需要把這些

19、rx隊列河流到一 個接口供應(yīng)用程序讀取。當需要處理超大流量數(shù)據(jù)的時候 ,多核cpu的單核占用率很高,多核性能不能充分發(fā)揮。 34 美亞柏科美亞柏科 股票代碼:300188 4.1.6 pf_ring支持的網(wǎng)絡(luò)列表 broadcom系列 intel系列 1)e1000 2)e1000e 3)igb 4)ixgbe 35 美亞柏科美亞柏科 股票代碼:300188 4.2 pf_ring的tnapi的改進方案 36 美亞柏科美亞柏科 股票代碼:300188 4.2.1 pf_ring的tnapi的優(yōu)勢 tnapi優(yōu)勢 1)可以把流量分發(fā)到不同的核上,具有更好的擴展性。 2)能夠同時第從每個rx隊列輪

20、詢數(shù)據(jù)從而提高數(shù)據(jù)包讀 取性能。 3)通過pf_ring,可以實現(xiàn)用戶態(tài)的每一個線程對應(yīng)一個 rx隊列,避免使用信號量。 pf_ring tnapi大概是pf_ring napi的2倍。在 core2duo 1.86 ghz下可以跑出2.8mpps(2g流量)的成 績。 37 美亞柏科美亞柏科 股票代碼:300188 4.2.3 pf_ring的tnapi支持的網(wǎng)卡列表 千兆 intel 82576芯片電口網(wǎng)卡有:e1g42et、 e1g44et2、e1g44et。 intel 82580芯片電口網(wǎng)卡有:e1g44ht。 intel 82575芯片電口網(wǎng)卡有:e1g44at2。 萬兆 inte

21、l 82599芯片電口網(wǎng)卡:e10g42bt。 intel 82598芯片電口網(wǎng)卡:expx9501at、 e10g41at2、expx9502cx4。 38 美亞柏科美亞柏科 股票代碼:300188 4.3 pf_ring的dna的改進方案 4.3.1 dna簡介 pf_ring dna(direct nic access)通過把網(wǎng) 卡內(nèi)存和寄存器直接映射到用戶空間,這樣就可 以不通過napi,直接利用nic npu(network process unit)從網(wǎng)卡拷貝數(shù)據(jù)包到dma 的環(huán)形緩 沖區(qū)。這樣會降低cpu的利用率。缺點是一次只能 有一個應(yīng)用程序可以打開dma的環(huán)形緩沖區(qū),不 過現(xiàn)

22、在的網(wǎng)卡都支持多rx/tx隊列,因此可以通 過啟動多個應(yīng)用程序,每個應(yīng)用程序?qū)?yīng)一個 rx/tx隊列的方法來解決。 39 美亞柏科美亞柏科 股票代碼:300188 4.3.2 dna的工作機制 40 美亞柏科美亞柏科 股票代碼:300188 4.3.2 dna的性能分析 dna模式下,直接利用網(wǎng)卡處理單元進行數(shù)據(jù)包 的拷貝,降低了cpu的占用率。luca開發(fā)了 libzero dna 程序框架,即使在超大流量下, cpu的利用率也非常低。 由于dna模式下,不再使用napi poll,所以 pf_ring的數(shù)據(jù)包過濾功能就不支持了,目前 可以使用硬件層的數(shù)據(jù)包過濾,但只有intel的 8259

23、9網(wǎng)卡支持。 41 美亞柏科美亞柏科 股票代碼:300188 4.3.3 pf_ring的dna支持的網(wǎng)卡列表 intel系列 1)e1000 2)e1000e 3)igb 4)ixgbe 42 美亞柏科美亞柏科 股票代碼:300188 4.4 pf_ring安裝使用 下載地址 最新版本5.4.5,下載網(wǎng)址 http:/ g/。 43 美亞柏科美亞柏科 股票代碼:300188 4.4 pf_ring安裝使用 目錄結(jié)構(gòu) drivers/ drivers/broadcom/ drivers/intel/ drivers/myricom/ kernel/ 內(nèi)核有關(guān)的補丁 userland/ 用戶空間

24、代碼 userland/lib 用戶空間庫用于控制pf_ring userland/libpcap-xxx-ring pf_ring支持的libpcap增強庫 userland/examples/ 包計數(shù)應(yīng)用(使用它作為測試使用) 44 美亞柏科美亞柏科 股票代碼:300188 4.4 pf_ring安裝使用 編譯內(nèi)核 解壓縮pf_ring安裝包,進入到kernel目錄下編譯和安裝內(nèi)核補丁。 # tar -zxf pf_ring-5.4.5.tar.gz # cd pf_ring-5.4.5/kernel # make # sudo make install 內(nèi)核安裝需要root用戶權(quán)限 in

25、smod /kernel/pf_ring.ko transparent_mode=0|1|2 min_num_slots=xenable_tx_capture=1|0enable_ip_defrag=1|0q uick_mode=1|0 45 美亞柏科美亞柏科 股票代碼:300188 4.4 pf_ring安裝使用 編譯用戶空間pf_ring庫 進入到用戶空間庫userland/lib下,編譯和安裝。 # cd ./userland/lib。 # ./configure # make # sodu make install # rpm -qa libpcap 查看安裝的libpcap,如果有l(wèi)ibpcap則強制卸載 # rpm -e libpcap -nodefs # cd ./libpcap # ./configure # make # sudo make install 46 美亞柏科美亞柏科 股票代碼:300188 4.4 pf_ring安裝使用 進入到userland/examples目錄編譯例子程序。 # cd /userland/examples # make # ./pfcount -i eth0 捕獲eth0網(wǎng)口的數(shù)據(jù)報文 47 美亞柏科美亞柏科

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論