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

一種基于硬件cam芯片的高效能網(wǎng)絡(luò)數(shù)據(jù)包過濾方法

文檔序號(hào):7857457閱讀:264來源:國知局
專利名稱:一種基于硬件cam芯片的高效能網(wǎng)絡(luò)數(shù)據(jù)包過濾方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)信息處理領(lǐng)域,具體地說,屬于網(wǎng)絡(luò)原始數(shù)據(jù)過濾還原領(lǐng)域,通過硬件芯片加速對(duì)符合五類源協(xié)議傳輸?shù)腡CP/IP數(shù)據(jù)包進(jìn)行關(guān)鍵字高速過濾和匹配方法。
背景技術(shù)
網(wǎng)絡(luò)上的數(shù)據(jù)傳輸都是以TCP/IP數(shù)據(jù)包為單位進(jìn)行的,每個(gè)數(shù)據(jù)包內(nèi)包含有諸多信息。常規(guī)協(xié)議還原的做法是由硬件完成包的接收后,由軟件逐項(xiàng)比較接收到數(shù)據(jù)包內(nèi)的協(xié)議信息后,進(jìn)行分類,并根據(jù)包序號(hào)對(duì)收到的數(shù)據(jù)包進(jìn)行數(shù)據(jù)段抽取排序,對(duì)已完成排序還原后的數(shù)據(jù)段一般稱為文件。對(duì)文件內(nèi)容與關(guān)鍵字逐字比對(duì)的工作稱為內(nèi)容匹配。內(nèi)容匹配的關(guān)鍵是比對(duì)對(duì)象是文件而不是包且比對(duì)過程需要逐字節(jié)移位后與關(guān)鍵字進(jìn)行比對(duì)。只有保證這兩點(diǎn)才能做到對(duì)針對(duì)內(nèi)容的精確匹配。 協(xié)議還原過程中,數(shù)據(jù)包排序和內(nèi)容匹配致頻繁的內(nèi)存搬移,使整個(gè)系統(tǒng)的處理效率降低,在單機(jī)多協(xié)議還原情況下尤為明顯。而不對(duì)數(shù)據(jù)包進(jìn)行按協(xié)議分類、重新排序?qū)崿F(xiàn)關(guān)鍵字過濾就成為難題。

