專利名稱:一種數(shù)據(jù)包的快速解析方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)通信系統(tǒng)與應(yīng)用技術(shù)領(lǐng)域,具體涉及數(shù)據(jù)包解析和信息抽取的方法,它適用于網(wǎng)絡(luò)處理器、路由器、交換機(jī)等網(wǎng)絡(luò)設(shè)備中對(duì)數(shù)據(jù)包的處理。
背景技術(shù):
隨著Internet規(guī)模不斷增長(zhǎng),各種業(yè)務(wù)越來(lái)越多。由于網(wǎng)絡(luò)數(shù)據(jù)流量越來(lái)越大,這就要求網(wǎng)絡(luò)設(shè)備具有高效和快速的數(shù)據(jù)包解析處理技術(shù)來(lái)為用戶提供可靠的服務(wù)。
目前,用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)包解析的方法主要有兩種。一種是采用軟件處理模式,其基本思想是,基于多簡(jiǎn)單指令集CPU架構(gòu)模式,它由多個(gè)對(duì)等的CPU組成,根據(jù)設(shè)計(jì)要求對(duì)其編寫不同的程序,完成不同的功能。通用處理器通過(guò)共享內(nèi)存的方式與每個(gè)簡(jiǎn)單指令集CPU進(jìn)行交換,相互協(xié)作完成統(tǒng)一功能。它對(duì)數(shù)據(jù)包的處理通常采用如下模式接收-存儲(chǔ)-處理-發(fā)送。在數(shù)據(jù)通信中對(duì)存儲(chǔ)器的使用主要有包的緩沖存儲(chǔ)和查找表的搜索。每個(gè)包的緩沖存貯至少需要4次訪問(wèn)存貯器從網(wǎng)絡(luò)收到包時(shí)的寫入;讀出幀用于查找表搜索;回寫被改變的包用于傳輸;讀出包來(lái)進(jìn)行傳輸。這樣,要提供線速處理性能,要求緩沖存儲(chǔ)器的帶寬至少是網(wǎng)絡(luò)鏈路帶寬的4倍。加上存儲(chǔ)器本身的固有開(kāi)銷,存儲(chǔ)器理論帶寬是實(shí)際帶寬的兩倍,因此,緩存器的帶寬應(yīng)該是實(shí)際帶寬的8倍。事實(shí)上通信的全雙工模式,要求的帶寬還需要加倍。存儲(chǔ)器成為網(wǎng)絡(luò)處理器的關(guān)鍵部件,其存儲(chǔ)速度直接影響著網(wǎng)絡(luò)處理數(shù)據(jù)層面的能力。簡(jiǎn)單指令集常用指令集內(nèi)的指令功能單一,執(zhí)行復(fù)雜任務(wù)時(shí)需要許多指令,由此帶來(lái)的缺點(diǎn)是執(zhí)行復(fù)雜任務(wù)時(shí)大量指令的時(shí)間開(kāi)銷大,因此該類處理器大多無(wú)法滿足多個(gè)吉比特端口的處理要求。
另一種是采用多專用集成電路芯片架構(gòu),其中各個(gè)功能部件均為不同的器件,獨(dú)立完成自己的任務(wù),分別完成分類、決策和與通用處理器通信等功能。專用集成電路專用芯片技術(shù)的出現(xiàn)使數(shù)據(jù)層面和信令層面能夠相互分離,它將路由查找、數(shù)據(jù)包處理等數(shù)據(jù)層面的操作固化在硬件芯片中,大大提高了數(shù)據(jù)包處理的速率。缺點(diǎn)是靈活性差,一旦設(shè)計(jì)完成,功能擴(kuò)展性較差。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足之處,提供一種數(shù)據(jù)包的快速解析方法,該方法可實(shí)現(xiàn)對(duì)數(shù)據(jù)包的快速處理,并且其擴(kuò)展性強(qiáng)。
為了實(shí)現(xiàn)上述發(fā)明目的,一種數(shù)據(jù)包的快速解析方法,包括數(shù)據(jù)包頭定位和信息抽取操作表和查找關(guān)鍵字生成規(guī)則表,數(shù)據(jù)包頭定位和信息抽取操作表由協(xié)議頭定位及信息抽取表,協(xié)議映射表和下層協(xié)議索引表組成,協(xié)議頭定位及信息抽取表用于存放對(duì)數(shù)據(jù)包中各種協(xié)議頭的處理方法,其中包括起始位置的定位方法和數(shù)據(jù)包頭信息抽取方法,協(xié)議映射表用于存放系統(tǒng)能支持的各種協(xié)議的編碼,下層協(xié)議索引表用于存放各類下層協(xié)議在協(xié)議頭定位及信息抽取表中的索引值;查找關(guān)鍵字生成規(guī)則表用于存放查找關(guān)鍵字的生成方法;該方法包括以下步驟(一)對(duì)數(shù)據(jù)包頭的解析和信息的抽取,具體步驟包括(1)初始化每一級(jí)的協(xié)議頭定位及信息抽取表、協(xié)議映射表、下層協(xié)議索引表和查找關(guān)鍵字生成規(guī)則表;(2)判斷被處理是否是數(shù)據(jù)包的第一個(gè)協(xié)議頭,如果是,則取系統(tǒng)默認(rèn)的初始化協(xié)議頭類型索引值和初始化協(xié)議頭位置值;否則,取出在處理上層協(xié)議頭時(shí)得到的下層協(xié)議頭的位置值和下層協(xié)議頭的索引值;(3)用步驟(2)中得到的協(xié)議頭的索引值去查找協(xié)議頭定位及信息抽取表,得到當(dāng)前數(shù)據(jù)包的處理規(guī)則;(4)如果表中的全局操作表項(xiàng)的值標(biāo)識(shí)處理完成,則數(shù)據(jù)包解析和數(shù)據(jù)抽取操作結(jié)束,進(jìn)入步驟(二),否則,同時(shí)進(jìn)行步驟(5)、(6)和(7),完成后進(jìn)入步驟(2);(5)依據(jù)定位規(guī)則給下層協(xié)議頭定位,其步驟如下(5.1)判斷協(xié)議頭中協(xié)議長(zhǎng)度域是否存在,存在則抽取這個(gè)長(zhǎng)度域的數(shù)據(jù),否則,按照表格中的內(nèi)容分兩種情況,一是多協(xié)議標(biāo)簽交換協(xié)議,采用專用的處理方式,二是固定長(zhǎng)度的協(xié)議,則取預(yù)先定義好的協(xié)議頭長(zhǎng)度;(5.2)依據(jù)下面的公式(1)計(jì)算下層協(xié)議頭的起始位置下層協(xié)議頭起始位=本層協(xié)議頭起始位+本層協(xié)議頭長(zhǎng)度(1)(6)確定下層協(xié)議的類型,其步驟為(6.1)判斷協(xié)議頭中下層協(xié)議類型域是否存在,不存在則采用預(yù)先定義好的協(xié)議頭索引;否則抽取協(xié)議類型域的數(shù)據(jù),并繼續(xù)執(zhí)行以下步驟(6.2)、步驟(6.3)和步驟(6.4)(6.2)用步驟(6.1)得到的協(xié)議類型域的數(shù)據(jù)查找協(xié)議映射表,得到協(xié)議的映射值a,b,c,d;(6.3)把協(xié)議映射值a,b,c,d通過(guò)公式(2)計(jì)算得到偏移地址offset=a*2^α+b*2^β+c*2^λ+d*2^μ(2)其中,αβλμ通過(guò)查找協(xié)議頭定位及信息抽取表得到;(6.4)將上述偏移地址與協(xié)議頭定位及信息抽取表中的基址表項(xiàng)相加得到一個(gè)絕對(duì)地址,用該絕對(duì)地址查找下層協(xié)議索引表,得到下層協(xié)議頭索引值;(7)協(xié)議頭信息抽取,具體步驟如下(7.1)判斷抽取信息字節(jié)掩碼是否為0,如果是,則不再抽取信息,結(jié)束步驟(7),否則繼續(xù)執(zhí)行下述操作;(7.2)依據(jù)抽取信息字節(jié)掩碼抽取協(xié)議頭相關(guān)信息;(7.3)把抽取的信息填入數(shù)據(jù)包信息關(guān)鍵字的對(duì)應(yīng)位置;(7.4)根據(jù)信息標(biāo)識(shí)碼修改數(shù)據(jù)包信息關(guān)鍵字標(biāo)識(shí)碼;(二)生成查找關(guān)鍵字根據(jù)最后一次在協(xié)議頭定位及信息抽取表中得到的查找關(guān)鍵字生成規(guī)則標(biāo)識(shí),在查找關(guān)鍵字生成規(guī)則表中找到對(duì)應(yīng)的查找關(guān)鍵字生成方法,然后,根據(jù)數(shù)據(jù)包信息關(guān)鍵字和數(shù)據(jù)包信息關(guān)鍵字標(biāo)識(shí)碼,按照上述查找關(guān)鍵字生成方法生成查找關(guān)鍵字。
如何對(duì)數(shù)據(jù)包進(jìn)行解析處理是完全采用由查找相應(yīng)規(guī)則表來(lái)確定的,因此,通過(guò)修改規(guī)則表的相應(yīng)內(nèi)容可以達(dá)到修改對(duì)數(shù)據(jù)包的具體解析方法和定義新的協(xié)議頭類型處理方法,其靈活性和可擴(kuò)展性很強(qiáng)。同時(shí),采用多級(jí)流水線并行處理的方式,很大程度上減少了數(shù)據(jù)包的解析處理周期,獲得了對(duì)數(shù)據(jù)報(bào)文的高速處理。
圖1為多層協(xié)議頭數(shù)據(jù)包的流水線處理示意圖;圖2為數(shù)據(jù)包解析和信息抽取流程圖;圖3為協(xié)議映射表示意圖;圖4為下層協(xié)議索引表示意圖;圖5為協(xié)議頭信息抽取示意圖;圖6為數(shù)據(jù)包信息關(guān)鍵字示意圖;圖7為抽取信息字節(jié)掩碼和信息標(biāo)識(shí)碼關(guān)系示意圖。
具體實(shí)施例方式
首先采用表一對(duì)說(shuō)明書附圖中的符號(hào)加以說(shuō)明。
表一為了便于說(shuō)明,采用表二對(duì)協(xié)議頭定位及信息抽取表的內(nèi)容加以說(shuō)明。
首先,結(jié)合附圖1說(shuō)明數(shù)據(jù)包解析流水線處理架構(gòu)如圖1所示,針對(duì)網(wǎng)絡(luò)上數(shù)據(jù)包的多層協(xié)議頭組合結(jié)構(gòu),采用多級(jí)流水線結(jié)構(gòu)依次對(duì)每層協(xié)議頭解析處理。流水線的每一級(jí)采用相同的專用集成電路結(jié)構(gòu),完成相同功能。不同的是每級(jí)流水線各自都有一套數(shù)據(jù)包頭定位和信息抽取操作表,表中配置了完成這一層協(xié)議頭的數(shù)據(jù)解析和信息抽取處理規(guī)則。采用多級(jí)流水線的處理方法,提高了數(shù)據(jù)包處理速度。流水線處理的具體描述如下(1)根據(jù)網(wǎng)絡(luò)上數(shù)據(jù)包頭結(jié)構(gòu)特征,流水線處理的每一級(jí)完成相同的功能,其硬件架構(gòu)是一樣的。
(2)每一級(jí)流水線完成如下工作抽取本層協(xié)議頭的數(shù)據(jù)信息;計(jì)算下一層協(xié)議頭的起始位置;獲取下層協(xié)議頭的類型值,并通過(guò)查找協(xié)議映射表和下層協(xié)議索引表得到這個(gè)下層協(xié)議頭在下級(jí)流水線的協(xié)議頭定位及信息抽取表中的索引值,得到它下級(jí)流水線處理的規(guī)則。
(3)流水線的級(jí)數(shù)沒(méi)有固定的要求,對(duì)于當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議頭的結(jié)構(gòu)而言,設(shè)計(jì)5級(jí)流水線可以滿足要求。當(dāng)專用集成電路芯片一旦確定下來(lái),其流水線級(jí)數(shù)也就固定下來(lái)了。每一級(jí)都有相應(yīng)的數(shù)據(jù)包頭定位和信息抽取操作表。用戶能夠根據(jù)需要修改表的內(nèi)容,以支持新型協(xié)議頭的解析處理。
下面再具體說(shuō)明數(shù)據(jù)包快速解析的步驟第一步,是對(duì)數(shù)據(jù)包頭的解析和信息的抽取。整個(gè)過(guò)程是依據(jù)數(shù)據(jù)包頭定位和信息抽取操作表定義的規(guī)則進(jìn)行。
結(jié)合附圖2,數(shù)據(jù)包解析和信息抽取的具體步驟描述如下(1)初始化每一級(jí)的數(shù)據(jù)包頭定位和信息抽取操作表(包括協(xié)議頭定位及信息抽取表,協(xié)議映射表和下層協(xié)議索引表)和查找關(guān)鍵字生成規(guī)則表。
(2)判斷被處理是否是數(shù)據(jù)的第一個(gè)協(xié)議頭,是則取系統(tǒng)默認(rèn)的初始化協(xié)議頭類型索引值和初始化協(xié)議頭位置值;否則,取出在處理上層協(xié)議頭時(shí)得到的下層協(xié)議頭的索引值和下層協(xié)議頭的位置值。
(3)用步驟(2)中得到的協(xié)議頭的索引值去查找協(xié)議頭定位及信息抽取表,得到當(dāng)前數(shù)據(jù)包的處理規(guī)則。
(4)如果表中的全局操作表項(xiàng)的值標(biāo)識(shí)處理完成,則數(shù)據(jù)包解析和數(shù)據(jù)抽取操作結(jié)束,否則,同時(shí)進(jìn)行(5)、(6)和(7)步的操作。
(5)依據(jù)定位規(guī)則給下層協(xié)議頭定位。其具體步驟如下(a)判斷協(xié)議頭中協(xié)議長(zhǎng)度域是否存在,存在則抽取這個(gè)長(zhǎng)度域的數(shù)據(jù),否則,分兩種情況,一是多協(xié)議標(biāo)簽交換協(xié)議,采用專用的處理方式,二是固定長(zhǎng)度的協(xié)議,則取預(yù)先定義好的協(xié)議頭長(zhǎng)度。
(b)依據(jù)下面的公式(1)計(jì)算下層協(xié)議頭的起始位置下層協(xié)議頭起始位=本層協(xié)議頭起始位+本層協(xié)議頭長(zhǎng)度(1)(6)確定下層協(xié)議的類型,其具體步驟如下(a)判斷協(xié)議頭中下層協(xié)議類型域是否存在,不存在則采用預(yù)先定義好的協(xié)議頭索引;否則抽取協(xié)議類型域的數(shù)據(jù),并繼續(xù)執(zhí)行以下步驟(b)、步驟(c)和步驟(d)。
(b)用步驟(a)得到的協(xié)議類型域的數(shù)據(jù)查找協(xié)議映射表,得到協(xié)議的映射值a,b,c,d,其中a,b,c,d分別為下層協(xié)議類型域中的第一,二,三,四個(gè)4比特值依次查找協(xié)議映射表,得到的協(xié)議映射值,當(dāng)下層協(xié)議類型值沒(méi)有16比特長(zhǎng)時(shí),a,b取值為0。
(c)利用公式(2)計(jì)算得到偏移地址。
offset=a*2^α+b*2^β+c*2^λ+d*2^μ (2)(d)用這個(gè)偏移地址加上協(xié)議頭定位及信息抽取表中的基址表項(xiàng)得到一個(gè)絕對(duì)地址,用這個(gè)絕對(duì)地址查找下層協(xié)議索引表,得到下層協(xié)議頭索引值。
(7)協(xié)議頭信息抽取,具體步驟如下(a)判斷抽取信息字節(jié)掩碼是否為0,是則不再抽取信息;否則繼續(xù)執(zhí)行下面的操作。
(b)依據(jù)抽取信息字節(jié)掩碼抽取協(xié)議頭相關(guān)信息(c)把抽取的信息填入數(shù)據(jù)包信息關(guān)鍵字的對(duì)應(yīng)位置(d)根據(jù)信息標(biāo)識(shí)碼修改數(shù)據(jù)包信息關(guān)鍵字標(biāo)識(shí)碼第二步,生成查找關(guān)鍵字根據(jù)最后一次在協(xié)議頭定位及信息抽取表中得到的查找關(guān)鍵字生成規(guī)則標(biāo)識(shí),在查找關(guān)鍵字生成規(guī)則表中找到對(duì)應(yīng)的查找關(guān)鍵字生成方法,然后,根據(jù)數(shù)據(jù)包信息關(guān)鍵字和數(shù)據(jù)包信息關(guān)鍵字標(biāo)識(shí)碼,按照上述查找關(guān)鍵字生成方法生成查找關(guān)鍵字。。
表二列出了查找關(guān)鍵字生成規(guī)則表的表項(xiàng)內(nèi)容。
表二對(duì)協(xié)議頭長(zhǎng)度的計(jì)算說(shuō)明如下對(duì)于不同的協(xié)議頭,其長(zhǎng)度計(jì)算方法可能不一樣。有的協(xié)議有固定的長(zhǎng)度;有的長(zhǎng)度是變化的,由協(xié)議頭中的頭長(zhǎng)度域給出;還有的要通過(guò)某種專用的計(jì)算方法得到,如多協(xié)議標(biāo)簽交換協(xié)議。具體描述如下(1)對(duì)于固定長(zhǎng)度協(xié)議,配置協(xié)議頭定位及信息抽取表的固定長(zhǎng)度域的值為其長(zhǎng)度值,OP1的值配為采用預(yù)先定義的固定長(zhǎng)度。這樣,專用集成電路在進(jìn)行處理時(shí),會(huì)依據(jù)OP1的這個(gè)值而取表中固定長(zhǎng)度值作為其協(xié)議頭的長(zhǎng)度。
(2)可變長(zhǎng)度協(xié)議,此類協(xié)議長(zhǎng)度可以由其協(xié)議頭中的長(zhǎng)度域得到,在協(xié)議頭定位及信息抽取表中依據(jù)具體的協(xié)議配置好協(xié)議偏移,協(xié)議寬度域。OP1的值配為取本層協(xié)議頭中長(zhǎng)度域的低4位或高4位乘4。傳輸控制協(xié)議和網(wǎng)際協(xié)議屬于這類協(xié)議;(3)多協(xié)議標(biāo)簽交換協(xié)議,其長(zhǎng)度有專用的計(jì)算方法。OP1的值配為用于多協(xié)議標(biāo)簽交換協(xié)議頭,可以把多層多協(xié)議標(biāo)簽交換協(xié)議頭棧當(dāng)作是一個(gè)特殊的協(xié)議頭來(lái)處理。硬件采用的方法是通過(guò)檢測(cè)多協(xié)議標(biāo)簽交換協(xié)議頭中的s域(1比特),為1時(shí)表示在多層多協(xié)議標(biāo)簽交換協(xié)議頭棧中的棧底,通過(guò)這個(gè)協(xié)議頭個(gè)數(shù)的統(tǒng)計(jì)值就得到整個(gè)多協(xié)議標(biāo)簽交換協(xié)議協(xié)議頭的長(zhǎng)度。
結(jié)合附圖3對(duì)協(xié)議映射表的構(gòu)造進(jìn)行說(shuō)明協(xié)議映射表是個(gè)寬度為16比特,深度為16的表格。為了便于描述,把協(xié)議映射表平均分為4列,依次取名為表A、表B、表C和表D,分別用于對(duì)協(xié)議類型值的第一、二、三和四個(gè)4比特值進(jìn)行映射。表A的內(nèi)容是這樣確定的表A所需要處理的所有協(xié)議類型值的第一個(gè)4比特值,是落在0到0x0F中的一個(gè)或幾個(gè)數(shù)字,我們把這幾個(gè)數(shù)字作為深度的索引值在表A中的相應(yīng)位置,依次填入從0開(kāi)始的數(shù)字標(biāo)識(shí)它,其他位置填f。表B、表C和表D采用相同的方法構(gòu)造。
下面是下層協(xié)議索引表中偏移地址的計(jì)算公式及其說(shuō)明offset=a*2^α+b*2^β+c*2^λ+d*2^μ (2)其中,a,b,c,d依次為本層協(xié)議頭中協(xié)議類型域的第一、二、三、四個(gè)4比特分別在協(xié)議映射表中表A、表B、表C和表D中的映射值。α和β以及λ可以在協(xié)議頭定位及信息抽取表中查到,其值是由協(xié)議映射表用以下公式計(jì)算得到的μ=0,min{2^λ>Max(d)*2^μ}=>λmin{2^β>Max(c)*2^λ+Max(d)*2^μ}=>βmin{2^α>Max(b)*2^β+Max(c)*2^λ+Max(d)*2^μ}=>α協(xié)議頭定位及信息抽取表中的基址表項(xiàng)的說(shuō)明如下一個(gè)數(shù)據(jù)包頭在下層協(xié)議索引表中占有的深度計(jì)算公式為depth=Max(a)*2^α+Max(b)*2^β+Max(c)*2^λ+Max(d)*2^μ于是,在協(xié)議頭定位及信息抽取表中,第一個(gè)頭的基址表項(xiàng)值為0,第二個(gè)頭的基址值為0+第一個(gè)頭的depth,第三個(gè)頭的基址值為前面的頭的depth值的和,依此類推。
結(jié)合附圖4,對(duì)下層協(xié)議頭索引表闡述如下下層協(xié)議頭索引表中的內(nèi)容是各種協(xié)議類型在下級(jí)協(xié)議頭定位及信息抽取表中的索引。本層所支持的每個(gè)協(xié)議頭分別在下層協(xié)議頭索引表中擁有一大小為depth的連續(xù)區(qū)域,在這個(gè)區(qū)域里的存儲(chǔ)著它所支持的下層協(xié)議類型的索引值。
結(jié)合圖5對(duì)抽取信息字節(jié)掩碼說(shuō)明如下在協(xié)議頭定位及信息抽取表中定義了抽取信息字節(jié)掩碼項(xiàng),它是用于表明如何從協(xié)議頭中抽取數(shù)據(jù)。抽取信息字節(jié)掩碼表項(xiàng)采用二進(jìn)制表示時(shí),每個(gè)比特對(duì)應(yīng)于數(shù)據(jù)包頭的一個(gè)字節(jié),當(dāng)這個(gè)二進(jìn)制位為1表示抽取這個(gè)字節(jié),為0表示不抽取。32個(gè)比特的抽取信息字節(jié)掩碼表項(xiàng)可以處理長(zhǎng)達(dá)32字節(jié)寬度的協(xié)議頭,如果協(xié)議頭長(zhǎng)度小于32字節(jié),我們?cè)谶@個(gè)協(xié)議頭的掩碼后面補(bǔ)0,補(bǔ)的0在這個(gè)協(xié)議頭中沒(méi)有相關(guān)的對(duì)應(yīng)字節(jié)。附圖5中掩碼值為0xFFF00000,抽取協(xié)議頭中的目的地址和源地址信息。
結(jié)合附圖6和圖7對(duì)數(shù)據(jù)包信息關(guān)鍵字及信息標(biāo)識(shí)碼標(biāo)識(shí)說(shuō)明如下數(shù)據(jù)包信息關(guān)鍵字長(zhǎng)度為32個(gè)字節(jié),用來(lái)存儲(chǔ)數(shù)據(jù)包頭信息。在對(duì)數(shù)據(jù)包頭解析時(shí),抽取信息并填入數(shù)據(jù)包信息關(guān)鍵字的同時(shí),通過(guò)信息標(biāo)識(shí)碼對(duì)此進(jìn)行記錄。附圖7中,需要抽取IP頭的SIP,DIP,ID等信息,抽取信息字節(jié)掩碼對(duì)應(yīng)SIP,DIP,ID域的掩碼值為1,其他域值為0。相應(yīng)的,數(shù)據(jù)包信息關(guān)鍵字中存儲(chǔ)SIP,DIP,ID的相應(yīng)位置的信息標(biāo)識(shí)碼設(shè)定為1來(lái)標(biāo)識(shí)。
權(quán)利要求
1.一種數(shù)據(jù)包的快速解析方法,包括數(shù)據(jù)包頭定位和信息抽取操作表和查找關(guān)鍵字生成規(guī)則表,數(shù)據(jù)包頭定位和信息抽取操作表由協(xié)議頭定位及信息抽取表,協(xié)議映射表和下層協(xié)議索引表組成,協(xié)議頭定位及信息抽取表用于存放對(duì)數(shù)據(jù)包中各種協(xié)議頭的處理方法,其中包括起始位置的定位方法和數(shù)據(jù)包頭信息抽取方法,協(xié)議映射表用于存放系統(tǒng)能支持的各利協(xié)議的編碼,下層協(xié)議索引表用于存放各類下層協(xié)議在協(xié)議頭定位及信息抽取表中的索引值;查找關(guān)鍵字生成規(guī)則表用于存放查找關(guān)鍵字的生成方法;該方法包括以下步驟(一)對(duì)數(shù)據(jù)包頭的解析和信息的抽取,具體步驟包括(1)初始化每一級(jí)的協(xié)議頭定位及信息抽取表、協(xié)議映射表、下層協(xié)議索引表和查找關(guān)鍵字生成規(guī)則表;(2)判斷被處理是否是數(shù)據(jù)包的第一個(gè)協(xié)議頭,如果是,則取系統(tǒng)默認(rèn)的初始化協(xié)議頭類型索引值和初始化協(xié)議頭位置值;否則,取出在處理上層協(xié)議頭時(shí)得到的下層協(xié)議頭的位置值和下層協(xié)議頭的索引值;(3)用步驟(2)中得到的協(xié)議頭的索引值去查找協(xié)議頭定位及信息抽取表,得到當(dāng)前數(shù)據(jù)包的處理規(guī)則;(4)如果表中的全局操作表項(xiàng)的值標(biāo)識(shí)處理完成,則數(shù)據(jù)包解析和數(shù)據(jù)抽取操作結(jié)束,進(jìn)入步驟(二),否則,同時(shí)進(jìn)行步驟(5)、(6)和(7),完成后進(jìn)入步驟(2);(5)依據(jù)定位規(guī)則給下層協(xié)議頭定位,其步驟如下(5.1)判斷協(xié)議頭中協(xié)議長(zhǎng)度域是否存在,如果存在,則抽取這個(gè)長(zhǎng)度域的數(shù)據(jù),否則,按照表格中的內(nèi)容分兩種情況,一是多協(xié)議標(biāo)簽交換協(xié)議,采用專用的處理方式,二是固定長(zhǎng)度的協(xié)議,則取預(yù)先定義好的協(xié)議頭長(zhǎng)度;(5.2)依據(jù)下面的公式(1)計(jì)算下層協(xié)議頭的起始位置下層協(xié)議頭起始位=本層協(xié)議頭起始位+本層協(xié)議頭長(zhǎng)度(1)(6)確定下層協(xié)議的類型,其步驟為(6.1)判斷協(xié)議頭中下層協(xié)議類型域是否存在,不存在則采用預(yù)先定義好的協(xié)議頭索引;否則抽取協(xié)議類型域的數(shù)據(jù),并繼續(xù)執(zhí)行以下步驟(6.2)、步驟(6.3)和步驟(6.4)(6.2)用步驟(6.1)得到的協(xié)議類型域的數(shù)據(jù)查找協(xié)議映射表,得到協(xié)議的映射值a,b,c,d;(6.3)把協(xié)議映射值a,b,c,d通過(guò)公式(2)計(jì)算得到偏移地址offset=a*2^α+b*2^β+c*2^λ+d*2^μ(2)其中,αβλμ通過(guò)查找協(xié)議頭定位及信息抽取表得到;(6.4)將上述偏移地址與協(xié)議頭定位及信息抽取表中的基址表項(xiàng)相加得到一個(gè)絕對(duì)地址,用該絕對(duì)地址查找下層協(xié)議索引表,得到下層協(xié)議頭索引值;(7)協(xié)議頭信息抽取,具體步驟如下(7.1)判斷抽取信息字節(jié)掩碼是否為0,如果是,則不再抽取信息,結(jié)束步驟(7),否則繼續(xù)執(zhí)行下述操作;(7.2)依據(jù)抽取信息字節(jié)掩碼抽取協(xié)議頭相關(guān)信息;(7.3)把抽取的信息填入數(shù)據(jù)包信息關(guān)鍵字的對(duì)應(yīng)位置;(7.4)根據(jù)信息標(biāo)識(shí)碼修改數(shù)據(jù)包信息關(guān)鍵字標(biāo)識(shí)碼;(二)生成查找關(guān)鍵字根據(jù)最后一次在協(xié)議頭定位及信息抽取表中得到的查找關(guān)鍵字生成規(guī)則標(biāo)識(shí),在查找關(guān)鍵字生成規(guī)則表中找到對(duì)應(yīng)的查找關(guān)鍵字生成方法,然后,根據(jù)數(shù)據(jù)包信息關(guān)鍵字和數(shù)據(jù)包信息關(guān)鍵字標(biāo)識(shí)碼,按照上述查找關(guān)鍵字生成方法生成查找關(guān)鍵字。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述協(xié)議頭定位及信息抽取表包括以下內(nèi)容全局操作、長(zhǎng)度計(jì)算、索引操作、固定長(zhǎng)度、偏移地址、寬度、協(xié)議索引、協(xié)議偏移、協(xié)議寬度、協(xié)議頭標(biāo)識(shí)、抽取信息字節(jié)掩碼、查找關(guān)鍵字生成規(guī)則標(biāo)識(shí)、信息標(biāo)識(shí)碼和基址。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于所述查找關(guān)鍵字生成規(guī)則表包括查找規(guī)則,內(nèi)容可尋址存儲(chǔ)器表塊號(hào),全局掩碼和查找關(guān)鍵字字節(jié)掩碼。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)包的快速解析方法,采用基于查找表的專用集成電路實(shí)現(xiàn)技術(shù),對(duì)數(shù)據(jù)包頭信息進(jìn)行有效的解析和抽取。其步驟為①數(shù)據(jù)包解析及信息抽取依據(jù)數(shù)據(jù)包頭定位和信息抽取操作表,對(duì)數(shù)據(jù)包進(jìn)行解析和信息抽取處理,并生成數(shù)據(jù)包信息關(guān)鍵字。②數(shù)據(jù)包查找關(guān)鍵字生成完成數(shù)據(jù)包的解析和信息抽取之后,依據(jù)用戶指定的查找關(guān)鍵字生成規(guī)則,生成查找關(guān)鍵字。本發(fā)明通過(guò)修改規(guī)則表的相應(yīng)內(nèi)容可以達(dá)到修改對(duì)數(shù)據(jù)包的具體解析方法和定義新的協(xié)議頭類型處理方法,其靈活性和可擴(kuò)展性很強(qiáng)。同時(shí),采用多級(jí)流水線并行處理的方式,很大程度上減少了數(shù)據(jù)包的解析處理周期,獲得了對(duì)數(shù)據(jù)報(bào)文的高速處理。
文檔編號(hào)H04L29/06GK1585379SQ20041001321
公開(kāi)日2005年2月23日 申請(qǐng)日期2004年5月25日 優(yōu)先權(quán)日2004年5月25日
發(fā)明者楊宗凱, 黃建, 鐘名奇 申請(qǐng)人:華中科技大學(xué)