亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于x86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法

文檔序號(hào):7795412閱讀:323來源:國知局
基于x86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法
【專利摘要】本發(fā)明涉及一種基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其中包括設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性;修改內(nèi)核中數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊;將數(shù)據(jù)包向內(nèi)核協(xié)議棧進(jìn)行傳輸;所述的收包內(nèi)核態(tài)模塊通過地址映射機(jī)制將內(nèi)核隊(duì)列地址映射到用戶態(tài);所述的用戶態(tài)收取數(shù)據(jù)包。采用該種基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,主要解決了傳統(tǒng)收包的不足和性能瓶頸,采用網(wǎng)卡RSS技術(shù)、內(nèi)核動(dòng)態(tài)module掛載、零拷貝技術(shù)和無鎖RingBuffer技術(shù),實(shí)現(xiàn)在大流量的環(huán)境和基于X86的平臺(tái)上,快速不丟的將流量從網(wǎng)卡內(nèi)核空間收到用戶進(jìn)程空間,適用于需要提取流量的局域網(wǎng)或廣域網(wǎng)以及各運(yùn)營(yíng)商流量出口,具有廣泛的應(yīng)用范圍。
【專利說明】基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及大流量收包領(lǐng)域,具體是指一種基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)的飛速發(fā)展,使得網(wǎng)絡(luò)應(yīng)用越來越多,流量越來越大,傳統(tǒng)的千兆逐步被萬兆替代,如何將如此大的流量實(shí)時(shí)收取下來以供后續(xù)的分析挖掘使用,成為了當(dāng)今一個(gè)熱點(diǎn)研究課題
[0003]現(xiàn)有基本的收包技術(shù)都是基于Libpcap (分組捕獲函數(shù)庫)和Socket (插座)封裝而來,優(yōu)點(diǎn)是開發(fā)快,易于上手,缺點(diǎn)則是在大流量的情況下,收包所占資源多,而往往由于收包流程所耗費(fèi)的資源龐大,導(dǎo)致處理的性能下降,丟包、來不及收包的情況常常發(fā)生,傳統(tǒng)的收包方式已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足大流量的需求了。

【發(fā)明內(nèi)容】

