專利名稱:使用pcap型過濾器和硬件輔助的patricia樹的無損實(shí)時(shí)線速率過濾的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及使用PCAP型過濾器和硬件輔助的PATRICIA樹的無損實(shí)時(shí)線速率過濾(line-rate filtering)。
背景技術(shù):
封包捕獲(PCAP)過濾器一般在封包數(shù)據(jù)網(wǎng)絡(luò)中使用以提取用戶感興趣的實(shí)時(shí)數(shù)據(jù)業(yè)務(wù)的部分來用于進(jìn)ー步檢查。該過濾器類型由于其在過濾器規(guī)格方面的靈活性而在許多情況下是優(yōu)選的。PCAP過濾器的典型的實(shí)現(xiàn)是將表達(dá)式變換成某種形式的伯克萊封包過濾器(BPF)。但是,當(dāng)監(jiān)控約IOGbps或更大的高帶寬網(wǎng)絡(luò)時(shí),幾乎不可能在不隨機(jī)丟棄匹配過濾器的封包的情況下應(yīng)用BPF。
發(fā)明內(nèi)容
現(xiàn)今存在專門的處理器,其允許應(yīng)用程序使用硬件輔助的Patricia樹來執(zhí)行線速率過濾。該處理器自身的結(jié)構(gòu)保證能以線速率搜索Patricia樹。但是,PCAP型過濾器不能沒有修改地插入到Patricia中。在此公開的方法和系統(tǒng)解釋了如何將PCAP型過濾器變換成能被插入到Patricia樹中的形式。這允許專門的硬件,例如來自EZchipTechnologies的處理器的NP-X線,以高達(dá)40Gbps的速率來執(zhí)行無損過濾。在一個(gè)實(shí)施例中,對(duì)用于類似PCAP過濾器的過濾器表達(dá)式進(jìn)行解析并變換成析取范式(DNF)。在DNF中過濾器的每ー個(gè)合取子句能被插入到Patricia樹中。但是,硬件輔助的Patricia樹具有某些必須考慮的限制。第一,能以線速率捜索這些樹的處理器通常 不進(jìn)行任意類型的重新裝配。因此用于過濾的字段通常位于OSI模型的層2至層4。當(dāng)能根據(jù)在下層中的信息獲得來自上層的信息時(shí),則存在例外,例如ー些L7協(xié)議使用已知的傳輸?shù)刂?。在該情況下,上述L7協(xié)議可用于過濾,因?yàn)槠淠軓膶?和4中的傳輸信息導(dǎo)出。第ニ,樹的條目(entry)必須預(yù)先定義,因此該過濾器不能應(yīng)用于封包中的任意隨機(jī)的字節(jié)。第三,樹的關(guān)鍵碼(key)具有有限的大小(在處理器的NPX線的情況下為38字節(jié))。第四,當(dāng)匹配多個(gè)條目的捜索被執(zhí)行時(shí),這些樹返回第一匹配,換句話說,它們不支持重疊的過濾器,克服第三和第四限制要求過濾器表達(dá)式的特殊的操縱并限制能被插入到樹中的過濾器的數(shù)量。
已由此概括地描述了本發(fā)明,現(xiàn)在將參考附圖,其中圖I是說明在通信網(wǎng)絡(luò)中用于捕獲和過濾封包的系統(tǒng)的高層(high-level)框圖。圖2是過濾器的以ニ叉樹形式的示范性表示。圖3說明了用于使用解析器判定表來生成過濾器樹的過程。
具體實(shí)施例方式現(xiàn)在將在下文中參考附圖更加充分地描述本發(fā)明。但是,本發(fā)明可通過許多不同的形式實(shí)施并且不應(yīng)當(dāng)解釋為限于在此闡明的實(shí)施例。恰恰相反,提供這些實(shí)施例以使該公開深入和完整,并且將向本領(lǐng)域技術(shù)人員充分地傳達(dá)本發(fā)明的范圍。本領(lǐng)域技術(shù)人員能使用本發(fā)明的各種實(shí)施例。圖I是說明在通信網(wǎng)絡(luò)中用 于捕獲和過濾封包的系統(tǒng)的高層框圖。網(wǎng)絡(luò)節(jié)點(diǎn)101和102經(jīng)由接ロ 103耦合。網(wǎng)絡(luò)業(yè)務(wù),例如數(shù)據(jù)封包,通過接ロ 103在節(jié)點(diǎn)101和102之間傳送。過濾器104被動(dòng)地從接ロ 103捕獲數(shù)據(jù)封包并且將封包傳送到監(jiān)控設(shè)備105。監(jiān)控設(shè)備105例如可與協(xié)議分析器、網(wǎng)絡(luò)監(jiān)控器、封包嗅探器、或網(wǎng)絡(luò)測(cè)試器相聯(lián)系。該捕獲到的數(shù)據(jù)封包可以向用戶顯示和/或用于網(wǎng)絡(luò)故障檢修、協(xié)議分析、或軟件開發(fā)。過濾器104可以是處理器,例如是來自EZchip Technologies的處理器的NP-X線。用戶可以定義用于識(shí)別承載在接ロ 103上的數(shù)據(jù)封包的過濾器表達(dá)式,其中該數(shù)據(jù)封包應(yīng)當(dāng)向監(jiān)控設(shè)備105提供。該過濾器表達(dá)式可以包含若干數(shù)據(jù)封包參數(shù),例如源/目的地地址和/或端ロ、虛擬局域網(wǎng)(VLAN)標(biāo)識(shí)符、和/或IP協(xié)議、版本或服務(wù)類型(TOS)。使用關(guān)系操作符和/或邏輯操作符可將這些參數(shù)與變量相比較。但是,過濾器104的實(shí)際的能力可能不匹配在該過濾器表達(dá)式中所要求的元素。例如,過濾器104可能被設(shè)計(jì)來使用特定的關(guān)系或邏輯操作符組。該過濾器表達(dá)式必須修改以移除任意的不能由過濾器104處理的關(guān)系或邏輯操作符。過濾器104從接ロ 103實(shí)時(shí)捕獲IP數(shù)據(jù)封包。為了實(shí)時(shí)處理上述數(shù)據(jù)封包,過濾器104必須以40Gbps或更高的線速度進(jìn)行操作。Patricia樹能被用于以如此高的速度處理該捕獲到的數(shù)據(jù)。但是,該過濾器硬件可能要求在該過濾器表達(dá)式的格式上的某些限制。該用戶提供的過濾器表達(dá)式必須適應(yīng)于匹配該過濾器硬件和該P(yáng)atricia格式。例如,在一些實(shí)施例中,過濾器硬件可能僅支持過濾項(xiàng)(terms)之間的AND (與)關(guān)系。必須變換該用戶提供的過濾器表達(dá)式以滿足此限制。在此描述的實(shí)施例指向ー個(gè)應(yīng)用,該應(yīng)用對(duì)該過濾器表達(dá)式進(jìn)行分解并將該過濾器表達(dá)式應(yīng)用于Patricia樹以使該過濾器能不丟棄封包地以線速度進(jìn)行操作。在一個(gè)實(shí)施例中,該過濾器表達(dá)式被變換成包括表示關(guān)系操作的葉子節(jié)點(diǎn)的ニ叉樹數(shù)據(jù)結(jié)構(gòu),其中該葉子節(jié)點(diǎn)將輸入提供給表示邏輯操作的其它節(jié)點(diǎn)。然后將該ニ叉樹變換成析取范式,在該析取范式中僅關(guān)系表達(dá)式為AND操作。在向析取范式的變換中,從原始的過濾器表達(dá)式中創(chuàng)建多個(gè)過濾器條目。該多個(gè)過濾器創(chuàng)建重疊,在該重疊中某些數(shù)據(jù)封包將匹配兩個(gè)或多個(gè)過濾器。不同的過濾器中的合取子句的交集必須被識(shí)別,然后加入到該ニ叉樹中作為單獨(dú)的合取子句。樣品過濾器規(guī)格在一個(gè)實(shí)施例中,過濾器支持在表I中列出的字段。該過濾器支持關(guān)系操作符>(大于)、< (小干)、>=(大于或等干)、<=(小于或等干)、==(等干)和!=(不等于);以及邏輯操作符=AND(與)、OR(或)和NOT(非)。每個(gè)接ロ卡支持的過濾器實(shí)例的最大數(shù)量是四,并且每個(gè)過濾器實(shí)例的項(xiàng)的最小數(shù)量是32。
權(quán)利要求
1.一種用于從過濾器表達(dá)式中生成二叉樹的方法,包括 在存儲(chǔ)器中定義操作符棧,所述操作符棧適應(yīng)于儲(chǔ)存二進(jìn)制邏輯操作符; 在存儲(chǔ)器中定義值棧,所述值棧適應(yīng)于含有指向過濾器表達(dá)式樹的節(jié)點(diǎn)的指針; 在逐個(gè)元素的基礎(chǔ)上解析過濾器表達(dá)式,所述過濾器表達(dá)式的元素包括操作符和值;如果過濾器表達(dá)式中的下一個(gè)元素是值,則將所述值加入到值棧中;以及如果過濾器表達(dá)式中的下一個(gè)元素是操作符,則將下一個(gè)元素與操作符棧中的頂元素進(jìn)行比較,并基于下一個(gè)元素和頂元素來執(zhí)行在判定表中定義的行為。
2.根據(jù)權(quán)利要求I的方法,其中,在判定表中定義的行為是移位功能,在所述移位功能中將下一個(gè)元素加入到操作符棧中。
3.根據(jù)權(quán)利要求I的方法,其中,下一個(gè)元素是操作符并且在判定表中定義的行為是減少功能,并且其中將所述操作符應(yīng)用于值棧中的頂部的兩個(gè)值。
4.根據(jù)權(quán)利要求3的方法,還包括 將新值加入到值棧中,所述新值與應(yīng)用于頂部的兩個(gè)值的操作符對(duì)應(yīng)。
5.根據(jù)權(quán)利要求I的方法,其中,在判定表中定義的行為是接受功能,并且還包括從值棧中移除二叉樹。
6.根據(jù)權(quán)利要求5的方法,還包括 將二叉樹變換成析取范式。
7.根據(jù)權(quán)利要求I的方法,其中,操作符包括AND、OR和NOT操作符。
8.根據(jù)權(quán)利要求I的方法,其中,值表示關(guān)系表達(dá)式。
9.根據(jù)權(quán)利要求I的方法,其中,值表示合并的邏輯和關(guān)系表達(dá)式的結(jié)果。
10.一種用于從過濾器表達(dá)式的二叉樹表示中生成過濾器表達(dá)式的析取范式(DNF)的方法,包括 從二叉樹節(jié)點(diǎn)中移除所有的NOT操作; 在存儲(chǔ)器中定義與左子樹棧(L棧)、右子樹棧(R棧)、左子樹棧的結(jié)果(RL棧)和右子樹棧(RR棧)對(duì)應(yīng)的棧; 執(zhí)行二叉樹的節(jié)點(diǎn)的后序遍歷,在所述后序遍歷中訪問二叉樹的每個(gè)節(jié)點(diǎn); 如果被訪問的節(jié)點(diǎn)是葉子節(jié)點(diǎn),則若所述葉子節(jié)點(diǎn)是左孩子則將分配給所述葉子節(jié)點(diǎn)的操作插入到L棧中、或若所述葉子節(jié)點(diǎn)是右孩子則將分配給所述葉子節(jié)點(diǎn)的操作插入到R棧中;以及 如果被訪問的節(jié)點(diǎn)是非葉子節(jié)點(diǎn),則基于操作是否含有OR操作或AND操作來處理所述非葉子節(jié)點(diǎn)。
11.根據(jù)權(quán)利要求10的方法,還包括 如果所述非葉子節(jié)點(diǎn)含有OR操作并且所述非葉子節(jié)點(diǎn)的孩子節(jié)點(diǎn)是葉子節(jié)點(diǎn),則 若所述非葉子節(jié)點(diǎn)是左孩子則將所有的節(jié)點(diǎn)從R棧和L棧中移動(dòng)到RL棧中,或 若所述非葉子節(jié)點(diǎn)是右孩子則將所有的節(jié)點(diǎn)從R棧和L棧中移動(dòng)到RR棧中。
12.根據(jù)權(quán)利要求10的方法,還包括 如果所述非葉子節(jié)點(diǎn)含有OR操作并且所述非葉子節(jié)點(diǎn)的孩子節(jié)點(diǎn)不是葉子節(jié)點(diǎn),則 若所述非葉子節(jié)點(diǎn)是左孩子則將所有的節(jié)點(diǎn)從RR棧和RL棧中移動(dòng)到RL棧中,或 若所述非葉子節(jié)點(diǎn)是右孩子則將所有的節(jié)點(diǎn)從RR棧和RL棧中移動(dòng)到RR棧中。
13.根據(jù)權(quán)利要求10的方法,還包括 如果所述非葉子節(jié)點(diǎn)含有AND操作并且所述非葉子節(jié)點(diǎn)的孩子節(jié)點(diǎn)是葉子節(jié)點(diǎn),則 將R棧中的每個(gè)節(jié)點(diǎn)和L棧中的每個(gè)節(jié)點(diǎn)合并來創(chuàng)建單個(gè)合取子句。
14.根據(jù)權(quán)利要求13的方法,還包括 如果所述非葉子節(jié)點(diǎn)是左孩子,則將單個(gè)合取子句插入到RL棧中,或 如果所述非葉子節(jié)點(diǎn)是右孩子,則將單個(gè)合取子句插入到RR棧中。
15.根據(jù)權(quán)利要求10的方法,還包括 處理所述二叉樹的根節(jié)點(diǎn),其中在處理期間把所述根節(jié)點(diǎn)當(dāng)作左孩子;以及 從RL棧中移除過濾器表達(dá)式的析取范式。
16.根據(jù)權(quán)利要求10的方法,還包括 從所述過濾器表達(dá)式的析取范式中識(shí)別重疊的關(guān)鍵碼。
17.一種計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì),包括用于將過濾器表達(dá)式變換成析取范式的指令,其中當(dāng)所述指令被實(shí)施時(shí),引起處理器執(zhí)行行為,其中,所述行為包括 在存儲(chǔ)器中定義操作符棧,所述操作符棧適應(yīng)于儲(chǔ)存二進(jìn)制邏輯操作符; 在存儲(chǔ)器中定義值棧,所述值棧適應(yīng)于含有指向過濾器表達(dá)式樹的節(jié)點(diǎn)的指針; 在逐個(gè)元素的基礎(chǔ)上解析過濾器表達(dá)式,所述過濾器表達(dá)式的元素包括操作符和值,其中對(duì)于過濾器表達(dá)式中的每個(gè)下一個(gè)元素 如果過濾器表達(dá)式中的下一個(gè)元素是值,則將所述值加入到值棧中;以及如果過濾器表達(dá)式中的下一個(gè)元素是操作符,則將下一個(gè)元素與操作符棧中的頂元素進(jìn)行比較,并基于下一個(gè)元素和頂元素來執(zhí)行在判定表中定義的行為, 從值棧中移除完整的二叉樹; 在存儲(chǔ)器中定義與左子樹棧(L棧)、右子樹棧(R棧)、左子樹棧的結(jié)果(RL棧)和右子樹棧的結(jié)果(RR棧)對(duì)應(yīng)的棧; 執(zhí)行完整的二叉樹的節(jié)點(diǎn)的后序遍歷,在所述后序遍歷中訪問完整的二叉樹的每個(gè)節(jié)點(diǎn),其中在后序遍歷期間 如果被訪問的節(jié)點(diǎn)是葉子節(jié)點(diǎn),則若所述葉子節(jié)點(diǎn)是左孩子則將分配給所述葉子節(jié)點(diǎn)的操作插入到L棧中、或若所述葉子節(jié)點(diǎn)是右孩子則將分配給所述葉子節(jié)點(diǎn)的操作插入到R棧中;以及 如果被訪問的節(jié)點(diǎn)是非葉子節(jié)點(diǎn),則基于操作是否含有OR操作或AND操作來處理所述非葉子節(jié)點(diǎn),其中所述處理將數(shù)據(jù)移動(dòng)到RL棧或RR棧中; 處理二叉樹的根節(jié)點(diǎn); 從RL?;騌R棧中移除與所述根節(jié)點(diǎn)對(duì)應(yīng)的過濾器表達(dá)式的析取范式;以及 從所述過濾器表達(dá)式的析取范式中識(shí)別重疊的關(guān)鍵碼。
18.根據(jù)權(quán)利要求17的計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì),還包括 如果所述非葉子節(jié)點(diǎn)含有OR操作并且所述非葉子節(jié)點(diǎn)的孩子節(jié)點(diǎn)是葉子節(jié)點(diǎn),則 若所述非葉子節(jié)點(diǎn)是左孩子則將所有的節(jié)點(diǎn)從R棧和L棧中移動(dòng)到RL棧中,或 若所述非葉子節(jié)點(diǎn)是右孩子則將所有的節(jié)點(diǎn)從R棧和L棧中移動(dòng)到RR棧中, 如果所述非葉子節(jié)點(diǎn)含有OR操作并且所述非葉子節(jié)點(diǎn)的孩子節(jié)點(diǎn)不是葉子節(jié)點(diǎn),則 若所述非葉子節(jié)點(diǎn)是左孩子則將所有的節(jié)點(diǎn)從RR棧和RL棧中移動(dòng)到RL棧中,或若所述非葉子節(jié)點(diǎn)是右孩子則將所有的節(jié)點(diǎn)從RR棧和RL棧中移動(dòng)到RR棧中;以及如果所述非葉子節(jié)點(diǎn)含有AND操作并且所述非葉子節(jié)點(diǎn)的孩子節(jié)點(diǎn)是葉子節(jié)點(diǎn),則將R棧中的每個(gè)節(jié)點(diǎn)和L棧中的每個(gè)節(jié)點(diǎn)合并來創(chuàng)建單個(gè)合取子句;如果所述非葉子節(jié)點(diǎn)是左孩子,則將單個(gè)合取子句插入到RL棧中,或如果所述非葉子節(jié)點(diǎn)是右孩子,則將單個(gè)合取子句插入到RR棧中。
19.根據(jù)權(quán)利要求17的計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì),還包括從完整的二叉樹的節(jié)點(diǎn)中移除所有的NOT操作。
全文摘要
本發(fā)明涉及使用PCAP型過濾器和硬件輔助的PATRICIA樹的無損實(shí)時(shí)線速率過濾。一種使用硬件輔助的Patricia樹來執(zhí)行線速率過濾的處理器。將PCAP型過濾器變換成能被插入到Patricia樹中的形式。對(duì)PCAP型過濾器表達(dá)式進(jìn)行解析并變換成析取范式(DNF)。將過濾器的每個(gè)DNF子句插入到Patricia樹中。對(duì)于重疊,檢查DNF子句并在可能時(shí)合并重疊的子句。
文檔編號(hào)H04L12/56GK102710491SQ201210032268
公開日2012年10月3日 申請(qǐng)日期2012年2月10日 優(yōu)先權(quán)日2011年2月10日
發(fā)明者A·埃爾南德斯 申請(qǐng)人:特克特朗尼克公司