欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

支持動態(tài)擴展幀頭的過濾匹配預處理方法及裝置的制作方法

文檔序號:7942292閱讀:166來源:國知局
專利名稱:支持動態(tài)擴展幀頭的過濾匹配預處理方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及以太網(wǎng)及其高層協(xié)議數(shù)據(jù)包的過濾領(lǐng)域,特別是涉及一種支持動態(tài)擴展幀頭的過濾匹配預處理方法及裝置。
背景技術(shù)
隨著互連網(wǎng)絡(luò)對其主要承載體的以太網(wǎng)絡(luò)設(shè)備處理能力要求的不斷增長,新的以太網(wǎng)交換機除了單純的數(shù)據(jù)轉(zhuǎn)發(fā)之外,還要能夠提供2到7層的處理能力,需要更強的重定優(yōu)先級能力。這些都要求以太網(wǎng)交換或接口芯片提供2到7層的數(shù)據(jù)包過濾、分類處理的功能。因此需要為交換機提供高速率和更強處理能力的快速包過濾處理器。在目前的交換芯片以及以太網(wǎng)接口芯片中的數(shù)據(jù)包匹配過濾器中,根據(jù)規(guī)則表的相關(guān)字段來定位,并提取當前數(shù)據(jù)包中的匹配關(guān)鍵字,一般采用固定偏移量方法傳統(tǒng)的關(guān)鍵字掩碼表項字段參見圖1所示,在相應(yīng)的過濾規(guī)則表中指定提取關(guān)鍵字的偏移量值,在匹配的過程中從數(shù)據(jù)包的固定位置(一般是包頭)開始,根據(jù)過濾表中規(guī)定的偏移量,計算要提取的關(guān)鍵字在數(shù)據(jù)包中的位置,從這個位置上提取相應(yīng)的關(guān)鍵字,與規(guī)則表的內(nèi)容比較,以確定是否匹配相應(yīng)規(guī)則。這種固定偏移量方法,對于數(shù)據(jù)包中各個字段相對于數(shù)據(jù)包頭的位置基本固定的以太網(wǎng)和無擴展幀頭的IPv4幀頭是可行的,但是,若將這個方法應(yīng)用于IPv6格式的數(shù)據(jù)包和有擴展幀頭的IPv4幀頭,則表現(xiàn)出了很大的局限性,因為IPv6的數(shù)據(jù)包頭和有擴展幀頭的IPv4幀頭,除了定長頭部之外,還有擴展頭部,而擴展頭部長度以及個數(shù)沒有限制。例如,參見圖2所示,TCP (Transmission Control Protocol,傳輸控制協(xié)議)協(xié)議幀頭的起點在IPv6數(shù)據(jù)包中的起始位置,可以是以下幾種情況之一(1) IPv6固定幀頭緊跟著TCP幀頭;(2) IPv6固定幀頭緊跟著路由幀頭,路由幀頭后面緊跟著TCP幀頭;C3) IPv6固定幀頭后面緊跟著路由幀頭,路由幀頭后面緊跟著分片幀頭,分片幀頭后面緊跟著TCP幀頭。很明顯,在上述幾種情況下,TCP幀頭相對于IPv6幀頭第一個字節(jié)或者以太網(wǎng)幀頭第一個字節(jié)的偏移位置不確定,如果采用傳統(tǒng)的固定偏移量來定位關(guān)鍵字,顯然不可能正確過濾TCP幀頭內(nèi)容。

