两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種匹配報文規(guī)則的方法和裝置的制作方法

文檔序號:7665477閱讀:256來源:國知局
專利名稱:一種匹配報文規(guī)則的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),特別是涉及一種匹配報文規(guī)則的方法和裝置。

背景技術(shù)
在網(wǎng)絡(luò)中,經(jīng)常需要對特定的報文進(jìn)行特定的處理,這樣,則需要在網(wǎng)絡(luò)設(shè)備上配置報文規(guī)則,在報文規(guī)則中定義出報文特性信息與處理動作的對應(yīng)關(guān)系。當(dāng)網(wǎng)絡(luò)設(shè)備接收到報文后,根據(jù)報文攜帶的特性信息匹配報文規(guī)則,根據(jù)匹配到的報文規(guī)則對報文進(jìn)行對應(yīng)的處理。
目前,在定義報文規(guī)則時,所使用的報文特性信息通常為報文的五元組,包括源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議類型。表1示出了現(xiàn)有技術(shù)中存儲報文規(guī)則的方式,其中,IP地址’/’中,“/”后的數(shù)字表示掩碼位數(shù),比如,規(guī)則1目的IP地址2.2.2.0/24中的24,表示有24位掩碼位數(shù),即只比較24位,剩余位數(shù)不比較。
表1 利用表1所示的報文規(guī)則表,在現(xiàn)有技術(shù)中,網(wǎng)絡(luò)設(shè)備在接收到報文后,則從報文中提取五元組,然后遍歷表1所示的所有報文規(guī)則,將所提取的五元組與每一個報文規(guī)則中的五元組進(jìn)行匹配,當(dāng)匹配成功后,根據(jù)匹配成功的報文規(guī)則中定義的處理動作對報文進(jìn)行處理,比如處理動作為通過時則進(jìn)行相應(yīng)地轉(zhuǎn)發(fā),處理動作為不通過時則丟棄報文。其中,匹配成功是指從報文中提取的五元組屬于報文規(guī)則中定義的五元組的范圍之內(nèi)。比如,報文1五元組為1.1.1.1,2.2.2.1,6,1024,23,符合規(guī)則1,允許通過;如報文2五元組為1.1.1.2,2.2.2.1,6,1024,80,不符合規(guī)則1,符合規(guī)則2,允許通過;如報文3五元組為3.1.1.2,2.2.2.1,6,1024,80,不符合規(guī)則1-2,符合規(guī)則3,允許通過;如報文4五元組為3.1.1.2,2.2.2.1,6,1024,23,不符合規(guī)則1-3,符合規(guī)則4,不允許通過。
由以上描述可以看出,現(xiàn)有技術(shù)在執(zhí)行匹配報文規(guī)則的處理時,需要按照從頭至尾的順序,對每一條報文規(guī)則進(jìn)行逐一匹配,直到匹配成功。這樣,當(dāng)網(wǎng)絡(luò)中報文規(guī)則數(shù)量眾多時,很可能需要花費(fèi)較長的時間來匹配大量的報文規(guī)則,才能最終匹配成功,從而大大降低了匹配報文規(guī)則的速度,降低了設(shè)備的處理性能。
另外,在現(xiàn)有技術(shù)中,由于是對所有報文規(guī)則進(jìn)行依次遍歷匹配,因此,在對攜帶一種五元組的報文進(jìn)行報文規(guī)則的匹配過程中,可能只需要匹配少量的報文規(guī)則就可以匹配成功,而對攜帶另一種五元組的報文進(jìn)行報文規(guī)則的匹配過程中,卻需要匹配大量的報文規(guī)則才能匹配成功,從而使得網(wǎng)絡(luò)設(shè)備對不同報文的處理時間差異較大,造成了網(wǎng)絡(luò)的抖動和不穩(wěn)定。比如,當(dāng)網(wǎng)絡(luò)設(shè)備對不同報文處理時間相差較大時,接收該網(wǎng)絡(luò)設(shè)備發(fā)出報文的其他設(shè)備則無法確定合適的等待接收報文的時間,不利于網(wǎng)絡(luò)性能的穩(wěn)定。


發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種匹配報文規(guī)則的方法和裝置,以便于提高匹配報文規(guī)則的速度。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 一種匹配報文規(guī)則的方法,該方法包括 建立多級存儲表,其中,除最后一級存儲表之外的其他級存儲表中記錄數(shù)值索引和數(shù)值范圍編號的對應(yīng)關(guān)系,最后一級存儲表中記錄數(shù)值范圍編號形成的組合索引與報文規(guī)則號的對應(yīng)關(guān)系; 當(dāng)接收到報文后,在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號; 將獲取的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。
一種匹配報文規(guī)則的裝置,該裝置包括 多級存儲表建立單元,用于建立并保存多級存儲表,其中,除最后一級存儲表之外的其他級存儲表中記錄數(shù)值索引和數(shù)值范圍編號的對應(yīng)關(guān)系,最后一級存儲表中記錄數(shù)值范圍編號形成的組合索引與報文規(guī)則號的對應(yīng)關(guān)系; 報文匹配執(zhí)行單元,用于在接收到報文后,在多級存儲表建立單元保存的第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找多級存儲表建立單元保存的下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在多級存儲表建立單元保存的最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號;將獲取的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。
由此可見,本發(fā)明具有以下優(yōu)點(diǎn) 1、在本發(fā)明中,根據(jù)原始的報文規(guī)則表建立了多級存儲表,每一級存儲表中只有索引與編號或報文規(guī)則號的對應(yīng)關(guān)系,這樣,當(dāng)網(wǎng)絡(luò)設(shè)備接收到報文后,只需查找該多級存儲表,而無需遍歷查找原始的報文規(guī)則表,在報文規(guī)則表中報文規(guī)則數(shù)量眾多的情況下,查找多級存儲表能夠大大減少匹配到報文規(guī)則的時間,從而大大提高了匹配報文規(guī)則的速度,提高了設(shè)備的處理性能。
2、在本發(fā)明中,對于任意一個報文進(jìn)行報文規(guī)則匹配時,匹配的次數(shù)只取決于所建立的多級存儲表,由于多級存儲表是固定的,因此,對于不同的報文進(jìn)行匹配報文規(guī)則的次數(shù)是完全相等的。比如,建立7個第一級存儲表和1個第二級存儲表之后,對于所有報文均需要進(jìn)行8次匹配操作,匹配的次數(shù)完全相等。這樣,使得網(wǎng)絡(luò)設(shè)備對不同報文的處理時間差異不大,避免了現(xiàn)有技術(shù)中網(wǎng)絡(luò)的抖動和不穩(wěn)定,從而有利于網(wǎng)絡(luò)進(jìn)行各種QOS處理。比如,由于網(wǎng)絡(luò)設(shè)備對所有報文進(jìn)行匹配報文規(guī)則的時間相差不多,因此,可以在接收該網(wǎng)絡(luò)設(shè)備發(fā)出報文的其他設(shè)備上確定固定且合適的等待接收報文的時間,從而提高了網(wǎng)絡(luò)的性能。



圖1是在本發(fā)明實(shí)施例1中實(shí)現(xiàn)匹配報文規(guī)則的流程圖。
圖2是在本發(fā)明實(shí)施例2中實(shí)現(xiàn)匹配報文規(guī)則的流程圖。
圖3是在本發(fā)明一個實(shí)施例中實(shí)現(xiàn)匹配報文規(guī)則的裝置結(jié)構(gòu)示意圖。