[0004]本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種能夠?qū)崿F(xiàn)在大流量的環(huán)境和基于X86的平臺(tái)上、快速不丟的將流量從網(wǎng)卡內(nèi)核空間收到用戶進(jìn)程空間、適用于大規(guī)模推廣應(yīng)用的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法。
[0005]為了實(shí)現(xiàn)上述目的,本發(fā)明的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法具有如下構(gòu)成:
[0006]該基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其主要特點(diǎn)是,所述的方法包括以下步驟:
[0007]( I)設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性;
[0008](2)修改內(nèi)核中數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊;
[0009]( 3 )將數(shù)據(jù)包向內(nèi)核協(xié)議棧進(jìn)行傳輸;
[0010](4)所述的收包內(nèi)核態(tài)模塊通過地址映射機(jī)制將內(nèi)核隊(duì)列地址映射到用戶態(tài);
[0011](5)所述的用戶態(tài)收取數(shù)據(jù)包。
[0012]較佳地,所述的設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性,具體為:
[0013]通過系統(tǒng)Proc文件設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性。
[0014]較佳地,所述的修改內(nèi)核中數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊,包括以下步驟:
[0015](21)所述的支持多隊(duì)列的網(wǎng)卡收包發(fā)生硬中斷,進(jìn)入網(wǎng)卡中斷處理函數(shù);
[0016](22)網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包傳輸?shù)絻?nèi)核空間,同時(shí)發(fā)生軟中斷;
[0017](23)調(diào)用軟中斷處理函數(shù)進(jìn)行數(shù)據(jù)包的獲取以及前期判斷工作;
[0018](24)修改數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊。
[0019]更佳地,所述的網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包傳輸?shù)絻?nèi)核空間,具體為:
[0020]網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包以直接存儲(chǔ)器存取方式傳輸?shù)絻?nèi)核空間。[0021]較佳地,所述的收包內(nèi)核態(tài)模塊通過地址映射機(jī)制將內(nèi)核隊(duì)列地址映射到用戶態(tài),包括以下步驟:
[0022](41)注冊(cè)收包內(nèi)核態(tài)模塊地址函數(shù);
[0023](42)數(shù)據(jù)包到達(dá)收包內(nèi)核態(tài)模塊地址函數(shù)并進(jìn)入過濾器進(jìn)行過濾;
[0024](43)通過過濾器過濾后的數(shù)據(jù)包進(jìn)行Hash分流到達(dá)不同的內(nèi)核隊(duì)列;
[0025](44)內(nèi)核隊(duì)列地址通過地址映射機(jī)制直接映射到用戶態(tài)。
[0026]較佳地,所述的用戶態(tài)收取數(shù)據(jù)包,具體為:
[0027]所述的用戶態(tài)通過無鎖RingBufTer結(jié)構(gòu)的內(nèi)存收取數(shù)據(jù)包。
[0028]更佳地,所述的用戶態(tài)通過無鎖RingBuffer結(jié)構(gòu)的內(nèi)存收取數(shù)據(jù)包,包括以下步驟:
[0029](51)內(nèi)核態(tài)采用Kmalloc函數(shù)申請(qǐng)無鎖RingBuffer結(jié)構(gòu)的內(nèi)存;
[0030](52)對(duì)整塊內(nèi)存進(jìn)行內(nèi)存塊分割且在內(nèi)存的第一塊存放公用信息;
[0031](53)每當(dāng)有數(shù)據(jù)寫入內(nèi)存時(shí),通過取第一塊內(nèi)存中的寫位置指針和讀位置指針判斷此次寫入的內(nèi)存節(jié)點(diǎn)位置;
[0032](54)寫入數(shù)據(jù)后,將所對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn)信息進(jìn)行更新并將寫位置指針向后移動(dòng);
[0033](55)每當(dāng)從內(nèi)存收取數(shù)據(jù)時(shí),通過取第一塊內(nèi)存中讀位置指針來獲取待收取的內(nèi)存節(jié)點(diǎn)并通過該內(nèi)存節(jié)點(diǎn)的狀態(tài)信息標(biāo)志位判斷是否有數(shù)據(jù)可讀。
[0034]采用了該發(fā)明中的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,具有如下有益效果:
[0035]本專利主要解決了傳統(tǒng)收包的不足和性能瓶頸,采用網(wǎng)卡RSS技術(shù)、內(nèi)核動(dòng)態(tài)module掛載、零拷貝技術(shù)和無鎖RingBuffer技術(shù),實(shí)現(xiàn)在大流量的環(huán)境和基于X86的平臺(tái)上,快速不丟的將流量從網(wǎng)卡內(nèi)核空間收到用戶進(jìn)程空間,適用于需要提取流量的局域網(wǎng)或廣域網(wǎng)以及各運(yùn)營(yíng)商流量出口,具有廣泛的應(yīng)用范圍。
【專利附圖】

