一種數(shù)據(jù)包分類方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)包分類方法,包括CPU預(yù)處理規(guī)則集和GPU執(zhí)行數(shù)據(jù)包分類兩大部分;預(yù)處理在數(shù)據(jù)包分類開始之前執(zhí)行,預(yù)先對(duì)規(guī)則集進(jìn)行處理,使得后續(xù)包分類操作得以運(yùn)行。預(yù)處理操作在CPU上完成。包分類操作是算法的核心部分,對(duì)輸入的數(shù)據(jù)包進(jìn)行分類,輸出數(shù)據(jù)包匹配的優(yōu)先級(jí)最高的規(guī)則編號(hào)。數(shù)據(jù)包分類操作在GPU上完成。本發(fā)明充分利用GPU的硬件特點(diǎn)及優(yōu)勢(shì),較常規(guī)數(shù)據(jù)包分類算法有較大性能優(yōu)勢(shì)。
【專利說明】
一種數(shù)據(jù)包分類方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及一種數(shù)據(jù)包分類方法。
【背景技術(shù)】
[0002]在現(xiàn)代路由器、交換機(jī)和防火墻中,為了實(shí)現(xiàn)優(yōu)先路由或數(shù)據(jù)包過濾,網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包需要根據(jù)包頭信息,按照一定的規(guī)則進(jìn)行分類,執(zhí)行不同的操作。這樣的問題被稱為數(shù)據(jù)包分類問題。
[0003]在網(wǎng)絡(luò)分層模型中,要傳輸?shù)臄?shù)據(jù)被各層協(xié)議的包頭依次封裝,每層的數(shù)據(jù)包頭都包含若干個(gè)域,它們分別表示該層協(xié)議的特征數(shù)據(jù)。一個(gè)規(guī)則集含有N條規(guī)則,每條規(guī)則由三部分組成:(1)與域有關(guān)的表達(dá)式,表達(dá)式一般是(1元組(&,&,-_4(1),其中&可能是前綴(數(shù)據(jù)包中的IP地址需要進(jìn)行前綴匹配),也可能是范圍(端口號(hào)需要進(jìn)行范圍匹配),或者是一個(gè)精確的值(協(xié)議類型需要進(jìn)行精確匹配);(2)優(yōu)先級(jí),聲明該條規(guī)則在規(guī)則集中的優(yōu)先級(jí),當(dāng)一個(gè)數(shù)據(jù)包和多條規(guī)則匹配時(shí),優(yōu)先級(jí)最高的規(guī)則生效;(3)處理動(dòng)作,如果輸入的數(shù)據(jù)包與規(guī)則匹配,則根據(jù)該動(dòng)作對(duì)數(shù)據(jù)包處理。
[0004]—個(gè)輸入的數(shù)據(jù)包的包頭經(jīng)過解析后得到包頭關(guān)鍵字P,P為d元組(Pl,P2,…,Pd),d維包分類問題就是在規(guī)則集中找到與P匹配,且具有最高優(yōu)先級(jí)的規(guī)則。
[0005]盡管已存在許多改善數(shù)據(jù)包分類性能的技術(shù),但為了滿足日益增加的鏈路速率和流量大小,同時(shí)保持合理的可擴(kuò)展性(考慮一些新的互聯(lián)網(wǎng)技術(shù),諸如SDN),數(shù)據(jù)包分類問題仍然具有挑戰(zhàn)性。
[0006]隨著GPU計(jì)算能力的不斷增強(qiáng),越來越多的系統(tǒng)和應(yīng)用程序開始使用GPU來加速計(jì)算。相對(duì)于CPU,GPU的一個(gè)重要優(yōu)勢(shì)是它能提供相當(dāng)強(qiáng)大的并行計(jì)算能力。如果我們將最新的CPU和最新的GPU進(jìn)彳丁對(duì)比,往往可以發(fā)現(xiàn)GPU能提供遠(yuǎn)超于CPU的每秒鐘浮點(diǎn)運(yùn)算次數(shù)FLOPS (Floating-point Operat1ns Per Second)0CUDA(Compute Unified DeviceArchitecture,統(tǒng)一計(jì)算架構(gòu))是由顯卡設(shè)計(jì)廠商N(yùn)VIDIA推出的通用并行計(jì)算平臺(tái)。通過這個(gè)平臺(tái),開發(fā)者可以使用C/C++、Fortran等高級(jí)語言來編寫代碼,表達(dá)并行機(jī)制,在支持CUDA的GPU上以高性能執(zhí)行并行計(jì)算。
[0007]目前基于GPU平臺(tái)的數(shù)據(jù)包分類已經(jīng)取得一定進(jìn)展。其中,利用GPU的并行計(jì)算能力將基本的線性查找算法或者經(jīng)典的包分類算法移植到GPU上實(shí)現(xiàn),可以大幅提高原系統(tǒng)的吞吐率。但是由于這些算法沒有利用GPU的硬件特點(diǎn),并不適合GPU執(zhí)行,其運(yùn)行效率還有較大的提升空間。
[0008]另一種基于GPU平臺(tái)的包分類器的實(shí)現(xiàn)方案是利用CUDA的驅(qū)動(dòng)API,進(jìn)行程序運(yùn)行時(shí)的動(dòng)態(tài)編譯,加載并執(zhí)行。這種基于GPU的元編程在于最大程度的減少了對(duì)于顯存的訪問需求,使得程序在執(zhí)行包分類時(shí)延遲很小。但是這種方法并不適合大規(guī)模的規(guī)則集的情況并且不支持規(guī)則集動(dòng)態(tài)更新。
【發(fā)明內(nèi)容】
[0009]本發(fā)明所要解決的技術(shù)問題是,針對(duì)現(xiàn)有技術(shù)不足,提供一種數(shù)據(jù)包分類方法。
[0010]為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:一種數(shù)據(jù)包分類方法,包括以下步驟:
1)對(duì)每個(gè)域分別建立索引表,使得對(duì)于所有域,給定任意合法輸入I,均能在常數(shù)時(shí)間內(nèi)查詢到一條長度為規(guī)則集的大小的比特串,該比特串中O的位置編號(hào)對(duì)應(yīng)合法輸入I不匹配的規(guī)則編號(hào),I的位置編號(hào)對(duì)應(yīng)合法輸入I匹配的規(guī)則編號(hào);
2)將所有域的比特串傳輸?shù)紾PU的全局存儲(chǔ)器上待用,并將需要分類的數(shù)據(jù)包包頭關(guān)鍵字從內(nèi)存?zhèn)鬏數(shù)紾PU的存儲(chǔ)器上;
3)取出數(shù)據(jù)包包頭所有域的值,并將所有域的值轉(zhuǎn)換為十進(jìn)制,從GPU全局存儲(chǔ)器取得比特串;
4)對(duì)步驟4)的所有比特串執(zhí)行與操作,合并所有的比特串,得到一條比特串,在合并后的比特串中,值為I的比特位置編號(hào)對(duì)應(yīng)所述數(shù)據(jù)包匹配的規(guī)則編號(hào);
5)檢索所有匹配的規(guī)則,輸出其中優(yōu)先級(jí)最高的規(guī)則。
[0011]所述步驟I)中,所述域包括源端口號(hào)域、目的端口號(hào)域、協(xié)議類型域、源IP地址域和目的IP地址域。
[0012]所述步驟I)的具體實(shí)現(xiàn)過程包括:
對(duì)于源IP地址域,將該域拆成兩部分,每部分16個(gè)比特,最大范圍為[0,65535];首先將該域第一部分共65535條比特串以及第二部分共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中源IP地址域的匹配條件的前16比特轉(zhuǎn)換為范圍,第一部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;將規(guī)則中源IP地址域的匹配條件的后16比特轉(zhuǎn)換為范圍,第二部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
對(duì)于目的IP地址域,將該域拆成兩部分,每部分16個(gè)比特,最大范圍為[0,65535],首先將該域第一部分共65535條比特串以及第二部分共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中目的IP地址域的匹配條件的前16比特轉(zhuǎn)換為范圍,第一部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;將規(guī)則中目的IP地址域的匹配條件的后16比特轉(zhuǎn)換為范圍,第二部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
對(duì)于源端口號(hào)域,首先將該域全部共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中源端口號(hào)域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
對(duì)于目的端口號(hào)域,首先將該域全部共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則i中目的端口號(hào)域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
對(duì)于協(xié)議類型域,首先將該域全部共255條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則i中協(xié)議類型域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I。
[0013]所述步驟4)的具體實(shí)現(xiàn)過程為:
取出數(shù)據(jù)包包頭源IP地址域的值,將源IP地址域的值前16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于源IP地址域第一部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串;將源IP地址域的值后16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制等于源IP地址域第二部分所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
取出數(shù)據(jù)包包頭目的IP地址域的值,將目的IP地址域的值前16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于目的IP地址域第一部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串;將目的IP地址域的值后16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制等于目的IP地址域第二部分所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
取出數(shù)據(jù)包包頭源端口號(hào)域的值,將源端口號(hào)域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于源端口號(hào)域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
取出數(shù)據(jù)包包頭目的端口號(hào)域的值,將目的端口號(hào)域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于目的端口號(hào)域所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串;
取出數(shù)據(jù)包包頭協(xié)議類型域的值,將協(xié)議類型域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于協(xié)議類型域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串。
[0014]與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明針對(duì)GPU的硬件特點(diǎn)及優(yōu)勢(shì)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)及算法,并且充分利用CUDA并行計(jì)算平臺(tái)的相關(guān)技術(shù),跟常規(guī)數(shù)據(jù)包分類方法相比有較大性能優(yōu)勢(shì),實(shí)現(xiàn)了高性能的、靈活、可擴(kuò)展的數(shù)據(jù)包分類。
【附圖說明】
[0015]圖1為本發(fā)明方法與HiCuts算法的吞吐率對(duì)比。
【具體實(shí)施方式】
[0016]本發(fā)明方法主要由兩部分組成:(I)CPU預(yù)處理規(guī)則集;(2)GPU執(zhí)行數(shù)據(jù)包分類。以常見的5元組包分類(數(shù)據(jù)包按照源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)、協(xié)議類型分類)為例,介紹該方法的總體流程。
[0017]一、CPU預(yù)處理規(guī)則集
概述:算法對(duì)于規(guī)則集中不同的域分別進(jìn)行預(yù)處理。其目的是對(duì)每個(gè)域分別建立索引表,使得對(duì)于所有域,給定任意合法輸入I,均能在常數(shù)時(shí)間內(nèi)查詢到一條長度為規(guī)則集的大小的比特串(由O或I構(gòu)成的串)。該比特串中O的位置編號(hào)對(duì)應(yīng)合法輸入I不匹配的規(guī)則編號(hào),I的位置編號(hào)對(duì)應(yīng)合法輸入I匹配的規(guī)則編號(hào)。
[0018]對(duì)每個(gè)域的預(yù)處理:
(I)源IP地址域有32個(gè)比特,最大范圍為[0,232-1],受到內(nèi)存空間限制,無法直接預(yù)處理232-1條比特串。將該域拆成兩部分,每部分16個(gè)比特,最大范圍為[0,65535]。首先將該域第一部分共65535條比特串以及第二部分共65535條比特串全部初始化為全O串。對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中源IP地址域的匹配條件的前16比特轉(zhuǎn)換為范圍,第一部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;將規(guī)則中源IP地址域的匹配條件的后16比特轉(zhuǎn)換為范圍,第二部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I。
[0019](2)目的IP地址域有3 2個(gè)比特,最大范圍為[O,232_1 ],受到內(nèi)存空間限制,無法直接預(yù)處理232-1條比特串。將該域拆成兩部分,每部分16個(gè)比特,最大范圍為[0,65535]。首先將該域第一部分共65535條比特串以及第二部分共65535條比特串全部初始化為全O串。對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中目的IP地址域的匹配條件的前16比特轉(zhuǎn)換為范圍,第一部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;將規(guī)則中目的IP地址域的匹配條件的后16比特轉(zhuǎn)換為范圍,第二部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
(3)源端口號(hào)域有16個(gè)比特,最大范圍為[0,65535]。首先將該域全部共65535條比特串全部初始化為全O串。對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中源端口號(hào)域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
(4)目的端口號(hào)域有16個(gè)比特,最大范圍為[0,65535]。首先將該域全部共65535條比特串全部初始化為全O串。對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則i中目的端口號(hào)域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;
(5)協(xié)議類型域有8個(gè)比特,最大范圍為[O,255]。首先將該域全部共255條比特串全部初始化為全O串。對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則i中協(xié)議類型域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I。
[0020]二、GPU執(zhí)行數(shù)據(jù)包分類
在GPU上執(zhí)行數(shù)據(jù)包分類之前,需要將預(yù)處理完成的5個(gè)域共393472(65536*6+256)條比特串傳輸?shù)紾HJ的全局存儲(chǔ)器上待用。
[0021 ]數(shù)據(jù)包分類過程總體上分為三步:
(1)將需要分類的數(shù)據(jù)包包頭關(guān)鍵字從內(nèi)存?zhèn)鬏數(shù)紾HJ的存儲(chǔ)器上;
(2)GPU開啟大量線程,所有線程并行執(zhí)行分類算法(詳細(xì)見下述GPU執(zhí)行分類算法);
(3)將GPU的計(jì)算結(jié)果傳輸回內(nèi)存。
[0022]默認(rèn)情況下,以上三個(gè)步驟是順序執(zhí)行的,GPU必須等待內(nèi)存至GPU存儲(chǔ)器的拷貝工作全部結(jié)束才能開始工作,在拷貝結(jié)束之前,GPU計(jì)算核心是空閑的。同時(shí),顯存至內(nèi)存的回拷貝也必須等待GHJ的計(jì)算全部結(jié)束,因而造成設(shè)備的利用率不高,程序的效率受到影響。
[0023]通過使用CUDA計(jì)算平臺(tái)中的Streams(多流)技術(shù)優(yōu)化,我們可以使得內(nèi)存至GPU存儲(chǔ)器的拷貝、GPU的計(jì)算、顯存至內(nèi)存的回拷貝以流水線的方式執(zhí)行,從而達(dá)到加速的效果。在CUDA中,流(Stream)的定義是指一系列的串行執(zhí)行的操作組合。在有多條流同時(shí)執(zhí)行時(shí),屬于不同流中的操作是并行執(zhí)行的。
[0024]三、GPU執(zhí)行分類算法
GPU中每個(gè)線程按照以下步驟執(zhí)行包分類算法:
(1)取出數(shù)據(jù)包包頭源IP地址域的值。將源IP地址域的值前16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于源IP地址域第一部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串。將源IP地址域的值后16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制等于源IP地址域第二部分所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
(2)取出數(shù)據(jù)包包頭目的IP地址域的值。將目的IP地址域的值前16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于目的IP地址域第一部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串。將目的IP地址域的值后16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制等于目的IP地址域第二部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串;
(3)取出數(shù)據(jù)包包頭源端口號(hào)域的值。將源端口號(hào)域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于源端口號(hào)域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
(4)取出數(shù)據(jù)包包頭目的端口號(hào)域的值。將目的端口號(hào)域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于目的端口號(hào)域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
(5)取出數(shù)據(jù)包包頭協(xié)議類型域的值。將協(xié)議類型域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于協(xié)議類型域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串;
(6)對(duì)步驟I至5中求得的共7條比特串執(zhí)行與操作,合并所有的比特串,得到一條比特串。在合并后的比特串中,值為I的比特位置編號(hào)對(duì)應(yīng)該數(shù)據(jù)包匹配的規(guī)則編號(hào);
(7)檢索所有匹配的規(guī)則,輸出其中優(yōu)先級(jí)最高的規(guī)則。
[0025]測試實(shí)驗(yàn)中,用測試的數(shù)據(jù)包總數(shù)除以實(shí)驗(yàn)用時(shí),可以得到單位時(shí)間內(nèi)執(zhí)行數(shù)據(jù)包分類的數(shù)量。假設(shè)數(shù)據(jù)包大小均為64Byte,則每秒處理14.88*106個(gè)數(shù)據(jù)包相當(dāng)于1Gbps的吞吐量,以此為依據(jù)作單位換算。
[0026]實(shí)驗(yàn)中使用的仿真數(shù)據(jù)(包括規(guī)則集和數(shù)據(jù)包頭)通過ClassBench程序生成。我們測試了兩種類型的規(guī)則集:訪問控制列表(ACL),防火墻(FW)。在實(shí)驗(yàn)中,每種類型的規(guī)則集都有四種不同的規(guī)模,從Ik到4k遞增。例如,fw_lk表示防火墻類型的規(guī)則集,規(guī)模大小為lk。我們只考慮5個(gè)域的規(guī)則:源/目的IP地址、源/目的端口以及協(xié)議類型。
[0027]測試主機(jī)的CPU為Intel的至強(qiáng)系列E5-2630,GPU為NVIDIA的TeslaK20m,有2496個(gè)⑶DA計(jì)算核心以及6GB的全局存儲(chǔ)。PC1-E 3.0插槽連接GPU和主機(jī),為內(nèi)存與GPU之間的傳輸提供16 GB/s的理論帶寬。
[0028]本專利中描述的算法分別使用不同的數(shù)據(jù)集與一種經(jīng)典的包分類算法HiCuts進(jìn)行對(duì)比測試。由于CUDA的參數(shù)配置會(huì)對(duì)算法的性能產(chǎn)生巨大影響,因而我們以不同的流數(shù)量、線程塊和線程數(shù)組合進(jìn)行多次測試,使用最優(yōu)化的參數(shù)配置。
[0029]其中每個(gè)數(shù)據(jù)點(diǎn)測試5次,取平均值作為本次測試結(jié)果。結(jié)果如圖1所示,在常規(guī)規(guī)模數(shù)據(jù)集的情況下,該算法較HiCuts有著較為明顯的優(yōu)勢(shì),其吞吐率較HiCuts提高了70%至400% ο
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)包分類方法,其特征在于,包括以下步驟: 1)對(duì)每個(gè)域分別建立索引表,使得對(duì)于所有域,給定任意合法輸入I,均能在常數(shù)時(shí)間內(nèi)查詢到一條長度為規(guī)則集的大小的比特串,該比特串中O的位置編號(hào)對(duì)應(yīng)合法輸入I不匹配的規(guī)則編號(hào),I的位置編號(hào)對(duì)應(yīng)合法輸入I匹配的規(guī)則編號(hào); 2)將所有域的比特串傳輸?shù)紾PU的全局存儲(chǔ)器上待用,并將需要分類的數(shù)據(jù)包包頭關(guān)鍵字從內(nèi)存?zhèn)鬏數(shù)紾PU的存儲(chǔ)器上; 3)取出數(shù)據(jù)包包頭所有域的值,并將所有域的值轉(zhuǎn)換為十進(jìn)制,從GPU全局存儲(chǔ)器取得比特串; 4)對(duì)步驟3)的所有比特串執(zhí)行與操作,合并所有的比特串,得到一條比特串,在合并后的比特串中,值為I的比特位置編號(hào)對(duì)應(yīng)所述數(shù)據(jù)包匹配的規(guī)則編號(hào); 5)檢索所有匹配的規(guī)則,輸出其中優(yōu)先級(jí)最高的規(guī)則。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)包分類方法,其特征在于,所述步驟I)中,所述域包括源端口號(hào)域、目的端口號(hào)域、協(xié)議類型域、源IP地址域和目的IP地址域。3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)包分類方法,其特征在于,所述步驟I)的具體實(shí)現(xiàn)過程包括: 對(duì)于源IP地址域,將該域拆成兩部分,每部分16個(gè)比特,最大范圍為[0,65535];首先將該域第一部分共65535條比特串以及第二部分共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中源IP地址域的匹配條件的前16比特轉(zhuǎn)換為范圍,第一部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;將規(guī)則中源IP地址域的匹配條件的后16比特轉(zhuǎn)換為范圍,第二部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I; 對(duì)于目的IP地址域,將該域拆成兩部分,每部分16個(gè)比特,最大范圍為[0,65535],首先將該域第一部分共65535條比特串以及第二部分共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中目的IP地址域的匹配條件的前16比特轉(zhuǎn)換為范圍,第一部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I;將規(guī)則中目的IP地址域的匹配條件的后16比特轉(zhuǎn)換為范圍,第二部分中,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I; 對(duì)于源端口號(hào)域,首先將該域全部共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則中源端口號(hào)域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I; 對(duì)于目的端口號(hào)域,首先將該域全部共65535條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則i中目的端口號(hào)域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I; 對(duì)于協(xié)議類型域,首先將該域全部共255條比特串全部初始化為全O串;對(duì)規(guī)則集中所有規(guī)則做如下處理:對(duì)于編號(hào)為i的規(guī)則,將規(guī)則i中協(xié)議類型域的匹配條件轉(zhuǎn)換為范圍,編號(hào)在該范圍內(nèi)的所有比特串的第i個(gè)位置均置為I。4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)包分類方法,其特征在于,所述步驟4)的具體實(shí)現(xiàn)過程為: 取出數(shù)據(jù)包包頭源IP地址域的值,將源IP地址域的值前16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于源IP地址域第一部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串;將源IP地址域的值后16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制等于源IP地址域第二部分所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串; 取出數(shù)據(jù)包包頭目的IP地址域的值,將目的IP地址域的值前16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于目的IP地址域第一部分所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串;將目的IP地址域的值后16比特轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制等于目的IP地址域第二部分所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串; 取出數(shù)據(jù)包包頭源端口號(hào)域的值,將源端口號(hào)域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于源端口號(hào)域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串; 取出數(shù)據(jù)包包頭目的端口號(hào)域的值,將目的端口號(hào)域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于目的端口號(hào)域所求比特串的編號(hào),從GHJ全局存儲(chǔ)器取得比特串; 取出數(shù)據(jù)包包頭協(xié)議類型域的值,將協(xié)議類型域的值轉(zhuǎn)換為十進(jìn)制,該十進(jìn)制值等于協(xié)議類型域所求比特串的編號(hào),從GPU全局存儲(chǔ)器取得比特串。
【文檔編號(hào)】H04L12/741GK105897587SQ201610194030
【公開日】2016年8月24日
【申請(qǐng)日】2016年3月31日
【發(fā)明人】張大方, 鄭錦濤, 李彥彪, 李果, 何大成
【申請(qǐng)人】湖南大學(xué)