具體實(shí)施例方式 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步地詳細(xì)描述。
本發(fā)明提出了一種匹配報文規(guī)則的方法。在該方法中,建立多級存儲表,其中,除最后一級存儲表之外的其他級存儲表中記錄數(shù)值索引和數(shù)值范圍編號的對應(yīng)關(guān)系,最后一級存儲表中記錄數(shù)值范圍編號形成的組合索引與報文規(guī)則號的對應(yīng)關(guān)系;當(dāng)接收到報文后,在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號;將查找到的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。
在本發(fā)明中,所建立的多級存儲表可以是二級存儲表或者是三級及以上的存儲表。
圖1是在本發(fā)明實(shí)施例1中實(shí)現(xiàn)匹配報文規(guī)則的流程圖。參見圖1,在本發(fā)明一個較佳實(shí)施例中,首先以利用表1所示的原始報文規(guī)則表建立二級存儲表為例,實(shí)現(xiàn)匹配報文規(guī)則的過程具體包括以下步驟 步驟101對于原始報文規(guī)則表中的每一條報文規(guī)則,將其五元組中的每一個元素劃分為指定位的塊,得到第一級報文規(guī)則表。
這里,由于五元組包括五個元素源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議類型。其中,源IP地址和目的IP地址均為32位;源端口號和目的端口號均為16位;協(xié)議類型為8位,因此,在本步驟中,一種較佳的處理方式為在對每一條報文規(guī)則的五元組劃分塊時,將源IP地址劃分為16位的兩個塊,將目的IP地址劃分為16位的兩個塊,將源端口號劃分為16位的一個塊,將目的端口號劃分為16位的一個塊,對協(xié)議類型劃分一個8位的塊,總共7塊。這樣,表1所示的原始報文規(guī)則表經(jīng)過本步驟的處理后則可以得到如下表2所示的第一級報文規(guī)則表。
表2第一級報文規(guī)則表 當(dāng)然,在本步驟中,將每一條報文規(guī)則中的五元組劃分為如表2所示的第一級報文規(guī)則表中的7個塊,只是一種較佳的實(shí)現(xiàn)方式。在實(shí)際的業(yè)務(wù)實(shí)現(xiàn)中,也可以生成表2所示形式之外的其他第一級報文規(guī)則表,也就是說,可以將五元組劃分為其他位的多個塊,比如,在劃分塊時,將源IP地址、目的IP地址、源端口號和目的端口號分別劃分為8位的四個塊,并對協(xié)議類型劃分一個8位的塊,生成總共13塊的第一級報文規(guī)則表。
在以下過程中,以將每一條報文規(guī)則中的五元組劃分為如表2所示的第一級報文規(guī)則表中的7個塊為例進(jìn)行說明。
步驟102將第一級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表。
一,對于所有報文規(guī)則對應(yīng)的五元組中的元素源IP地址。
由于在步驟101中,每一條報文規(guī)則五元組中的元素源IP地址均劃分為源IP地址高16位和源IP地址低16位,共兩類塊,因此,在本步驟102中,由于是針對第一級報文規(guī)則表中同一類的所有塊分割數(shù)值范圍,因此,不僅需要將所有報文規(guī)則中源IP地址高16位對應(yīng)的指定位的塊分割為相互不重復(fù)的數(shù)值范圍,而且需要將所有報文規(guī)則中源IP地址低16位對應(yīng)的指定位的塊分割為相互不重復(fù)的數(shù)值范圍。
首先、針對第一級報文規(guī)則表中的一類塊-源IP地址高16位。
在第一級報文規(guī)則表中,報文規(guī)則1至報文規(guī)則4中源IP地址高16位分別為1.1/16,1.1/16,0.0/0,0.0/0(其中,符號“/”后的數(shù)字為掩碼位數(shù))。
(1)對報文規(guī)則1至報文規(guī)則4中源IP地址高1 6位分別進(jìn)行1 6進(jìn)制轉(zhuǎn)換處理。在進(jìn)行16進(jìn)制轉(zhuǎn)換處理后可以分別得到0x0101,0x0101,0x0000-0xffff,0x0000-0xffff。(2)根據(jù)第一級報文規(guī)則表中每個源IP地址高16位的數(shù)值范圍,將上述轉(zhuǎn)換處理后的16進(jìn)制數(shù)分割為相互不重復(fù)的16進(jìn)制數(shù)值范圍0x0000-0x0100,0x0101,0x0102-0xffff。(3)建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表。其中,對于數(shù)值范圍0x0000-0x0100,由于該數(shù)值范圍屬于報文規(guī)則3和4中源IP地址高16位0.0/0和0.0/0表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則3和4;對于數(shù)值范圍0x0101,由于該數(shù)值范圍分別屬于報文規(guī)則1、2、3和4中源IP地址高16位表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則1、2、3和4;對于數(shù)值范圍0x0102-0xffff,由于該數(shù)值范圍分別屬于報文規(guī)則3和4中源IP地址高16位表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則3和4。這樣,針對第一級報文規(guī)則表中的源IP地址高16位,所建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表可以參見如下表3所示。
表3源IP地址高16位的對應(yīng)關(guān)系表 參見表3,由于數(shù)值范圍0x0000-0x0100和0x0102-0xffff對應(yīng)的報文規(guī)則相同,均為報文規(guī)則3和4,因此,為該兩個數(shù)值范圍定義相同的數(shù)值范圍編號。
其次、針對第一級報文規(guī)則表中的一類塊-源IP地址低16位。
在第一級報文規(guī)則表中,報文規(guī)則1至報文規(guī)則4中源IP地址低16位分別為1.1/16,1.0/8,0.0/0,0.0/0(其中,符號“/”后的數(shù)字為掩碼位數(shù))。
(1)對報文規(guī)則1至報文規(guī)則4中源IP地址低16位分別進(jìn)行16進(jìn)制轉(zhuǎn)換處理。在進(jìn)行16進(jìn)制轉(zhuǎn)換處理后,可以得到0x0101,0x0100-0x01ff,0x0000-0xffff,0x0000-0xffff。(2)根據(jù)第一級報文規(guī)則表中每個源IP地址低16位的數(shù)值范圍,將上述轉(zhuǎn)換處理后的16進(jìn)制數(shù)分割為相互不重復(fù)的16進(jìn)制數(shù)值范圍0x0000-0x00ff、0x01000、0x0101、0x0102-0x01ff和0x0200-0xffff。(3)建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表。其中,對于數(shù)值范圍0x0000-0x00ff,由于該數(shù)值范圍屬于報文規(guī)則3和4中源IP地址低16位0.0/0和0.0/0表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則3和4;對于數(shù)值范圍0x0100,由于該數(shù)值范圍屬于報文規(guī)則2、3和4中源IP地址低16位表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則2、3和4;對于數(shù)值范圍0x0101,由于該數(shù)值范圍分別屬于報文規(guī)則1、2、3和4中源IP地址低16位表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則1、2、3和4;對于數(shù)值范圍0x0102-0x01ff,由于該數(shù)值范圍分別屬于報文規(guī)則2、3和4中源IP地址低16位表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則2、3和4;對于數(shù)值范圍0x0200-0xffff,由于該數(shù)值范圍分別屬于報文規(guī)則3和4中源IP地址低16位表示的范圍內(nèi),因此,其所屬的規(guī)則為報文規(guī)則3和4。這樣,針對第一級報文規(guī)則表中的源IP地址低16位,所建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表可以參見如下表4所示。
表4源IP地址低16位的對應(yīng)關(guān)系表 參見表4,由于數(shù)值范圍0x0000-0x00ff和0x0200-0xffff對應(yīng)的報文規(guī)則相同,均為報文規(guī)則3和4,因此,為該兩個數(shù)值范圍定義相同的數(shù)值范圍編號0;由于數(shù)值范圍0x0100和0x0102-0x01ff對應(yīng)的報文規(guī)則相同,均為報文規(guī)則2,3和4,因此,為該兩個數(shù)值范圍定義相同的數(shù)值范圍編號1。
至此,則針對第一級報文規(guī)則表中源IP地址的高16位對應(yīng)的一類塊和低16位對應(yīng)的另一類塊分別建立了數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表。
二,對于所有報文規(guī)則對應(yīng)的五元組中的元素目的IP地址。
利用上述對源IP地址高16位和低16位相同的處理過程,可以得到,在將第一級報文規(guī)則表中報文規(guī)則1至報文規(guī)則4中同一類的塊~目的IP地址高16位,分別進(jìn)行16進(jìn)制轉(zhuǎn)換處理、將轉(zhuǎn)換處理后的16進(jìn)制數(shù)分割為相互不重復(fù)的16進(jìn)制數(shù)值范圍、以及建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表后,該對應(yīng)關(guān)系表可以如下表5所示。
表5目的IP地址高16位的對應(yīng)關(guān)系表 同理,在對第一級報文規(guī)則表中報文規(guī)則1至報文規(guī)則4中同一類的塊~目的IP地址低16位,分別進(jìn)行16進(jìn)制轉(zhuǎn)換處理、將轉(zhuǎn)換處理后的16進(jìn)制數(shù)分割為相互不重復(fù)的16進(jìn)制數(shù)值范圍、以及建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表后,該對應(yīng)關(guān)系表可以如下表6所示。
表6目的IP地址低16位的對應(yīng)關(guān)系表 三,對于所有報文規(guī)則對應(yīng)的五元組中的元素源端口號。
由于第一級報文規(guī)則表中每一條報文規(guī)則中源端口號只有一類16位的塊,因此,利用上述對源IP地址高16位和低16位相同的處理過程,可以得到,在將第一級報文規(guī)則表中報文規(guī)則1至報文規(guī)則4中源端口號分別進(jìn)行16進(jìn)制轉(zhuǎn)換處理、將轉(zhuǎn)換處理后的16進(jìn)制數(shù)分割為相互不重復(fù)的16進(jìn)制數(shù)值范圍、以及建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表后,該對應(yīng)關(guān)系表可以如下表7所示。
表7源端口號的對應(yīng)關(guān)系表 四,對于所有報文規(guī)則對應(yīng)的五元組中的元素目的端口號。
由于在第一級報文規(guī)則表中,每一條報文規(guī)則中目的端口號只有一類16位的塊,因此,利用上述對源IP地址高16位和低16位相同的處理過程,可以得到,在將報文規(guī)則1至報文規(guī)則4中目的端口號分別進(jìn)行16進(jìn)制轉(zhuǎn)換處理、將轉(zhuǎn)換處理后的16進(jìn)制數(shù)分割為相互不重復(fù)的16進(jìn)制數(shù)值范圍、以及建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表后,該對應(yīng)關(guān)系表可以如下表8所示。
表8目的端口號的對應(yīng)關(guān)系表 五,對于所有報文規(guī)則對應(yīng)的五元組中的元素協(xié)議類型。
由于在第一級報文規(guī)則表中,每一條報文規(guī)則中協(xié)議類型只有一類8位的塊,因此,利用上述對源IP地址高16位和低16位相類似的處理過程,可以得到,將報文規(guī)則1至報文規(guī)則4中協(xié)議類型分別進(jìn)行的是8進(jìn)制的轉(zhuǎn)換處理、將轉(zhuǎn)換處理后的8進(jìn)制數(shù)分割為相互不重復(fù)的8進(jìn)制數(shù)值范圍、以及建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表后,該對應(yīng)關(guān)系表可以如下表9所示。
表9協(xié)議類型的對應(yīng)關(guān)系表 步驟103根據(jù)第一級報文規(guī)則表中同一類的所有塊分別建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表,分別設(shè)置與第一級報文規(guī)則表中每一類塊對應(yīng)的第一級存儲表。
第一級存儲表的格式可以設(shè)計為數(shù)值索引和其對應(yīng)的數(shù)值范圍編號。
本步驟中,設(shè)置與所有報文規(guī)則五元組中每一類塊對應(yīng)的第一級存儲表的過程為將第一級報文規(guī)則表中,同一類的所有塊對應(yīng)進(jìn)制的最小數(shù)到該同一類的所有塊對應(yīng)的最大數(shù)的數(shù)值范圍內(nèi)的每一個數(shù)值依次作為第一級存儲表中的各個數(shù)值索引,根據(jù)該同一類的所有塊的對應(yīng)關(guān)系表中每一個數(shù)值范圍對應(yīng)的數(shù)值范圍編號,確定第一級存儲表中每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號。
下面則以具體的例子來說明本步驟的實(shí)現(xiàn)過程。
由于在第一級報文規(guī)則表中,所有源IP地址高16位屬于同一類的塊,其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表3所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表10。

