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

        ?

        零拷貝技術(shù)在網(wǎng)絡(luò)流量控制系統(tǒng)中的應(yīng)用

        2013-08-05 09:39:44張素娟馬軍
        關(guān)鍵詞:拷貝網(wǎng)卡內(nèi)核

        張素娟,馬軍

        (河北聯(lián)合大學(xué)網(wǎng)絡(luò)中心,河北唐山063009)

        隨著高速局域網(wǎng)的快速發(fā)展和各種網(wǎng)絡(luò)應(yīng)用的日益豐富,對網(wǎng)絡(luò)管理提出了越來越高的要求,流量控制應(yīng)運(yùn)而生[1]。流量控制就是要對網(wǎng)絡(luò)非關(guān)鍵業(yè)務(wù)的帶寬加以限制,以保證與工作和研究相關(guān)的關(guān)鍵業(yè)務(wù)的帶寬和服務(wù)質(zhì)量。然而目前的流量控制系統(tǒng)在實(shí)際的應(yīng)用環(huán)境中,工作效率往往不盡人意。流控系統(tǒng)對系統(tǒng)吞吐量和網(wǎng)絡(luò)處理能力要求非常高,如果達(dá)不到要求會造成網(wǎng)絡(luò)性能下降,甚至成為網(wǎng)絡(luò)出口的瓶頸[2-4]。因此對流量控制系統(tǒng)的數(shù)據(jù)處理能力的研究十分必要,本文研究了數(shù)據(jù)包的行走路徑,分析了數(shù)據(jù)包的收發(fā)過程中對系統(tǒng)資源的消耗,研究現(xiàn)有的技術(shù),提出一種改進(jìn)的零拷貝方案實(shí)現(xiàn)數(shù)據(jù)包的傳輸。

        1 零拷貝技術(shù)

        對于傳統(tǒng)網(wǎng)卡,處理一個64KB的文件,需要與主機(jī)CPU進(jìn)行60次交互,大約40次數(shù)據(jù)包交換,20次應(yīng)答。另外,在時間代價方面,數(shù)據(jù)拷貝操作的時間消耗占整個收包過程的57%左右[5-6]。因此,如果能減少數(shù)據(jù)拷貝和上下文切換,將會極大提高系統(tǒng)的處理性能,零拷貝就是在這種情況下提出的[7]。零拷貝技術(shù)是指某節(jié)點(diǎn)的報文收發(fā)過程中不會出現(xiàn)任何內(nèi)存間的拷貝,數(shù)據(jù)包由用戶緩沖區(qū)直接經(jīng)過網(wǎng)絡(luò)接口到達(dá)外部網(wǎng)絡(luò)。主要采用DMA和內(nèi)存映射等技術(shù)[8],通過用戶層和網(wǎng)絡(luò)接口交互,避免內(nèi)存間拷貝和上下文切換,縮短數(shù)據(jù)包行走路徑,節(jié)省CPU開銷。

        PF_RING套接字是一個第三方內(nèi)核數(shù)據(jù)包捕獲接口,有一種DNA(Direct NIC Access)的工作模式,一些系統(tǒng)用它來實(shí)現(xiàn)內(nèi)存零拷貝[9]。PF_RING在內(nèi)核中維護(hù)一個環(huán)狀緩存(RING),RING提供兩個接口,一個與網(wǎng)卡交互接口,一個與應(yīng)用程序交互的接口,網(wǎng)卡接收數(shù)據(jù)時[10],把數(shù)據(jù)包拷貝到RING中,數(shù)據(jù)不經(jīng)過內(nèi)核協(xié)議棧,應(yīng)用程序則通過mmap來訪問這個RING。

        PF_RING中RING的大小固定為1024個slot,網(wǎng)卡接收報文后放到RING中屬于硬件處理,速度非??臁?yīng)用程序處理數(shù)據(jù)包的速度要快,否則網(wǎng)卡就沒有空間再接收新的數(shù)據(jù)包。流量控制系統(tǒng)要對數(shù)據(jù)包進(jìn)行分析,顯然不具備這樣的速度,必須把數(shù)據(jù)拷貝出來,再進(jìn)行處理。如果在流量控制系統(tǒng)中采用PF_RING會發(fā)生一次拷貝過程,因此必須對PF_RING進(jìn)行優(yōu)化。

        2 優(yōu)化的零拷貝方案

        在優(yōu)化的零拷貝方案中,系統(tǒng)在內(nèi)核中同樣維護(hù)一個環(huán)狀緩存,如圖1所示。

        與PF_RING不同的是,環(huán)狀緩存里面存放是報文的描述符,即報文內(nèi)存指針的頁的起始地址和偏移位置,同時,內(nèi)核建立一個數(shù)據(jù)管理區(qū),用戶程序和網(wǎng)卡處理報文時不斷的向這個管理區(qū)申請可用內(nèi)存,并在用完后及時的釋放,以此來解決內(nèi)存緊張的狀況。網(wǎng)卡接收到達(dá)流控設(shè)備的數(shù)據(jù)包,通過DMA方式放到內(nèi)核緩沖區(qū),應(yīng)用程序通過mmap映射實(shí)現(xiàn)用戶空間和內(nèi)核空間的內(nèi)存共享。這樣應(yīng)用程序可以像訪問自己空間一樣快速的訪問到內(nèi)核空間的數(shù)據(jù)。在這個過程中網(wǎng)絡(luò)數(shù)據(jù)包跳過了內(nèi)核協(xié)議棧,實(shí)現(xiàn)了真正的零拷貝。

        圖1 零拷貝系統(tǒng)結(jié)構(gòu)

        2.1 數(shù)據(jù)包捕獲過程

        在優(yōu)化的零拷貝方案中,網(wǎng)絡(luò)數(shù)據(jù)包的捕獲過程如下:

        (1)首先把內(nèi)核中連續(xù)的若干頁映射到用戶空間,內(nèi)核模塊自行管理這些頁的內(nèi)存,并且作為DMA地址交給網(wǎng)卡收發(fā)包使用。

        (2)一旦數(shù)據(jù)包到達(dá)網(wǎng)卡,網(wǎng)卡先對數(shù)據(jù)包進(jìn)行預(yù)處理,如果需要交給應(yīng)用程序處理,就把報文的描述符放到指定的用戶緩沖區(qū)中,等待用戶空間讀取,相應(yīng)的報文內(nèi)存引用計數(shù)增加。

        (3)用戶空間讀取報文描述符,并計算出對應(yīng)的用戶空間地址,即可訪問報文;在報文生命周期結(jié)束后,減少內(nèi)核空間引用計數(shù),如果引用計數(shù)為1,內(nèi)核模塊則釋放之。

        (4)用戶空間發(fā)報文也采取類似的方式,只不過報文內(nèi)存由用戶空間發(fā)起命令,內(nèi)核分配,再交由用戶空間使用。

        2.2 同步問題

        零拷貝中涉及對共享內(nèi)存的讀寫,一邊是處于內(nèi)核空間的網(wǎng)卡驅(qū)動向內(nèi)存寫入數(shù)據(jù),一邊是用戶進(jìn)程直接對內(nèi)存數(shù)據(jù)進(jìn)行處理,兩者處于不同的空間,使得同步問題的解決非常關(guān)鍵,本方案采用的是增加標(biāo)志位的方式。

        首先,把環(huán)狀緩存分為四種類型:1空閑可供網(wǎng)卡使用的緩存,2存放等待用戶空間處理的數(shù)據(jù)的緩存,3存放正在被用戶空間處理的數(shù)據(jù)的緩存,4數(shù)據(jù)已經(jīng)被處理可以釋放的緩存。

        網(wǎng)卡接到報文后,如果要交到用戶空間,則將報文的描述符放到標(biāo)記為1的緩存中,并將標(biāo)記改為2,如果沒有標(biāo)記為1的,就把數(shù)據(jù)寫入標(biāo)記為2的緩存中。同時,用戶空間會讀這個ring,如果發(fā)現(xiàn)有標(biāo)記為2的,則先把標(biāo)記改為3,然后處理。用戶空間處理完數(shù)據(jù)后把相應(yīng)的緩存標(biāo)記為4。

        內(nèi)核中有一個定時器線程,掃描這個ring,如果發(fā)現(xiàn)有標(biāo)記為4的,則將相應(yīng)的空間釋放,并把標(biāo)記改為1。

        2.3 零拷貝內(nèi)存管理

        該零拷貝方案主要靠共享內(nèi)存的方式實(shí)現(xiàn),為了節(jié)約內(nèi)存,在內(nèi)核中維護(hù)一個數(shù)據(jù)管理區(qū),負(fù)責(zé)內(nèi)存的分配、管理和釋放。

        Node表示內(nèi)存頁中元信息的存儲單元,chunk表示被釋放或分配的存儲區(qū)。存儲區(qū)域按最小的單元劃分,大小為L1 cache的尺寸,每個node包括一個mask字段,用于標(biāo)記與此node連接的chunk是否被使用。所有free chunk都被放到一個數(shù)組中的雙向鏈表中,以大小索引。

        模塊初始化時,為每個CPU分配一個結(jié)構(gòu)體,其中建造一個三維鏈表,當(dāng)用戶申請內(nèi)存時,他的尺寸調(diào)整到能夠滿足要求的最小尺寸,并記錄進(jìn)相應(yīng)的字段,然后去chunk數(shù)組中查找,直到匹配成功一個合適的list。如果這個list比用戶要求的尺寸大,剩余的空間被放到其它list中供大小合適的請求使用,這個被選定的chunk被定義為一個node,相應(yīng)的mask被置為used。

        當(dāng)釋放內(nèi)存的請求發(fā)出時,首先記錄相應(yīng)的node和CPU信息,如果當(dāng)前CPU不是要求釋放的CPU,那么相應(yīng)的chunk被記錄成一個單鏈表,并放置到semi-free對象的list中等待在相應(yīng)的CPU中釋放。如果當(dāng)前CPU就是要求釋放的CPU,則根據(jù)相應(yīng)的node信息,查找與之連接的chunk,這些chunk以雙向列表元素格式賦值,然后所有free chunks合并成一個,并且節(jié)點(diǎn)中的相應(yīng)mask置為unused;這樣更大一點(diǎn)的chunk就按雙向鏈表格式被重新賦值,并被放到空閑對象list中供大小合適的對象使用。釋放算法檢查semi-freed list,如果list不空,則按照上述方法對該list中的chunk進(jìn)行釋放。

        除了semi-free list可以通過相應(yīng)的lock被不同CPU訪問外,其余的所有l(wèi)ists和arrays不能被不同的CPU訪問。

        內(nèi)存管理中重要的數(shù)據(jù)結(jié)構(gòu):

        3 零拷貝方案測試

        測試平臺主要配置如下:雙至強(qiáng)CPU3.00GHz,4GB內(nèi)存,Intel82575千兆網(wǎng)卡,修改網(wǎng)卡驅(qū)動程序支持零拷貝方案。linux的版本號為2.6.2,采用開源軟件netperf控制發(fā)包速率和數(shù)據(jù)包長,分別測試了使用傳統(tǒng)方式和零拷貝方式的報文捕獲情況,測試數(shù)據(jù)如表1所示:通過上面的數(shù)據(jù)可以看出,相比傳統(tǒng)數(shù)據(jù)包采集,采用零拷貝方案后CPU的占用率明顯降低,尤其是在大包的情況下性能提高的更為明顯,可以做到傳統(tǒng)方式的4倍,而且不丟包。

        表1 數(shù)據(jù)包捕獲情況對比

        在流量控制系統(tǒng)中應(yīng)用該零拷貝方案可以有效的提高網(wǎng)絡(luò)數(shù)據(jù)的傳輸效率,由于消除了內(nèi)存拷貝對系統(tǒng)資源的消耗,系統(tǒng)性能得到明顯改善,該方案還可以用于其他存在大數(shù)據(jù)傳輸?shù)南到y(tǒng)中,比如入侵檢測系統(tǒng),同樣可以降低CPU開銷,提高網(wǎng)絡(luò)吞吐量。

        [1] 王超,趙文杰.IP骨干網(wǎng)絡(luò)流量控制系統(tǒng)分析及方案部署[J].山東科技大學(xué)學(xué)報(自然科學(xué)版),2009,28(2):88-91.

        [2] WangWeihua,Marimuthu P..Application-Oriented Flow Control:Funddamentals,Algorithms and Faimess[J].IEEE/ACM Transactions on networking,2006 ,14:793-801.

        [3] 王鐘,雷為民.零拷貝技術(shù)在實(shí)時PCM捕獲中的應(yīng)用[J].微計算機(jī)信息,2009,34(3):193-195.

        [4] 李勝利,徐力,張明虎.基于實(shí)時微內(nèi)核的零拷貝通信協(xié)議[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),2007,35(1):35-39.

        [5] 顧鵬,汪敏,盧旌平.零拷貝技術(shù)在網(wǎng)絡(luò)行為分析系統(tǒng)中的應(yīng)用與改進(jìn)[J].計算機(jī)工程與設(shè)計,2010,31(7):1462-1464.

        [6] MPC8572EPowerQUICC(TM)integrated host processor family referencemanual[M].Freescale Semiconductor,2008.

        [7] 石飛,史嵐,喬建忠,等.網(wǎng)絡(luò)數(shù)據(jù)采集技術(shù)研究[J].小型微型計算機(jī)系統(tǒng),2008,29(10):1913-1914.

        [8] 夏鴻,程克非.基于零拷貝技術(shù)的千兆網(wǎng)絡(luò)性能優(yōu)化研究[J].網(wǎng)絡(luò)與通信,2008,24:155-157.

        [9] Yousif M F.On generalizations of PF-rings[J].Communications in algebra,2004,32(2):65-69.

        [10] LiuTian-hua,Zhu Hong-feng,Chang Gui-ran,et al.The design and implementation of zero-copy for linux[C].Eighth International Conference on Intelligent Systems Design and Applications,2008,(3):121-123.

        猜你喜歡
        拷貝網(wǎng)卡內(nèi)核
        在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
        萬物皆可IP的時代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        Server 2016網(wǎng)卡組合模式
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        中國生殖健康(2018年1期)2018-11-06 07:14:38
        挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
        文件拷貝誰最“給力”
        巧識劣質(zhì)水晶頭
        无码人妻丰满熟妇区免费| 99久久国语露脸国产精品| 蜜桃av噜噜噜一区二区三区| 中文字日产幕码三区国产| 亚洲av无码一区二区三区乱子伦| 人禽无码视频在线观看| 国产精品一区二区AV不卡| 在线人妻va中文字幕| 国产av一区二区精品凹凸| √天堂中文官网8在线| 无码专区亚洲avl| 日本加勒比精品一区二区视频| 免费国产a国产片高清网站| 亚洲另类自拍丝袜第五页| 亚洲AV无码一区二区三区精神| 亚洲国产一区二区网站| 黑人巨大精品欧美一区二区免费| 亚洲av理论在线电影网| 免费高清视频在线观看视频| 蜜桃视频在线观看网址| 免费看黄a级毛片| 亚洲最新版无码AV| 日韩精品一区二区三区免费观影| 久久熟妇少妇亚洲精品| 国产精品va无码一区二区| 免费国产h视频在线观看86| 高清国产亚洲精品自在久久| 放荡的少妇2欧美版| 亚洲人成网站77777在线观看 | 无码爽视频| 免费xxx在线观看| 中文字幕乱码人妻无码久久久1| 亚洲乱码中文字幕一线区| 正在播放国产多p交换视频| 视频一区二区在线播放| 久久精品网站免费观看| 中文有码亚洲制服av片| 成年午夜无码av片在线观看| 国产亚洲曝欧美不卡精品| 免费av日韩一区二区| 日本牲交大片免费观看|