一種基於網卡驅動的數據包處理優化方法
2023-05-27 20:20:21 2
一種基於網卡驅動的數據包處理優化方法【專利摘要】本發明公開了一種基於網卡驅動的數據包處理優化方法,該方法包括網絡數據包從網卡進入,由解析引擎解析數據包頭部,得到頭部屬性;得到頭部屬性跟過濾列表中的每一項過濾規則匹配;如果匹配成功,那麼把網絡數據包送入規則中指明的數據緩衝區描述符環;如果沒有匹配成功,就將數據送入一個默認的數據緩衝區描述符環中;等待網卡接收中斷,執行中斷事件處理程序;將匹配規則成功的數據環中的數據提交到上層協議棧,默認環中的數據直接發送至發送環;等待網卡發送中斷,執行中斷事件處理程序;將發送環中的數據發送出去;接下來的數據包重複上述步驟;本發明解決嵌入式設備對不感興趣數據處理,減輕嵌入式設備網卡工作負荷,加快感興趣數據的處理。【專利說明】一種基於網卡驅動的數據包處理優化方法【
技術領域:
】[0001]本發明涉及嵌入式驅動開發【
技術領域:
】,特別涉及一種基於網卡驅動的數據包處理優化方法。【
背景技術:
】[0002]20世紀末,隨著信息技術與網絡技術的迅速發展,計算機技術已經進入後PC時代。大量的計算機應用系統從傳統的辦公管理、科學計算、企業管理等領域,逐漸滲透到人們的日常生活的方方面面,形成當前最熱門的嵌入式系統領域。[0003]經過幾十年的發展,嵌入式系統已經在很大程度改變了人們的生活、工作和娛樂方式,而且這些改變還在加速。嵌入式系統具有無數的種類,每類都具有自己獨特的個性。即使不可見,嵌入式系統也無處不在。嵌入式系統在很多產業中得到了廣泛的應用並逐步改變著這些產業,包括工業自動化、國防、運輸和航天領域。[0004]網絡信息技術的不斷發展,嵌入式網絡設備也層出不窮,各種嵌入式網絡設備根據自身的特點完成特定的任務。由於各種網絡嵌入式設備功能不同,決定了他們各自對網絡數據包的感興趣程度是不同的。按照傳統的網卡驅動來說,網卡接收到數據之後校驗數據包的準確性後就把數據包放入接受緩衝區,然後等待接受中斷事件響應函數把數據送入上層的協議棧,然後由協議棧在判斷數據包是否需要丟棄或者是轉發。這樣一來如果有大量的嵌入式網絡設備部感興趣的數據包進入網卡,那麼之後要花很多的時間和資源區處理這些數據包,這不僅加大了嵌入式網絡設備的負擔,而且對感興趣的數據處理也會有一定的延時。而本發明能夠很好地解決上面的問題。【
發明內容】[0005]本次發明是針對Freescale的eTSEC(enhancedthree-speedEthernetcontroller)提出了一種基於網卡驅動的數據包處理優化方法,其目的在於實現網卡的數據包底層轉發,解決了嵌入式設備對不感興趣數據的處理,減輕嵌入式設備的網卡工作負荷,加快了感興趣數據的處理,從而達到優化的目的。[0006]本發明解決其技術問題所採取的技術方案是:本發明提出了一種基於網卡驅動的數據包處理優化方法,主要針對的是Freescale的eTSEC網絡控制器的驅動程序進行優化,其包括如下步驟:[0007]步驟I)網絡數據包從網卡進入,由解析引擎解析數據包頭部,得到頭部屬性;[0008]步驟2)得到的頭部屬性跟過濾列表中的每一項過濾規則匹配;[0009]步驟3)如果匹配成功,那麼把網絡數據包送入規則中指明的數據緩衝區描述符環;[0010]步驟4)如果沒有匹配成功,就將數據送入一個默認的數據緩衝區描述符環中;[0011]步驟5)等待網卡接收中斷,執行中斷事件處理程序;[0012]步驟6)將匹配規則成功的數據環中的數據提交到上層協議棧,默認環中的數據直接發送至發送環;[0013]步驟7)等待網卡發送中斷,執行中斷事件處理程序;[0014]步驟8)將發送環中的數據發送出去;[0015]步驟9)接下來的數據包重複上述步驟I到步驟8。[0016]本發明將網絡數據一分為二,感興趣和不感興趣數據分開放;本發明把不需要的數據轉發,而不是直接丟棄。[0017]如圖1所示,本發明的數據緩衝區是用來存儲接收和發送的數據幀,數據緩衝區描述符包含了eTSEC發送和接收數據幀的所有必要的信息。每一個緩衝區描述符都包含一個狀態欄位,一個長度欄位和一個指針欄位。數據緩衝區描述符的狀態欄位表示的是數據幀的狀態信息,長度欄位表示的是數據幀的長度信息,指針欄位是數據幀存儲在內存中的實際地址。每個數據緩衝區描述符頭尾相連組成數據緩衝區描述符環,每個發送環或者是接受環至少要有4個緩衝區描述符,對發送環來說每個發送環的最大緩衝區描述符是65536個。狀態欄位有一位是表示的是緩衝區的狀態,其他的位是給eTSEC提供狀態和控制信息的。[0018]由於數據緩衝區描述符中沒有指向下一個數據緩衝區描述符的指針,所以數據緩衝區描述符在內存中存儲必須是按照順序存儲。eTSEC只要每次移動相同的字節數就能讀取下一個緩衝區描述符。在最後一個緩衝區描述符裡需要一個特殊的標識位,當eTSEC讀到這個標識位的時候從新把指針指向第一個緩衝區描述符的地址處。[0019]本發明建立一個過濾表,驅動程序根據數據幀的一些屬性建立一些過濾規則存儲在一個過濾表中,過濾表總共有256個單元,也就是可以容納256條過濾規則。數據幀從網卡進來後先由解析引擎解析協幀頭的各項屬性信息,例如TCP的埠號,或者是VLAN號等等。頭部信息解析出來後就會去匹配過濾表中的規則,從第一條過濾規則開始匹配,一旦匹配成功就停止匹配然後把數據幀放入相應的環中,如果沒有匹配到規則,那麼必須為數據幀分配一個默認的環,把數據放入默認的環中。[0020]把所有的網絡數據都按照過濾規則分類,感興趣的數據和不感興趣的數據分別放在了不同的環中。最後只要在接收中斷處理事件函數中把有感興趣的數據幀提交給上層協議棧,但是不感興趣的數據幀就直接發送至發送環。具體的數據流向如圖2所示。[0021]有益效果:[0022]1、本發明減輕了嵌入式設備的網卡工作負荷。[0023]2、本發明加快了感興趣數據的處理效率。【專利附圖】【附圖說明】[0024]圖1是緩衝區描述符環。[0025]圖2是網絡數據流向示意圖。[0026]圖3是本發明的流程圖。【具體實施方式】[0027]下面通過結合說明書附圖,進一步說明本發明的技術方案。[0028]實施例1[0029]如圖1所示,本發明的數據緩衝區是用來存儲接收和發送的數據幀,數據緩衝區描述符包含了eTSEC發送和接收數據幀的所有必要的信息。每一個緩衝區描述符都包含一個狀態欄位,一個長度欄位和一個指針欄位。數據緩衝區描述符的狀態欄位表示的是數據幀的狀態信息,長度欄位表示的是數據幀的長度信息,指針欄位是數據幀存儲在內存中的實際地址。每個數據緩衝區描述符頭尾相連組成數據緩衝區描述符環,每個發送環或者是接受環至少要有4個緩衝區描述符,對發送環來說每個發送環的最大緩衝區描述符是65536個。狀態欄位有一位是表示的是緩衝區的狀態,其他的位是給eTSEC提供狀態和控制信息的。[0030]由於數據緩衝區描述符中沒有指向下一個數據緩衝區描述符的指針,所以數據緩衝區描述符在內存中存儲必須是按照順序存儲。eTSEC只要每次移動相同的字節數就能讀取下一個緩衝區描述符。在最後一個緩衝區描述符裡需要一個特殊的標識位,當eTSEC讀到這個標識位的時候從新把指針指向第一個緩衝區描述符的地址處。[0031]本發明建立一個過濾表,驅動程序根據數據幀的一些屬性建立一些過濾規則存儲在一個過濾表中,過濾表總共有256個單元,也就是可以容納256條過濾規則。數據幀從網卡進來後先由解析引擎解析協幀頭的各項屬性信息,例如TCP的埠號,或者是VLAN號等等。頭部信息解析出來後就會去匹配過濾表中的規則,從第一條過濾規則開始匹配,一旦匹配成功就停止匹配然後把數據幀放入相應的環中,如果沒有匹配到規則,那麼必須為數據幀分配一個默認的環,把數據放入默認的環中。[0032]把所有的網絡數據都按照過濾規則分類,感興趣的數據和不感興趣的數據分別放在了不同的環中。最後只要在接收中斷處理事件函數中把有感興趣的數據幀提交給上層協議棧,但是不感興趣的數據幀就直接發送至發送環。具體的數據流向如圖2所示。[0033]如圖3所示,本發明提出了一種基於網卡驅動的數據包處理優化方法,其包括如下步驟:[0034]步驟I)網絡數據包從網卡進入,由解析引擎解析數據包頭部,得到頭部屬性;[0035]步驟2)得到的頭部屬性跟過濾列表中的每一項過濾規則匹配;[0036]步驟3)如果匹配成功,那麼把網絡數據包送入規則中指明的數據緩衝區描述符環;[0037]步驟4)如果沒有匹配成功,就將數據送入一個默認的數據緩衝區描述符環中;[0038]步驟5)等待網卡接收中斷,執行中斷事件處理程序;[0039]步驟6)將匹配規則成功的數據環中的數據提交到上層協議棧,默認環中的數據直接發送至發送環;[0040]步驟7)等待網卡發送中斷,執行中斷事件處理程序;[0041]步驟8)將發送環中的數據發送出去;[0042]步驟9)接下來的數據包重複上述步驟I到步驟8。[0043]本發明將網絡數據一分為二,感興趣和不感興趣數據分開放;本發明把不需要的數據轉發,而不是直接丟棄。[0044]實施例2[0045]假設有一臺嵌入式網絡設備,僅對TCP協議的80埠的數據感興趣,其餘的數據都不感興趣,那麼【具體實施方式】為:[0046](I)首先建立過濾表,過濾的數據幀頭屬性是TCP的80埠,只要是TCP埠的數據送[0047]O號環,其餘的數據送I號環:[0048]LOCALSTATUSetsecFilerLoad(VXB_DEVICEJDpDcv)IETSECDRVCTRL:i:pDrvCtrl;ETSECFILERENTRYlabic[4];ETSEC—FILER—ENTRY*p;pDrvClrl=pDcv->pDrvCtrl;bzero((char」table,Sizeof(Lablc));p=:&tablc[0];P-XllcrEnable=ETSECFILERENABLE;p->rqrar.details.tablelndex=0;p->rqfcr.val=0x0000028B;p->rqfpr.val=0x00000006;/*PlaccTCPportequalsto80IralTicinqueue0*/p=&tablc[l];`P-XllcrEnablc=ETSECFILERENABLE;p->rqfar.details.tablclndcx=I;[0049]【權利要求】1.一種基於網卡驅動的數據包處理優化方法,其特徵在於:所述方法包括如下步驟:步驟I)網絡數據包從網卡進入,由解析引擎解析數據包頭部,得到頭部屬性;步驟2)得到的頭部屬性跟過濾列表中的每一項過濾規則匹配;步驟3)如果匹配成功,那麼把網絡數據包送入規則中指明的數據緩衝區描述符環;步驟4)如果沒有匹配成功,就將數據送入一個默認的數據緩衝區描述符環中;步驟5)等待網卡接收中斷,執行中斷事件處理程序;步驟6)將匹配規則成功的數據環中的數據提交到上層協議棧,默認環中的數據直接發送至發送環;步驟7)等待網卡發送中斷,執行中斷事件處理程序;步驟8)將發送環中的數據發送出去;步驟9)接下來的數據包重複上述步驟I到步驟8。2.根據權利要求1所述的一種基於網卡驅動的數據包處理優化方法,其特徵在於:所述方法將網絡數據一分為二,感興趣和不感興趣數據分開放。3.根據權利要求1所述的一種基於網卡驅動的數據包處理優化方法,其特徵在於:所述方法把不需要的數據轉發,而不是直接丟棄。4.根據權利要求1所述的一種基於網卡驅動的數據包處理優化方法,其特徵在於:所述方法的數據緩衝區用來存儲接收和發送的數據幀。5.根據權利要求1所述的一種基於網卡驅動的數據包處理優化方法,其特徵在於:所述方法建立一個過濾表,驅動程序根據數據幀的一些屬性建立一些過濾規則存儲在一個過濾表中,過濾表總共有256個單元。【文檔編號】H04L29/06GK103441951SQ201310360294【公開日】2013年12月11日申請日期:2013年8月19日優先權日:2013年8月19日【發明者】陳丹偉,馬曉丹申請人:南京郵電大學