亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DPDK的高速數(shù)據(jù)包捕獲方法①

        2018-06-14 08:49:26任昊哲
        關(guān)鍵詞:網(wǎng)卡內(nèi)核報(bào)文

        任昊哲,年 梅

        (新疆師范大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,烏魯木齊 830054)

        引言

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

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

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

        (1)第一個(gè)報(bào)文到達(dá)時(shí)觸發(fā)網(wǎng)絡(luò)適配器硬件中斷,將該適配器放入輪詢(xún)表并關(guān)閉中斷請(qǐng)求.

        (2)系統(tǒng)激活一個(gè)軟中斷,在處理函數(shù)中對(duì)輪詢(xún)表上的設(shè)備進(jìn)行輪詢(xún),處理數(shù)據(jù)包.

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

        但是,以上方法主要是針對(duì)軟件數(shù)據(jù)俘獲中某一個(gè)方面的缺陷進(jìn)行了改進(jìn),隨著校園網(wǎng)出口帶寬的不斷增長(zhǎng),對(duì)出口數(shù)據(jù)俘獲的速度增長(zhǎng)要求越來(lái)越強(qiáng)烈,以上措施依然無(wú)法完全解決丟包的問(wèn)題,還需要針對(duì)軟件解包中的各種問(wèn)題進(jìn)行解決,從而最大限度體提升數(shù)據(jù)俘獲的性能,滿足高速網(wǎng)絡(luò)出口數(shù)據(jù)的獲取需要.

        1 Intel DPDK的基本原理

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

        近十年來(lái),一是由于老齡化社會(huì)發(fā)展迅速,老年人并發(fā)癥、夾雜癥多,往往需要往返多個(gè)專(zhuān)科就診;二是由于疾病譜的改變,惡性腫瘤、非傳染性慢性疾病發(fā)病率逐年增高,而醫(yī)學(xué)分科越來(lái)越細(xì),單一的科室或?qū)I(yè)無(wú)法準(zhǔn)確地診斷和制定最佳治療方案。這是MDT產(chǎn)生并發(fā)展的中國(guó)社會(huì)背景。

        (1) DPDK使用輪詢(xún)模式驅(qū)動(dòng)(Poll Mode Drivers,PMD)代替了傳統(tǒng)模式通過(guò)中斷的網(wǎng)卡接收和發(fā)送數(shù)據(jù)包的工作方式,將收到的數(shù)據(jù)包通過(guò)直接內(nèi)存存取模式(Direct Memory Access,DMA)傳輸?shù)絻?nèi)存中并直接交由應(yīng)用程序處理從而實(shí)現(xiàn)了零拷貝,極大地提升了收發(fā)包的性能.

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

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

        (4) CPU親和性:利用CPU親和性主要是將控制面線程以及各個(gè)數(shù)據(jù)面線程綁定到不同的CPU內(nèi)核,省卻了反復(fù)調(diào)度的性能消耗,同時(shí)支持NUMA架構(gòu)盡量訪問(wèn)本端內(nèi)存.

        (5) DPDK使用了rte_mbuf結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù)包,將數(shù)據(jù)結(jié)構(gòu)體部分和數(shù)據(jù)部分合在一起,因此只需要分配一次內(nèi)存即可,進(jìn)一步節(jié)省了分配內(nèi)存開(kāi)銷(xiāo),提高了數(shù)據(jù)接收和存儲(chǔ)的速度.

        綜上所述,DPDK針對(duì)傳統(tǒng)軟件俘獲數(shù)據(jù)包存在的問(wèn)題,全面地提出了相應(yīng)的解決方案.此外,從而能夠通過(guò)DPDK開(kāi)發(fā)高效的數(shù)據(jù)包捕獲軟件系統(tǒng),解決傳統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)包俘獲中丟包問(wèn)題,實(shí)現(xiàn)準(zhǔn)確高速網(wǎng)絡(luò)信息的獲取.

        2 基于DPDK數(shù)據(jù)包俘獲軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

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

        圖1 DPDK模塊集合

        利用DPDK提供的模塊實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)捕獲首先需要進(jìn)行CPU和網(wǎng)卡的綁定,接著申請(qǐng)大內(nèi)存頁(yè),然后使用接收數(shù)據(jù)包讀取網(wǎng)卡上接收的數(shù)據(jù),最后將數(shù)據(jù)進(jìn)行保存.具體實(shí)現(xiàn)流程圖如圖2所示,主要包括了以下幾個(gè)步驟:

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

        (2)創(chuàng)建網(wǎng)絡(luò)數(shù)據(jù)包的緩存池隊(duì)列以及存儲(chǔ)結(jié)構(gòu):使用init_mbuf相關(guān)API初始化pools以及mbuf;

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

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

        (5)使用自定義函數(shù)保存PCAP文件:調(diào)用自定義函數(shù)賦值PCAP結(jié)構(gòu)體構(gòu)造PCAP文件,完成后調(diào)用寫(xiě)盤(pán)接口將文件寫(xiě)入磁盤(pán),完成數(shù)據(jù)包捕獲.

        至此,該系統(tǒng)將所有發(fā)送到該網(wǎng)卡的網(wǎng)絡(luò)數(shù)據(jù)包抓取并保存在一個(gè)標(biāo)準(zhǔn)PCAP文件中,實(shí)現(xiàn)了數(shù)據(jù)包的捕獲和保存工作.

        3 實(shí)驗(yàn)分析

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

        圖2 數(shù)據(jù)包捕獲流程圖

        圖3 千兆帶寬下的數(shù)據(jù)包捕獲率

        圖4 萬(wàn)兆帶寬下的數(shù)據(jù)包捕獲率

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

        4 結(jié)束語(yǔ)

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

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

        2 王佰玲,方濱興,云曉春.零拷貝報(bào)文捕獲平臺(tái)的研究與實(shí)現(xiàn).計(jì)算機(jī)學(xué)報(bào),2005,28(1):46-52.

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

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

        5 張楠.基于IP網(wǎng)絡(luò)的通用數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].北京:北京郵電大學(xué),2015.

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

        猜你喜歡
        網(wǎng)卡內(nèi)核報(bào)文
        在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
        基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
        萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
        淺析反駁類(lèi)報(bào)文要點(diǎn)
        Server 2016網(wǎng)卡組合模式
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        ATS與列車(chē)通信報(bào)文分析
        亚洲免费国产中文字幕久久久 | 韩国美女主播国产三级| 中文字幕日韩精品永久在线| 精品日韩亚洲av无码| 久久夜色精品国产噜噜麻豆| 国产成人AV无码精品无毒| 国产三级三级三级看三级日本| 天天射综合网天天插天天干| 亚洲精品v欧洲精品v日韩精品| 八区精品色欲人妻综合网| 亚洲成熟丰满熟妇高潮XXXXX| 日韩麻豆视频在线观看| 国产两女互慰高潮视频在线观看 | 日日天干夜夜狠狠爱| 污污污污污污污网站污| 一区二区三区四区亚洲综合| 亚洲天堂久久午夜福利| 人妻少妇中文字幕乱码| 男女真实有遮挡xx00动态图| 日本一区二区三区在线播放| 国产精品国产三级久久| 亚洲中文字幕久久无码精品| 亚洲男人精品| 熟妇人妻丰满少妇一区| 国产精品天天看天天狠| 老色鬼永久精品网站| 国产视频最新| 精品一区二区三区a桃蜜| 国产欧美一区二区精品久久久| 日日摸夜夜添狠狠添欧美| 久久精品国产亚洲片| 97超碰国产成人在线| 无码人妻久久一区二区三区app| 国内精品久久久久影院优| 中文字幕人成乱码中文| 天天躁夜夜躁av天天爽| 成年女人毛片免费观看97 | 亚洲国产女同在线观看| 无码无套少妇毛多18pxxxx| 自拍偷自拍亚洲精品播放| 青青草视频国产在线观看|