發(fā)明內(nèi)容
本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種支持動態(tài)擴展幀頭的過濾匹配預處理方法及裝置,能夠?qū)?shù)據(jù)包中所有鏈路及IP固定幀頭和擴展幀頭的位置都識別出來,配合預先建立的掩碼規(guī)則,即可實現(xiàn)關(guān)鍵字匹配,正確過濾TCP幀頭內(nèi)容。本發(fā)明提供的支持動態(tài)擴展幀頭的過濾匹配預處理方法,包括以下步驟:A、從數(shù)據(jù)包的鏈路層幀頭開始掃描整個數(shù)據(jù)包,根據(jù)所有起始點為數(shù)據(jù)包鏈路層幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包鏈路層幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;B、根據(jù)數(shù)據(jù)包中的鏈路層負載類型字段,定位IP協(xié)議幀的基本幀頭的起始位置;然后根據(jù)IP協(xié)議幀的版本號、幀頭長度以及擴展幀頭類型字段,定位數(shù)據(jù)包中所有IP協(xié)議幀的擴展幀頭的位置;根據(jù)起始點為相應(yīng)基本幀頭或擴展幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包IP協(xié)議幀的基本幀頭或擴展幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;C、完成數(shù)據(jù)包的掃描,提取掩碼規(guī)定提取的所有關(guān)鍵字,并將已經(jīng)提取的關(guān)鍵字送到過濾器進行規(guī)則匹配。在上述技術(shù)方案中,步驟A之前還包括以下步驟建立預處理所需要的掩碼規(guī)則,所述掩碼規(guī)則包括偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer、相對偏移的起始點類型 Type、相對偏移量Offset、掩碼和關(guān)鍵字,其中,偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer 和相對偏移的起始點類型Type按照以下四種情況之一建立情況a =Layer = 0,掩碼中偏移量起始點為數(shù)據(jù)包中的鏈路層幀頭;情況b =Layer = 1,掩碼中偏移量起始點為IPv4基本幀頭或擴展幀頭,Type = 0或IPv4協(xié)議規(guī)定的擴展幀頭類型;情況c =Layer = 2,掩碼中偏移量起始點為數(shù)據(jù)包中的TCP/UDP幀頭,Type = IPv4協(xié)議下的用戶數(shù)據(jù)報協(xié)議UDP或傳輸控制協(xié)議TCP ;情況d =Layer = 3,掩碼中偏移量起始點為IPv6基本幀頭或擴展幀頭, Type = 0或IPv6協(xié)議規(guī)定的擴展幀頭類型。在上述技術(shù)方案中,步驟B包括以下步驟B1、定位數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,根據(jù)網(wǎng)絡(luò)層協(xié)議的版本號,來判斷網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包還是IPv4數(shù)據(jù)包;B2、若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv4數(shù)據(jù)包,則根據(jù)屬于情況b且Type = O的掩碼的相對偏移量加上當前已經(jīng)定位的網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字, 并寫入掩碼的關(guān)鍵字字段;B3、若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包,則根據(jù)屬于情況d且Type =0的掩碼的相對偏移量在相應(yīng)位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段。在上述技術(shù)方案中,步驟B2包括以下步驟根據(jù)IPv4數(shù)據(jù)包的幀頭長度字段,判斷是否存在IPv4擴展幀頭,若存在IPv4擴展幀頭,則跳到IPv4固定幀頭的末尾,定位并找到每一個IPv4擴展幀頭中的類型和長度字段,確定每一個擴展幀頭的起始位置;若當前 IPv4擴展幀頭的類型屬于情況b且Type=此擴展幀頭的掩碼,則根據(jù)掩碼中的相對偏移量值在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段。在上述技術(shù)方案中,步驟B2中還包括步驟遍歷完成整個IPv4幀頭后,根據(jù)IPv4 協(xié)議幀的幀頭長度字段確定TCP/UDP數(shù)據(jù)幀頭的起始點,并且根據(jù)起始點為TCP/UDP幀頭的掩碼所規(guī)定的偏移量,提取數(shù)據(jù)包TCP/UDP幀頭指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字。在上述技術(shù)方案中,步驟B3還包括以下步驟若當前處理的IPv6協(xié)議幀存在擴展幀頭,則根據(jù)下一個擴展幀頭的起始字節(jié)和所有屬于情況d且Type = IPv6協(xié)議規(guī)定的擴展幀頭類型的掩碼的偏移量,在數(shù)據(jù)包的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段, 重復上述步驟直到所有IPv6擴展幀頭都處理完。本發(fā)明提供的支持動態(tài)擴展幀頭的過濾匹配預處理裝置包括第一提取單元,用于從數(shù)據(jù)包的鏈路層幀頭開始掃描整個數(shù)據(jù)包,根據(jù)所有起始點為數(shù)據(jù)鏈路層幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包鏈路層幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;基本幀頭定位單元,用于根據(jù)數(shù)據(jù)包中的鏈路層負載類型字段,定位IP協(xié)議幀的基本幀頭的起始位置;擴展幀頭定位單元,用于根據(jù)IP協(xié)議幀的版本號、幀頭長度以及擴展幀頭類型字段,定位數(shù)據(jù)包中所有IP協(xié)議幀擴展幀頭的位置;第二提取單元,用于根據(jù)起始點為相應(yīng)基本幀頭或擴展幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包IP協(xié)議幀的基本幀頭或擴展幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;發(fā)送單元,用于將已經(jīng)提取的關(guān)鍵字送到過濾器進行規(guī)則匹配。在上述技術(shù)方案中,還包括掩碼規(guī)則建立單元,用于建立預處理所需要的掩碼規(guī)則,所述掩碼規(guī)則包括偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer、相對偏移的起始點類型 Type、相對偏移量Offset、掩碼和關(guān)鍵字,其中,偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer 和相對偏移的起始點類型Type按照以下四種情況之一建立情況a =Layer = 0,掩碼中偏移量起始點為數(shù)據(jù)包中的鏈路層幀頭;情況b =Layer = 1,掩碼中偏移量起始點為IPv4基本幀頭或擴展幀頭,Type = 0或IPv4協(xié)議規(guī)定的擴展幀頭類型;情況c =Layer = 2,掩碼中偏移量起始點為數(shù)據(jù)包中的TCP/UDP幀頭,Type = IPv4協(xié)議下的用戶數(shù)據(jù)報協(xié)議UDP或傳輸控制協(xié)議TCP ;情況d =Layer = 3,掩碼中偏移量起始點為IPv6基本幀頭或擴展幀頭, Type = 0或IPv6協(xié)議規(guī)定的擴展幀頭類型。在上述技術(shù)方案中,還包括網(wǎng)絡(luò)層數(shù)據(jù)幀類型判斷單元,用于定位數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,根據(jù)網(wǎng)絡(luò)層協(xié)議的版本號,來判斷網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包還是IPv4數(shù)據(jù)包。在上述技術(shù)方案中,還包括第三提取單元,用于根據(jù)IPv4數(shù)據(jù)包的幀頭長度字段,判斷是否存在IPv4擴展幀頭,若存在IPv4擴展幀頭,則跳到IPv4固定幀頭的末尾,定位并找到每一個IPv4擴展幀頭中的類型和長度字段,確定每一個擴展幀頭的起始位置;若當前IPv4擴展幀頭的類型屬于情況b且Type =此擴展幀頭的掩碼,則根據(jù)掩碼中的相對偏移量值在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段;以及遍歷完成整個IPv4幀頭后,根據(jù)IPv4協(xié)議幀的幀頭長度字段確定TCP/UDP數(shù)據(jù)幀頭的起始點,并且根據(jù)起始點為TCP/UDP幀頭的掩碼所規(guī)定的偏移量,提取數(shù)據(jù)包TCP/ UDP幀頭指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;第四提取單元,用于 若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包,則根據(jù)屬于情況d且Type = 0的掩碼的相對偏移量在相應(yīng)位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段;以及若當前處理的IPv6協(xié)議幀存在擴展幀頭,則根據(jù)下一個擴展幀頭的起始字節(jié)和所有屬于情況d且Type = IPv6協(xié)議規(guī)定的擴展幀頭類型的掩碼的偏移量,在數(shù)據(jù)包的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段, 重復上述步驟直到所有IPv6擴展幀頭都處理完。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點如下針對可變擴展幀頭相對于數(shù)據(jù)包開頭的偏移量在不同數(shù)據(jù)包中不同,本發(fā)明采用類似于軟件編譯程序鏈接重定位的方法,識別可變擴展幀頭的類型碼和長度字段,通過一次預處理將數(shù)據(jù)包所有幀頭(包括固定幀頭和擴展幀頭)的位置都識別出來,再配合預先建立的掩碼規(guī)則,就可以達到匹配關(guān)鍵字過濾的功能,解決了傳統(tǒng)的固定偏移量方法無法正確提取IPv6和Ipv4變長幀頭關(guān)鍵字的問題。