表10源IP地址高16位的第一級存儲表 這里,參見表3和表10,對于源IP地址高16位,由于在表3所示的對應(yīng)關(guān)系表中為16進(jìn)制數(shù)值范圍,因此,在表10中數(shù)值索引從16進(jìn)制的最小數(shù)0x0000一直到16進(jìn)制的最大數(shù)0xffff,并且,對于每一個數(shù)值索引,根據(jù)表3中每一個數(shù)值范圍與數(shù)值范圍編號的對應(yīng)關(guān)系,依次在表10所示的第一級存儲表中填寫與每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,比如,在表3中,數(shù)值范圍0x0000-0x0100對應(yīng)的數(shù)值范圍編號為0,因此,在表10中,從0x0000到0x0100的每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號均為0,再如,在表3中,數(shù)值范圍0x0101對應(yīng)的數(shù)值范圍編號為1,因此,在表10中,數(shù)值索引0x0101對應(yīng)的數(shù)值范圍編號為1。
同理,對于第一級報文規(guī)則表中所有源IP地址低16位,其屬于同一類的塊,由于其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表4所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表11。

表11源IP地址低16位的第一級存儲表 同理,對于第一級報文規(guī)則表中所有目的IP地址高16位,其屬于同一類的塊,由于其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表5所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表12。

表12目的IP地址高16位的第一級存儲表 同理,對于第一級報文規(guī)則表中所有目的IP地址低16位,其屬于同一類的塊,由于其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表6所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表13。

表13目的IP地址低16位的第一級存儲表 同理,對于第一級報文規(guī)則表中所有的源端口號,其屬于同一類的塊,由于其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表7所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表14。

表14源端口號的第一級存儲表 同理,對于第一級報文規(guī)則表中所有的目的端口號,其屬于同一類的塊,由于其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表8所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表15。

表15目的端口號的第一級存儲表 同理,對于第一級報文規(guī)則表中所有的協(xié)議類型,其屬于同一類的塊,由于其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表9所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第一級存儲表可以參見如下表16。

表16協(xié)議類型的第一級存儲表 步驟104根據(jù)第一級報文規(guī)則表和為第一級報文規(guī)則表中同一類的所有塊分別設(shè)置的第一級存儲表,生成第二級報文規(guī)則表。
這里,生成第二級報文規(guī)則表的過程為根據(jù)第一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)第一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號。
參見表2和表10至表16,可以得到第二級報文規(guī)則表如下表17所示。
表17第二級報文規(guī)則表 這里,以表17中報文規(guī)則1中每一個塊的替換過程為例,說明表17第二級報文規(guī)則表的得到過程。
首先,參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,源IP地址高16位是一個塊,原為1.1/16,即數(shù)值范圍為0x0101,根據(jù)該數(shù)值范圍0x0101查找表10所示的源IP地址高16位的第一級存儲表,可以得到,報文規(guī)則1源IP地址高16位的數(shù)值范圍對應(yīng)的數(shù)值范圍編號為1,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的源IP地址高16位處寫入該查找到的數(shù)值范圍編號1。
參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,源IP地址低16位是一個塊,原為1.1/16,即數(shù)值范圍為0x0101,根據(jù)該數(shù)值范圍0x0101查找表11所示的源IP地址低16位的第一級存儲表,可以得到,報文規(guī)則1源IP地址低16位的數(shù)值范圍對應(yīng)的數(shù)值范圍編號為2,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的源IP地址低16位處寫入該查找到的數(shù)值范圍編號2。
參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,目的IP地址高16位是一個塊,原為2.2/16,即數(shù)值范圍為0x0202,根據(jù)該數(shù)值范圍0x0202查找表12所示的目的IP地址高16位的第一級存儲表,可以得到,報文規(guī)則1目的IP地址高16位的數(shù)值范圍對應(yīng)的數(shù)值范圍編號為1,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的目的IP地址高16位處寫入該查找到的數(shù)值范圍編號1。
參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,目的IP地址低16位是一個塊,原為2.0/8,即數(shù)值范圍為0x0200-0x02ff,根據(jù)該數(shù)值范圍查找表13所示的目的IP地址低16位的第一級存儲表,可以得到,報文規(guī)則1目的IP地址低16位的數(shù)值范圍包括的所有數(shù)值索引對應(yīng)的數(shù)值范圍編號包括1、2和3,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的目的IP地址低16位處寫入該查找到的數(shù)值范圍編號1、2和3。
參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,協(xié)議類型是一個塊,數(shù)值范圍為0x00~0xff,根據(jù)該數(shù)值范圍查找表16所示的協(xié)議類型的第一級存儲表,可以得到,報文規(guī)則1協(xié)議類型的數(shù)值范圍包括的所有數(shù)值索引對應(yīng)的數(shù)值范圍編號包括0和1,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的協(xié)議類型處寫入該查找到的數(shù)值范圍編號0和1。
參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,源端口號是一個塊,數(shù)值范圍為0x0000~0xffff,根據(jù)該數(shù)值范圍查找表14所示的源端口號的第一級存儲表,可以得到,報文規(guī)則1源端口號的數(shù)值范圍包括的所有數(shù)值索引對應(yīng)的數(shù)值范圍編號僅包括0,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的源端口號處寫入該查找到的數(shù)值范圍編號0。
參見表2所示的第一級報文規(guī)則表,在報文規(guī)則1中,目的端口號是一個塊,數(shù)值范圍為0x0000~0xffff,根據(jù)該數(shù)值范圍查找表15所示的目的端口號的第一級存儲表,可以得到,報文規(guī)則1目的端口號的數(shù)值范圍包括的所有數(shù)值索引對應(yīng)的數(shù)值范圍編號包括0和1,因此,在表17所示的第二級報文規(guī)則表中,在報文規(guī)則1的目的端口號處寫入該查找到的數(shù)值范圍編號0和1。
步驟105根據(jù)第二級報文規(guī)則表,確定每一條報文規(guī)則中各個塊的數(shù)值范圍編號形成的組合,利用組合和該組合所對應(yīng)的報文規(guī)則號生成第二級存儲表。
第二級存儲表的格式可以設(shè)計為組合索引及其對應(yīng)的報文規(guī)則號。
在本步驟中,生成第二級存儲表的過程包括根據(jù)第二級報文規(guī)則表中塊的個數(shù),確定組合的位數(shù),將該位數(shù)組合中從最小組合數(shù)到塊的數(shù)值范圍編號形成的最大組合數(shù)范圍內(nèi)的每一個組合值作為第二級存儲表中的各個組合索引,將第二級報文規(guī)則表中每一條報文規(guī)則的各個塊的數(shù)值范圍編號形成的各個組合值對應(yīng)的報文規(guī)則的編號,作為第二級存儲表中組合索引對應(yīng)的報文規(guī)則號,得到第二級存儲表。
利用表17所示的第二級報文規(guī)則表生成的第二級存儲表可以參見如下表18所示。