發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的目的是提供一種基于硬件CAM芯片的高效能網(wǎng)絡(luò)數(shù)據(jù)包過濾方法;本發(fā)明通過關(guān)鍵字偏移實(shí)現(xiàn)傳輸時(shí)的識(shí)別技術(shù),以數(shù)據(jù)包為對(duì)象不進(jìn)行數(shù)據(jù)段抽取和排序,直接移動(dòng)數(shù)據(jù)段的數(shù)據(jù)內(nèi)容與關(guān)鍵字進(jìn)行移位匹配;當(dāng)發(fā)現(xiàn)比較器當(dāng)前窗口內(nèi)部分?jǐn)?shù)據(jù)和關(guān)鍵字前半段匹配,或者和關(guān)鍵字后半段匹配,即認(rèn)為部分匹配,亦叫半中標(biāo);如果數(shù)據(jù)包在移位比對(duì)中出現(xiàn)和關(guān)鍵字完全匹配的字段,即認(rèn)為完全匹配,即中標(biāo),將相關(guān)的網(wǎng)絡(luò)數(shù)據(jù)包全部過濾出來,存儲(chǔ)到某地;其中窗口內(nèi)前段部分?jǐn)?shù)據(jù)與關(guān)鍵字后半段部分?jǐn)?shù)據(jù)匹配,稱為窗口前中標(biāo),窗口內(nèi)后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字前半段部分?jǐn)?shù)據(jù)匹配,稱為窗口后中標(biāo)。為實(shí)現(xiàn)上述目的,本發(fā)明的解決方案是一種基于硬件CAM芯片的高效能網(wǎng)絡(luò)數(shù)據(jù)包過濾方法,其步驟為I)根據(jù)CAM芯片比較器的窗口寬度設(shè)定輸入關(guān)鍵字的最大長度;其中,比較器的窗口寬度為η字節(jié),關(guān)鍵字的最大長度小于或等于η字節(jié);2)所述比較器從網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段中順序移位讀取η個(gè)字節(jié)作為比較器的窗口數(shù)據(jù)與輸入的關(guān)鍵字進(jìn)行匹配;21)如果窗口數(shù)據(jù)包含匹配的關(guān)鍵字,則視為中標(biāo),將當(dāng)前數(shù)據(jù)包作為匹配網(wǎng)絡(luò)數(shù)據(jù)包過濾出來;22)如果窗口后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字前半段部分匹配,即發(fā)生窗口后中標(biāo),則t匕較器移位讀取當(dāng)前數(shù)據(jù)包數(shù)據(jù)段中后續(xù)η個(gè)字節(jié)作為比較器的窗口數(shù)據(jù)與該關(guān)鍵字進(jìn)行匹配,如果當(dāng)前窗口數(shù)據(jù)前半段部分?jǐn)?shù)據(jù)與該關(guān)鍵字剩余未匹配數(shù)據(jù)匹配,即發(fā)生窗口前中標(biāo),則視為中標(biāo),將當(dāng)前數(shù)據(jù)包作為匹配網(wǎng)絡(luò)數(shù)據(jù)包過濾出來;否則視為當(dāng)前數(shù)據(jù)包未中標(biāo),比較器繼續(xù)移位讀取當(dāng)前數(shù)據(jù)段中后續(xù)η個(gè)字節(jié)與關(guān)鍵字進(jìn)行匹配。進(jìn)一步的,如果前一個(gè)數(shù)據(jù)包數(shù)據(jù)段的最后一個(gè)窗口數(shù)據(jù)與關(guān)鍵字發(fā)生窗口后中標(biāo),則在后續(xù)相鄰數(shù)據(jù)包的第一個(gè)比較窗口數(shù)據(jù)與關(guān)鍵字比較時(shí),判斷是否發(fā)生窗口前中標(biāo),如果是則視為中標(biāo),將相關(guān)的兩個(gè)數(shù)據(jù)包作為匹配網(wǎng)絡(luò)數(shù)據(jù)包過濾出來。進(jìn)一步的,如果比較器移位讀取到當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段段尾,移位讀取的數(shù)據(jù)長度不足η字節(jié)時(shí),比較器根據(jù)上一窗口的比較結(jié)果進(jìn)行判斷;如果上一窗口比較時(shí)發(fā)生了窗口后中標(biāo),則比較器將上一窗口未匹配的剩余數(shù)據(jù)先左對(duì)齊與關(guān)鍵字進(jìn)行一次匹配,如果存在窗口前中標(biāo),則視為中標(biāo);否則,再取當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段最后η個(gè)字節(jié)與關(guān)鍵字進(jìn)行比較,如果發(fā)生窗口前中標(biāo),則為中標(biāo)。進(jìn)一步的,當(dāng)發(fā)生窗口前中標(biāo)或窗口后中標(biāo)時(shí),比較器反饋預(yù)警提示信息給過濾模塊;所述反饋信息包括網(wǎng)絡(luò)數(shù)據(jù)包的編號(hào)、中標(biāo)位置、中標(biāo)碼及對(duì)應(yīng)的處理方式。進(jìn)一步的,當(dāng)窗口后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字后半段部分匹配,或窗口前半段部分 數(shù)據(jù)與關(guān)鍵字前半段部分匹配時(shí),比較器反饋預(yù)警提示信息給過濾模塊;所述反饋信息包括網(wǎng)絡(luò)數(shù)據(jù)包的編號(hào)、中標(biāo)位置、中標(biāo)碼及對(duì)應(yīng)的處理方式。進(jìn)一步的,所述預(yù)警提示信息包括預(yù)警優(yōu)先級(jí)信息。進(jìn)一步的,比較器根據(jù)窗口數(shù)據(jù)與關(guān)鍵字的匹配長度設(shè)定預(yù)警優(yōu)先級(jí),匹配長度越長優(yōu)先級(jí)越高。本發(fā)明的方法流程圖如圖I所示,關(guān)鍵字如果正處于相鄰兩個(gè)網(wǎng)絡(luò)數(shù)據(jù)包之間時(shí),即前一個(gè)數(shù)據(jù)包數(shù)據(jù)段的最后一個(gè)比較窗口內(nèi)的后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字前半段部分內(nèi)容匹配,發(fā)生窗口后中標(biāo),則在下一個(gè)窗口比較時(shí),即后續(xù)相鄰數(shù)據(jù)包的第一個(gè)比較窗口內(nèi)的數(shù)據(jù)與關(guān)鍵字比較時(shí),就會(huì)關(guān)注相應(yīng)的窗口前半段部分?jǐn)?shù)據(jù)內(nèi)容與關(guān)鍵字剩余后半段未匹配內(nèi)容是否匹配,即是否發(fā)生窗口前中標(biāo),如果匹配則視為“中標(biāo)”,將相關(guān)的網(wǎng)絡(luò)數(shù)據(jù)包全部過濾出來,存儲(chǔ)到某地,否則忽略。CAM芯片每次可以比較位寬的大小,即是比較器所能看到的連貫數(shù)據(jù)段的范圍。此范圍根據(jù)CAM芯片型號(hào)的不同而不同,本文以常見的CAM芯片每次可以比較144bit寬的數(shù)據(jù),也就是18字節(jié)為例。如果數(shù)據(jù)段長度不是18字節(jié)對(duì)齊,數(shù)據(jù)段尾不足18字節(jié)時(shí)需根據(jù)上一窗口的比較結(jié)果進(jìn)行判斷,如果上一窗口比較時(shí)發(fā)生了窗口內(nèi)前半段部分?jǐn)?shù)據(jù)與關(guān)鍵字部分匹配的情況,則將上一窗口內(nèi)除匹配外的剩余全部數(shù)據(jù)段先左對(duì)齊與關(guān)鍵字部分進(jìn)行一次比較,觀察是否存在相應(yīng)的窗口后中標(biāo)的情況,如果存在則視為中標(biāo);如果不存在,則取TCP/IP包的數(shù)據(jù)段最后18字節(jié)與關(guān)鍵字部分再進(jìn)行一次比較觀察是否存在窗口后半段中標(biāo)的情況,如果存在則視為中標(biāo),否則視為未中標(biāo)。注窗口是指比較器每次進(jìn)行比較的字段寬度。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果采用此技術(shù)不會(huì)遺漏任何需要匹配的數(shù)據(jù),即使部分匹配也會(huì)出現(xiàn)中標(biāo)提示,信息比較器將包的編號(hào)、中標(biāo)位置、中標(biāo)碼及對(duì)應(yīng)的處理方式等信息,發(fā)送給實(shí)現(xiàn)過濾功能的模塊,根據(jù)應(yīng)用的不同發(fā)送的內(nèi)容而有所不同。此技術(shù)性能較高,節(jié)約成本。例如一片每秒可以完成250M次比對(duì)的CAM芯片,采用18字節(jié)窗口匹配法進(jìn)行比較,可以達(dá)到250M*18,即4. 5GB/S的純數(shù)據(jù)流。使用每秒比較速度為62. 5M次,144位寬查找表深度為16K的低端CAM芯片就可以處理16. 071Gb/S的接入速度。ARM9系列產(chǎn)品的性能雖好,但價(jià)格較高,達(dá)到同等性能的產(chǎn)品市場(chǎng)價(jià)要幾千元;而renesas electronics的同類產(chǎn)品價(jià)格相對(duì)低廉,但性能遠(yuǎn)不及本發(fā)明中的上述指標(biāo);而本發(fā)明中使用的CAM芯片市場(chǎng)價(jià)僅500元左右,經(jīng)過實(shí)驗(yàn)性測(cè)試,匹配準(zhǔn)確性及中標(biāo)率在99. 9%以上,真正做到了低成本,高性能。


