專利名稱:快速包過濾處理方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)過濾技術(shù),特別涉及一種基于以太網(wǎng)交換機的快速包過濾處理方法及其裝置。
背景技術(shù):
隨著互連網(wǎng)絡(luò)對其主要承載體的以太網(wǎng)絡(luò)設(shè)備具有更強的處理能力要求的不斷增長,以太網(wǎng)除了單純的數(shù)據(jù)轉(zhuǎn)發(fā)之外,還要能夠提供2到7層處理的能力,更強的重定優(yōu)先級(QOS)能力。這些都要求以太網(wǎng)核心交換芯片提供2到7層的數(shù)據(jù)包過濾、分類處理的功能,需要交換機能夠提供高速率和處理能力的快速包過濾處理器。目前以太網(wǎng)核心交換芯片采用的快速包過濾處理器大致使用兩種算法實現(xiàn),一種是HASH算法,如Additive、Rotating、CRC、MD4等,由于其查找鍵值很大,產(chǎn)生沖突的概率急劇增大,均存在著大約20%左右的碰撞概率,甚至?xí)霈F(xiàn)錯誤的匹配的情況。同時為了避免關(guān)鍵字的重復(fù),無法使用掩碼。另一種是BINARYSEARCH(二進制搜索)算法,該方法在網(wǎng)絡(luò)處理器中建立數(shù)據(jù)包處理規(guī)則表項,也稱為過濾表項。每次數(shù)據(jù)包到來時,BINARYSEARCH算法在規(guī)則表項中對數(shù)據(jù)包的操作表項采用折半查找法逐項進行查找。設(shè)規(guī)則表項中查找表項的條目數(shù)為M,則當數(shù)據(jù)包到來時,為了找到相應(yīng)的處理規(guī)則,需要在規(guī)則表項中對數(shù)據(jù)包的包頭數(shù)據(jù)采用折半查找法逐項查找操作表項,表項查找所需要的時間為log2M。當表項很大時,很難使查找速率達到端口的線速,嚴重限制了快速包過濾處理器的處理效率的提高和提供更加靈活廣泛的過濾功能,難以滿足互聯(lián)網(wǎng)絡(luò)不斷提高的速度和不斷更新的網(wǎng)絡(luò)處理應(yīng)用的需要,也很難應(yīng)用到千兆位以太網(wǎng)核心交換芯片中。若要滿足千兆以太網(wǎng)高速核心交換的應(yīng)用,則必須要求在很短的時間之內(nèi)處理數(shù)據(jù)包的查找,并且能夠擴展到數(shù)據(jù)包頭的任意字段內(nèi)容的組合,還要支持數(shù)以千計的過濾表項條目。因此需要更加高效和靈活的千兆以太網(wǎng)高速核心交換的快速包過濾處理方案。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明的目的是提供一種快速包過濾處理方法及其裝置,能夠滿足千兆位以太網(wǎng)包過濾提出的高速率、靈活的字段組合、擴大的表項容量,以適應(yīng)互聯(lián)網(wǎng)絡(luò)不斷提高的速度和不斷更新的網(wǎng)絡(luò)處理應(yīng)用的需要。
為解決上述問題,本發(fā)明提供了一種快速包過濾處理方法,包括在每個以太網(wǎng)數(shù)據(jù)包到達時,從數(shù)據(jù)包的包頭提取特定字段內(nèi)容;對提取的字段內(nèi)容進行掩碼運算,得到查表關(guān)鍵字;利用關(guān)鍵字在其掩碼所對應(yīng)的過濾表項區(qū)域內(nèi)查找表項;根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行過濾操作。
其中掩碼與查找關(guān)鍵字一一對應(yīng)。
所述過濾表項根據(jù)掩碼表中掩碼的數(shù)量N被劃分為N個區(qū)域,由N個掩碼得到N個查找關(guān)鍵字,被分別送入這N個獨立的區(qū)域內(nèi),由獨立的查表邏輯在區(qū)域內(nèi)對表項進行檢索,查找匹配的規(guī)則。
條表項同時命中的情況,則按照掩碼的編號以及所命中的規(guī)則表項地址來決定優(yōu)先級別,從中篩選出最終要在數(shù)據(jù)包上執(zhí)行的操作內(nèi)容。
根據(jù)查表規(guī)則匹配的結(jié)果,對正在中央數(shù)據(jù)緩沖池內(nèi)等待的數(shù)據(jù)包進行規(guī)則規(guī)定的操作處理,處理的內(nèi)容包括重定優(yōu)先級(QOS)、流量控制、訪問控制、目的端口重定向、轉(zhuǎn)發(fā)到CPU、更改VLANID、丟棄數(shù)據(jù)包等。
相應(yīng)地,本發(fā)明還提供了一種快速包過濾處理裝置,包括提取模塊、查表預(yù)處理模塊、查表模塊和數(shù)據(jù)包處理模塊,其中提取模塊,從到達的數(shù)據(jù)包包頭之中提取特定比特的字段內(nèi)容,然后送入匹配模塊中;查表預(yù)處理模塊,對每一個提取的字段內(nèi)容進行掩碼操作,得到用于查表的關(guān)鍵字;查表模塊,利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作;數(shù)據(jù)包處理模塊,根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行過濾操作。
所述查表模塊根據(jù)掩碼的數(shù)量N將整個過濾表項劃分為N個區(qū)域,將N個掩碼得到N個查找關(guān)鍵字分別送入這N個獨立的區(qū)域內(nèi),由獨立的查表邏輯在區(qū)域內(nèi)逐條對表項進行檢索,查找匹配的規(guī)則。
如果在所述查表模塊中查找到相應(yīng)的匹配規(guī)則,將匹配的規(guī)則號傳送給下級的數(shù)據(jù)包處理模塊進行相應(yīng)的處理,否則返回不能匹配的信息。
所述數(shù)據(jù)包處理模塊根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行的操作包括重定優(yōu)先級、流量控制、訪問控制、目的端口重定向、轉(zhuǎn)發(fā)到CPU、更改VLANID、丟棄數(shù)據(jù)包等。
本發(fā)明由于在每個以太網(wǎng)數(shù)據(jù)包到達時,從數(shù)據(jù)包頭提取相應(yīng)的字段內(nèi)容,根據(jù)字段內(nèi)容進行查表匹配操作,并且在查表匹配操作完成后根據(jù)匹配的結(jié)果對數(shù)據(jù)包進行相應(yīng)的操作。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(1)由于本發(fā)明提供的方法將規(guī)則表項的條目數(shù)M分成N個子區(qū),數(shù)據(jù)包包頭數(shù)據(jù)經(jīng)掩碼得到的關(guān)鍵字在N個子區(qū)內(nèi)同時與各個表項進行比較,采用并行BINARY SEARCH算法,即各個掩碼運算得出的關(guān)鍵字在各自掩碼對應(yīng)的規(guī)則表項的子空間(其大小為M/N)內(nèi)獨立的、并行的查表操作,算法的運行時間為由原來的log2M縮短為log2(M/N),大大縮短了處理時間,因此具有更高的處理速度,能夠滿足千兆以太網(wǎng)高速過濾處理的需求,同時由于引進了掩碼機制,能夠以有限的表項實現(xiàn)包頭特定字節(jié)中各個協(xié)議字段任意組合,極大的提高了進行分類過濾操作的靈活性。
(2)采用并行BINARYSEARCH算法結(jié)構(gòu)的快速包過濾處理裝置,能夠?qū)崿F(xiàn)高速查表的并行BINARYSEARCH算法的過濾查表單元,該過濾查表單元以千兆以太網(wǎng)端口的線速查找,并且能夠?qū)崿F(xiàn)數(shù)據(jù)包頭字段的靈活組合,支持大容量的查找表項,本發(fā)明支持1.5K條過濾表項,能夠最多提供對12個千兆以太網(wǎng)端口和一個萬兆以太網(wǎng)端口的線速查找、過濾和分類操作。支持22Gps的總的帶寬和33Mpps包處理速率,具有很高的先進性,適合于在千兆位以太網(wǎng)核心交換芯片中使用,本發(fā)明避免了昂貴的基于內(nèi)容地址查找存儲器(CAM)的使用,能夠通過高密度的片上隨機訪問存儲器(RAM)使用,支持大的關(guān)鍵字數(shù)據(jù)的比較,能夠用較低的成本達到很高的運行速率,非常適合于采用集成電路實現(xiàn),有著廣泛的應(yīng)用前景。
圖1是本發(fā)明快速包過濾處理方法流程圖;圖2是圖1中查表操作的具體流程圖;圖3是按照規(guī)則對數(shù)據(jù)流進行處理的操作流程圖;
圖4是本發(fā)明快速包過濾處理裝置的方框圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的具體實施方式
做詳細說明。
數(shù)據(jù)包過濾是一個網(wǎng)絡(luò)安全保護機制,用來控制流出和流入網(wǎng)絡(luò)的數(shù)據(jù)。為了理解數(shù)據(jù)包過濾,首先介紹一下數(shù)據(jù)包。包是由各層連接的協(xié)議組成,在每一層包都是由包頭和包體組成。在包頭存放與這一層相關(guān)的協(xié)議信息,在包體存放在這一層的數(shù)據(jù)信息。這些數(shù)據(jù)也包含了上層的全部信息。在每一層上對包的處理是將從上層獲取的全部信息作為包體,然后依本層的協(xié)議在加上包頭。本發(fā)明為了實現(xiàn)快速靈活過濾數(shù)據(jù)包,首先在以太網(wǎng)交換機中的數(shù)據(jù)區(qū)建立掩碼表、規(guī)則表和流量控制表,本實施例中,掩碼表中的表項為128條,在千兆端口數(shù)為12的情況下,規(guī)則表總計為12*128條,為1.5K條,規(guī)定流量控制表為768條。
圖1是本發(fā)明快速包過濾處理方法流程圖。如圖1所示,從以太網(wǎng)端口輸入的數(shù)據(jù)包中,提取包頭72字節(jié)的內(nèi)容,并且根據(jù)端口和地址等信息判斷數(shù)據(jù)包的類型和源、目的端口號(S101)。與此同時,數(shù)據(jù)包將被送入中央數(shù)據(jù)緩沖池等待查表的結(jié)果。提取的包頭72字節(jié)的內(nèi)容被送到各個掩碼對應(yīng)的預(yù)處理模塊,在預(yù)處理模塊中,提取的包頭與由初始的掩碼表中的掩碼生成的72字節(jié)的最終掩碼進行相與操作,所得到的結(jié)果即為最終送入查表模塊中的查表關(guān)鍵字(S102)。在查表模塊中,從各個預(yù)處理模塊中送來的72字節(jié)的查表關(guān)鍵字被送到各自掩碼所對應(yīng)的規(guī)則子區(qū)域中并行的進行查表操作。每個子區(qū)域的大小為M/N(M為所有表項數(shù)目,N為掩碼的數(shù)目)(S103)。根據(jù)查表操作得到的表項結(jié)果在數(shù)據(jù)包處理模塊對數(shù)據(jù)包進行相應(yīng)的處理(S104)。
圖2是圖1中查表操作的具體流程圖。如圖2所示,在得到關(guān)鍵字(S201)之后,判斷是否進行查表操作(S202),如果不進行查表操作則作為未查到處理(S211)。在確定進行查表操作之后,利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作(S203),在這個步驟中,在規(guī)則子集中每次從規(guī)則表子集的地址上限和下限之間的中間地址值讀出一條表項,將表項拆分成4個部分,每個部分18個字節(jié),同時將查表關(guān)鍵字也拆分成4個部分,每個部分18個字節(jié),表項的4個部分和查表關(guān)鍵字的四個部分分別一對一的比較。然后判斷是否全部相等,也就是全部匹配(S204),若4個部分均相等,則表項命中,否則判斷是否部分匹配(S208),若部分匹配,則根據(jù)掩碼表相應(yīng)的規(guī)則進行處理(S209),掩碼表中包含關(guān)鍵字與表項部分匹配的處理規(guī)則,例如包括從高位到低位判斷表項和查表關(guān)鍵字的關(guān)系(大于或小于),根據(jù)判斷的結(jié)果重新確定搜索子集的上限和下限,重復(fù)上面的操作。此外也包括丟棄或轉(zhuǎn)發(fā)等。若匹配結(jié)果即不是全部匹配,也沒有部分匹配,則表示未查到(S211)。如果步驟S204的判斷結(jié)果是4個部分均相等,這時需要判斷數(shù)據(jù)包是否符合流量控制要求(S205),因為每個端口的顆粒度流量要求是從1Mbps到1000Mpbs,符合要求才可以進行數(shù)據(jù)包處理(S210)。判斷數(shù)據(jù)包是否符合流量控制要求的目的還在于判斷是否超出流量控制表的范圍(S206),沒有超出的話則進行數(shù)據(jù)包處理(S210),否則將數(shù)據(jù)包丟棄或轉(zhuǎn)發(fā)(S207)。步驟S203中還會出現(xiàn)對于在一個掩碼對應(yīng)表項中出現(xiàn)重復(fù)命中條目情況,此時就需根據(jù)地址的高低判斷有效性,地址高的覆蓋地址低的,對于不同掩碼重復(fù)命中的規(guī)則,根據(jù)掩碼的編號判斷,掩碼編號低的有效,最終生成一個查表結(jié)果,將此結(jié)果送到規(guī)則處理模塊中去。在對數(shù)據(jù)包進行處理的步驟S210中,數(shù)據(jù)包處理模塊根據(jù)查表規(guī)則匹配的結(jié)果,對正在中央數(shù)據(jù)緩沖池內(nèi)等待的數(shù)據(jù)包進行規(guī)則規(guī)定的操作處理,處理的內(nèi)容通常包括重定優(yōu)先級(QOS)、流量控制(顆粒度從1Mbps到1000Mpbs)、訪問控制、目的端口重定向、轉(zhuǎn)發(fā)到CPU、更改VLANID、丟棄數(shù)據(jù)包等等。
查表得出的規(guī)則將被送到數(shù)據(jù)包處理模塊中,數(shù)據(jù)包處理模塊根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行操作,目前支持的操作有重定優(yōu)先級(QOS),對tagged包修改包的PRI,并以此值重定COS,用包中的PRI重定COS值、修改包中的TOS、用包中的TOS重定COS值、修改包的DSCP值;流量控制,其作用是如果網(wǎng)絡(luò)管理者想限制來自某子網(wǎng)或去往某子網(wǎng)的業(yè)務(wù)的流量到一定的范圍,或限制某種類型的流到一定的范圍,流控的顆粒度從1Mbps到1000Mpbs;訪問控制,其作用就是給予數(shù)據(jù)包的訪問權(quán)限,比如說如果網(wǎng)絡(luò)管理者想丟掉所有來自10.18.13.xxx的ip業(yè)務(wù),除了ICMP包??梢奍P包沒有對10.18.13.xxx的訪問權(quán)限;重定向。也就是重新定義包的出端口號;重寫VLANID(虛擬局域網(wǎng)識別號);復(fù)制包到CPU;丟包等。
規(guī)則表中每一個字節(jié)對應(yīng)一個表項,本實施例中采用16位的字節(jié),用其中的13位的狀態(tài)表征所要執(zhí)行的操作。圖3是按照規(guī)則對數(shù)據(jù)包進行處理的操作流程圖。如圖3所示,當利用關(guān)鍵字在規(guī)則表中查找到一個符合規(guī)則的表項時,通過判斷表項字節(jié)每一位的狀態(tài)(S303-S313),數(shù)據(jù)包處理模塊對數(shù)據(jù)包執(zhí)行相應(yīng)的操作(S314-S324)。
圖4是本發(fā)明快速包過濾處理裝置的方框圖。本發(fā)明的快速包過濾處理裝置在每個以太網(wǎng)數(shù)據(jù)包到達時,從數(shù)據(jù)包的包頭提取特定字段內(nèi)容,對提取的字段內(nèi)容進行掩碼運算,得到查表關(guān)鍵字,利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作,根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行相應(yīng)的操作。如圖4所示,本發(fā)明的快速包過濾處理裝置包括提取模塊、查表預(yù)處理模塊、查表模塊和數(shù)據(jù)包處理模塊,其中提取模塊從以太網(wǎng)端口輸入的數(shù)據(jù)包中,提取包頭72字節(jié)的內(nèi)容,并且根據(jù)端口和地址等信息判斷數(shù)據(jù)包的類型和源、目的端口號,然后將提取的包頭字段內(nèi)容送入匹配模塊中;查表預(yù)處理模塊對每一個提取的字段內(nèi)容進行掩碼操作,得到用于查表的關(guān)鍵字;查表模塊利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作;數(shù)據(jù)包處理模塊根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行相應(yīng)的操作。查表模塊根據(jù)掩碼的數(shù)量N將整個過濾表項劃分為N個區(qū)域,將N個掩碼得到N個查找關(guān)鍵字分別送入這N個獨立的區(qū)域內(nèi),由獨立的查表邏輯在區(qū)域內(nèi)按照BINARYSEARCH算法逐條對表項進行檢索,查找匹配的規(guī)則。如果在查表模塊中查找到相應(yīng)的匹配規(guī)則,將匹配的規(guī)則號傳送給下級的處理模塊進行相應(yīng)的處理,否則返回不能匹配的信息。數(shù)據(jù)包處理模塊根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行操作,包括重定優(yōu)先級(QOS)、流量控制、訪問控制、目的端口重定向、轉(zhuǎn)發(fā)到CPU、更改VLANID、丟棄數(shù)據(jù)包等。
本發(fā)明快速包過濾處理方法采用并行BINARY SEARCH算法實現(xiàn)快速過濾表項查找和匹配,并以此方法為基礎(chǔ)設(shè)計和實現(xiàn)了一種快速包過濾裝置,本發(fā)明快速包過濾處理裝置支持對包頭72字節(jié)的過濾、分類處理,支持12個千兆端口和一個萬兆端口的線速過濾,采用集成電路實現(xiàn),其查表采用并行BINARY SEARCH算法,查表所用時間為log2(M/N)其中M為總的過濾表項的條目數(shù),N為采用的過濾掩碼的條目數(shù)。在千兆位以太網(wǎng)核心交換芯片中實現(xiàn)了2到7層過濾、分類處理的功能,并可內(nèi)嵌在千兆位以太網(wǎng)核心交換芯片中,滿足了千兆位以太網(wǎng)核心交換的高速率,多功能,多處理的靈活要求。
權(quán)利要求
1.一種快速包過濾處理方法,其特征在于包括a.在每個以太網(wǎng)數(shù)據(jù)包到達時,從數(shù)據(jù)包的包頭提取特定字段內(nèi)容;b.對提取的字段內(nèi)容進行掩碼運算,得到查表關(guān)鍵字;c.利用關(guān)鍵字在其掩碼所對應(yīng)的過濾表項區(qū)域內(nèi)查找表項;d.根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行過濾操作。
2.如權(quán)利要求1所述的方法,其特征在于掩碼與查找關(guān)鍵字一一對應(yīng)。
3.如權(quán)利要求1或2所述的方法,其特征在于所述過濾表項根據(jù)掩碼表中掩碼的數(shù)量N被劃分為N個區(qū)域,由N個掩碼得到N個查找關(guān)鍵字,被分別送入這N個獨立的區(qū)域內(nèi),由獨立的查表邏輯在區(qū)域內(nèi)對表項進行檢索,查找匹配的規(guī)則。
4.如權(quán)利要求3所述的方法,其特征在于如果查找的過程中出現(xiàn)了多條表項同時命中的情況,則按照掩碼的編號以及所命中的規(guī)則表項地址來決定優(yōu)先級別,從中篩選出最終要在數(shù)據(jù)包上執(zhí)行的操作內(nèi)容。
5.如權(quán)利要求4所述的方法,其特征在于根據(jù)查表規(guī)則匹配的結(jié)果,對正在中央數(shù)據(jù)緩沖池內(nèi)等待的數(shù)據(jù)包進行規(guī)則規(guī)定的操作處理,處理的內(nèi)容包括重定優(yōu)先級(QOS)、流量控制、訪問控制、目的端口重定向、轉(zhuǎn)發(fā)到CPU、更改VLANID、丟棄數(shù)據(jù)包等。
6.一種快速包過濾處理裝置,其特征在于包括提取模塊、查表預(yù)處理模塊、查表模塊和數(shù)據(jù)包處理模塊,其中提取模塊,從到達的數(shù)據(jù)包包頭之中提取特定比特的字段內(nèi)容,然后送入匹配模塊中;查表預(yù)處理模塊,對每一個提取的字段內(nèi)容進行掩碼操作,得到用于查表的關(guān)鍵字;查表模塊,利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作;數(shù)據(jù)包處理模塊,根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行過濾操作。
7.如權(quán)利要求6所述的裝置,其特征在于所述查表模塊根據(jù)掩碼的數(shù)量N將整個過濾表項劃分為N個區(qū)域,將N個掩碼得到N個查找關(guān)鍵字分別送入這N個獨立的區(qū)域內(nèi),由獨立的查表邏輯在區(qū)域內(nèi)逐條對表項進行檢索,查找匹配的規(guī)則。
8.如權(quán)利要求6或7所述的裝置,其特征在于如果在所述查表模塊中查找到相應(yīng)的匹配規(guī)則,將匹配的規(guī)則號傳送給下級的數(shù)據(jù)包處理模塊進行相應(yīng)的處理,否則返回不能匹配的信息。
9.如權(quán)利要求8所述的裝置,其特征在于所述數(shù)據(jù)包處理模塊根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行的操作包括重定優(yōu)先級、流量控制、訪問控制、目的端口重定向、轉(zhuǎn)發(fā)到CPU、更改VLANID、丟棄數(shù)據(jù)包等。
全文摘要
本發(fā)明提供了一種快速包過濾處理方法,包括在每個以太網(wǎng)數(shù)據(jù)包到達時,從數(shù)據(jù)包的包頭提取特定字段內(nèi)容;對提取的字段內(nèi)容進行掩碼運算,得到查表關(guān)鍵字;利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作;根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行相應(yīng)的操作。本發(fā)明還相應(yīng)提供了一種快速包過濾處理裝置,包括提取模塊、查表預(yù)處理模塊、查表模塊和數(shù)據(jù)包處理模塊,其中提取模塊從到達的數(shù)據(jù)包包頭之中提取特定比特的字段內(nèi)容,查表預(yù)處理模塊對每一個提取的字段內(nèi)容進行掩碼操作,得到用于查表的關(guān)鍵字;查表模塊利用關(guān)鍵字在其掩碼對應(yīng)的過濾表項區(qū)域內(nèi)進行查表操作;數(shù)據(jù)包處理模塊根據(jù)查表得出的規(guī)則對數(shù)據(jù)包進行相應(yīng)的操作。
文檔編號G06F17/30GK1972240SQ20051012388
公開日2007年5月30日 申請日期2005年11月24日 優(yōu)先權(quán)日2005年11月24日
發(fā)明者徐寧 申請人:武漢烽火網(wǎng)絡(luò)有限責(zé)任公司