表18第二級存儲表 參見表17和表18,在表17中,由于將報文規(guī)則中每一個五元組劃分了7塊,因此,每一條報文規(guī)則中7個塊的數(shù)值范圍編號形成的組合是一個7位數(shù)字的組合。該7位數(shù)字的組合的最小組合值為0000000,塊的數(shù)值范圍編號形成的最大組合數(shù)為1213101,這樣,在表18中,組合索引值從0000000~1213101。比如,對于表18中的第一個組合索引值0000000,參見表17,可以得到報文規(guī)則4中第1到第7個塊,即源IP地址高16位、源IP地址低16位、目的IP地址高16位、目的IP地址低16位、協(xié)議類型、源端口號和目的端口號,分別取該7個塊的第一個數(shù)值范圍編號0,則可以得到表18中第一個組合索引值0000000,因此,可以確定表18中組合索引值0000000對應(yīng)的報文規(guī)則號為4。再如,對于表18中的組合索引值0012101,參見表17,分別取報文規(guī)則3的7個塊的第一個數(shù)值范圍編號,則可以得到組合索引值0012101,因此,可以確定表18中組合索引值0012101對應(yīng)的報文規(guī)則號為3。
可以得到,在本步驟中,形成第二級存儲表中組合索引的順序是源IP地址高16位、源IP地址低16位、目的IP地址高16位、目的IP地址低16位、源端口號、目的端口號和協(xié)議類型。
需要說明的是,在本步驟中,如果表18中的任意一個組合值對應(yīng)2個或以上的報文規(guī)則,那么,在表18的第二級存儲表中該組合對應(yīng)的報文規(guī)則號的位置上只記錄優(yōu)先級最高的報文規(guī)則的號(優(yōu)先級最高的報文規(guī)則號通常為編號最小的報文規(guī)則)。比如,對于報文規(guī)則1的7個塊,依次取前3個塊的數(shù)值范圍編號1、2、1,取第4個塊和第5塊的第2個數(shù)值范圍編號2、1,取第6個塊的數(shù)值范圍編號0,取第7個塊的第2個數(shù)值范圍編號2,這樣,則得到了表18中的組合值1212101,也就是說,組合值1212101對應(yīng)報文規(guī)則號1;而對報文規(guī)則3和4進(jìn)行分析可知,其7個塊的數(shù)值范圍編號均可以組合出組合值1212101,也就是說,組合值1212101也對應(yīng)報文規(guī)則號3和4;根據(jù)一個報文只能匹配一個報文規(guī)則的原則,表18中只記錄報文規(guī)則號最小(即優(yōu)先級最高)的報文規(guī)則號1。
至此,則利用表1所示的原始的報文規(guī)則表,在網(wǎng)絡(luò)設(shè)備中生成了表10至表17所示的7個第一級存儲表和表18所示的1個第二級存儲表。在后續(xù)匹配報文規(guī)則的過程中,則可以直接利用7個第一級存儲表和1個第二級存儲表來進(jìn)行匹配,具體實(shí)現(xiàn)包括如下步驟106至107。
步驟106當(dāng)網(wǎng)絡(luò)設(shè)備接收到一個報文時,根據(jù)第一級報文規(guī)則表中劃分的塊,依次從該報文中提取對應(yīng)的塊,依次在每一類塊對應(yīng)的第一級存儲表中查找與該塊的數(shù)值對應(yīng)的數(shù)值范圍編號。
由于第一級報文規(guī)則表中包括7個塊,因此本步驟的實(shí)現(xiàn)過程具體包括 106A、從接收到的報文中提取第1個塊即源IP地址高16位,在源IP地址高16位對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的源IP地址高16位為0x0101,從表10所示的源IP地址高16位對應(yīng)的第一級存儲表中,查找到與0x0101對應(yīng)的數(shù)值范圍編號為1。
160B、從接收到的報文中提取第2個塊即源IP地址低16位,在源IP地址低16位對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的源IP地址低16位為0x0101,從表11所示的源IP地址低16位對應(yīng)的第一級存儲表中,查找到與0x0101對應(yīng)的數(shù)值范圍編號為2。
160C、從接收到的報文中提取第3個塊即目的IP地址高16位,在目的IP地址高16位對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的目的IP地址高16位仍為0x0101,從表12所示的目的IP地址高16位對應(yīng)的第一級存儲表中,查找到與0x0101對應(yīng)的數(shù)值范圍編號為0。
160D、從接收到的報文中提取第4個塊即目的IP地址低16位,在目的IP地址低16位對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的目的IP地址低16位為0x0202,從表13所示的目的IP地址低16位對應(yīng)的第一級存儲表中,查找到與0x0202對應(yīng)的數(shù)值范圍編號為3。
160E、從接收到的報文中提取第5個塊即源端口號,在源端口號對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的源端口號為0x0200,從表14所示的源端口號對應(yīng)的第一級存儲表中,查找到與0x0200對應(yīng)的數(shù)值范圍編號為0。
160F、從接收到的報文中提取第6個塊即目的端口號,在目的端口號對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的目的端口號為0x0050,從表15所示的目的端口號對應(yīng)的第一級存儲表中,查找到與0x0050對應(yīng)的數(shù)值范圍編號為1。
160G、從接收到的報文中提取第7個塊即協(xié)議類型,在協(xié)議類型對應(yīng)的第一級存儲表中查找與其對應(yīng)的數(shù)值范圍編號。
比如,從報文中提取的協(xié)議類型為0x05,從表16所示的協(xié)議類型對應(yīng)的第一級存儲表中,查找到與0x05對應(yīng)的數(shù)值范圍編號為0。
需要說明的是,在步驟103中,每一個第一級存儲表都是從其對應(yīng)進(jìn)制的最小數(shù)0開始直到塊的數(shù)值范圍對應(yīng)的最大數(shù)。在實(shí)際的業(yè)務(wù)實(shí)現(xiàn)中,從該最小數(shù)到該最大數(shù)中間的一些數(shù)值索引可能根本沒有對應(yīng)的數(shù)值范圍編號,對于此種情況,可以不必在第一級存儲表中寫出該數(shù)值索引,但是,較佳地,也可以寫出該數(shù)值索引,并在其對應(yīng)的數(shù)值范圍編號處寫入空值。這樣處理的目的在于,在本步驟106中,在根據(jù)一個塊的數(shù)值比如源IP地址高16位0x0101,在源IP地址高16位對應(yīng)的第一級存儲表中進(jìn)行查找0x0101時,可以不必采用遍歷的方式,根據(jù)數(shù)值索引存儲地址依次遞增的原則方便地查找到對應(yīng)的數(shù)值索引,如根據(jù)0x0101與0x0000之間的差值,直接在源IP地址高16位對應(yīng)的第一級存儲表的首地址開始加上該差值的存儲位置上直接查找到0x0101,從而極大地提高了查找速度。
步驟107按照形成第二級存儲表中組合索引的順序,將步驟106中依次查找到的數(shù)值范圍編號進(jìn)行順序組合,形成一個組合值,在第二級存儲表的組合索引中查找該組合值,根據(jù)查找到的組合值對應(yīng)的報文規(guī)則號,確定匹配到的報文規(guī)則。
這里,形成第二級存儲表中組合索引的順序是源IP地址高16位、源IP地址低16位、目的IP地址高16位、目的IP地址低16位、源端口號、目的端口號和協(xié)議類型。按照該順序,則應(yīng)該將上述步驟160A至步驟160G依次查找到的數(shù)值范圍編號依次進(jìn)行編號,得到組合值1203010。在表18所示的第二級存儲表的組合索引中查找組合值1203010,可以得到與其對應(yīng)的報文規(guī)則號,比如為4。那么,則可以確定當(dāng)前接收到的報文匹配到報文規(guī)則4。
步驟108根據(jù)匹配到的報文規(guī)則中處理動作對報文進(jìn)行對應(yīng)的處理。
這里,由于已經(jīng)根據(jù)表18的第二級存儲表,確定報文匹配到報文規(guī)則4,那么,則可以根據(jù)報文規(guī)則4的處理動作“不通過”,執(zhí)行對應(yīng)的丟棄報文的處理。
在上述圖1所示過程中,本發(fā)明實(shí)施例利用二級存儲表實(shí)現(xiàn)匹配報文規(guī)則。在本發(fā)明的實(shí)際業(yè)務(wù)實(shí)現(xiàn)中,也可以利用三級及其以上的存儲表來實(shí)現(xiàn)匹配報文規(guī)則。相對于二級存儲表,由于二級存儲表只需考慮第一級和最后一級的建立過程,因此,在建立三級及其以上的存儲表時,其第一級和最后一級的建立過程與上述建立第一和第二級存儲表的建立過程完全相同,所不同的是,需要特別考慮中間級的存儲表的建立過程。
圖2是在本發(fā)明實(shí)施例2中實(shí)現(xiàn)匹配報文規(guī)則的流程圖。參見圖2,在本發(fā)明另一個較佳實(shí)施例中,以利用報文規(guī)則中的五元組建立三級存儲表為例,實(shí)現(xiàn)匹配報文規(guī)則的過程具體包括以下步驟 步驟201~步驟204的所有描述與步驟101~步驟104的所有描述相同。
至此,則建立了所有報文規(guī)則五元組中每一類塊對應(yīng)的7個第一級存儲表,如表10至表16,并生成了第二級報文規(guī)則表如表17。
步驟205將第二級報文規(guī)則表中,不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合,得到組合后的第二級報文規(guī)則表。
在本流程中,由于是要建立三級存儲表,因此,從第一級到第三級,存儲表的個數(shù)應(yīng)該依次遞減。由于在上述步驟201至步驟204中每一條報文規(guī)則的五元組劃分為7個塊,因此建立了7個第一級存儲表,為了使得第二級存儲表的個數(shù)少于7個,因此,需要將每一條報文規(guī)則的五元組減少為小于7個塊,這樣則需要執(zhí)行本步驟中對不同類的塊及其數(shù)值范圍編號進(jìn)行組合。
根據(jù)表17所示的第二級報文規(guī)則表得到的第三級報文規(guī)則表可以參見如下表19所示。
表19組合后的第二級報文規(guī)則表 參見表17和表19,在本步驟中,在對表17所示的第二級報文規(guī)則表進(jìn)行不同類塊的組合時,是將表17中不同類的兩個塊源IP地址高16位和源IP地址低16位組合為表19中一類塊源IP地址,并將表17中不同類的兩個塊目的IP地址高16位和目的源IP地址低16位組合為表19中一類塊目的IP地址,以及將表17中不同類的三個塊協(xié)議類型、源端口號和目的端口號組合為表19中的一類塊協(xié)議端口。
相應(yīng)地,在將不同類的塊進(jìn)行組合時,其數(shù)值范圍編號也進(jìn)行組合。比如,以表17中的報文規(guī)則1為例,其源IP地址高16位的數(shù)值范圍編號1與源IP地址低16位的數(shù)值范圍編號2進(jìn)行組合后,則可以得到如表19中所示的組合后的數(shù)值范圍編號12,其目的IP地址高16位的數(shù)值范圍編號1與目的IP地址低16位的數(shù)值范圍編號1、2、3進(jìn)行組合后,則可以得到如表19中所示的組合后的數(shù)值范圍編號11,12,13。
步驟206根據(jù)組合后的中間級的報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將組合后的第二級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立該數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表。
本步驟的具體實(shí)現(xiàn)方式與上述步驟102中建立對應(yīng)關(guān)系表的實(shí)現(xiàn)方式類似。
參見表19所示的組合后的第二級報文規(guī)則表,總共有三類塊,包括源IP地址、目的IP地址和協(xié)議端口。
首先,對于組合后的第二級報文規(guī)則表中的同一類塊-源IP地址。
由于在表19所示的組合后的第二級報文規(guī)則表中,所有數(shù)值范圍編號均為四進(jìn)制,因此,針對所有源IP地址建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表可以參見如下表20。
表20源IP地址的對應(yīng)關(guān)系表 參見表20,由于數(shù)值范圍00-02和10對應(yīng)的報文規(guī)則相同,均為報文規(guī)則3和4,因此,為該兩個數(shù)值范圍定義相同的數(shù)值范圍編號。
對于組合后的第二級報文規(guī)則表中的同一類塊-目的IP地址。
同理,由于在表19中,所有數(shù)值范圍編號均為四進(jìn)制,因此,針對目的IP地址建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表可以參見如下表21。
表21目的IP地址的對應(yīng)關(guān)系表 對于組合后的第二級報文規(guī)則表中的同一類塊-協(xié)議端口。
同理,由于在表19中,所有數(shù)值范圍編號均為四進(jìn)制,因此,針對協(xié)議端口建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表可以參見如下表22。
表22協(xié)議端口的對應(yīng)關(guān)系表 步驟207根據(jù)組合后的第二級報文規(guī)則表中同一類的所有塊分別建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表,分別設(shè)置與組合后的第二級報文規(guī)則表中每一類塊對應(yīng)的第二級存儲表。
本步驟的具體實(shí)現(xiàn)方式與上述步驟103中建立第一級存儲表的實(shí)現(xiàn)方式類似。
本步驟中,第二級存儲表的格式可以設(shè)計為數(shù)值索引和其對應(yīng)的數(shù)值范圍編號。
本步驟中,設(shè)置與組合后的第二級報文規(guī)則表中每一類塊對應(yīng)的第二級存儲表的過程為將組合后的第二級報文規(guī)則表中,同一類的所有塊對應(yīng)進(jìn)制的最小數(shù)到該同一類的所有塊對應(yīng)的最大數(shù)的數(shù)值范圍內(nèi)的每一個數(shù)值依次作為第一級存儲表中的各個數(shù)值索引,根據(jù)該同一類的所有塊的對應(yīng)關(guān)系表中每一個數(shù)值范圍對應(yīng)的數(shù)值范圍編號,確定第二級存儲表中每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號。
下面則以具體的例子來說明本步驟的實(shí)現(xiàn)過程。
在表19所示的組合后的第二級報文規(guī)則表中,包括源IP地址、目的IP地址和協(xié)議端口三類塊。
首先對于源IP地址,根據(jù)其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表20所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第二級存儲表可以參見如下表23。