圖I為本發(fā)明方法流程圖;圖2、關(guān)鍵字長度為9個(gè)字節(jié)時(shí)的比較條件示意圖。
具體實(shí)施例方式CAM芯片每次可以比較144bit寬的數(shù)據(jù),也就是18個(gè)字節(jié),那我們所說的比對(duì)器窗口就是指比較器所能看到的連貫數(shù)據(jù)段上的范圍。我們的比對(duì)器窗口寬度是18個(gè)字節(jié),允許的查找條件的長度范圍為[I 18]字 節(jié),所以最長的字符串支持9個(gè)漢字或18個(gè)英文字母,至于多條件查詢時(shí)的情況每個(gè)條件可以作為一個(gè)查找條件出現(xiàn),然后可根據(jù)實(shí)際使用系統(tǒng)規(guī)則再進(jìn)行相應(yīng)的分析處理即可。查找條件設(shè)計(jì)為了高效的對(duì)數(shù)據(jù)段進(jìn)行匹配查找,我們利用CAM芯片查找表資源過剩的特點(diǎn),將要查找的關(guān)鍵字限定為設(shè)定長度,設(shè)定長度就是比對(duì)器窗口寬度,限定關(guān)鍵字的長度不能超過設(shè)定長度。舉例說明如圖2所示,關(guān)鍵字為A I的9個(gè)英文字母序列(選用英文字母序列進(jìn)行說明,主要是每個(gè)英文字母的碼長正好是I個(gè)字節(jié),這樣看起來比較直觀,如果是漢字,雖然漢字的編碼是2字節(jié),但是對(duì)于處理過程仍然是以字節(jié)為單位),窗口寬度為18,為了每次比較的數(shù)據(jù)長度可以按窗口寬度進(jìn)行,我們這樣設(shè)計(jì)針對(duì)它的比較條件。當(dāng)關(guān)鍵字正處于窗口與窗口之間時(shí),比如關(guān)鍵字一部分位于上一窗口數(shù)據(jù)的后段數(shù)據(jù),而關(guān)鍵字剩余另一部分?jǐn)?shù)據(jù)在當(dāng)前窗口數(shù)據(jù)的前段數(shù)據(jù)中,如果在TCP/IP包的數(shù)據(jù)前段發(fā)生了窗口前中標(biāo)的情況,則進(jìn)行信息記錄,在下一個(gè)窗口比較時(shí),就會(huì)關(guān)注相應(yīng)的窗口后中標(biāo)情況是否存在,如果存在則視為“中標(biāo)”,否則忽略。當(dāng)在數(shù)據(jù)包中發(fā)現(xiàn)完全匹配的關(guān)鍵字時(shí),即為中標(biāo)。如果數(shù)據(jù)段長度不是18字節(jié)時(shí),數(shù)據(jù)段尾不足18字節(jié)時(shí)需根據(jù)上一窗口的比較結(jié)果進(jìn)行判斷,如果上一窗口比較時(shí)發(fā)生了窗口后中標(biāo)的情況,則剩余全部數(shù)據(jù)段先左對(duì)齊進(jìn)行一次匹配比較,觀察是否存在相應(yīng)的窗口前中標(biāo)的情況,如果存在,則為中標(biāo);如果不存在,然后再取TCP/IP包的數(shù)據(jù)段最后18字節(jié)進(jìn)行一次比較觀察是否存在窗口前中標(biāo)的情況,如果存在,則為中標(biāo);否則,忽略。為了不會(huì)遺漏任何需要匹配的數(shù)據(jù),即使部分匹配也會(huì)出現(xiàn)中標(biāo)提示,信息比較器將包的編號(hào)、中標(biāo)位置、中標(biāo)碼及對(duì)應(yīng)的處理方式等信息,發(fā)送給實(shí)現(xiàn)過濾功能的模塊。并且比較器根據(jù)窗口數(shù)據(jù)與關(guān)鍵字的匹配長度設(shè)定預(yù)警優(yōu)先級(jí),匹配長度越長優(yōu)先級(jí)越高,從而及時(shí)發(fā)現(xiàn)最可能的匹配數(shù)據(jù)包。
權(quán)利要求
1.一種基于硬件CAM芯片的高效能網(wǎng)絡(luò)數(shù)據(jù)包過濾方法,其步驟為 1)根據(jù)CAM芯片比較器的窗口寬度設(shè)定輸入關(guān)鍵字的最大長度;其中,比較器的窗口寬度為η字節(jié),關(guān)鍵字的最大長度小于或等于η字節(jié); 2)所述比較器從網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段中順序移位讀取η個(gè)字節(jié)作為比較器的窗口數(shù)據(jù)與輸入的關(guān)鍵字進(jìn)行匹配; 21)如果窗口數(shù)據(jù)包含匹配的關(guān)鍵字,則視為中標(biāo),將當(dāng)前數(shù)據(jù)包作為匹配網(wǎng)絡(luò)數(shù)據(jù)包過濾出來; 22)如果窗口后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字前半段部分匹配,即發(fā)生窗口后中標(biāo),則比較器移位讀取當(dāng)前數(shù)據(jù)包數(shù)據(jù)段中后續(xù)η個(gè)字節(jié)作為比較器的窗口數(shù)據(jù)與該關(guān)鍵字進(jìn)行匹配,如果當(dāng)前窗口數(shù)據(jù)前半段部分?jǐn)?shù)據(jù)與該關(guān)鍵字剩余未匹配數(shù)據(jù)匹配,即發(fā)生窗口前中標(biāo),則視為中標(biāo),將當(dāng)前數(shù)據(jù)包作為匹配網(wǎng)絡(luò)數(shù)據(jù)包過濾出來;否則視為當(dāng)前數(shù)據(jù)包未中標(biāo),比較器繼續(xù)移位讀取當(dāng)前數(shù)據(jù)段中后續(xù)η個(gè)字節(jié)與關(guān)鍵字進(jìn)行匹配。
2.如權(quán)利要求I所述的方法,其特征在于如果前一個(gè)數(shù)據(jù)包數(shù)據(jù)段的最后一個(gè)窗口數(shù)據(jù)與關(guān)鍵字發(fā)生窗口后中標(biāo),則在后續(xù)相鄰數(shù)據(jù)包的第一個(gè)比較窗口數(shù)據(jù)與關(guān)鍵字比較時(shí),判斷是否發(fā)生窗口前中標(biāo),如果是則視為中標(biāo),將相關(guān)的兩個(gè)數(shù)據(jù)包作為匹配網(wǎng)絡(luò)數(shù)據(jù)包過濾出來。
3.如權(quán)利要求I或2所述的方法,其特征在于如果比較器移位讀取到當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段段尾,移位讀取的數(shù)據(jù)長度不足η字節(jié)時(shí),比較器根據(jù)上一窗口的比較結(jié)果進(jìn)行判斷;如果上一窗口比較時(shí)發(fā)生了窗口后中標(biāo),則比較器將上一窗口未匹配的剩余數(shù)據(jù)先左對(duì)齊與關(guān)鍵字進(jìn)行一次匹配,如果存在窗口前中標(biāo),則視為中標(biāo);否則,再取當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段最后η個(gè)字節(jié)與關(guān)鍵字進(jìn)行比較,如果發(fā)生窗口前中標(biāo),則視為中標(biāo)。
4.如權(quán)利要求I所述的方法,其特征在于當(dāng)發(fā)生窗口前中標(biāo)或窗口后中標(biāo)時(shí),比較器反饋預(yù)警提示信息給過濾模塊;所述反饋信息包括網(wǎng)絡(luò)數(shù)據(jù)包的編號(hào)、中標(biāo)位置、中標(biāo)碼及對(duì)應(yīng)的處理方式。
5.如權(quán)利要求I所述的方法,其特征在于當(dāng)窗口后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字后半段部分匹配,或窗口前半段部分?jǐn)?shù)據(jù)與關(guān)鍵字前半段部分匹配時(shí),比較器反饋預(yù)警提示信息給過濾模塊;所述反饋信息包括網(wǎng)絡(luò)數(shù)據(jù)包的編號(hào)、中標(biāo)位置、中標(biāo)碼及對(duì)應(yīng)的處理方式。
6.如權(quán)利要求4或5所述的方法,其特征在于所述預(yù)警提示信息包括預(yù)警優(yōu)先級(jí)信息。
7.如權(quán)利要求6所述的方法,其特征在于比較器根據(jù)窗口數(shù)據(jù)與關(guān)鍵字的匹配長度設(shè)定預(yù)警優(yōu)先級(jí),匹配長度越長優(yōu)先級(jí)越高。
全文摘要
本發(fā)明公開了一種基于硬件CAM芯片的高效能網(wǎng)絡(luò)數(shù)據(jù)包過濾方法,屬于網(wǎng)絡(luò)信息處理領(lǐng)域。本方法為1)根據(jù)CAM芯片比較器的窗口寬度n設(shè)定輸入關(guān)鍵字的最大長度;2)比較器從網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)段中順序移位讀取n個(gè)字節(jié)與關(guān)鍵字進(jìn)行匹配;如果窗口數(shù)據(jù)包含匹配的關(guān)鍵字,則視為中標(biāo);如果窗口后半段部分?jǐn)?shù)據(jù)與關(guān)鍵字前半段部分匹配,則比較器移位讀取當(dāng)前數(shù)據(jù)包數(shù)據(jù)段中后續(xù)n個(gè)字節(jié)與該關(guān)鍵字進(jìn)行匹配,如果當(dāng)前窗口數(shù)據(jù)前半段部分?jǐn)?shù)據(jù)與該關(guān)鍵字剩余未匹配數(shù)據(jù)匹配,即發(fā)生窗口前中標(biāo),則視為中標(biāo);否則視為當(dāng)前數(shù)據(jù)包未中標(biāo),比較器繼續(xù)讀取當(dāng)前數(shù)據(jù)段中后續(xù)n個(gè)字節(jié)與關(guān)鍵字進(jìn)行匹配。本發(fā)明匹配準(zhǔn)確性及中標(biāo)率在99.9%以上,性能高。
文檔編號(hào)H04L12/56GK102801617SQ201210277909
公開日2012年11月28日 申請(qǐng)日期2012年8月6日 優(yōu)先權(quán)日2012年8月6日
發(fā)明者火一莽, 史延濤, 董雪 申請(qǐng)人:北京銳安科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
镇坪县| 留坝县| 滁州市| 赣州市| 灵丘县| 陆丰市| 平凉市| 翁源县| 加查县| 垦利县| 高平市| 武威市| 辛集市| 册亨县| 广宁县| 原阳县| 广安市| 武陟县| 赤峰市| 荆门市| 乌拉特中旗| 张家界市| 忻城县| 南澳县| 鸡西市| 南召县| 濉溪县| 宁城县| 武山县| 迁西县| 都匀市| 定西市| 深州市| 博爱县| 安新县| 长葛市| 开鲁县| 三穗县| 突泉县| 淮阳县| 金堂县|