• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于DPDK的高速數據包捕獲方法①

      2018-06-14 08:49:26任昊哲
      計算機系統(tǒng)應用 2018年6期
      關鍵詞:網卡內核報文

      任昊哲,年 梅

      (新疆師范大學 計算機科學技術學院,烏魯木齊 830054)

      引言

      傳統(tǒng)軟件數據包捕獲通常采用基于操作系統(tǒng)內核的旁路機制,僅在系統(tǒng)內核協(xié)議棧處理數據包時捕獲數據包,整個數據包捕獲都或多或少的依賴操作系統(tǒng)內核協(xié)議棧,而操作系統(tǒng)內核收發(fā)包需要首先由網卡觸發(fā)中斷,CPU將數據包從網卡緩存拷貝到內核內存空間,經過內核協(xié)議棧處理后,再將數據包拷貝到用戶態(tài)內存空間.此過程中需要消耗大量CPU資源用于處理中斷、多次內存拷貝以及系統(tǒng)調用[2];此外系統(tǒng)普通內存頁只有4 KB,內存訪問速度慢,協(xié)議棧處理也將造成大量的性能消耗[3].以上原因導致軟件數據包俘獲中消耗了大量資源,使得網絡高負載時系統(tǒng)資源被耗盡造成了數據包捕獲時大量丟包.

      為了提高軟件數據包捕獲的效率解決軟件數據俘獲系統(tǒng)中的丟包問題,研究人員針對性的進行了優(yōu)化并設計出了不少高速數據包俘獲框架,McCanne與Jacobson提出了一種基于Unix內核的伯克利封包過濾器BPF的數據包過濾機制,BPF可按照規(guī)則過濾無用數據包以提升數據包捕獲性能[4].tcpdump、Libpcap都使用到了這種機制,但這種機制沒有改進捕獲流程中系統(tǒng)資源消耗過大的問題.

      為了解決系統(tǒng)資源大量被中斷處理消耗的問題,Linux在2.5內核之后開始使用NAPI(NEW API)來處理接收到的數據包,其主要進行了以下改進[5]:

      (1)第一個報文到達時觸發(fā)網絡適配器硬件中斷,將該適配器放入輪詢表并關閉中斷請求.

      (2)系統(tǒng)激活一個軟中斷,在處理函數中對輪詢表上的設備進行輪詢,處理數據包.

      (3)直到本次處理時間片用完或者報文接收處理完畢,重新開啟該網絡適配器中斷請求.NAPI可以明顯減少硬中斷,提高高速流量負載網絡下的報文捕獲性能.Luca Deri開發(fā)了數據包捕獲函數庫pf_ring.它將網卡接收的數據包儲存在內核層的一個環(huán)狀緩存中,網卡通過驅動程序支持的NAPI像緩存中寫入數據.應用程序通過MMAP直接讀取緩存數據,消除了數據包從內核態(tài)到用戶態(tài)的內存拷貝,極大的提高了數據包捕獲的效率.

      但是,以上方法主要是針對軟件數據俘獲中某一個方面的缺陷進行了改進,隨著校園網出口帶寬的不斷增長,對出口數據俘獲的速度增長要求越來越強烈,以上措施依然無法完全解決丟包的問題,還需要針對軟件解包中的各種問題進行解決,從而最大限度體提升數據俘獲的性能,滿足高速網絡出口數據的獲取需要.

      1 Intel DPDK的基本原理

      為了更全面地解決軟件方式的數據包轉發(fā)和捕獲效率低下的問題,6WIND,Intel等多家公司,針對Intel的CPU和網卡開發(fā)了數據包轉發(fā)處理套件DPDK.DPDK是一套強大、高度優(yōu)化的用于數據包處理的函數庫和驅動集合,可以幫助用戶將控制面和數據面平臺進行整合,從而能有效地執(zhí)行數據包處理[6],可以極大地提高數據處理性能和吞吐量并提高效率.和傳統(tǒng)的網絡數據包俘獲方式相比DPDK主要進行了以下改進:

      近十年來,一是由于老齡化社會發(fā)展迅速,老年人并發(fā)癥、夾雜癥多,往往需要往返多個??凭驮\;二是由于疾病譜的改變,惡性腫瘤、非傳染性慢性疾病發(fā)病率逐年增高,而醫(yī)學分科越來越細,單一的科室或專業(yè)無法準確地診斷和制定最佳治療方案。這是MDT產生并發(fā)展的中國社會背景。

      (1) DPDK使用輪詢模式驅動(Poll Mode Drivers,PMD)代替了傳統(tǒng)模式通過中斷的網卡接收和發(fā)送數據包的工作方式,將收到的數據包通過直接內存存取模式(Direct Memory Access,DMA)傳輸到內存中并直接交由應用程序處理從而實現了零拷貝,極大地提升了收發(fā)包的性能.

      (2)運行在用戶空間的I/O技術(UIO):使用UIO機制使網卡驅動程序運行在用戶態(tài),將原本在內核態(tài)的處理的工作直接交由用戶態(tài)應用程序處理,避免了不必要的內核態(tài)和用戶態(tài)之間的系統(tǒng)調度,提高了執(zhí)行效率.

      (3)大內存頁面技術:DPDK通過綁定2 MB或者是1 GB的huge內存頁來代替?zhèn)鹘y(tǒng)的4 KB普通頁,提高內存使用效率讓程序盡量獨占內存防止內存換出,擴大頁表提高hash命中率,提升數據俘獲中頁面查找的速率.

      (4) CPU親和性:利用CPU親和性主要是將控制面線程以及各個數據面線程綁定到不同的CPU內核,省卻了反復調度的性能消耗,同時支持NUMA架構盡量訪問本端內存.

      (5) DPDK使用了rte_mbuf結構來存儲數據包,將數據結構體部分和數據部分合在一起,因此只需要分配一次內存即可,進一步節(jié)省了分配內存開銷,提高了數據接收和存儲的速度.

      綜上所述,DPDK針對傳統(tǒng)軟件俘獲數據包存在的問題,全面地提出了相應的解決方案.此外,從而能夠通過DPDK開發(fā)高效的數據包捕獲軟件系統(tǒng),解決傳統(tǒng)網絡數據包俘獲中丟包問題,實現準確高速網絡信息的獲取.

      2 基于DPDK數據包俘獲軟件系統(tǒng)的設計與實現

      DPDK提供了x86平臺下的報文數據包處理庫和驅動集合,包括數據包的接收和發(fā)送等模塊,為開發(fā)高速數據包俘獲系統(tǒng)提供了必須的接口,其包含的模塊集合如圖1所示主要的數據包接收模塊.

      圖1 DPDK模塊集合

      利用DPDK提供的模塊實現網絡數據捕獲首先需要進行CPU和網卡的綁定,接著申請大內存頁,然后使用接收數據包讀取網卡上接收的數據,最后將數據進行保存.具體實現流程圖如圖2所示,主要包括了以下幾個步驟:

      (1) 初始化環(huán)境抽象層(Environment Abstraction Layer,EAL):使用 rte_eal_init(argc,argv)模塊,獲取系統(tǒng)可用CPU的數量、建立日志文件、查詢可用PCI網卡設備、掛載巨頁內存并申請可用內存、創(chuàng)建lcore主線程綁定CPU并最終完成EAL的初始化;

      (2)創(chuàng)建網絡數據包的緩存池隊列以及存儲結構:使用init_mbuf相關API初始化pools以及mbuf;

      (3) 初始化抓包端口進行并配置:使用init_port(ports->id[i])查看和配置對應端口的狀態(tài);

      (4)讀取接收到的數據包:使用rte_eth_rx_burst接收數據;

      (5)使用自定義函數保存PCAP文件:調用自定義函數賦值PCAP結構體構造PCAP文件,完成后調用寫盤接口將文件寫入磁盤,完成數據包捕獲.

      至此,該系統(tǒng)將所有發(fā)送到該網卡的網絡數據包抓取并保存在一個標準PCAP文件中,實現了數據包的捕獲和保存工作.

      3 實驗分析

      為了測試系統(tǒng)性能,本文分別對使用DPDK和LIBPCAP搭建的網絡數據俘獲系統(tǒng)進行了平行實驗測試.首先選擇了兩臺聯想PC機,均配備了萬兆網卡,一臺作為數據包發(fā)送機,一臺為數據包抓取機,在實驗中分別發(fā)送64 B、512 B和1500 B的數據包進行測試.實現對不同捕包平臺和不同大小的數據包、丟包率進行比較.其中收包率是指實驗中實際收到的數據包所占發(fā)出的數據包的比例.測試的結果分別如圖3和圖4所示.

      圖2 數據包捕獲流程圖

      圖3 千兆帶寬下的數據包捕獲率

      圖4 萬兆帶寬下的數據包捕獲率

      由以上實驗結果可以看出傳統(tǒng)模式下基于Libpcap的數據包捕獲系統(tǒng)在千兆網絡下已經有了大量的丟包,而基于DPDK的數據包捕獲系統(tǒng)則能在千兆網絡下達到線性速度,在萬兆網絡下除了64 B數據包捕獲率為75.6%,512 B和1500 B的數據包捕獲率都接近90%,分析其原因主要在于Libpcap工具存在大量的系統(tǒng)調用和進程上下文切換開銷,大部分系統(tǒng)資源都浪費在兩次內存拷貝和系統(tǒng)調用中.經過測試基于DPDK的數據包捕獲系統(tǒng),極大地提升了數據包捕獲的性能,并且能夠按照應用的要求進行網絡應用數據采集的擴展和配置.

      4 結束語

      本文針對高速大容量網絡出口數據俘獲的需要,并在對DPDK的相關技術特點以及軟件數據包捕獲機制進行分析的基礎上,設計實現了基于DPDK的軟件數據包俘獲系統(tǒng),通過與傳統(tǒng)數據包俘獲軟件進行實驗對比證明,該系統(tǒng)在數據包捕獲率方面有較大的性能提升,系統(tǒng)雖然最終受磁盤寫入性能以及實驗機的CPU核心數的限制并沒有達到萬兆線性速度,但也為后續(xù)優(yōu)化并達到萬兆網絡線性速度數據包捕捉提供了思路,同時也為高速數據過濾提供了技術參考.

      1 徐慧,姜恒,楊林.PF_RING高效數據包捕獲技術研究與設計.計算機科學,2012,39(10S):88-89,114.

      2 王佰玲,方濱興,云曉春.零拷貝報文捕獲平臺的研究與實現.計算機學報,2005,28(1):46-52.

      3 王佰玲,方濱興,云曉春.傳統(tǒng)報文捕獲平臺性能影響因素分析.計算機工程與應用,2003,(22):151-152.[doi:10.3321/j.issn:1002-8331.2003.22.049]

      4 楊銘.伯克利數據包過濾器的探索與研究.科技創(chuàng)新與應用,2014,(33):92.

      5 張楠.基于IP網絡的通用數據采集系統(tǒng)的設計與實現[碩士學位論文].北京:北京郵電大學,2015.

      6 趙寧,謝淑翠.基于dpdk的高效數據包捕獲技術分析與應用.計算機工程與科學,2016,38(11):2209-2215.[doi:10.3969/j.issn.1007-130X.2016.11.008]

      猜你喜歡
      網卡內核報文
      在DDS 中間件上實現雙冗余網卡切換的方法
      基于J1939 協(xié)議多包報文的時序研究及應用
      汽車電器(2022年9期)2022-11-07 02:16:24
      萬物皆可IP的時代,我們當夯實的IP內核是什么?
      現代裝飾(2022年4期)2022-08-31 01:41:24
      強化『高新』內核 打造農業(yè)『硅谷』
      CTCS-2級報文數據管理需求分析和實現
      淺析反駁類報文要點
      中國外匯(2019年11期)2019-08-27 02:06:30
      Server 2016網卡組合模式
      基于嵌入式Linux內核的自恢復設計
      Linux內核mmap保護機制研究
      ATS與列車通信報文分析
      浦北县| 莲花县| 邵阳市| 巴塘县| 黄龙县| 兴化市| 社旗县| 大名县| 大同市| 梨树县| 扬中市| 睢宁县| 渭源县| 南丹县| 天峻县| 和政县| 清水县| 鄯善县| 班戈县| 彭山县| 通江县| 万州区| 株洲县| 台江县| 修文县| 沙洋县| 汕尾市| 赫章县| 临武县| 广东省| 团风县| 南丹县| 滦南县| 通海县| 如东县| 平昌县| 南郑县| 陵水| 祁阳县| 依安县| 汝城县|