表23源IP地址的第二級存儲表 對于目的IP地址,根據(jù)其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表21所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第二級存儲表可以參見如下表24。

表24目的IP地址的第二級存儲表 對于協(xié)議端口,根據(jù)其建立的數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表如上述表22所示,因此,根據(jù)該對應(yīng)關(guān)系表設(shè)置出的第二級存儲表可以參見如下表25。


表25協(xié)議端口的第二級存儲表 由此可見,在當(dāng)前圖2流程中,第二級存儲表是中間級存儲表,該第二級存儲表的建立方式與第一級存儲表的建立方式類似,都需要對其上一級的報文規(guī)則表進(jìn)行不同類的分塊處理得到本級報文規(guī)則表,然后利用本級報文規(guī)則表中各類分塊建立每一類塊的本級存儲表。只是,在建立第一級存儲表時,上一級報文規(guī)則表是原始報文規(guī)則表;在建立第二級存儲表時,得到本級報文規(guī)則表之后,還需要進(jìn)一步得到組合后的本級報文規(guī)則表,并利用組合后的本級報文規(guī)則表來得到每一類塊的本級存儲表。
步驟208根據(jù)組合后的第二級報文規(guī)則表和為該規(guī)則表中同一類的所有塊分別設(shè)置的第二級存儲表,生成第三級報文規(guī)則表。
這里,生成第三級報文規(guī)則表的過程為根據(jù)組合后的第二級報文規(guī)則表中每一條報文規(guī)則的每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)第二級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號。
參見表19和表23至表25,可以得到第三級報文規(guī)則表如下表26所示。
表26第三級報文規(guī)則表 本步驟的處理方式與上述步驟104的處理方式類似,因此,表26的得到過程可以按照步驟104中對表17的得到過程來實(shí)現(xiàn)。
步驟209根據(jù)第三級報文規(guī)則表,確定每一條報文規(guī)則中各個塊的數(shù)值范圍編號形成的組合,利用組合和該組合所對應(yīng)的報文規(guī)則號生成第三級存儲表。
第三級存儲表的格式可以設(shè)計為組合索引及其對應(yīng)的報文規(guī)則號。
在本步驟中,對于第三級報文規(guī)則表中的每一條報文規(guī)則,生成第三級存儲表的過程包括根據(jù)第三級報文規(guī)則表中塊的個數(shù),確定組合的位數(shù),將該位數(shù)組合中從最小組合數(shù)到塊的數(shù)值范圍編號形成的最大組合數(shù)范圍內(nèi)的每一個組合值依次作為第三級存儲表中的各個組合索引,將各個組合值對應(yīng)的報文規(guī)則的編號作為組合索引對應(yīng)的規(guī)則號。
利用表26所示的第三級報文規(guī)則表生成的第三存儲表可以參見如下表27所示。

