欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種處理數(shù)據(jù)包的方法及裝置制造方法

文檔序號:7979738閱讀:190來源:國知局
一種處理數(shù)據(jù)包的方法及裝置制造方法
【專利摘要】本發(fā)明提供一種處理數(shù)據(jù)包括的方法及裝置,該方法包括:創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問;接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息;接收到所述應(yīng)用程序的檢測完成消息后,發(fā)送所述數(shù)據(jù)包。通過本發(fā)明可以在網(wǎng)絡(luò)傳輸中提供高效的數(shù)據(jù)包收發(fā)功能,從而達(dá)到在幾乎不影響網(wǎng)絡(luò)整體性能的情況下對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行檢測的目的。
【專利說明】一種處理數(shù)據(jù)包的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及在網(wǎng)絡(luò)數(shù)據(jù)傳輸領(lǐng)域,特別是涉及一種處理數(shù)據(jù)包括的方法及裝置?!颈尘凹夹g(shù)】
[0002]隨著網(wǎng)絡(luò)協(xié)議的發(fā)展,現(xiàn)在出現(xiàn)了多種網(wǎng)絡(luò)數(shù)據(jù)協(xié)議,比如:BT(Bit Torrent,比特洪流),P2P (點對點),SKYPE,F(xiàn)TP (File Transfer Protocol,文件傳送協(xié)議),EMULE (電驢)和HTTP(超文本傳送協(xié)議)等。而其中一些協(xié)議如BT、P2P這一類協(xié)議有時候會占用其他用戶正常上網(wǎng)的帶寬,而導(dǎo)致其他用戶上網(wǎng)的速度明顯下降。目前網(wǎng)絡(luò)收發(fā)數(shù)據(jù)包主要是通過操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧去收發(fā)數(shù)據(jù)包,這樣做存在的主要問題就是內(nèi)存拷貝以及系統(tǒng)調(diào)用,而這兩項會比較耗時,這樣就不能達(dá)到快速收發(fā)數(shù)據(jù)包的目的,從而對網(wǎng)絡(luò)的整體性能就會產(chǎn)生較大的影響。

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

[0003]本發(fā)明要解決的技術(shù)問題是提供一種處理數(shù)據(jù)包括的方法及裝置,以在網(wǎng)絡(luò)傳輸中對用戶下載的流量和使用的協(xié)議進(jìn)行監(jiān)控中使用,從而防止一些用戶過多的占用網(wǎng)絡(luò)帶寬資源。
[0004]為了解決上述技術(shù)問題,本發(fā)明提供了一種處理數(shù)據(jù)包的方法,包括:
[0005]創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問;
[0006]接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息;
[0007]接收到所述應(yīng)用程序的檢測完成消息后,發(fā)送所述數(shù)據(jù)包。
[0008]進(jìn)一步地,上述方法還具有下面特點:所述申請緩沖區(qū)后,還包括:
[0009]將所述緩沖區(qū)劃分為多個緩沖塊;
[0010]創(chuàng)建一緩沖塊管理隊列對所述緩沖塊進(jìn)行管理,初始化時所述緩沖塊管理隊列存儲有各個所述緩沖塊的索引。
[0011]進(jìn)一步地,上述方法還具有下面特點:所述將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,包括:
[0012]從所述緩沖塊管理隊列中獲取空閑緩沖塊的索引;
[0013]通過所述索引計算出所述空閑緩沖塊在內(nèi)存中的地址;
[0014]將所述數(shù)據(jù)包存放于以所述地址開始的緩存塊中。
[0015]進(jìn)一步地,上述方法還具有下面特點:
[0016]所述通知消息攜帶所述空閑緩沖塊的索引。
[0017]進(jìn)一步地,上述方法還具有下面特點:所述發(fā)送所述數(shù)據(jù)包之后,還包括,
[0018]將所述空閑緩沖塊的索引存放在所述緩沖塊管理隊列中。
[0019]為了解決上述問題,本發(fā)明還提供了一種處理數(shù)據(jù)包的裝置,包括:
[0020]第一模塊,用于創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問;
[0021]第二模塊,用于接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息;
[0022]第三模塊,用于接收到所述應(yīng)用程序的檢測完成消息后,發(fā)送所述數(shù)據(jù)包。
[0023]進(jìn)一步地,上述裝置還具有下面特點:還包括:
[0024]第四模塊,用于將所述緩沖區(qū)劃分為多個緩沖塊;
[0025]第五模塊,用于創(chuàng)建一緩沖塊管理隊列對所述緩沖塊進(jìn)行管理,初始化時所述緩沖塊管理隊列存儲有各個所述緩沖塊的索引。
[0026]進(jìn)一步地,上述裝置還具有下面特點:所述第二模塊包括:
[0027]第一單元,用于接收到數(shù)據(jù)包后,從所述緩沖塊管理隊列中獲取空閑緩沖塊的索弓I ;
[0028]第二單元,用于通過所述索引計算出所述空閑緩沖塊在內(nèi)存中的地址;
[0029]第三單元,用于將所述數(shù)據(jù)包存放于以所述地址開始的緩存塊中。
[0030]進(jìn)一步地,上述裝置還具有下面特點:
[0031]所述通知消息攜帶所述空閑緩沖塊的索引。
[0032]進(jìn)一步地,上述裝置還具有下面特點:所述裝置還包括:
[0033]第六模塊,用于將所述空閑緩沖塊的索引存放在所述緩沖塊管理隊列中。
[0034]綜上,本發(fā)明提供一種處理數(shù)據(jù)包括的方法及裝置,可以在網(wǎng)絡(luò)傳輸中提供高效的數(shù)據(jù)包收發(fā)功能,從而達(dá)到在幾乎不影響網(wǎng)絡(luò)整體性能的情況下對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行檢測的目的。
【專利附圖】