【附圖說明】
[0036]圖1為本發(fā)明的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法的流程圖。
[0037]圖2為本發(fā)明的數(shù)據(jù)傳輸流程圖。
[0038]圖3為本發(fā)明的收包內(nèi)核態(tài)模塊的工作流程圖。
[0039]圖4為本發(fā)明的無鎖Ringbuffer結(jié)構(gòu)的內(nèi)存的工作流程圖。
【具體實(shí)施方式】
[0040]為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例來進(jìn)行進(jìn)一步的描述。
[0041]1、使用支持多隊(duì)列(RSS)特性網(wǎng)卡,來提升性能。普通網(wǎng)卡亦可,只是普通網(wǎng)卡一般用在低流量的環(huán)境中。
[0042]2、網(wǎng)卡支持多隊(duì)列,通過系統(tǒng)設(shè)置網(wǎng)卡收包隊(duì)列的CPU親和性,設(shè)置CPU的親和性一般通過系統(tǒng)Proc文件完成。系統(tǒng)文件路徑/proc/irq/中斷號(hào)/smp_affinity。
[0043]3、通過上述兩步,則實(shí)現(xiàn)了收包隊(duì)列的軟中斷的平均分配,相比以前普通的收包方式,數(shù)據(jù)包的軟中斷一般都集中在CPUO上,往往數(shù)據(jù)量大的時(shí)候,CPUO的使用都在100%,導(dǎo)致O號(hào)CPU很忙,而其他CPU空閑的狀態(tài),效率大大降低。
[0044]4、修改內(nèi)核,加入收包內(nèi)核態(tài)模塊的入口地址。
[0045]5、裝載收包內(nèi)核態(tài)模塊(Rsspacket),該模塊實(shí)現(xiàn)數(shù)據(jù)包從內(nèi)核態(tài)到用戶態(tài)的映射,以及高速收取算法的實(shí)現(xiàn)。
[0046]6、以上兩步實(shí)現(xiàn)數(shù)據(jù)包的高速收取,為本發(fā)明的核心。整體數(shù)據(jù)傳輸流程見圖2。
[0047]下面詳細(xì)介紹實(shí)現(xiàn)技術(shù)點(diǎn):
[0048]7、針對(duì)內(nèi)核的修改,主要是為了減少包進(jìn)入?yún)f(xié)議棧后系統(tǒng)的開銷。具體實(shí)現(xiàn)方式為:
[0049](I)網(wǎng)卡收包發(fā)生硬中斷,中斷產(chǎn)生后,進(jìn)入網(wǎng)卡中斷處理函數(shù);
[0050](2)網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包DMA (Direct memory access,直接存儲(chǔ)器收取)到內(nèi)核空間,同時(shí)產(chǎn)生軟中斷;
[0051](3)內(nèi)核軟中斷產(chǎn)生,調(diào)用軟中斷處理函數(shù),進(jìn)行數(shù)據(jù)包的獲取以及一些前期判斷工作;
[0052](4)數(shù)據(jù)包向內(nèi)核協(xié)議棧傳遞,我們?cè)谠摬絺鬟f之前,修改數(shù)據(jù)包的傳入地址為發(fā)明中的收包內(nèi)核態(tài)模塊,這樣在網(wǎng)卡DMA數(shù)據(jù)后,直接進(jìn)入發(fā)明中的收包內(nèi)核態(tài)模塊(Rsspacket),如此則直接摒棄掉了繁瑣的協(xié)議棧流程和內(nèi)核的開銷流程,大大節(jié)省系統(tǒng)資源和提高速度。
[0053]8、收包內(nèi)核態(tài)模塊(Rsspacket)工作流程如下(流程見圖3):
[0054](I)注冊(cè)收包內(nèi)核態(tài)模塊地址函數(shù);
[0055](2)數(shù)據(jù)包到達(dá)收包地址函數(shù),進(jìn)行簡(jiǎn)單的包頭分析,進(jìn)入Filter (過濾器)判斷,該Filter可以通過加載模塊時(shí)進(jìn)行配置,主要實(shí)現(xiàn)數(shù)據(jù)包的過濾功能;
[0056](3)通過filter過濾后的數(shù)據(jù)包在進(jìn)行Hash分流(哈希分流算法)到達(dá)不同的內(nèi)核隊(duì)列;
[0057](4 )內(nèi)核隊(duì)列地址通過內(nèi)存映射(MMAP,Memory Map )直接映射到用戶態(tài),該塊內(nèi)存使用塊狀內(nèi)存結(jié)構(gòu),內(nèi)核負(fù)責(zé)申請(qǐng),內(nèi)存結(jié)構(gòu)為高速無鎖RingBuffer (環(huán)形緩沖區(qū))結(jié)構(gòu)。
[0058]9、高速無鎖RingBuffer結(jié)構(gòu)的描述如下(流程見圖4):
[0059](I)內(nèi)存按模塊加載時(shí)傳入?yún)?shù)初始化,默認(rèn)256MB。該內(nèi)存采取Kmalloc (內(nèi)存分割函數(shù))在內(nèi)核態(tài)申請(qǐng);
[0060](2)對(duì)整塊內(nèi)存采取內(nèi)存塊分割的策略。每個(gè)內(nèi)存塊為固定的長(zhǎng)度,包括但不僅包括讀寫指針、數(shù)據(jù)段、一些標(biāo)志位(如讀寫完成、可重寫、讀過快等);
[0061](3)內(nèi)存的第一塊永遠(yuǎn)不放數(shù)據(jù),存放當(dāng)前的公用信息,如當(dāng)前讀位置、寫位置、內(nèi)存塊數(shù)、每塊內(nèi)存大寫等。讀寫位置指針占用不同的存儲(chǔ)空間,讀寫程序進(jìn)行該塊內(nèi)存讀寫時(shí),永遠(yuǎn)取各自的讀寫位置,互不影響,無需加鎖;
[0062](4)每當(dāng)數(shù)據(jù)寫入內(nèi)存時(shí),通過取第一塊內(nèi)存中寫位置指針和讀位置指針,來判斷該次寫入的內(nèi)存節(jié)點(diǎn)位置,寫入后,進(jìn)行內(nèi)存節(jié)點(diǎn)信息的更新,包括該塊可讀,然后將寫指針往后移動(dòng)。該操作采用原子操作,防止被系統(tǒng)中斷打斷;
[0063](5)每當(dāng)讀數(shù)據(jù)時(shí),通過取第一塊內(nèi)存中讀位置指針位置,來獲取收取的內(nèi)存節(jié)點(diǎn),同時(shí)通過讀寫指針判斷是否有數(shù)據(jù)可讀,通過內(nèi)存節(jié)點(diǎn)的狀態(tài)信息標(biāo)志位判斷是夠數(shù)據(jù)可讀。通過以上完成數(shù)據(jù)的收取。[0064]由于是環(huán)形緩沖,必將有讀寫重合或速率不一致導(dǎo)致的讀寫指針問題,在該發(fā)明中,我們將讀寫指針永遠(yuǎn)的只加不置位,在讀寫階段,通過判斷兩個(gè)指針的大寫即可完成環(huán)形緩沖的置換工作,如讀指針應(yīng)該永遠(yuǎn)小于寫指針才有數(shù)據(jù)可讀,寫指針應(yīng)該不大于讀指針整個(gè)內(nèi)存塊數(shù)的情況下才不會(huì)過快寫入數(shù)據(jù),導(dǎo)致數(shù)據(jù)丟失等情況。
[0065]如圖1所示,本發(fā)明的實(shí)現(xiàn)萬兆大流量快速收包的方法包括以下步驟:
[0066](I)設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性;
[0067](2)修改內(nèi)核中數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊;
[0068]具體包括以下四個(gè)子步驟:
[0069](21)所述的支持多隊(duì)列的網(wǎng)卡收包發(fā)生硬中斷,進(jìn)入網(wǎng)卡中斷處理函數(shù);
[0070](22)網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包傳輸?shù)絻?nèi)核空間,同時(shí)發(fā)生軟中斷;
[0071](23)調(diào)用軟中斷處理函數(shù)進(jìn)行數(shù)據(jù)包的獲取以及前期判斷工作;
[0072](24)修改數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊。
[0073]( 3 )將數(shù)據(jù)包向內(nèi)核協(xié)議棧進(jìn)行傳輸;
[0074](4)所述的收包內(nèi)核態(tài)模塊通過地址映射機(jī)制將內(nèi)核隊(duì)列地址映射到用戶態(tài);
[0075]具體包括以下四個(gè)子步驟:
[0076](41)注冊(cè)收包內(nèi)核態(tài)模塊地址函數(shù);
[0077](42)數(shù)據(jù)包到達(dá)收包內(nèi)核態(tài)模塊地址函數(shù)并進(jìn)入過濾器進(jìn)行過濾;
[0078](43)通過過濾器過濾后的數(shù)據(jù)包進(jìn)行Hash分流到達(dá)不同的內(nèi)核隊(duì)列;
[0079](44)內(nèi)核隊(duì)列地址通過地址映射機(jī)制直接映射到用戶態(tài)。
[0080](5)所述的用戶態(tài)收取數(shù)據(jù)包。
[0081]具體包括以下五個(gè)子步驟:
[0082](51)內(nèi)核態(tài)采用Kmalloc函數(shù)申請(qǐng)無鎖RingBuffer結(jié)構(gòu)的內(nèi)存;
[0083](52)對(duì)整塊內(nèi)存進(jìn)行內(nèi)存塊分割且在內(nèi)存的第一塊存放公用信息;
[0084](53)每當(dāng)有數(shù)據(jù)寫入內(nèi)存時(shí),通過取第一塊內(nèi)存中的寫位置指針和讀位置指針判斷此次寫入的內(nèi)存節(jié)點(diǎn)位置;
[0085](54)寫入數(shù)據(jù)后,將所對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn)信息進(jìn)行更新并將寫位置指針向后移動(dòng);
[0086](55)每當(dāng)從內(nèi)存收取數(shù)據(jù)時(shí),通過取第一塊內(nèi)存中讀位置指針來獲取待收取的內(nèi)存節(jié)點(diǎn)并通過該內(nèi)存節(jié)點(diǎn)的狀態(tài)信息標(biāo)志位判斷是否有數(shù)據(jù)可讀。
[0087]采用了該發(fā)明中的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,具有如下有益效果:
[0088]本專利主要解決了傳統(tǒng)收包的不足和性能瓶頸,采用網(wǎng)卡RSS技術(shù)、內(nèi)核動(dòng)態(tài)module掛載、零拷貝技術(shù)和無鎖RingBuffer技術(shù),實(shí)現(xiàn)在大流量的環(huán)境和基于X86的平臺(tái)上,快速不丟的將流量從網(wǎng)卡內(nèi)核空間收到用戶進(jìn)程空間,適用于需要提取流量的局域網(wǎng)或廣域網(wǎng)以及各運(yùn)營(yíng)商流量出口,具有廣泛的應(yīng)用范圍。
[0089]在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。
【權(quán)利要求】
1.一種基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的方法包括以下步驟: (1)設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性; (2)修改內(nèi)核中數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊; (3)將數(shù)據(jù)包向內(nèi)核協(xié)議棧進(jìn)行傳輸; (4)所述的收包內(nèi)核態(tài)模塊通過地址映射機(jī)制將內(nèi)核隊(duì)列地址映射到用戶態(tài); (5)所述的用戶態(tài)收取數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性,具體為: 通過系統(tǒng)Proc文件設(shè)置支持多隊(duì)列的網(wǎng)卡收包隊(duì)列的CPU親和性。
3.根據(jù)權(quán)利要求1所述的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的修改內(nèi)核中數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊,包括以下步驟: (21)所述的支持多隊(duì)列的網(wǎng)卡收包發(fā)生硬中斷,進(jìn)入網(wǎng)卡中斷處理函數(shù); (22)網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包傳輸?shù)絻?nèi)核空間,同時(shí)發(fā)生軟中斷; (23)調(diào)用軟中斷處理函數(shù)進(jìn)行數(shù)據(jù)包的獲取以及前期判斷工作; (24 )修改數(shù)據(jù)包的傳入地址為收包內(nèi)核態(tài)模塊。
4.根據(jù)權(quán)利要求3所述的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包傳輸?shù)絻?nèi)核空間,具體為: 網(wǎng)卡中斷處理函數(shù)將數(shù)據(jù)包以直接存儲(chǔ)器存取方式傳輸?shù)絻?nèi)核空間。
5.根據(jù)權(quán)利要求1所述的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的收包內(nèi)核態(tài)模塊通過地址映射機(jī)制將內(nèi)核隊(duì)列地址映射到用戶態(tài),包括以下步驟: (41)注冊(cè)收包內(nèi)核態(tài)模塊地址函數(shù); (42)數(shù)據(jù)包到達(dá)收包內(nèi)核態(tài)模塊地址函數(shù)并進(jìn)入過濾器進(jìn)行過濾; (43)通過過濾器過濾后的數(shù)據(jù)包進(jìn)行Hash分流到達(dá)不同的內(nèi)核隊(duì)列; (44 )內(nèi)核隊(duì)列地址通過地址映射機(jī)制直接映射到用戶態(tài)。
6.根據(jù)權(quán)利要求1所述的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的用戶態(tài)收取數(shù)據(jù)包,具體為: 所述的用戶態(tài)通過無鎖RingBuffer結(jié)構(gòu)的內(nèi)存收取數(shù)據(jù)包。
7.根據(jù)權(quán)利要求6所述的基于X86平臺(tái)實(shí)現(xiàn)萬兆大流量快速收包的方法,其特征在于,所述的用戶態(tài)通過無鎖RingBuffer結(jié)構(gòu)的內(nèi)存收取數(shù)據(jù)包,包括以下步驟: (51)內(nèi)核態(tài)采用Kmalloc函數(shù)申請(qǐng)無鎖RingBuffer結(jié)構(gòu)的內(nèi)存; (52)對(duì)整塊內(nèi)存進(jìn)行內(nèi)存塊分割且在內(nèi)存的第一塊存放公用信息; (53)每當(dāng)有數(shù)據(jù)寫入內(nèi)存時(shí),通過取第一塊內(nèi)存中的寫位置指針和讀位置指針判斷此次寫入的內(nèi)存節(jié)點(diǎn)位置; (54)寫入數(shù)據(jù)后,將所對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn)信息進(jìn)行更新并將寫位置指針向后移動(dòng); (55)每當(dāng)從內(nèi)存收取數(shù)據(jù)時(shí),通過取第一塊內(nèi)存中讀位置指針來獲取待收取的內(nèi)存節(jié)點(diǎn)并通過該內(nèi)存節(jié)點(diǎn)的狀態(tài)信息標(biāo)志位判斷是否有數(shù)據(jù)可讀。
【文檔編號(hào)】H04L12/801GK103731364SQ201410021519
【公開日】2014年4月16日 申請(qǐng)日期:2014年1月16日 優(yōu)先權(quán)日:2014年1月16日
【發(fā)明者】逯利軍, 錢培專, 姜健, 汪海林, 凌志輝, 李克民, 宋聚平, 侯衛(wèi)東 申請(qǐng)人:賽特斯信息科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1