表27第三級存儲表 本步驟的處理方式與上述步驟105的處理方式類似,因此,表27的得到過程可以按照步驟105中對表18的得到過程來實(shí)現(xiàn)。
可以得到,在本步驟中,形成第三級存儲表中組合索引的順序是源IP地址、目的IP地址和協(xié)議端口。
步驟210的所有描述與步驟106的所有描述均相同。
步驟211根據(jù)組合后的第二級報文規(guī)則表相對于第一級報文規(guī)則表的塊的組合方式,將步驟210中查找到的對應(yīng)編號進(jìn)行組合,利用組合形成的每一個數(shù)值組合,分別在組合后的第二級報文規(guī)則表中對應(yīng)塊對應(yīng)的第二級存儲表中依次查找對應(yīng)的數(shù)值范圍編號。
參見表19所示的組合后的第二級報文規(guī)則表和表2所示的第一級報文規(guī)則表,可以得到,其組合方式為將源IP地址高16位對應(yīng)的塊與源IP地址低16位對應(yīng)的塊進(jìn)行組合,形成源IP地址;并將目的IP地址高16位對應(yīng)的塊與目的IP地址低16位對應(yīng)的塊進(jìn)行組合,形成目的IP地址;并將協(xié)議類型對應(yīng)的塊、源端口號對應(yīng)的塊和目的端口號對應(yīng)的塊進(jìn)行組合,形成協(xié)議端口。
因此,按照此種組合方式,需要將步驟210中根據(jù)報文中源IP地址高16查找到的數(shù)值范圍編號與根據(jù)源IP地址低16查找到的數(shù)值范圍編號進(jìn)行組合,并在組合后的第二級報文規(guī)則表中對應(yīng)塊即源IP地址對應(yīng)的第二級存儲表中查找對應(yīng)的數(shù)值范圍編號,比如為1。然后,將步驟210中根據(jù)報文中目的IP地址高16查找到的數(shù)值范圍編號與根據(jù)目的IP地址低16查找到的數(shù)值范圍編號進(jìn)行組合,并在組合后的第二級報文規(guī)則表中對應(yīng)塊即目的IP地址對應(yīng)的第二級存儲表中查找對應(yīng)的數(shù)值范圍編號,比如為0。然后,將步驟210中根據(jù)報文中協(xié)議類型查找到的數(shù)值范圍編號、根據(jù)報文中源端口號查找到的數(shù)值范圍編號以及根據(jù)報文中目的端口號查找到的數(shù)值范圍編號進(jìn)行組合,并在組合后的第二級報文規(guī)則表中對應(yīng)塊即協(xié)議端口對應(yīng)的第二級存儲表中查找對應(yīng)的數(shù)值范圍編號,比如為1。
步驟212按照形成第三級存儲表中組合索引的順序,將步驟211中依次查找到的數(shù)值范圍編號進(jìn)行順序組合,形成一個組合值,在第三級存儲表的組合索引中查找該組合值,根據(jù)查找到的組合值對應(yīng)的報文規(guī)則號,確定匹配到的報文規(guī)則。
這里,形成第三級存儲表中組合索引的順序是源IP地址、目的IP地址和協(xié)議端口。按照該順序,則應(yīng)該將上述211中查找到的源IP地址、目的IP地址和協(xié)議端口分別對應(yīng)的數(shù)值范圍編號依次進(jìn)行編號,比如,形成一個組合值101,在表27所示的第三級存儲表的組合索引中可以查找到與101對應(yīng)的報文規(guī)則號為4,因此,可以確定匹配到的為報文規(guī)則4。
步驟213根據(jù)匹配到的報文規(guī)則中處理動作對報文進(jìn)行對應(yīng)的處理。
由此可見,在本發(fā)明的具體實(shí)施例中,根據(jù)原始的報文規(guī)則表建立了多級存儲表,每一級存儲表中只有索引與編號或報文規(guī)則號的對應(yīng)關(guān)系,這樣,當(dāng)網(wǎng)絡(luò)設(shè)備接收到報文后,只需查找該多級存儲表,而無需遍歷查找原始的報文規(guī)則表,在報文規(guī)則表中報文規(guī)則數(shù)量眾多的情況下,查找多級存儲表能夠大大減少匹配到報文規(guī)則的時間,從而大大提高了匹配報文規(guī)則的速度,提高了設(shè)備的處理性能。
下面,舉一個具體實(shí)例來更加清楚地體現(xiàn)本發(fā)明的有益效果。
以原始的報文規(guī)則表中有10條報文規(guī)則為例,由于每一條報文規(guī)則中都有五元組的五個元素,當(dāng)網(wǎng)絡(luò)設(shè)備接收到報文后,需要逐一對每一條報文規(guī)則中的五個元素進(jìn)行匹配,這樣進(jìn)行匹配的次數(shù)為10×5=50次。而在本發(fā)明具體實(shí)施例中,如果按照上述圖1所示流程的方法建立二級存儲表,這樣,則需要匹配7個第一級存儲表和1個第二級存儲表,共進(jìn)行8次匹配,遠(yuǎn)遠(yuǎn)小于現(xiàn)有技術(shù)的匹配次數(shù),因此,能夠大大提高匹配報文規(guī)則的速度;而如果按照上述圖2所示流程的方法建立三級存儲表,這樣,則需要匹配7個第一級存儲表、3個第二級存儲表和1個第二級存儲表,共進(jìn)行11次匹配,也遠(yuǎn)遠(yuǎn)小于現(xiàn)有技術(shù)的匹配次數(shù),因此,能夠大大提高匹配報文規(guī)則的速度。
相應(yīng)地,本發(fā)明還提出了一種匹配報文規(guī)則的裝置。圖3是在本發(fā)明一個實(shí)施例中實(shí)現(xiàn)匹配報文規(guī)則的裝置結(jié)構(gòu)示意圖。參見圖3,該裝置包括多級存儲表建立單元和報文匹配執(zhí)行單元,其中, 多級存儲表建立單元,用于建立并保存多級存儲表,其中,除最后一級存儲表之外的其他級存儲表中記錄數(shù)值索引和數(shù)值范圍編號的對應(yīng)關(guān)系,最后一級存儲表中記錄數(shù)值范圍編號形成的組合索引與報文規(guī)則號的對應(yīng)關(guān)系; 報文匹配執(zhí)行單元,用于在接收到報文后,在多級存儲表建立單元保存的第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找多級存儲表建立單元保存的下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在多級存儲表建立單元保存的最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號;將獲取的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。
該裝置可以進(jìn)一步包括原始報文規(guī)則表保存單元,用于保存原始報文規(guī)則表; 所述多級存儲表建立單元,用于在建立第一級存儲表時,對于原始報文規(guī)則表保存單元中原始報文規(guī)則表的每一條報文規(guī)則,將其五元組的每一個元素劃分為指定位的塊,得到第一級報文規(guī)則表,根據(jù)第一級報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將第一級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表;根據(jù)建立的各個對應(yīng)關(guān)系表分別設(shè)置與第一級報文規(guī)則表中每一類塊對應(yīng)的第一級存儲表,每一類塊對應(yīng)的第一級存儲表中均包括數(shù)值索引與數(shù)值范圍編號的對應(yīng)關(guān)系。
所述多級存儲表建立單元,用于在將五元組的每一個元素劃分為指定位的塊得到第一級存儲表時,首先將每一條報文規(guī)則的五元組中的源IP地址劃分為源IP地址高16位和源IP地址低16位兩類塊,將目的IP地址劃分為目的IP地址高16位和目的IP地址低16位兩類塊,將源端口號劃分為16位的一類塊,將目的端口號劃分為16位的一類塊,將協(xié)議類型劃分為8位的一類塊,得到每一條報文規(guī)則中包括7類塊的第一級報文規(guī)則表。
所述多級存儲表建立單元,用于建立三級或三級以上的存儲表,并且在建立每一個中間級存儲表時,根據(jù)上一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)上一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,生成中間級的報文規(guī)則表;將中間級報文規(guī)則表中,不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合,得到組合后的中間級的報文規(guī)則表;根據(jù)組合后的中間級的報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將組合后的中間級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立該數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表;根據(jù)分別建立的對應(yīng)關(guān)系表,分別設(shè)置與組合后的中間級報文規(guī)則表中每一類塊對應(yīng)的中間級存儲表,其中,每一類塊對應(yīng)的中間級存儲表中均包括數(shù)值索引與數(shù)值范圍編號的對應(yīng)關(guān)系。
所述多級存儲表建立單元,用于在將第二級報文規(guī)則表中不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合時,具體將第二級報文規(guī)則表中每一條報文規(guī)則的源IP地址高16位和源IP地址低16位及其數(shù)值范圍編號進(jìn)行組合,將目的IP地址高16位和目的IP地址低16位及其數(shù)值范圍編號進(jìn)行組合,以及將源端口號、目的端口號和協(xié)議類型及其數(shù)值范圍編號進(jìn)行組合。
所述多級存儲表建立單元,用于在建立最后一級存儲表時,根據(jù)最后得到的上一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)上一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,生成最后一級報文規(guī)則表;根據(jù)最后一級報文規(guī)則表中塊的個數(shù),確定組合的位數(shù),將該位數(shù)組合中從最小組合數(shù)到塊的數(shù)值范圍編號形成的最大組合數(shù)范圍內(nèi)的每一個組合值作為最后一級存儲表中的各個組合索引,將最后一級報文規(guī)則表中每一條報文規(guī)則的各個塊的數(shù)值范圍編號形成的各個組合值對應(yīng)的報文規(guī)則的編號,作為最后一級存儲表中組合索引對應(yīng)的報文規(guī)則號,得到最后一級存儲表。
所述多級存儲表建立單元,用于在最后一級報文規(guī)則表中多條報文規(guī)則的各個塊的數(shù)值范圍編號形成的組合值相同時,將該多條報文規(guī)則中優(yōu)先級最高的報文規(guī)則的編號,作為最后一級存儲表中與該組合值相同的組合索引所對應(yīng)的報文規(guī)則號。
所述報文匹配執(zhí)行單元,用于在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值時,首先根據(jù)第一級報文規(guī)則表中對五元組劃分的塊,從報文中提取對應(yīng)的塊,然后依次在每一類塊對應(yīng)的第一級存儲表的數(shù)值索引中查找與提取的塊的數(shù)值對應(yīng)的數(shù)值范圍編號。
所述報文匹配執(zhí)行單元,用于在查找每一個中間級存儲表時,首先根據(jù)組合后的中間級報文規(guī)則表相對于上一級報文規(guī)則表的塊的組合方式,將從上一級存儲表中查找到的對應(yīng)編號進(jìn)行組合,然后利用組合形成的每一個數(shù)值組合,分別在組合后的中間級報文規(guī)則表中對應(yīng)塊對應(yīng)的中間級存儲表中依次查找對應(yīng)的數(shù)值范圍編號。
所述報文匹配執(zhí)行單元,用于在利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值時,首先按照形成最后一級存儲表中組合索引的順序,將從各個倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號進(jìn)行順序組合,形成一個組合值,然后在最后一級存儲表的組合索引中查找該組合值。
總之,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種匹配報文規(guī)則的方法,其特征在于,該方法包括
建立多級存儲表,其中,除最后一級存儲表之外的其他級存儲表中記錄數(shù)值索引和數(shù)值范圍編號的對應(yīng)關(guān)系,最后一級存儲表中記錄數(shù)值范圍編號形成的組合索引與報文規(guī)則號的對應(yīng)關(guān)系;
當(dāng)接收到報文后,在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號;
將獲取的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,建立第一級存儲表的過程包括對于原始報文規(guī)則表中的每一條報文規(guī)則,將其五元組的每一個元素劃分為指定位的塊,得到第一級報文規(guī)則表,根據(jù)第一級報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將第一級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表;根據(jù)建立的各個對應(yīng)關(guān)系表分別設(shè)置與第一級報文規(guī)則表中每一類塊對應(yīng)的第一級存儲表,每一類塊對應(yīng)的第一級存儲表中均包括數(shù)值索引與數(shù)值范圍編號的對應(yīng)關(guān)系。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將其五元組的每一個元素劃分為指定位的塊得到第一級報文規(guī)則表的過程包括將每一條報文規(guī)則的五元組中的源IP地址劃分為源IP地址高16位和源IP地址低16位兩類塊,將目的IP地址劃分為目的IP地址高16位和目的IP地址低16位兩類塊,將源端口號劃分為16位的一類塊,將目的端口號劃分為16位的一類塊,將協(xié)議類型劃分為8位的一類塊,得到每一條報文規(guī)則中包括7類塊的第一級報文規(guī)則表。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述多級存儲表為三級或三級以上的存儲表;
建立每一個中間級存儲表的過程包括根據(jù)上一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)上一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,生成中間級的報文規(guī)則表;將中間級報文規(guī)則表中,不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合,得到組合后的中間級的報文規(guī)則表;根據(jù)組合后的中間級的報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將組合后的中間級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立該數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表;根據(jù)分別建立的對應(yīng)關(guān)系表,分別設(shè)置與組合后的中間級報文規(guī)則表中每一類塊對應(yīng)的中間級存儲表,其中,每一類塊對應(yīng)的中間級存儲表中均包括數(shù)值索引與數(shù)值范圍編號的對應(yīng)關(guān)系。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,當(dāng)中間級存儲表為第二級存儲表時,所述將中間級報文規(guī)則表中不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合的步驟包括將第二級報文規(guī)則表中每一條報文規(guī)則的源IP地址高16位和源IP地址低16位及其數(shù)值范圍編號進(jìn)行組合,將目的IP地址高16位和目的IP地址低16位及其數(shù)值范圍編號進(jìn)行組合,以及將源端口號、目的端口號和協(xié)議類型及其數(shù)值范圍編號進(jìn)行組合。
6.根據(jù)權(quán)利要求2、3、4或5所述的方法,其特征在于,建立最后一級存儲表的過程包括根據(jù)最后得到的上一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)上一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,生成最后一級報文規(guī)則表;根據(jù)最后一級報文規(guī)則表中塊的個數(shù),確定組合的位數(shù),將該位數(shù)組合中從最小組合數(shù)到塊的數(shù)值范圍編號形成的最大組合數(shù)范圍內(nèi)的每一個組合值作為最后一級存儲表中的各個組合索引,將最后一級報文規(guī)則表中每一條報文規(guī)則的各個塊的數(shù)值范圍編號形成的各個組合值對應(yīng)的報文規(guī)則的編號,作為最后一級存儲表中組合索引對應(yīng)的報文規(guī)則號,得到最后一級存儲表。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,當(dāng)最后一級報文規(guī)則表中多條報文規(guī)則的各個塊的數(shù)值范圍編號形成的組合值相同時,將該多條報文規(guī)則中優(yōu)先級最高的報文規(guī)則的編號,作為最后一級存儲表中與該組合值相同的組合索引所對應(yīng)的報文規(guī)則號。
8.根據(jù)權(quán)利要求2至7中任意一項所述的方法,其特征在于,所述在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值的步驟包括根據(jù)第一級報文規(guī)則表中對五元組劃分的塊,從報文中提取對應(yīng)的塊,依次在每一類塊對應(yīng)的第一級存儲表的數(shù)值索引中查找與提取的塊的數(shù)值對應(yīng)的數(shù)值范圍編號。
9.根據(jù)權(quán)利要求4、5、6或7所述的方法,其特征在于,查找每一個中間級存儲表的過程包括根據(jù)組合后的中間級報文規(guī)則表相對于上一級報文規(guī)則表的塊的組合方式,將從上一級存儲表中查找到的對應(yīng)編號進(jìn)行組合,利用組合形成的每一個數(shù)值組合,分別在組合后的中間級報文規(guī)則表中對應(yīng)塊對應(yīng)的中間級存儲表中依次查找對應(yīng)的數(shù)值范圍編號。
10.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,所述利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值的步驟包括按照形成最后一級存儲表中組合索引的順序,將從各個倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號進(jìn)行順序組合,形成一個組合值,在最后一級存儲表的組合索引中查找該組合值。
11.一種匹配報文規(guī)則的裝置,其特征在于,該裝置包括
多級存儲表建立單元,用于建立并保存多級存儲表,其中,除最后一級存儲表之外的其他級存儲表中記錄數(shù)值索引和數(shù)值范圍編號的對應(yīng)關(guān)系,最后一級存儲表中記錄數(shù)值范圍編號形成的組合索引與報文規(guī)則號的對應(yīng)關(guān)系;
報文匹配執(zhí)行單元,用于在接收到報文后,在多級存儲表建立單元保存的第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找多級存儲表建立單元保存的下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在多級存儲表建立單元保存的最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號;將獲取的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,該裝置進(jìn)一步包括原始報文規(guī)則表保存單元,用于保存原始報文規(guī)則表;
所述多級存儲表建立單元,用于在建立第一級存儲表時,對于原始報文規(guī)則表保存單元中原始報文規(guī)則表的每一條報文規(guī)則,將其五元組的每一個元素劃分為指定位的塊,得到第一級報文規(guī)則表,根據(jù)第一級報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將第一級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表;根據(jù)建立的各個對應(yīng)關(guān)系表分別設(shè)置與第一級報文規(guī)則表中每一類塊對應(yīng)的第一級存儲表,每一類塊對應(yīng)的第一級存儲表中均包括數(shù)值索引與數(shù)值范圍編號的對應(yīng)關(guān)系。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述多級存儲表建立單元,用于在將五元組的每一個元素劃分為指定位的塊得到第一級存儲表時,首先將每一條報文規(guī)則的五元組中的源IP地址劃分為源IP地址高16位和源IP地址低16位兩類塊,將目的IP地址劃分為目的IP地址高16位和目的IP地址低16位兩類塊,將源端口號劃分為16位的一類塊,將目的端口號劃分為16位的一類塊,將協(xié)議類型劃分為8位的一類塊,得到每一條報文規(guī)則中包括7類塊的第一級報文規(guī)則表。
14.根據(jù)權(quán)利要求12或13所述的裝置,其特征在于,所述多級存儲表建立單元,用于建立三級或三級以上的存儲表,并且在建立每一個中間級存儲表時,根據(jù)上一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)上一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,生成中間級的報文規(guī)則表;將中間級報文規(guī)則表中,不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合,得到組合后的中間級的報文規(guī)則表;根據(jù)組合后的中間級的報文規(guī)則表中同一類的每個塊的數(shù)值范圍,將組合后的中間級報文規(guī)則表中同一類的所有塊分割為相互不重復(fù)的數(shù)值范圍,然后建立該數(shù)值范圍、數(shù)值范圍編號和所屬規(guī)則的對應(yīng)關(guān)系表;根據(jù)分別建立的對應(yīng)關(guān)系表,分別設(shè)置與組合后的中間級報文規(guī)則表中每一類塊對應(yīng)的中間級存儲表,其中,每一類塊對應(yīng)的中間級存儲表中均包括數(shù)值索引與數(shù)值范圍編號的對應(yīng)關(guān)系。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述多級存儲表建立單元,用于在將第二級報文規(guī)則表中不同類的各個塊及其數(shù)值范圍編號分別進(jìn)行組合時,具體將第二級報文規(guī)則表中每一條報文規(guī)則的源IP地址高16位和源IP地址低16位及其數(shù)值范圍編號進(jìn)行組合,將目的IP地址高16位和目的IP地址低16位及其數(shù)值范圍編號進(jìn)行組合,以及將源端口號、目的端口號和協(xié)議類型及其數(shù)值范圍編號進(jìn)行組合。
16.根據(jù)權(quán)利要求12、13、14或15所述的裝置,其特征在于,所述多級存儲表建立單元,用于在建立最后一級存儲表時,根據(jù)最后得到的上一級報文規(guī)則表中每一個塊的數(shù)值范圍,將該數(shù)值范圍替換為該類塊所對應(yīng)上一級存儲表中該數(shù)值范圍內(nèi)每一個數(shù)值索引對應(yīng)的數(shù)值范圍編號,生成最后一級報文規(guī)則表;根據(jù)最后一級報文規(guī)則表中塊的個數(shù),確定組合的位數(shù),將該位數(shù)組合中從最小組合數(shù)到塊的數(shù)值范圍編號形成的最大組合數(shù)范圍內(nèi)的每一個組合值作為最后一級存儲表中的各個組合索引,將最后一級報文規(guī)則表中每一條報文規(guī)則的各個塊的數(shù)值范圍編號形成的各個組合值對應(yīng)的報文規(guī)則的編號,作為最后一級存儲表中組合索引對應(yīng)的報文規(guī)則號,得到最后一級存儲表。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述多級存儲表建立單元,用于在最后一級報文規(guī)則表中多條報文規(guī)則的各個塊的數(shù)值范圍編號形成的組合值相同時,將該多條報文規(guī)則中優(yōu)先級最高的報文規(guī)則的編號,作為最后一級存儲表中與該組合值相同的組合索引所對應(yīng)的報文規(guī)則號。
18.根據(jù)權(quán)利要求12至17中任意一項所述的裝置,其特征在于,所述報文匹配執(zhí)行單元,用于在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值時,首先根據(jù)第一級報文規(guī)則表中對五元組劃分的塊,從報文中提取對應(yīng)的塊,然后依次在每一類塊對應(yīng)的第一級存儲表的數(shù)值索引中查找與提取的塊的數(shù)值對應(yīng)的數(shù)值范圍編號。
19.根據(jù)權(quán)利要求14至17中任意一項所述的裝置,其特征在于,所述報文匹配執(zhí)行單元,用于在查找每一個中間級存儲表時,首先根據(jù)組合后的中間級報文規(guī)則表相對于上一級報文規(guī)則表的塊的組合方式,將從上一級存儲表中查找到的對應(yīng)編號進(jìn)行組合,然后利用組合形成的每一個數(shù)值組合,分別在組合后的中間級報文規(guī)則表中對應(yīng)塊對應(yīng)的中間級存儲表中依次查找對應(yīng)的數(shù)值范圍編號。
20.根據(jù)權(quán)利要求16或17所述的裝置,其特征在于,所述報文匹配執(zhí)行單元,用于在利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值時,首先按照形成最后一級存儲表中組合索引的順序,將從各個倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號進(jìn)行順序組合,形成一個組合值,然后在最后一級存儲表的組合索引中查找該組合值。
全文摘要
本發(fā)明公開了一種匹配報文規(guī)則的方法。在該方法中,建立多級存儲表;當(dāng)接收到報文后,在第一級存儲表的數(shù)值索引中查找報文中的五元組的數(shù)值,利用與查找到的數(shù)值索引對應(yīng)的數(shù)值范圍編號查找下一級存儲表,直至倒數(shù)第二級存儲表,利用從倒數(shù)第二級存儲表中查找到的數(shù)值范圍編號形成的組合值,在最后一級存儲表的組合索引中查找該組合值,并獲取與查找到的組合值對應(yīng)的報文規(guī)則號;將獲取的報文規(guī)則號對應(yīng)的報文規(guī)則作為匹配到的報文規(guī)則。本發(fā)明還公開了一種匹配報文規(guī)則的裝置,包括原始報文規(guī)則表保存單元、多級存儲表建立單元和報文匹配執(zhí)行單元。本發(fā)明能夠提高匹配報文規(guī)則的速度。
文檔編號H04L29/06GK101170563SQ200710178449
公開日2008年4月30日 申請日期2007年11月30日 優(yōu)先權(quán)日2007年11月30日
發(fā)明者常利民 申請人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
云安县| 阿图什市| 阿坝县| 宣武区| 来安县| 土默特左旗| 全州县| 临邑县| 陆良县| 陆川县| 邯郸市| 济宁市| 宁安市| 黎城县| 岐山县| 罗源县| 阿尔山市| 姚安县| 嘉鱼县| 黔南| 睢宁县| 海伦市| 志丹县| 鄂伦春自治旗| 苏尼特左旗| 重庆市| 宿松县| 太白县| 红桥区| 普兰店市| 贵南县| 长治县| 花垣县| 平原县| 镇雄县| 宝山区| 芜湖市| 连江县| 屯门区| 永和县| 莲花县|