【附圖說明】
[0035]圖1為本發(fā)明實施例的處理數(shù)據(jù)包的方法的流程圖。
[0036]圖2是本發(fā)明實施例的緩沖塊管理隊列的初始化結(jié)構(gòu)圖。
[0037]圖3為本發(fā)明實施例的系統(tǒng)架構(gòu)的示意圖。
[0038]圖4為本發(fā)明實施例的處理數(shù)據(jù)包的裝置的示意圖。
【具體實施方式】
[0039]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0040]圖1為本發(fā)明實施例的處理數(shù)據(jù)包的方法的流程圖,如圖1所示,包括以下步驟:
[0041]S11、創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問;
[0042]緩沖區(qū)的創(chuàng)建主要是通過創(chuàng)建多個物理地址連續(xù)的4MB (不局限于4MB)空間來實現(xiàn)的,例如,在I inux的內(nèi)核空間申請大塊緩沖區(qū)。
[0043]創(chuàng)建字符設(shè)備的地址映射方法將緩沖區(qū)映射到用戶空間,這樣應(yīng)用程序可以直接對內(nèi)核地址空間進(jìn)行訪問,以供用戶空間的應(yīng)用程序直接使用。
[0044]可以將緩沖區(qū)劃分為大小相同的緩沖塊,對于緩沖塊的管理可以通過創(chuàng)建緩沖塊管理隊列(BMQ)來實現(xiàn)的,初始化時所述緩沖塊管理隊列存儲有各個所述緩沖塊的索引。
[0045]本實施例中的BMQ的數(shù)據(jù)結(jié)構(gòu)可以包括一個整形數(shù)組,用來保存緩沖塊的索引值,如圖2中的Ele,一個空閑索引計數(shù)值(head)和一個繁忙索引計數(shù)值(tail)以及空閑緩沖塊數(shù)count。在代碼初始化時緩沖塊的管理隊列如圖2所示。
[0046]本實施例的軟件編碼是在Iinux系統(tǒng)下實現(xiàn)的,其對數(shù)據(jù)包的管理方法也同樣適用其他操作系統(tǒng)。
[0047]S12、接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息;
[0048]本實施例的系統(tǒng)架構(gòu)可以如圖3所示,具體地,當(dāng)有新的網(wǎng)路數(shù)據(jù)包到來時,網(wǎng)卡收到數(shù)據(jù)包并在交給操作系統(tǒng)協(xié)議棧之前,通過BMQ中的由空閑索引計數(shù)值head獲得緩沖塊索引在Ele中的存放位置即Ele[head],然后獲得空閑緩沖塊的索引。同時,將head進(jìn)行加I操作指向緩沖塊管理隊列中的下一個空閑緩沖塊的索引,對空閑緩沖塊數(shù)count進(jìn)行減I操作,獲得空閑緩沖塊的索引后,再算出空閑緩沖塊在計算機(jī)中的內(nèi)存地址,然后將網(wǎng)絡(luò)數(shù)據(jù)包存放在以該地址為起始位置的緩沖塊中。同時內(nèi)核模塊將緩沖塊的索引通過Netlink消息發(fā)送給用戶空間的應(yīng)用程序,通知應(yīng)用程序根據(jù)這個索引值去找到數(shù)據(jù)包并檢測數(shù)據(jù)包。
[0049]S13、接收到所述應(yīng)用程序的檢測完成通知消息后,發(fā)送所述數(shù)據(jù)包。
[0050]應(yīng)用程序檢測完數(shù)據(jù)包后發(fā)出Netlink消息給Iinux內(nèi)核模塊通知內(nèi)核模塊將該數(shù)據(jù)包發(fā)送出去,并將之前用來保存數(shù)據(jù)包的緩沖塊的索引值存在BMQ中的整形數(shù)組中,在數(shù)組中的具體位置可由BMQ的尾計數(shù)值(tail)計算獲得。存放在整形數(shù)組中的具體位置是由繁忙索引計數(shù)值tail來指示即Ele[tail],并對tail進(jìn)行加I操作,對BMQ中的count成員進(jìn)行加I操作,表示此時空閑緩沖塊增加了一個。
[0051]由于緩沖塊的數(shù)據(jù)包已經(jīng)被發(fā)送出去了,所以這個緩沖塊又可以用來存放新的數(shù)據(jù)包,所以需要將該緩沖塊的索引值存放到BMQ的整形數(shù)組中,即對緩沖塊進(jìn)行回收利用,存放在數(shù)組中的具體位置由tail來決定,假設(shè)如果tail值是n,則將索引值存放到數(shù)組的第η個元素,例如,O是第O個元素,I是第一個元素,以此類推。
[0052]數(shù)據(jù)包的發(fā)送是通過創(chuàng)建一個sk_buff結(jié)構(gòu)(該結(jié)構(gòu)是Iinux內(nèi)核里的用于網(wǎng)絡(luò)數(shù)據(jù)包收發(fā)的數(shù)據(jù)結(jié)構(gòu))的變量,將保存在緩沖塊中的數(shù)據(jù)包內(nèi)容復(fù)制到sk_buff結(jié)構(gòu)的變量中,并構(gòu)造好該結(jié)構(gòu)變量的其他成員,然后調(diào)用Iinux內(nèi)核的發(fā)送函數(shù)deV_qUeUe_xmit將數(shù)據(jù)包發(fā)送出去。
[0053]本方法可以有效和快速地實現(xiàn)對數(shù)據(jù)包的管理以及收發(fā),減少了數(shù)據(jù)包由Iinux內(nèi)核空間到Iinux用戶空間的數(shù)據(jù)拷貝以及系統(tǒng)調(diào)用所帶來的時間消耗,顯著地減少了數(shù)據(jù)拷貝和系統(tǒng)調(diào)用對網(wǎng)絡(luò)性能的影響,同時還具備滿足應(yīng)用程序多線程的處理能力。
[0054]本方法可以采用標(biāo)準(zhǔn)C語言程序?qū)崿F(xiàn),符合GPL (通用性公開許可證)規(guī)范,具有很好的可移植性。
[0055]圖4為本發(fā)明實施例的處理數(shù)據(jù)包的裝置的示意圖,如圖4所示,本實施例的裝置包括:
[0056]第一模塊,用于創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問;[0057]第二模塊,用于接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息;
[0058]第三模塊,用于接收到所述應(yīng)用程序的檢測完成消息后,發(fā)送所述數(shù)據(jù)包。
[0059]該裝置可以是內(nèi)核模塊。
[0060]在一優(yōu)選實施例中,所述裝置還可以包括:
[0061]第四模塊,用于將所述緩沖區(qū)劃分為多個緩沖塊;
[0062]第五模塊,用于創(chuàng)建一緩沖塊管理隊列對所述緩沖塊進(jìn)行管理,初始化時所述緩沖塊管理隊列存儲有各個所述緩沖塊的索引。
[0063]其中,所述第二模塊可以包括:
[0064]第一單元,用于接收到數(shù)據(jù)包后,從所述緩沖塊管理隊列中獲取空閑緩沖塊的索弓I ;
[0065]第二單元,用于通過所述索引計算出所述空閑緩沖塊在內(nèi)存中的地址;
[0066]第三單元,用于將所述數(shù)據(jù)包存放于以所述地址開始的緩存塊中。
[0067]其中,所述通知消息攜帶所述空閑緩沖塊的索引。
[0068]在一優(yōu)選實施例中,所述裝置還可以包括:
[0069]第六模塊,用于將所述空閑緩沖塊的索引存放在所述緩沖塊管理隊列中。
[0070]本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應(yīng)地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
[0071]以上僅為本發(fā)明的優(yōu)選實施例,當(dāng)然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種處理數(shù)據(jù)包的方法,包括: 創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問; 接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息; 接收到所述應(yīng)用程序的檢測完成消息后,發(fā)送所述數(shù)據(jù)包。
2.如權(quán)利要求1所述的方法,其特征在于:所述申請緩沖區(qū)后,還包括: 將所述緩沖區(qū)劃分為多個緩沖塊; 創(chuàng)建一緩沖塊管理隊列對所述緩沖塊進(jìn)行管理,初始化時所述緩沖塊管理隊列存儲有各個所述緩沖塊的索引。
3.如權(quán)利要求2所述的方法,其特征在于:所述將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,包括: 從所述緩沖塊管理隊列中獲取空閑緩沖塊的索引; 通過所述索引計算出所述空閑緩沖塊在內(nèi)存中的地址; 將所述數(shù)據(jù)包存放于以所述地址開始的緩存塊中。
4.如權(quán)利要求3所述的方法,其特征在于: 所述通知消息攜帶所述空閑緩沖塊的索引。
5.如權(quán)利要求3或4所述的方法,其特征在于:所述發(fā)送所述數(shù)據(jù)包之后,還包括, 將所述空閑緩沖塊的索引存放在所述緩沖塊管理隊列中。
6.一種處理數(shù)據(jù)包的裝置,包括: 第一模塊,用于創(chuàng)建一緩沖區(qū),將所述緩沖區(qū)的地址映射為可被用戶空間的應(yīng)用程序直接訪問; 第二模塊,用于接收到數(shù)據(jù)包后,將所述數(shù)據(jù)包存放于所述緩沖區(qū)中,向?qū)?yīng)的用戶空間的應(yīng)用程序發(fā)送檢測所述數(shù)據(jù)包的通知消息; 第三模塊,用于接收到所述應(yīng)用程序的檢測完成消息后,發(fā)送所述數(shù)據(jù)包。
7.如權(quán)利要求6所述的裝置,其特征在于:還包括: 第四模塊,用于將所述緩沖區(qū)劃分為多個緩沖塊; 第五模塊,用于創(chuàng)建一緩沖塊管理隊列對所述緩沖塊進(jìn)行管理,初始化時所述緩沖塊管理隊列存儲有各個所述緩沖塊的索引。
8.如權(quán)利要求7所述的裝置,其特征在于:所述第二模塊包括: 第一單元,用于接收到數(shù)據(jù)包后,從所述緩沖塊管理隊列中獲取空閑緩沖塊的索引; 第二單元,用于通過所述索引計算出所述空閑緩沖塊在內(nèi)存中的地址; 第三單元,用于將所述數(shù)據(jù)包存放于以所述地址開始的緩存塊中。
9.如權(quán)利要求8所述的裝置,其特征在于: 所述通知消息攜帶所述空閑緩沖塊的索引。
10.如權(quán)利要求8或9所述的裝置,其特征在于:所述裝置還包括: 第六模塊,用于將所述空閑緩沖塊的索引存放在所述緩沖塊管理隊列中。
【文檔編號】H04L12/861GK103490939SQ201210190837
【公開日】2014年1月1日 申請日期:2012年6月11日 優(yōu)先權(quán)日:2012年6月11日
【發(fā)明者】范慶安 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
都安| 江山市| 东至县| 巴塘县| 福建省| 卢龙县| 潜山县| 仙游县| 遂平县| 乳山市| 淮南市| 罗甸县| 隆回县| 桐城市| 噶尔县| 巴彦淖尔市| 南岸区| 嵊州市| 芒康县| 曲阳县| 海城市| 都江堰市| 环江| 茂名市| 瑞安市| 常州市| 宝清县| 靖宇县| 临潭县| 南澳县| 鄂托克前旗| 北京市| 荥阳市| 井研县| 肃南| 通化县| 西贡区| 三江| 雷山县| 桐城市| 大悟县|