圖1為傳統(tǒng)的關(guān)鍵字掩碼表項字段;圖2為變長幀頭的匹配實例;
圖3為本發(fā)明實施例中的關(guān)鍵字掩碼表項字段;圖4為本發(fā)明實施例中方法的流程圖;圖5為本發(fā)明實施例中預處理模塊在數(shù)據(jù)包過濾處理中的功能框圖;圖6為本發(fā)明實施例中的HiNOC網(wǎng)絡(luò)結(jié)構(gòu);圖7為本發(fā)明實施例中硬件數(shù)據(jù)包過濾器在HiNOC交換設(shè)備中的位置示意圖;圖8為本發(fā)明實施例中數(shù)據(jù)包預處理以及過濾的流程圖。
具體實施例方式下面結(jié)合附圖及實施例對本發(fā)明作進一步的詳細描述。為了敘述和操作方便,首先建立預處理所需要的掩碼規(guī)則,包括偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級(Layer),整數(shù)類型,占用2比特;相對偏移的起始點類型(Type),整數(shù)類型,占用8比特;相對偏移量(Offset),整數(shù)類型,占用8比特;掩碼整數(shù)類型,占用32比特;關(guān)鍵字整數(shù)類型,占用32比特。本發(fā)明實施例中的關(guān)鍵字掩碼表項字段參見圖3所示,其中,偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級(Layer)和相對偏移的起始點類型(Type)按照以下四種情況之一建立情況a =Layer = 0,掩碼中偏移量起始點為數(shù)據(jù)包中的鏈路層幀頭;情況b =Layer = 1,Type = 0或IPv4協(xié)議規(guī)定的擴展幀頭類型,即掩碼中偏移量起始點為IPv4基本幀頭(Type = 0)或擴展幀頭(Type = IPv4 協(xié)議規(guī)定的擴展幀頭類型);情況 c =Layer = 2, Type = 0x06 或0x17 IPv4協(xié)議下的 UDP (UserData Protocol, 用戶數(shù)據(jù)報協(xié)議)或TCP,即掩碼中偏移量起始點為數(shù)據(jù)包中的TCP/UDP幀頭;情況d =Layer = 3,Type = 0或IPv6協(xié)議規(guī)定的擴展幀頭類型,即掩碼中偏移量起始點為IPv6基本幀頭(Type = 0)或擴展幀頭(Type = IPv6 協(xié)議規(guī)定的擴展幀頭類型),包括TCP和UDP。參見圖4所示,本發(fā)明實施例提供的支持動態(tài)擴展幀頭的過濾匹配預處理方法, 包括以下步驟步驟101 當有數(shù)據(jù)包進入預處理器的時候,從第0字節(jié)開始掃描數(shù)據(jù)包,根據(jù)預處理器中建立的所有屬于情況a掩碼的相對偏移量,在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字, 并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段。步驟102 定位數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,根據(jù)數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié),也就是網(wǎng)絡(luò)層協(xié)議的版本號,來判斷網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv4數(shù)據(jù)包還是 IPv6數(shù)據(jù)包,如果是IPv4數(shù)據(jù)包,則轉(zhuǎn)到步驟103 ;如果是Ipv6數(shù)據(jù)包,則轉(zhuǎn)到步驟107。步驟103:若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv4數(shù)據(jù)包,根據(jù)預處理器中建立的所有屬于情況b 且Type = 0的掩碼的相對偏移量,加上當前已經(jīng)定位的網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段。步驟104 根據(jù)IPv4數(shù)據(jù)包的幀頭長度字段,判斷是否存在擴展幀頭,即判斷幀頭長度字段的值是否大于IPv4固定幀頭長度,如果是,則轉(zhuǎn)到步驟105 ;否則,轉(zhuǎn)到步驟106。
步驟105 若存在IPv4擴展幀頭,則跳到IPv4固定幀頭的末尾,定位并找到每一個IPv4擴展幀頭中的類型和長度字段,也就是每一個擴展幀頭的起始位置,若當前擴展幀頭的類型符合屬于情況b,且Type =此擴展幀頭的掩碼,則根據(jù)掩碼中的相對偏移量值在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段。步驟106 遍歷完成整個IPv4幀頭后,定位TCP或UDP四層協(xié)議幀頭起始位置,在所有屬于情況c的掩碼指定的偏移量位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段。步驟107 若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包,則根據(jù)所有屬于情況d且type等于0 的掩碼表項的相對偏移量值,在相應(yīng)位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段。步驟108 根據(jù)Ipv6數(shù)據(jù)包的幀頭長度字段,判斷是否存在擴展幀頭,如果是,則轉(zhuǎn)到步驟109 ;否則,轉(zhuǎn)到步驟110。步驟109 若當前處理的IPv6幀頭的next header (下一擴展幀頭類型)字段不等于59,則跳到當前next header字段所指向的擴展幀頭的起始字節(jié),根據(jù)所有屬于情況d 且Type =該擴展幀頭類型的掩碼表項的偏移量值,在數(shù)據(jù)包的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段。重復本步驟,直到所有IPv6擴展幀頭都被處理完成。步驟110 最終,預處理器中所有規(guī)定的掩碼都已經(jīng)從數(shù)據(jù)包中提取相應(yīng)的關(guān)鍵字并保存,預處理結(jié)束,將提取的所有關(guān)鍵字輸出到后續(xù)的過濾器中進行規(guī)則匹配。本發(fā)明實施例提供的支持動態(tài)擴展幀頭的過濾匹配預處理裝置,包括第一提取單元、基本幀頭定位單元、擴展幀頭定位單元、第二提取單元、發(fā)送單元、掩碼規(guī)則建立單元、網(wǎng)絡(luò)層數(shù)據(jù)幀類型判斷單元、第三提取單元和第四提取單元,其中第一提取單元,用于從數(shù)據(jù)包的鏈路層幀頭開始掃描整個數(shù)據(jù)包,根據(jù)所有起始點為數(shù)據(jù)鏈路層幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包鏈路層幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字?;編^定位單元,用于根據(jù)數(shù)據(jù)包中的鏈路層負載類型字段,定位IP協(xié)議幀的基本幀頭的起始位置。擴展幀頭定位單元,用于根據(jù)IP協(xié)議幀的版本號、幀頭長度以及擴展幀頭類型字段,定位數(shù)據(jù)包中所有IP協(xié)議幀擴展幀頭的位置。第二提取單元,用于根據(jù)起始點為相應(yīng)基本幀頭或擴展幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包IP協(xié)議幀的基本幀頭或擴展幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字。發(fā)送單元,用于將已經(jīng)提取的關(guān)鍵字送到過濾器進行規(guī)則匹配。掩碼規(guī)則建立單元,用于建立預處理所需要的掩碼規(guī)則,所述掩碼規(guī)則包括偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer、相對偏移的起始點類型Type、相對偏移量Offset、 掩碼和關(guān)鍵字,其中,偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer和相對偏移的起始點類型 Type按照以下四種情況之一建立情況a =Layer = 0,掩碼中偏移量起始點為數(shù)據(jù)包中的鏈路層幀頭;情況b =Layer = 1,掩碼中偏移量起始點為IPv4基本幀頭或擴展幀頭,Type = 0 或IPv4協(xié)議規(guī)定的擴展幀頭類型;情況c =Layer = 2,掩碼中偏移量起始點為數(shù)據(jù)包中的TCP/UDP幀頭,Type = IPv4 協(xié)議下的用戶數(shù)據(jù)報協(xié)議UDP或傳輸控制協(xié)議TCP ;
情況d =Layer = 3,掩碼中偏移量起始點為IPv6基本幀頭或擴展幀頭,Type = 0 或IPv6協(xié)議規(guī)定的擴展幀頭類型。網(wǎng)絡(luò)層數(shù)據(jù)幀類型判斷單元,用于定位數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置, 根據(jù)網(wǎng)絡(luò)層協(xié)議的版本號,來判斷網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包還是IPv4數(shù)據(jù)包。第三提取單元,用于根據(jù)IPv4數(shù)據(jù)包的幀頭長度字段,判斷是否存在IPv4擴展幀頭,若存在IPv4擴展幀頭,則跳到IPv4固定幀頭的末尾,定位并找到每一個IPv4擴展幀頭中的類型和長度字段,確定每一個擴展幀頭的起始位置;若當前IPv4擴展幀頭的類型屬于情況b且Type=此擴展幀頭的掩碼,則根據(jù)掩碼中的相對偏移量值在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段;以及遍歷完成整個IPv4 幀頭后,根據(jù)IPv4協(xié)議幀的幀頭長度字段確定TCP/UDP數(shù)據(jù)幀頭的起始點,并且根據(jù)起始點為TCP/UDP幀頭的掩碼所規(guī)定的偏移量,提取數(shù)據(jù)包TCP/UDP幀頭指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字。第四提取單元,用于若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包,則根據(jù)屬于情況d且Type =0的掩碼的相對偏移量在相應(yīng)位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段;以及若當前處理的IPv6協(xié)議幀存在擴展幀頭,則根據(jù)下一個擴展幀頭的起始字節(jié)和所有屬于情況d 且Iype = IPv6協(xié)議規(guī)定的擴展幀頭類型的掩碼的偏移量,在數(shù)據(jù)包的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段,重復上述步驟直到所有IPv6擴展幀頭都處理完。本發(fā)明實施例能夠解決根據(jù)固定長度偏移量的掩碼表無法提取正確的變長幀頭關(guān)鍵字的問題。例如,要過濾匹配圖1中所示的IPv6數(shù)據(jù)包中具有三種可能位置的TCP幀頭,假定要在過濾模塊的掩碼表中設(shè)置提取TCP的目的端口號,如果采用現(xiàn)有的固定偏移量掩碼,則需要為FCP幀頭在數(shù)據(jù)包中每一種可能的位置組合設(shè)計一條關(guān)鍵字掩碼,前面列舉了至少三種不同情況,所以至少需要三條掩碼來提取同一個的關(guān)鍵字,實際上由于很多擴展幀頭本身的長度可變,所需的掩碼數(shù)遠遠超過三條。但是,采用本發(fā)明實施例的預處理方法來定位此關(guān)鍵字,解決問題變得很容易,只需要一條掩碼Layer = 0x3,Type = 0x6,Offset = 0,Mask = 0x0000_FFFF采用前述步驟的預處理之后,該掩碼所規(guī)定的關(guān)鍵字就會被成功的提取出來,參見圖5所示,預處理模塊從數(shù)據(jù)包第一字節(jié)開始掃描當前數(shù)據(jù)包,由于Layer字段等于 0x03, Type字段等于0x06,這說明該掩碼是屬于情況d的掩碼,所匹配的是IPv6數(shù)據(jù)包中的TCP幀頭(在IPv6協(xié)議中,TCP和UDP也是擴展幀頭之一)。因此,預處理將會掃描并且跳過可能在TCP幀頭之前出現(xiàn)的IPv6路由幀頭或者分片幀頭,最終定位TCP幀頭在整個數(shù)據(jù)包中的起始位置,然后加上相對偏移量0,得到當前數(shù)據(jù)包中對應(yīng)這條關(guān)鍵字掩碼的絕對位置,隨即提取該位置上的關(guān)鍵字,并進行掩碼。提取的關(guān)鍵字隨后即可以被直接送到數(shù)據(jù)包過濾模塊進行規(guī)則匹配,而根據(jù)預處理方法得到的數(shù)據(jù)包中指定位置的16比特數(shù)據(jù)正好就是TCP幀頭的目的端口字段。下面以HiN0C(High performance Network over Coax,高性能同軸網(wǎng)絡(luò))技術(shù)平臺為例,介紹本發(fā)明的一個應(yīng)用場景。參見圖6所示,HiNOC主要網(wǎng)絡(luò)設(shè)備包括HiNOC交換機和HiNOC網(wǎng)橋,HiNOC交換機可掛接多個HiNOC網(wǎng)橋,HiNOC交換機的PHY (Physical Layer,物理層芯片)層主要完成以太網(wǎng)幀與HiNOC幀間的轉(zhuǎn)換,MAC(Medium/MediaAccess Control,介質(zhì)訪問控制)層主
1要完成MAC地址學習、MAC幀過濾和轉(zhuǎn)發(fā)的功能。除主要功能外,HiNOC交換機還需要具備如流量控制、流量優(yōu)先級、過濾等功能,另外,HiNOC網(wǎng)絡(luò)主要用在廣播電視網(wǎng)絡(luò)方面,HiNOC 網(wǎng)絡(luò)設(shè)備應(yīng)對如VLAN(Virtual Local Area Network,虛擬局域網(wǎng))操作、IPv6組播甚至 IPv6 IGMP(Internet Group Management Protocol,互聯(lián)網(wǎng)組管理協(xié)議)Snooping(嗅探, 捕獲并檢查網(wǎng)絡(luò)包)等功能和特性提供支持。因此需要支持IPv6的預處理邏輯模塊在硬件數(shù)字邏輯電路實現(xiàn)的包處理器中完成數(shù)據(jù)幀中指定關(guān)鍵字的提取工作。數(shù)據(jù)幀過濾匹配預處理器在HiNOC交換設(shè)備中的位置參見圖7所示,該模塊在 HiNOC橋中負責將以太網(wǎng)數(shù)據(jù)包按照規(guī)則表的配置進行提取,然后進入匹配器,得到需要進行的操作。HiNOC數(shù)據(jù)包過濾器設(shè)計的目的是作為HiNOC芯片橋接部分的快速過濾的預處理器,完成該芯片進出數(shù)據(jù)幀的各層關(guān)鍵元素的提取,通過對以太網(wǎng)數(shù)據(jù)包的過濾和分類,得到分類結(jié)果,用于指示應(yīng)該對數(shù)據(jù)包進行的處理。由此可實現(xiàn)諸如訪問控制、服務(wù)質(zhì)量處理、IGMP嗅探等相應(yīng)的功能。包括預處理的數(shù)據(jù)包過濾器的內(nèi)部結(jié)構(gòu)參見圖8所示,預處理器提取后的關(guān)鍵字保存到提取字段存儲中,條款匹配器根據(jù)規(guī)則的設(shè)置計算匹配結(jié)果,計算得到的結(jié)果(匹配或不匹配)送入決策器,由決策器選擇應(yīng)對數(shù)據(jù)包實施的動作??梢钥吹?,預處理器是數(shù)據(jù)包過濾器的關(guān)鍵模塊,本發(fā)明實施例中的預處理器完成兩大功能,一是根據(jù)本發(fā)明實施例的方法快速提取IPv6幀中各個位置上的關(guān)鍵字位置、高層協(xié)議幀頭位置等字段的位置; 二是在相應(yīng)位置上完成根據(jù)表項定義的相關(guān)字段的提取。應(yīng)用本發(fā)明實施例,使得HiNOC 交換設(shè)備的過濾功能具備快速和靈活的優(yōu)勢,能夠用較少的掩碼而得到對各種格式的IPv6 數(shù)據(jù)包完整支持。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。本說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
權(quán)利要求
1.一種支持動態(tài)擴展幀頭的過濾匹配預處理方法,其特征在于包括以下步驟A、從數(shù)據(jù)包的鏈路層幀頭開始掃描整個數(shù)據(jù)包,根據(jù)所有起始點為數(shù)據(jù)包鏈路層幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包鏈路層幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;B、根據(jù)數(shù)據(jù)包中的鏈路層負載類型字段,定位IP協(xié)議幀的基本幀頭的起始位置;然后根據(jù)IP協(xié)議幀的版本號、幀頭長度以及擴展幀頭類型字段,定位數(shù)據(jù)包中所有IP協(xié)議幀的擴展幀頭的位置;根據(jù)起始點為相應(yīng)基本幀頭或擴展幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包IP協(xié)議幀的基本幀頭或擴展幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;C、完成數(shù)據(jù)包的掃描,提取掩碼規(guī)定提取的所有關(guān)鍵字,并將已經(jīng)提取的關(guān)鍵字送到過濾器進行規(guī)則匹配。
2.如權(quán)利要求1所述的支持動態(tài)擴展幀頭的過濾匹配預處理方法,其特征在于步驟A 之前還包括以下步驟建立預處理所需要的掩碼規(guī)則,所述掩碼規(guī)則包括偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer、相對偏移的起始點類型Type、相對偏移量Off set、掩碼和關(guān)鍵字,其中,偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer和相對偏移的起始點類型Type按照以下四種情況之一建立情況a =Layer = 0,掩碼中偏移量起始點為數(shù)據(jù)包中的鏈路層幀頭;情況b :Layer = 1,掩碼中偏移量起始點為IPv4基本幀頭或擴展幀頭,Type = 0或 IPv4協(xié)議規(guī)定的擴展幀頭類型;情況c =Layer = 2,掩碼中偏移量起始點為數(shù)據(jù)包中的傳輸控制協(xié)議TCP/用戶數(shù)據(jù)報協(xié)議UDP幀頭,Type = IPv4協(xié)議下的UDP或TCP ;情況d =Layer = 3,掩碼中偏移量起始點為IPv6基本幀頭或擴展幀頭,Type = 0或 IPv6協(xié)議規(guī)定的擴展幀頭類型。
3.如權(quán)利要求2所述的支持動態(tài)擴展幀頭的過濾匹配預處理方法,其特征在于步驟B 包括以下步驟Bi、定位數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,根據(jù)網(wǎng)絡(luò)層協(xié)議的版本號,來判斷網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包還是IPv4數(shù)據(jù)包;B2、若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv4數(shù)據(jù)包,則根據(jù)屬于情況b且Type = 0的掩碼的相對偏移量加上當前已經(jīng)定位的網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段;B3、若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包,則根據(jù)屬于情況d且Type = 0的掩碼的相對偏移量在相應(yīng)位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段。
4.如權(quán)利要求3所述的支持動態(tài)擴展幀頭的過濾匹配預處理方法,其特征在于步驟B2 包括以下步驟根據(jù)IPv4數(shù)據(jù)包的幀頭長度字段,判斷是否存在IPv4擴展幀頭,若存在IPv4擴展幀頭,則跳到IPv4固定幀頭的末尾,定位并找到每一個IPv4擴展幀頭中的類型和長度字段, 確定每一個擴展幀頭的起始位置;若當前IPv4擴展幀頭的類型屬于情況b且Type =此擴展幀頭的掩碼,則根據(jù)掩碼中的相對偏移量值在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段。
5.如權(quán)利要求4所述的支持動態(tài)擴展幀頭的過濾匹配預處理方法,其特征在于步驟B2 中還包括步驟遍歷完成整個IPv4幀頭后,根據(jù)IPv4協(xié)議幀的幀頭長度字段確定TCP/UDP 數(shù)據(jù)幀頭的起始點,并且根據(jù)起始點為TCP/UDP幀頭的掩碼所規(guī)定的偏移量,提取數(shù)據(jù)包 TCP/UDP幀頭指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字。
6.如權(quán)利要求3所述的支持動態(tài)擴展幀頭的過濾匹配預處理方法,其特征在于步驟B3 還包括以下步驟若當前處理的IPv6協(xié)議幀存在擴展幀頭,則根據(jù)下一個擴展幀頭的起始字節(jié)和所有屬于情況d且Type = IPv6協(xié)議規(guī)定的擴展幀頭類型的掩碼的偏移量,在數(shù)據(jù)包的相應(yīng)位置提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段,重復上述步驟直到所有IPv6擴展幀頭都處理元ο
7.一種支持動態(tài)擴展幀頭的過濾匹配預處理裝置,其特征在于包括第一提取單元,用于從數(shù)據(jù)包的鏈路層幀頭開始掃描整個數(shù)據(jù)包,根據(jù)所有起始點為數(shù)據(jù)鏈路層幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包鏈路層幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;基本幀頭定位單元,用于根據(jù)數(shù)據(jù)包中的鏈路層負載類型字段,定位IP協(xié)議幀的基本幀頭的起始位置;擴展幀頭定位單元,用于根據(jù)IP協(xié)議幀的版本號、幀頭長度以及擴展幀頭類型字段, 定位數(shù)據(jù)包中所有IP協(xié)議幀擴展幀頭的位置;第二提取單元,用于根據(jù)起始點為相應(yīng)基本幀頭或擴展幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包IP協(xié)議幀的基本幀頭或擴展幀頭中指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;發(fā)送單元,用于將已經(jīng)提取的關(guān)鍵字送到過濾器進行規(guī)則匹配。
8.如權(quán)利要求7所述的支持動態(tài)擴展幀頭的過濾匹配預處理裝置,其特征在于還包括掩碼規(guī)則建立單元,用于建立預處理所需要的掩碼規(guī)則,所述掩碼規(guī)則包括偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer、相對偏移的起始點類型Type、相對偏移量Offset、掩碼和關(guān)鍵字,其中,偏移量起始點所在的網(wǎng)絡(luò)協(xié)議層級Layer和相對偏移的起始點類型Type按照以下四種情況之一建立情況a =Layer = 0,掩碼中偏移量起始點為數(shù)據(jù)包中的鏈路層幀頭;情況b :Layer = 1,掩碼中偏移量起始點為IPv4基本幀頭或擴展幀頭,Type = 0或 IPv4協(xié)議規(guī)定的擴展幀頭類型;情況c =Layer = 2,掩碼中偏移量起始點為數(shù)據(jù)包中的TCP/UDP幀頭,Type = IPv4協(xié)議下的用戶數(shù)據(jù)報協(xié)議UDP或傳輸控制協(xié)議TCP ;情況d =Layer = 3,掩碼中偏移量起始點為IPv6基本幀頭或擴展幀頭,Type = 0或 IPv6協(xié)議規(guī)定的擴展幀頭類型。
9.如權(quán)利要求6所述的支持動態(tài)擴展幀頭的過濾匹配預處理裝置,其特征在于還包括網(wǎng)絡(luò)層數(shù)據(jù)幀類型判斷單元,用于定位數(shù)據(jù)包中網(wǎng)絡(luò)層數(shù)據(jù)幀的起始字節(jié)位置,根據(jù)網(wǎng)絡(luò)層協(xié)議的版本號,來判斷網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包還是IPv4數(shù)據(jù)包。
10.如權(quán)利要求6至9任一項所述的支持動態(tài)擴展幀頭的過濾匹配預處理裝置,其特征在于還包括第三提取單元,用于根據(jù)IPv4數(shù)據(jù)包的幀頭長度字段,判斷是否存在IPv4擴展幀頭, 若存在IPv4擴展幀頭,則跳到IPv4固定幀頭的末尾,定位并找到每一個IPv4擴展幀頭中的類型和長度字段,確定每一個擴展幀頭的起始位置;若當前IPv4擴展幀頭的類型屬于情況b且Type =此擴展幀頭的掩碼,則根據(jù)掩碼中的相對偏移量值在數(shù)據(jù)包中的相應(yīng)位置提取關(guān)鍵字,并且與掩碼字段掩碼后存入該掩碼的關(guān)鍵字字段;以及遍歷完成整個IPv4幀頭后,根據(jù)IPv4協(xié)議幀的幀頭長度字段確定TCP/UDP數(shù)據(jù)幀頭的起始點,并且根據(jù)起始點為 TCP/UDP幀頭的掩碼所規(guī)定的偏移量,提取數(shù)據(jù)包TCP/UDP幀頭指定位置的內(nèi)容,與該掩碼本身相與之后得到所需關(guān)鍵字;第四提取單元,用于若網(wǎng)絡(luò)層數(shù)據(jù)幀是IPv6數(shù)據(jù)包,則根據(jù)屬于情況d且Type = 0 的掩碼的相對偏移量在相應(yīng)位置上提取關(guān)鍵字,并寫入掩碼的關(guān)鍵字字段;以及若當前處理的IPv6協(xié)議幀存在擴展幀頭,則根據(jù)下一個擴展幀頭的起始字節(jié)和所有屬于情況d且 Type = IPv6協(xié)議規(guī)定的擴展幀頭類型的掩碼的偏移量,在數(shù)據(jù)包的相應(yīng)位置提取關(guān)鍵字, 并寫入掩碼的關(guān)鍵字字段,重復上述步驟直到所有IPv6擴展幀頭都處理完。
全文摘要
本發(fā)明公開了一種支持動態(tài)擴展幀頭的過濾匹配預處理方法及裝置,方法包括步驟從數(shù)據(jù)包鏈路層幀頭開始掃描,根據(jù)起始點為鏈路層幀頭的掩碼規(guī)定的偏移量,提取數(shù)據(jù)包鏈路層幀頭指定位置的內(nèi)容,與該掩碼相與得到關(guān)鍵字;根據(jù)數(shù)據(jù)包中鏈路層負載類型字段,定位IP基本幀頭的起始位置;根據(jù)IP幀的版本號、幀頭長度以及擴展幀頭類型字段,定位IP擴展幀頭的位置;根據(jù)起始點為相應(yīng)IP基本幀頭或擴展幀頭掩碼規(guī)定的偏移量,提取基本幀頭或擴展幀頭指定位置的內(nèi)容,與該掩碼相與得到關(guān)鍵字;完成掃描,將提取的關(guān)鍵字送到過濾器進行規(guī)則匹配。本發(fā)明能識別數(shù)據(jù)包中所有鏈路及IP固定幀頭和擴展幀頭的位置,并正確過濾TCP/UDP幀頭內(nèi)容。
文檔編號H04L29/06GK102316121SQ20111031746
公開日2012年1月11日 申請日期2011年10月19日 優(yōu)先權(quán)日2011年10月19日
發(fā)明者徐寧, 李松 申請人:武漢烽火網(wǎng)絡(luò)有限責任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
白朗县| 尤溪县| 龙门县| 海淀区| 二连浩特市| 万荣县| 白城市| 大同县| 枞阳县| 会宁县| 双鸭山市| 沈丘县| 平乐县| 富宁县| 巴里| 陕西省| 准格尔旗| 台东县| 凯里市| 曲麻莱县| 北碚区| 荣成市| 宜兰县| 洪洞县| 滨州市| 长岭县| 新巴尔虎左旗| 抚宁县| 精河县| 观塘区| 临沧市| 安陆市| 漯河市| 阿鲁科尔沁旗| 深水埗区| 崇仁县| 星子县| 鄂州市| 扎兰屯市| 景宁| 桑植县|