專利名稱:過(guò)濾分組的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及分組過(guò)濾。更具體地說(shuō),它涉及用于實(shí)施安全策 略的處理過(guò)濾器規(guī)則。
背景技木
因特網(wǎng)和計(jì)算機(jī)聯(lián)網(wǎng)在當(dāng)今社會(huì)中變得愈來(lái)愈重要。然而,對(duì)于 使用較不謹(jǐn)慎的個(gè)人,在網(wǎng)絡(luò)上訪問(wèn)因特網(wǎng)的用戶能夠無(wú)意地產(chǎn)生易 被攻擊性。結(jié)果,隨著因特網(wǎng)使用率增加,網(wǎng)絡(luò)安全變得愈來(lái)愈重要。 網(wǎng)絡(luò)安全涉及網(wǎng)絡(luò)的保護(hù)和其來(lái)自非法修改、損壞、或公開(kāi)的服務(wù)。 對(duì)于網(wǎng)絡(luò)的襲擊包括服務(wù)拒絕攻擊、非法訪問(wèn)攻擊、數(shù)據(jù)損壞攻擊、 及多種其它攻擊。破壞網(wǎng)絡(luò)的這些攻擊的任一種可立刻使家庭或業(yè)務(wù) 網(wǎng)絡(luò)癱瘓。因此,需要可靠的網(wǎng)絡(luò)安全方案。 一種這種類型的網(wǎng)絡(luò)安 全方案涉及因特網(wǎng)協(xié)議(IP)分組過(guò)濾。
IP是當(dāng)跨過(guò)實(shí)施分組交換的網(wǎng)絡(luò)中轉(zhuǎn)或通信數(shù)據(jù)時(shí)使用的面向 數(shù)據(jù)過(guò)程或協(xié)議。借助于分組交換,數(shù)據(jù)以離散信息單元(也被稱為 分組packet)被通信,其用來(lái)使在給定網(wǎng)絡(luò)中可得到的帶寬最大。作 為網(wǎng)絡(luò)層協(xié)議的IP經(jīng)常與較高級(jí)傳輸協(xié)議,例如傳輸控制協(xié)議 (TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP )、因特網(wǎng)控制消息協(xié)議(ICMP)、 數(shù)據(jù)報(bào)擁塞控制協(xié)議(DCCP)或流控制傳輸協(xié)議(SCTP), 一起使 用。在私有網(wǎng)絡(luò)上以及在因特網(wǎng)上通信的大量數(shù)據(jù)依賴于TCP/IP協(xié) 議的組合。
在網(wǎng)絡(luò)安全方案中,IP分組過(guò)濾用來(lái)檢驗(yàn)打算從在通信網(wǎng)絡(luò)中的 網(wǎng)關(guān)系統(tǒng)(例如因特網(wǎng)防火墻、因特網(wǎng)服務(wù)提供商ISP、路由器、開(kāi) 關(guān)、可聯(lián)接到網(wǎng)絡(luò)上的潛在任何其它元件)發(fā)送或到達(dá)其的每個(gè)IP 分組。基于IP分組的檢驗(yàn)結(jié)果,網(wǎng)關(guān)做出關(guān)于分組應(yīng)該丟棄還是允許 繼續(xù),常常稱作"拒絕"和"允許",的決定。此外,在多種IP分組過(guò)濾 方案中,用來(lái)確定是拒絕還是允許分組的決定邏輯被編碼在一組過(guò)濾 器規(guī)則集中。
在IP分組過(guò)濾中使用的過(guò)濾器規(guī)則通常使用按預(yù)定順序依次處 理的定序規(guī)則列表而實(shí)施。繼續(xù)對(duì)于IP分組的處理,直到分組被明白 地允許、明白地拒絕,或沒(méi)有更多規(guī)則,在這種情況下分組通常被拒 絕。典型地,多個(gè)過(guò)濾器規(guī)則必須用來(lái)覆蓋所有類型的分組,這些分 組通常由網(wǎng)關(guān)接收。常常這些過(guò)濾器規(guī)則實(shí)施在一個(gè)規(guī)則文件中,該 規(guī)則文件由網(wǎng)絡(luò)管理員創(chuàng)建。
效率和速度在任何IP分組過(guò)濾設(shè)計(jì)的設(shè)計(jì)中常常是最重要的。 典型網(wǎng)關(guān)系統(tǒng)每天將處置的大量IP分組,不必說(shuō)對(duì)于每個(gè)IP分組可 能必須處理的相當(dāng)大量的過(guò)濾器規(guī)則,可產(chǎn)生對(duì)于網(wǎng)關(guān)系統(tǒng)的巨大需
求。另外,在某些網(wǎng)關(guān)系統(tǒng)中,例如在諸如PDA和移動(dòng)電話之類的較 小因特網(wǎng)激活裝置中,由于這樣的裝置的有限CPU速度和很小存儲(chǔ)器 尺寸,過(guò)濾操作必須盡可能是時(shí)間和空間高效的。即使在專用硬件被 用來(lái)從裝置的CPU卸載分組過(guò)濾的情況下,由于希望使開(kāi)銷最小和使 網(wǎng)絡(luò)性能最大,仍然需要考慮時(shí)間和空間效率。
一些傳統(tǒng)IP分組過(guò)濾系統(tǒng)使用固定長(zhǎng)度n-元組(例如,5-元組 或6-元組)表示過(guò)濾器規(guī)則,每過(guò)濾器規(guī)則可能有多個(gè)元組。每個(gè)元 組典型地存儲(chǔ)本質(zhì)上定義所述規(guī)則的多個(gè)參數(shù)。然而,由于具有固定 大小,元組常常被低效地利用,特別是對(duì)于只需要一個(gè)或兩個(gè)參數(shù)的 較簡(jiǎn)單規(guī)則。例如,如果過(guò)濾器規(guī)則被定義成允許所有TCP分組,則 與所述規(guī)則相關(guān)的唯一參數(shù)是與分組相聯(lián)的協(xié)議。對(duì)于其它規(guī)則可能 要求的參數(shù),例如源和/或目的地地址、源和/或目的地端口、方向(進(jìn) 來(lái)/出去)等等,與這樣的規(guī)則不相關(guān)。但是,當(dāng)使用固定長(zhǎng)度n-元組 時(shí),每個(gè)元組必須分配給用于所有可能參數(shù)的空間,并因而從空間觀 點(diǎn)看總是必然導(dǎo)致最壞情況方案。因此固定長(zhǎng)度的規(guī)則常常是高度空 間低效的。
另外,多種傳統(tǒng)IP分組過(guò)濾系統(tǒng)依賴于為每個(gè)規(guī)則可能調(diào)用的
多個(gè)元組和邏輯功能。由于這樣做, 一些規(guī)則是額外地時(shí)間低效的, 因而增加處理開(kāi)銷和降低網(wǎng)絡(luò)性能。
因此,存在對(duì)進(jìn)行IP分組過(guò)濾的空間和時(shí)間更高效過(guò)程的需要。
發(fā)明內(nèi)容
本發(fā)明通過(guò)提供利用可變-長(zhǎng)度元組表示分組過(guò)濾規(guī)則的 一種設(shè) 備、程序產(chǎn)品及方法,解決與現(xiàn)有技術(shù)有關(guān)的這些和其它問(wèn)題。可變-長(zhǎng)度元組只存儲(chǔ)實(shí)施規(guī)則必需的參數(shù),并且理想地省去任何多余參數(shù)。 因此,優(yōu)化每個(gè)過(guò)濾器規(guī)則的空間效率。
此外,在按照本發(fā)明的一些實(shí)施例中,每個(gè)過(guò)濾器規(guī)則包括識(shí)別 與過(guò)濾器規(guī)則有關(guān)的參數(shù)集或子集的索引字段,并因此包括在與該過(guò) 濾器規(guī)則有關(guān)的元組中所規(guī)定的參數(shù)的數(shù)量和標(biāo)識(shí)。在另外的實(shí)施例 中,索引字段可以額外用來(lái)把每個(gè)過(guò)濾器規(guī)則映像到對(duì)于該特定過(guò)濾 器規(guī)則最優(yōu)化的特定規(guī)則檢驗(yàn)功能上。因此,可以優(yōu)化相對(duì)于每個(gè)規(guī) 則所進(jìn)行的規(guī)則檢驗(yàn),因而額外地使每個(gè)過(guò)濾器規(guī)則的時(shí)間效率最大。
因此,按照本發(fā)明的一個(gè)方面,分組過(guò)濾使用過(guò)濾器規(guī)則集合實(shí) 施,其中在該集合中的過(guò)濾器規(guī)則包括可變-長(zhǎng)度元組。響應(yīng)分組的接 收,訪問(wèn)在過(guò)濾器規(guī)則集合中的第一過(guò)濾器規(guī)則,并且基于第一過(guò)濾 器規(guī)則對(duì)于分組選擇性地進(jìn)行操作。
按照本發(fā)明的另一個(gè)方面,可以產(chǎn)生過(guò)濾器規(guī)則集以用在分組過(guò)
濾中。過(guò)濾器規(guī)則集可以通過(guò)如下產(chǎn)生對(duì)于多個(gè)過(guò)濾器規(guī)則的每一 個(gè),從測(cè)試一個(gè)分組所基于的多個(gè)參數(shù)中確定所述多個(gè)參數(shù)的至少一 個(gè)子集,這樣的過(guò)濾器規(guī)則基于所述多個(gè)參數(shù)的所述至少一個(gè)子集測(cè) 試一個(gè)分組。 一旦確定參數(shù),就可以通過(guò)產(chǎn)生用于多個(gè)過(guò)濾器規(guī)則的 可變-長(zhǎng)度元組而產(chǎn)生過(guò)濾器規(guī)則集,使得對(duì)于每個(gè)過(guò)濾器規(guī)則產(chǎn)生的 元組只包括那些所確定的參數(shù),基于這些所確定的參數(shù)將由這樣的過(guò) 濾器規(guī)則測(cè)試分組。
本發(fā)明的這些和其它優(yōu)點(diǎn)和特征在作為附錄并且形成其一部分 的權(quán)利要求書(shū)中敘述。然而,為了更好地理解本發(fā)明、和通過(guò)其使用
獲得的優(yōu)點(diǎn)和目標(biāo),應(yīng)該參照附圖和參照所附的描述性主題,在該描 述性主題中描述有本發(fā)明的典型實(shí)施例。
圖l是實(shí)施按照本發(fā)明的分組過(guò)濾的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)的方塊圖。
圖2是方塊圖,表明在圖1的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)中的過(guò)濾器規(guī)則的 編譯和解釋。
圖3是能夠在圖1的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)中實(shí)施的典型過(guò)渡器規(guī)則集 的方塊圖。
圖4是用在圖1的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)中用于二進(jìn)制可變-長(zhǎng)度元組 的典型格式的方塊圖。
圖5是用在圖l的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)中的索引位圖的典型布局的方塊圖。
圖6是包括對(duì)圖3的范例過(guò)濾器規(guī)則產(chǎn)生的可變-長(zhǎng)度元組的典 型編譯規(guī)則集的方塊圖。
圖7是用于在規(guī)則檢驗(yàn)在圖1的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)中的編譯規(guī)則時(shí) 利用的數(shù)據(jù)結(jié)構(gòu)的C說(shuō)明集的方塊圖。
圖8是處理圖3的范例過(guò)濾器規(guī)則使用的典型功能表和有關(guān)規(guī)則 檢驗(yàn)功能的方塊圖。
圖9是為搜索匹配過(guò)濾器規(guī)則在圖l的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)中使用的 典型過(guò)濾器規(guī)則搜索功能的方塊圖。
具體實(shí)施例方式
下文討論的實(shí)施例產(chǎn)生用于進(jìn)行IP分組過(guò)濾所使用的過(guò)濾器規(guī) 則集中的多個(gè)過(guò)濾器規(guī)則的可變長(zhǎng)度元組。元組可變長(zhǎng)度到這樣的程 度過(guò)濾器規(guī)則集中的不同過(guò)濾器規(guī)則允許具有不同長(zhǎng)度的元組,使 每個(gè)元組只存儲(chǔ)由特定過(guò)濾器規(guī)則測(cè)試分組所基于的那些參數(shù)。理想 地用于過(guò)濾器規(guī)則的元組將省去該過(guò)濾器規(guī)則不測(cè)試的任何參數(shù),因 而節(jié)省若所述參數(shù)(或與該參數(shù)相對(duì)應(yīng)的空白字段)被包括在元組中
則會(huì)浪費(fèi)的空間。
另夕卜,按照本發(fā)明在過(guò)濾器規(guī)則集中的每個(gè)過(guò)濾器規(guī)則理想地映
像到為該類型的過(guò)濾器規(guī)則專門(mén)優(yōu)化的規(guī)則檢驗(yàn)功能上,例如,對(duì)于 該過(guò)濾器規(guī)則只測(cè)試包括在元組中的那些參數(shù)。這樣的映像按照本發(fā) 明可以以多種方式進(jìn)行。在所示實(shí)施例中,例如,這樣的映像可以使 用被包括在過(guò)濾器規(guī)則中的索引字段而進(jìn)行。索引字段可以起進(jìn)入功 能表中的索引或指針的作用,該功能表具有與對(duì)不同類型的過(guò)濾器規(guī) 則優(yōu)化的規(guī)則檢驗(yàn)功能有關(guān)的條目。另外,在所示實(shí)施例中,索引字 段另外用作過(guò)濾器規(guī)則的內(nèi)容標(biāo)識(shí)符,具體識(shí)別哪些參數(shù)被包括在用 于過(guò)濾器規(guī)則的元組中。
例如,索引字段可以配置成位圖,其具有分配給每個(gè)可能參數(shù)的 比特位置,分組可以由在過(guò)濾器規(guī)則集中的任何過(guò)濾器規(guī)則基于所述 每個(gè)可能參數(shù)而測(cè)試。包括在過(guò)濾器規(guī)則的特定元組中的參數(shù)由相關(guān) 索引字段中的相應(yīng)比特位置中的邏輯"l"值所識(shí)別。
因此,在所示實(shí)施例中,當(dāng)分組基于過(guò)濾器規(guī)則被測(cè)試時(shí),用于 所述過(guò)濾器規(guī)則的索引字段被訪問(wèn)以識(shí)別適當(dāng)?shù)囊?guī)則檢驗(yàn)功能。這種 功能在調(diào)用時(shí),然后訪問(wèn)在所述過(guò)濾器規(guī)則的所述元組中的參數(shù),并 且基于那些參數(shù)測(cè)試分組。由于在這樣一個(gè)實(shí)施例中的規(guī)則檢驗(yàn)功能 為由索引字段識(shí)別的具體類型的規(guī)則所優(yōu)化,對(duì)所述功能已經(jīng)建立在 所述元組內(nèi)的參數(shù)的數(shù)量和位置,從而所述功能夠被優(yōu)化成只測(cè)試在 所述元組中包括的那些參數(shù)。
另外,每當(dāng)發(fā)現(xiàn)一個(gè)分組與過(guò)濾器規(guī)則的參數(shù)匹配時(shí),對(duì)于所述 分組進(jìn)行操作,所述操作可選擇地在所述過(guò)濾器規(guī)則的操作字段中規(guī) 定。這樣一種操作可以包括例如允許或拒絕分組、記錄或日志與分組 有關(guān)的數(shù)據(jù)、加密或解密分組、把放棄分組通知客戶、分類分組、對(duì)
于分組進(jìn)行服務(wù)質(zhì)量(QOS)相關(guān)操作、或?qū)嶋H上在分組過(guò)濾期間作 為識(shí)別分組的結(jié)果對(duì)分組所希望地采取的任何其它類型的操作。 按照本發(fā)明的其它修改和變更由下面的討論將成為顯然的。 現(xiàn)在轉(zhuǎn)到附圖,其中類似的附圖標(biāo)記貫穿幾張圖指示類似部分,
圖1表明聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)10,在該聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)10內(nèi),可以實(shí)施 按照本發(fā)明的分組過(guò)濾。在所示實(shí)施例中的系統(tǒng)10包括用來(lái)把一個(gè)或 多個(gè)計(jì)算機(jī)16與諸如因特網(wǎng)12之類的外部網(wǎng)絡(luò)相接口的網(wǎng)關(guān)系統(tǒng) 14。網(wǎng)關(guān)系統(tǒng)14可以使用適于進(jìn)行分組過(guò)濾的任何數(shù)量的電子裝置實(shí) 施,這些電子裝置包括例如因特網(wǎng)網(wǎng)關(guān)、防火墻、網(wǎng)絡(luò)路由器、網(wǎng)絡(luò) 開(kāi)關(guān)、服務(wù)器、通用目的計(jì)算機(jī)、或其它網(wǎng)絡(luò)附加電子裝置。網(wǎng)關(guān)系 統(tǒng)14也可以在其中希望實(shí)施分組過(guò)濾的任何客戶機(jī)類型裝置中實(shí)施, 并且此外,可以用來(lái)代表一個(gè)或多個(gè)客戶機(jī)來(lái)過(guò)濾分組。
計(jì)算機(jī)16可以作為單個(gè)用戶計(jì)算機(jī)實(shí)施,盡管網(wǎng)關(guān)系統(tǒng)可以用 來(lái)代表任何數(shù)量類型的客戶機(jī)來(lái)過(guò)濾分組,該客戶機(jī)包括例如服務(wù)器、 可攜帶計(jì)算機(jī)、處置裝置等等。另外,盡管網(wǎng)關(guān)系統(tǒng)14表示成把網(wǎng)關(guān) 提供給因特網(wǎng)12,但系統(tǒng)可以可選擇地用來(lái)與任何類型的網(wǎng)絡(luò)(不管 是公共的還是私人)相接口。
網(wǎng)關(guān)系統(tǒng)14包括聯(lián)接到存儲(chǔ)器20上的控制邏輯18,該存儲(chǔ)器 20可以代表包括系統(tǒng)14的主存儲(chǔ)的隨機(jī)存取存儲(chǔ)器(RAM)、以及 任何補(bǔ)充水平的存儲(chǔ)器,例如高速緩沖存儲(chǔ)器、非易失或后備存儲(chǔ)器 (例如,可編程或閃爍存儲(chǔ)器)、只讀存儲(chǔ)器等等。另外,可認(rèn)為存 儲(chǔ)器20包括實(shí)際定位在系統(tǒng)14中其它地方的存儲(chǔ)器存儲(chǔ),例如在控 制邏輯18中的處理器中的任何高速緩沖存儲(chǔ)器、以及用作虛擬存儲(chǔ)器 的任何存儲(chǔ)容量,例如,〗象存儲(chǔ)在海量存儲(chǔ)裝置上或在聯(lián)接到系統(tǒng)14 的另一個(gè)裝置上。在其它數(shù)據(jù)之中,存儲(chǔ)器20可以用來(lái)存儲(chǔ)過(guò)濾器集 22,適于在以本發(fā)明的方式進(jìn)行分組過(guò)濾時(shí)由控制邏輯18使用。
控制邏輯18可以例如使用執(zhí)行分組過(guò)濾程序代碼的處理器實(shí)施, 例如,像在硬件中、在內(nèi)核中、在網(wǎng)絡(luò)操作系統(tǒng)中、在裝置驅(qū)動(dòng)程序 中、在應(yīng)用程序中等等中實(shí)施。在替換例中,控制邏輯18可以經(jīng)專用 硬件或控制器(而不是經(jīng)通用計(jì)算機(jī))實(shí)施。
將認(rèn)識(shí)到,網(wǎng)關(guān)系統(tǒng)14也可以包括用來(lái)外部通信信息的多個(gè)輸 入和輸出,例如用戶接口、 一個(gè)或多個(gè)網(wǎng)絡(luò)接口、及一個(gè)或多個(gè)海量 存儲(chǔ)裝置。此外,盡管用戶可以經(jīng)專用用戶接口與網(wǎng)關(guān)系統(tǒng)14相交互,
但在多個(gè)實(shí)施例中,用戶通過(guò)諸如web基接口之類的遠(yuǎn)程接口可以與 網(wǎng)關(guān)系統(tǒng)相交互,例如為了管理目的,包括指定由系統(tǒng)使用的過(guò)濾器規(guī) 則。此外,為實(shí)施本發(fā)明的實(shí)施例執(zhí)行的任何例行程序,不管是作為 操作系統(tǒng)的部分還是作為特定應(yīng)用程序、元件、程序、對(duì)象、指令模 塊或序列、或甚至其子集實(shí)施,這里將都稱作"計(jì)算機(jī)程序代碼",或 簡(jiǎn)單地稱作"程序代碼"。程序代碼典型地包括一個(gè)或多個(gè)指令,該指 令在各個(gè)時(shí)刻在計(jì)算機(jī)中的各個(gè)存儲(chǔ)器和存儲(chǔ)裝置中駐留,并且當(dāng)在 計(jì)算機(jī)中由一個(gè)或多個(gè)處理器閱讀或執(zhí)行時(shí),使該計(jì)算機(jī)完成執(zhí)行實(shí)
施本發(fā)明的各個(gè)方面的步驟或元素必需的步驟。況且,盡管在全功能 計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)中的上下文中已經(jīng)和下文將描述本發(fā)明,但本領(lǐng)
域的技術(shù)人員將認(rèn)識(shí)到,本發(fā)明的各個(gè)實(shí)施例能夠以各種形式作為程
序產(chǎn)品分布,并且本發(fā)明同樣地適用,而與用來(lái)實(shí)際完成分布所使用
的具體類型的計(jì)算機(jī)可讀介質(zhì)無(wú)關(guān)。計(jì)算機(jī)可讀介質(zhì)的例子包括但不
限于尤其是有形的、可記錄型介質(zhì),如易失和非易失存儲(chǔ)器裝置、
軟盤(pán)和其它可除去盤(pán)、硬盤(pán)驅(qū)動(dòng)器、磁帶、光盤(pán)(例如,CD-ROM、
DVD等等);和傳輸型介質(zhì),如數(shù)字和模擬通信鏈路。
本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,在圖1中表明的典型環(huán)境不打算限 制本發(fā)明。的確,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,可以使用其它可選擇 硬件和/或軟件環(huán)境,而不脫離本發(fā)明的范圍。
現(xiàn)在轉(zhuǎn)到圖2,這張圖表明,為了以本發(fā)明的方式實(shí)施IP分組過(guò) 濾的目的,與加載和解釋規(guī)則集以進(jìn)入控制邏輯18 (圖1)的內(nèi)核中 相關(guān)聯(lián)使用的主要元素和步驟。具體地說(shuō),為了把來(lái)自規(guī)則集的規(guī)則 加載到內(nèi)核中,典型地過(guò)濾器規(guī)則30首先典型地在依賴于人類可讀符 號(hào)語(yǔ)句(例如,F(xiàn)ILTER、 FILTER-INTERFACE)的表示中由系統(tǒng)管 理員定義,并且存儲(chǔ)在文件中。所述規(guī)則可以經(jīng)文本語(yǔ)句、或者可選 擇地經(jīng)圖形用戶接口定義。所述規(guī)則然后由過(guò)濾器規(guī)則編譯器32處 理,該編譯器32編譯符號(hào)語(yǔ)句以產(chǎn)生可變-長(zhǎng)度二進(jìn)制元組34,該可 變-長(zhǎng)度二進(jìn)制元組34定義在第二已編譯表示中的過(guò)濾器規(guī)則。
分離地,規(guī)則集檢驗(yàn)功能36典型地由系統(tǒng)管理員(或者可選擇
地,由與定義過(guò)濾器規(guī)則的系統(tǒng)管理員分離的開(kāi)發(fā)者或其它個(gè)人)編 碼,并且使用標(biāo)準(zhǔn)語(yǔ)言編譯器編譯。這可以與規(guī)則的所述定義相聯(lián)系 地進(jìn)行,或者可選擇地,可以在較早時(shí)間進(jìn)行和/或借助于操作系統(tǒng)或
內(nèi)核預(yù)加栽。過(guò)濾器規(guī)則加載器38然后把二進(jìn)制元組34和規(guī)則檢驗(yàn) 功能36加栽到內(nèi)核級(jí)的IP過(guò)濾器規(guī)則解釋器40中。
解釋器40連接到IP協(xié)議層模塊44上,該IP協(xié)議層模塊44是 在一個(gè)或多個(gè)高級(jí)傳輸協(xié)議層模塊42 (例如,TCP模塊、UDP模塊、 ICMP模塊等等)和低級(jí)裝置驅(qū)動(dòng)程序46之間。
IP協(xié)議層模塊44利用解釋器40對(duì)出去和進(jìn)入分組都實(shí)施IP分 組過(guò)濾。對(duì)于出去分組,傳輸協(xié)議層模塊42把出去分組發(fā)送到IP協(xié) 議層模塊44,該IP協(xié)議層模塊44然后調(diào)用過(guò)濾器規(guī)則解釋器40以 搜索過(guò)濾器規(guī)則以找出匹配規(guī)則。 一旦找到匹配規(guī)則,解釋器40就處 理適當(dāng)規(guī)則,并且把PERMIT (允許)或DENY (拒絕)操作返回到 IP協(xié)議層模塊44。如果操作是PERMIT,則IP協(xié)議層模塊44把分 組傳輸?shù)窖b置驅(qū)動(dòng)程序46,用于在有關(guān)網(wǎng)絡(luò)裝置上輸出。另一方面, 如果操作是DENY,則IP協(xié)議層模塊44把分組丟棄(即濾除)。
對(duì)于進(jìn)入分組,裝置驅(qū)動(dòng)程序46把上傳分組發(fā)送到IP協(xié)議層模 塊44,該IP協(xié)議層模塊44然后調(diào)用過(guò)濾器規(guī)則解釋器40以搜索過(guò) 濾器規(guī)則以找出匹配規(guī)則。 一旦找到匹配規(guī)則,解釋器40就處理適當(dāng) 規(guī)則,并且把PERMIT或DENY操作返回到IP協(xié)議層模塊44。如果 操作是PERMIT,則IP協(xié)議層模塊44把分組傳輸?shù)竭m當(dāng)傳輸協(xié)議層 模塊42。否則,如果操作是DENY,則IP協(xié)議層模塊44把分組丟棄 (即濾除)。
如以上提到的那樣,過(guò)濾器規(guī)則被編譯成可變-長(zhǎng)度元組。為了 進(jìn)一步表明這樣的元組的格式和使用,圖3表明包括可能呈現(xiàn)給過(guò)濾 器規(guī)則編譯器32 (圖2 )的三個(gè)典型FILTER規(guī)則語(yǔ)句51、 52及54 的規(guī)則集50。為了把可變-長(zhǎng)度元組的使用與已經(jīng)用在傳統(tǒng)過(guò)濾算法 中的固定-長(zhǎng)度元組相對(duì)比,規(guī)則51、 52及54與在美國(guó)專利No. 6,301,669中敘述的舉例規(guī)則相對(duì)應(yīng),該專利通過(guò)參考包括在這里。在這個(gè)例子中,規(guī)則51和52已經(jīng)由系統(tǒng)管理員清楚地輸入,而規(guī)則54 是可以由過(guò)濾器規(guī)則編譯器32自動(dòng)產(chǎn)生的缺省"拒絕"規(guī)則,以拒絕不 由任何其它規(guī)則清楚地允許的任何分組。
每個(gè)規(guī)則51、 52、 54包括操作字段60,該字段60響應(yīng)與為規(guī)則 定義的參數(shù)集相匹配的分組來(lái)定義待進(jìn)行的操作。所述操作可以是諸 如PERMIT或DENY之類的操作,或者在替換例中,可以包括以上 提到的其它類型操作的任一種。另外,每個(gè)規(guī)則包括方向字段62,該 方向字段62規(guī)定所述規(guī)則是否應(yīng)用于進(jìn)入分組、出去分組、或兩者。 方向字段可以用來(lái)例如從多個(gè)功能表(即,專用于處理進(jìn)來(lái)和出去分 組的分離功能表)中選擇,特定過(guò)濾器規(guī)則應(yīng)該鏈接到所述功能表上。 分組的方向典型地不必作為要被包括在元組中的參數(shù)而被包括,如果 分組的方向一般可由解釋器基于上下文確定,在該上下文中,所述分 組已經(jīng)由裝置驅(qū)動(dòng)程序或傳輸協(xié)議層模塊呈現(xiàn)給所述編譯器。在可替 換例中,分組的方向可以作為能夠包括在元組中的參數(shù)而被包括。
如以上提到的那樣,每個(gè)過(guò)濾器規(guī)則典型地確定來(lái)自參數(shù)集的一 個(gè)或多個(gè)參數(shù),基于其通過(guò)分組過(guò)濾而能夠測(cè)試分組。在這個(gè)實(shí)施例 中,能夠并入過(guò)濾器規(guī)則中的參數(shù)集包括多個(gè)參數(shù),該多個(gè)參數(shù)可能 與在IP分組的首部中的特定字段有關(guān)。具體地說(shuō),參數(shù)集可以包括 源和目的地地址字段64、 66,其指定在IP分組中定義的特定地址、 地址范圍、或地址集;協(xié)議字段68,定義在IP分組中定義的傳輸協(xié) 議;及源和目的地端口字段70、 72,它們指定在IP分組中定義的特 定端口、端口范圍、或端口集。將認(rèn)識(shí)到,參數(shù)集在不同實(shí)施例中可 以變化,并且參數(shù)一般地可以與在IP分組中的不同字段和/或與IP分 組的其它特性或與這樣的分組的通信有關(guān),該特性在分組首部的字段 中可能不必識(shí)別。
對(duì)于規(guī)則51,這個(gè)規(guī)則用來(lái)清楚地允許所有TCP分組。這樣,
協(xié)議字段68。剩余字段(字段62、 64、 66、 70及72 )依靠"*"指示標(biāo) 有通配符.通過(guò)給這些字段標(biāo)通配符,這些字段指示為對(duì)于規(guī)則的處理不是相關(guān)的或必要的。此外,如下面將成為更明顯的那樣,通過(guò)給 這些字段標(biāo)通配符,用于這些字段的相關(guān)參數(shù)將從規(guī)則的有關(guān)可變-長(zhǎng)度元組省去,并且不被用來(lái)處理規(guī)則的有關(guān)規(guī)則檢驗(yàn)功能測(cè)試。
對(duì)于規(guī)則52,這個(gè)規(guī)則用來(lái)允許具有161或162源端口和161 或162目的地端口 (共用于SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)通信的端口 ) 的所有UDP分組。這樣,規(guī)則包括在字段60中所規(guī)定的PERMIT操 作和規(guī)定UDP協(xié)議的協(xié)議字段68。另外,源和目的地端口字段70、 72規(guī)定{161、 162}的端口范圍。剩余字段(字段62、 64及66)依靠"*" 指示標(biāo)有通配符。
對(duì)于缺省拒絕規(guī)則54,規(guī)則包括在字段60中所規(guī)定的DENY操 作,使剩余字段(字段62、 64、 66、 68、 70及72)依靠"*"指示標(biāo)有 通配符。
規(guī)則51、 52及54對(duì)每個(gè)IP分組邏輯地頂部到底部^Jt理;所 以對(duì)每個(gè)分組,如果IP分組與規(guī)則參數(shù)相匹配,那么采取在操作字段 60中定義的操作。如果給定IP分組不與第一規(guī)則51相匹配,則它相 相對(duì)于下個(gè)規(guī)則52被檢驗(yàn),并且依次類推,直到到達(dá)最后規(guī)則(缺省 拒絕規(guī)則54)。缺省拒絕規(guī)則54總是與任何IP分組相匹配,所以如 果到達(dá)這個(gè)規(guī)則,則IP分組被丟棄(不允許繼續(xù))。
現(xiàn)在參照?qǐng)D4,每個(gè)過(guò)濾器規(guī)則被編譯或翻譯成較小的可變-長(zhǎng)度 二進(jìn)制元組80。在所示實(shí)施例中,每個(gè)元組80包括2-字節(jié)首部,該 2-字節(jié)首部包括索引字段82和操作字段84。這個(gè)首部跟隨有多個(gè)參 數(shù)字段86,對(duì)于任何給定規(guī)則,該參數(shù)字段86為每個(gè)規(guī)定參數(shù)提供, 并且才艮據(jù)規(guī)則不標(biāo)有通配符。換句話說(shuō),標(biāo)有通配符的字段值都不存 儲(chǔ)在元組80中,由此減小存儲(chǔ)元組要求的空間量。在所示實(shí)施例中, 索引和操作字段被認(rèn)為是每個(gè)元組的部分;然而,在其它實(shí)施例中, 這樣的字段不必并入元組中。
圖5表明索引字段82的一種典型實(shí)施,其具體采取l-字節(jié)位圖 100形式,該1-字節(jié)位圖100包括保留字段102與一個(gè)字段或比特位 置一起,用于能夠在過(guò)濾器規(guī)則中定義的每個(gè)參數(shù),并且這樣,用于
基于其可以測(cè)試分組的每個(gè)參數(shù)。這樣,字段104、 106用來(lái)指示在元 組中目的地和源端口字段的存在,字段108、 IIO用來(lái)指示在元組中目 的地和源地址字段的存在,及字段112用來(lái)指示在元組中協(xié)議的存在。 保留字段102在這種實(shí)施中是三比特寬,并且將認(rèn)識(shí)到,這個(gè)字段的 大小將基于在位圖中代表的參數(shù)字段的數(shù)量而變。
對(duì)于給定規(guī)則,為在規(guī)則中不標(biāo)有通配符的每個(gè)參數(shù)字段設(shè)置適 當(dāng)比特。另外,比特位置可以以十六進(jìn)制格式表示,其中0x01的十六 進(jìn)制(hex)值指示協(xié)議參數(shù)在元組中,0x02的十六進(jìn)制值指示源地 址參數(shù)在元組中,0x04的十六進(jìn)制值指示目的地地址參數(shù)在元組中, 0x08的十六進(jìn)制值指示源端口參數(shù)在元組中,及0x10的十六進(jìn)制值 指示目的地端口參數(shù)在元組中。
在所示實(shí)施例中,索引字段82起輔助功能的作用,作為進(jìn)入功 能表中以選擇用于特定過(guò)濾器規(guī)則的最佳規(guī)則檢驗(yàn)功能的索引。然而, 將認(rèn)識(shí)到,元組內(nèi)容的指定和適當(dāng)規(guī)則檢驗(yàn)功能的標(biāo)識(shí)可以分離地處 置。此外,可變-長(zhǎng)度元組的使用不必要求為每個(gè)規(guī)則類型分離規(guī)則檢 驗(yàn)功能,由此不要求對(duì)功能表的索引。
將認(rèn)識(shí)到,指定元組內(nèi)容的其它方式可以用作對(duì)于這里描述的索 引字段的替換例。例如,代替位圖,其它標(biāo)識(shí)符可以用來(lái)以空間更高 效方式規(guī)定元組的內(nèi)容。此外,在一些實(shí)例中,索引字段可以簡(jiǎn)單地 指向優(yōu)化規(guī)則檢驗(yàn)功能,所述功能具體地被配置成測(cè)試對(duì)于與所述功 能有關(guān)的特定過(guò)濾器規(guī)則而言唯一的單個(gè)參數(shù)組合(例如,對(duì)于過(guò)濾 器規(guī)則52,對(duì)于過(guò)濾器規(guī)則元組中的對(duì)應(yīng)參數(shù)只檢驗(yàn)分組的協(xié)議、源 端口及目的地端口字段的規(guī)則檢驗(yàn)功能)。在后一種情況下,索引字 段不能具體地識(shí)別特定元組的內(nèi)容。
圖6隨后表明對(duì)于范例過(guò)濾器規(guī)則51、 52及54可以產(chǎn)生的典型 元組列表120。這個(gè)元組列表120包括分別與過(guò)濾器規(guī)則51、 52及54 相對(duì)應(yīng)的元組122、 124及126。每個(gè)元組122、 124及126包括索引 字段128和操作字段130、及零個(gè)或多個(gè)參數(shù)字段。對(duì)于實(shí)施過(guò)濾器 規(guī)則51的元組122,與參數(shù)"協(xié)議-TCP,,相對(duì)應(yīng)的單一參數(shù)字疾132
與具有PERMIT操作的操作字段130—道包括在元組中。此外,給定 協(xié)議參數(shù)被賦予在索引字段128中的比特位置7,并且這個(gè)參數(shù)是由 所述規(guī)則測(cè)試的唯一參數(shù),則索引字段具有0x01的值。
對(duì)于實(shí)施過(guò)濾器規(guī)則52的元組124,元組包括協(xié)議參數(shù)字段134、 源端口參數(shù)字段136及目的地端口參數(shù)字段138,其分別實(shí)施為參數(shù) "協(xié)議-UDP"、 "srcport={161、 162},,、及"dstport^161、 162}"。另夕卜, 基于在元組中包括的參數(shù),索引字段128被賦予0x19 (0x10+0x08+0x01)的值。元組也包括具有PERMIT操作的操作字 段130。
對(duì)于實(shí)施過(guò)濾器規(guī)則54的元組126,元組不包括參數(shù)字段,并且 相應(yīng)地,索引字段128被賦予0x00的值。元組也包括具有DENY操 作的操作字段130,因而實(shí)施以上討論的缺省拒絕過(guò)濾器規(guī)則。
注意,元組典型地按與由系統(tǒng)管理員所定義的規(guī)則51、 52及54 相同的順序布置在元組列表中,并且元組典型地從頂部到底部被搜索。 而且,假定每個(gè)端口范圍可以使用開(kāi)始和結(jié)束端口表示,兩個(gè)字節(jié)被 分配給每個(gè)端口,并且所有其它字段被分配單個(gè)字節(jié),僅使用15字節(jié) 的元組存儲(chǔ)就能夠存儲(chǔ)三個(gè)過(guò)濾器規(guī)則,或5字節(jié)每規(guī)則的平均值。 這與諸如5-元組規(guī)則(144字節(jié)、或48字節(jié)每規(guī)則)和6-元組規(guī)則(70 字節(jié)、或24字節(jié)每規(guī)則)之類的傳統(tǒng)固定-長(zhǎng)度元組實(shí)施形成對(duì)比。 因此,在這種實(shí)施中得到的空間效率比其它傳統(tǒng)設(shè)計(jì)好5倍。
應(yīng)該注意,在元組列表120中的元組可以布置在連續(xù)存儲(chǔ)中,并 且僅為了理解容易在圖6中表示成堆疊。況且,盡管每個(gè)字段被分配 固定數(shù)量的字節(jié),但將認(rèn)識(shí)到,字段可被分配特定范圍的比特,進(jìn)一 步改進(jìn)空間效率。例如,如果只支持四個(gè)或更少協(xié)議,則協(xié)議字段可 使用少至兩個(gè)比特而實(shí)施。
如以上提到的那樣,來(lái)自元組列表的元組定義了過(guò)濾器規(guī)則的編 譯表示。這些過(guò)濾器規(guī)則由為特定類型的過(guò)濾器規(guī)則所優(yōu)化的規(guī)則檢 驗(yàn)功能所處理。在所示實(shí)施例中,規(guī)則檢驗(yàn)功能基于索引字段被索引, 并且因此,被個(gè)別地優(yōu)化以處理具有在相關(guān)元組的索引文件+所識(shí)別
的參數(shù)的特定組合的任何過(guò)濾器規(guī)則。然而,將認(rèn)識(shí)到,規(guī)則檢驗(yàn)功 能可以以其它方式被索引,并且在一些實(shí)例中,規(guī)則檢驗(yàn)功能可以經(jīng) 多個(gè)功能表被鏈接,并因而由多個(gè)索引而索引。在一個(gè)典型實(shí)施例中, 例如,分離的出去和進(jìn)來(lái)功能表可以用來(lái)分離地處置進(jìn)來(lái)和出去分組。
圖7-9表明過(guò)濾器規(guī)則搜索和檢驗(yàn)功能的一種典型C-語(yǔ)言實(shí)施, 適用于處理以上描述的可變-長(zhǎng)度元組過(guò)濾器規(guī)則。圖7具體地表明在 表明實(shí)施例中使用的多個(gè)C-語(yǔ)言數(shù)據(jù)結(jié)構(gòu)說(shuō)明。
一種這樣的數(shù)據(jù)結(jié)構(gòu)是Bitmap (位圖),定義了在每個(gè)元組中 的索引字段的格式。另 一種這樣的數(shù)據(jù)結(jié)構(gòu)是T叩le(元組),該Tuple 包括Bitmap-格式索引字段,具有PERMIT ( 0 )和DENY (1)的枚 舉值的操作字段,以及零或更大值,代表用于Tuple的參數(shù)字段。分 組在這個(gè)實(shí)施例中被表示在分組數(shù)據(jù)結(jié)構(gòu)中,該分組數(shù)據(jù)結(jié)構(gòu)最低限 度地包括能夠由過(guò)濾器規(guī)則測(cè)試的各種字段,即協(xié)議字段、源和目的 地地址字段、及源和目的地端口。源和目的地地址字段是無(wú)符號(hào)32-位整數(shù),并且源和目的地端口在所示實(shí)施例中是無(wú)符號(hào)16-位整數(shù)。 將認(rèn)識(shí)到,就源和目的地地址而論,32-位整數(shù)對(duì)于IPv4地址的目的 是足夠的。如果作為替換例,支持IPv6地址,則源和目的地地址字段 可以實(shí)施為無(wú)符號(hào)128-位整數(shù)。
在所示實(shí)施例中所依賴的另一種數(shù)據(jù)結(jié)構(gòu)是功能表數(shù)據(jù)結(jié)構(gòu),該 功能表數(shù)據(jù)結(jié)構(gòu)定義了用于功能表中的每個(gè)表?xiàng)l目的格式,每個(gè)表?xiàng)l 目包括到優(yōu)化規(guī)則檢驗(yàn)功能的指針,所述優(yōu)化規(guī)則檢驗(yàn)功能接收到 元組和待由元組測(cè)試的分組的指針作為參數(shù);和元組_長(zhǎng)度值,它識(shí)別 由在元組列表中的參考元組占據(jù)的字節(jié)數(shù)。在分組不與所述表?xiàng)l目相 關(guān)聯(lián)的元組相匹配的情況下,后一個(gè)值可以用來(lái)辨別在元組列表中下 個(gè)元組的開(kāi)始。
包括上述數(shù)據(jù)結(jié)構(gòu)的功能表的一部分更詳細(xì)地表明在圖8中。具 體地說(shuō),功能表150被顯示為包括與以上聯(lián)系圖3描述的并且配置成 分別處理圖6的元組126、 122、 124的三個(gè)過(guò)濾器規(guī)則5*、 51、 52 分別相對(duì)應(yīng)的多個(gè)表?xiàng)l目152、 154、 156。每個(gè)表?xiàng)l目152、 154、 156
如在158處表示的那樣由每個(gè)元組的索引字段索引,并且每個(gè)表?xiàng)l目 152、 154、 156包括指針160和元組一長(zhǎng)度值162,使前者指向有關(guān)的 C-語(yǔ)言優(yōu)化規(guī)則檢驗(yàn)功能164、 166、 168,并且使后者識(shí)別有關(guān)元組 的長(zhǎng)度(按字節(jié))。在所示實(shí)施例中,在每個(gè)表?xiàng)l目中不要求索引字 段,因?yàn)楣δ鼙硎墙?jīng)過(guò)每個(gè)元組的索引字段可訪問(wèn)的固定-大小功能表 數(shù)據(jù)結(jié)構(gòu)的定序陣列。然而,在其它實(shí)施例中,在每種功能表結(jié)構(gòu)中 可以提供分離的索引字段。
應(yīng)該注意,每個(gè)規(guī)則檢驗(yàn)功能164、 166、 168被優(yōu)化成,僅基于 在相關(guān)過(guò)濾器規(guī)則的元組表示中所識(shí)別的那些參數(shù)檢驗(yàn)分組。相應(yīng)地, 每個(gè)規(guī)則檢驗(yàn)功能可優(yōu)化成以盡可能高效的方式處理特定類型的規(guī) 則,并且每個(gè)功能可省去諸如對(duì)于元組指定什么參數(shù)的測(cè)試之類的操 作,如果使用固定-長(zhǎng)度元組則會(huì)要求這樣的測(cè)試。
為了使用功能表150處理分組,諸如過(guò)濾器規(guī)則搜索功能之類的 功能可以被調(diào)用以處理分組。例如圖9表明過(guò)濾器規(guī)則搜索功能的一 種適當(dāng)C-語(yǔ)言實(shí)施,其順序搜索元組列表直到找到匹配過(guò)濾器規(guī)則。 在這個(gè)方面,在過(guò)濾器規(guī)則集中定義的最后的過(guò)濾器規(guī)則 一 一缺省拒 絕規(guī)則將總是與分組相匹配,并因而對(duì)不與任何其它規(guī)則相匹配的任 何分組返回DENY操作。
過(guò)濾器規(guī)則搜索功能接收指向待測(cè)試的分組的指針,并且一般通 過(guò)初始設(shè)置指針到元組列表中的第一元組而操作,對(duì)應(yīng)于過(guò)濾器規(guī)則 集中的第一過(guò)濾器規(guī)則。FOR循環(huán)然后基于第一元組的索引字段從功 能表調(diào)用適當(dāng)規(guī)則檢驗(yàn)功能,結(jié)果以匹配變量返回。如果遇到匹配, 則FOR循環(huán)提前終止,并且作為過(guò)濾器規(guī)則搜索功能的結(jié)果,返回 由元組的操作字段所規(guī)定的操作。
否則,如果未遇到匹配,則所述循環(huán)把元組指針增加一個(gè)在當(dāng)前 索引表?xiàng)l目中存儲(chǔ)的元組一長(zhǎng)度值,以把元組指針更新成指向在元組列 表中的下個(gè)元組。然后使用在由下個(gè)元組的索引字段索引的表?xiàng)l目中 規(guī)定的規(guī)則檢驗(yàn)功能,基于下個(gè)元組測(cè)試分組。這個(gè)過(guò)程*續(xù),直到 找到匹配規(guī)則,并返回由此規(guī)定的操作。如果過(guò)濾器規(guī)則集中的最后
過(guò)濾器規(guī)則配置成與所有分組相匹配,將認(rèn)識(shí)到,過(guò)濾器規(guī)則搜索功 能總是會(huì)找到匹配規(guī)則。
已經(jīng)表明,通過(guò)可變-長(zhǎng)度元組的使用,按照本發(fā)明的實(shí)施例能 夠以改進(jìn)空間和時(shí)間效率操作。此外,由受益于本公開(kāi)的本領(lǐng)域的技 術(shù)人員將認(rèn)識(shí)到,這里描述的可變-長(zhǎng)度元組可以聯(lián)系各種各樣的其它 過(guò)濾算法被利用,以提供更優(yōu)化的規(guī)則處理。例如,各種可選擇過(guò)濾 器規(guī)則搜索功能,例如包括二進(jìn)制搜索能力,可以用來(lái)加速匹配規(guī)則 的定位。另外,在一些實(shí)施例中對(duì)于不同參數(shù)值可以定義多個(gè)功能表 以進(jìn)一步加速過(guò)濾器規(guī)則搜索過(guò)程,從而這樣一個(gè)參數(shù)不必存儲(chǔ)在元 組中或在優(yōu)化規(guī)則檢驗(yàn)功能中測(cè)試。
對(duì)于這里描述的實(shí)施例的各種另外修改對(duì)于受益于本公開(kāi)的本 領(lǐng)域的技術(shù)人員將是顯然的。因此,本發(fā)明位于下文附屬的權(quán)利要求 中。
權(quán)利要求
1.一種過(guò)濾分組的方法,該方法包括響應(yīng)于分組的接收,訪問(wèn)在過(guò)濾器規(guī)則集中的第一過(guò)濾器規(guī)則,其中所述過(guò)濾器規(guī)則集中的過(guò)濾器規(guī)則包括可變長(zhǎng)度的元組;和基于第一過(guò)濾器規(guī)則對(duì)所述分組選擇性地進(jìn)行操作。
2. 根據(jù)權(quán)利要求1所述的方法,其中,在過(guò)濾器規(guī)則集中的每個(gè) 過(guò)濾器規(guī)則規(guī)定了測(cè)試一分組所能夠基于的多個(gè)參數(shù)的至少一個(gè)子 集,其中每個(gè)過(guò)濾器規(guī)則的所述元組只包括由該過(guò)濾器規(guī)則測(cè)試一分 組所將要基于的那些參數(shù),以及其中基于所述第一過(guò)濾器規(guī)則對(duì)所述 分組選擇性地進(jìn)行操作包括,基于由第 一過(guò)濾器規(guī)則所規(guī)定的參數(shù)測(cè) 試所述分組。
3. 根據(jù)權(quán)利要求2所述的方法,其中每個(gè)過(guò)濾器規(guī)則的所述元組 從所述多個(gè)參數(shù)省去任何標(biāo)有通配符的參數(shù)。
4. 根據(jù)權(quán)利要求2所述的方法,其中每個(gè)過(guò)濾器規(guī)則還包括操作 字段,所述操作字段確定了響應(yīng)于所述分組匹配這樣的過(guò)濾器規(guī)則的 所述元組中所包括的參數(shù)而對(duì)所述分組將要進(jìn)行的操作。
5. 根據(jù)權(quán)利要求2所述的方法,其中每個(gè)過(guò)濾器規(guī)則還包括索引 字段,所述索引字段確定所述多個(gè)參數(shù)中的、被這樣的過(guò)濾器規(guī)則的 所述元組中所包括的那些參數(shù)。
6. 根據(jù)權(quán)利要求5所述的方法,其中每個(gè)過(guò)濾器規(guī)則的所述索引 字段包括位圖,所述位圖包括分配給所述多個(gè)參數(shù)中的每個(gè)參數(shù)的比 特。
7. 根據(jù)權(quán)利要求5所述的方法,還包括在訪問(wèn)所述第一過(guò)濾器規(guī) 則之后,調(diào)用由所述第一過(guò)濾器規(guī)則的所述索引字段所確定的規(guī)則檢 驗(yàn)功能,其中所述規(guī)則檢驗(yàn)功能被配置成,只測(cè)試所述多個(gè)參數(shù)中的、 所述第 一過(guò)濾器規(guī)則的所述元組中所包括的那些參數(shù)。
8. 根據(jù)權(quán)利要求7所述的方法,其中調(diào)用所述規(guī)則檢驗(yàn)功能包括 訪問(wèn)由所述索引字段規(guī)定的功能表,所述功能表包括多個(gè)表?xiàng)l目,每個(gè)條目包括到規(guī)則檢驗(yàn)功能的指針。
9. 根據(jù)權(quán)利要求8所述的方法,其中,所述過(guò)濾器規(guī)則集的所述 元組被存儲(chǔ)在元組列表中,其中所述功能表中的每個(gè)表?xiàng)l目包括元組 長(zhǎng)度字段,用于確定與這樣的表?xiàng)l目有關(guān)的所述元組的長(zhǎng)度,該方法 還包括調(diào)用規(guī)則搜索功能以搜索所述過(guò)濾器規(guī)則集中的匹配過(guò)濾器規(guī) 則,其中所述規(guī)則搜索功能被配置成,訪問(wèn)所述功能表中的表?xiàng)l目的 元組長(zhǎng)度字段,以定位在所述元組列表中的下個(gè)元組。
10. 根據(jù)權(quán)利要求2所述的方法,其中所述多個(gè)參數(shù)的每一個(gè)與 在分組中的字段相對(duì)應(yīng)。
11. 根據(jù)權(quán)利要求10所述的方法,其中所述多個(gè)參數(shù)包括源地址、 目的地地址、源端口、目的地端口及協(xié)議。
12. —種產(chǎn)生用在分組過(guò)濾中的過(guò)濾器規(guī)則的方法,該方法包括 對(duì)于多個(gè)過(guò)濾器規(guī)則的每一個(gè),從測(cè)試一個(gè)分組所基于的多個(gè)參數(shù)中確定所述多個(gè)參數(shù)的至少一個(gè)子集,這樣的過(guò)濾器規(guī)則基于所述 多個(gè)參數(shù)的所述至少一個(gè)子集來(lái)測(cè)試一個(gè)分組;和產(chǎn)生所述過(guò)濾器規(guī)則集,包括產(chǎn)生用于所述多個(gè)過(guò)濾器規(guī)則的可 變長(zhǎng)度的元組,其中為每個(gè)過(guò)濾器規(guī)則所產(chǎn)生的元組只包括由這樣的 過(guò)濾器規(guī)則測(cè)試一個(gè)分組所基于的那些被確定的參數(shù)。
13. 根據(jù)權(quán)利要求12所述的方法,其中產(chǎn)生所述過(guò)濾器規(guī)則集包 括,把所述多個(gè)過(guò)濾器規(guī)則的第一表示編譯成包括所產(chǎn)生的可變-長(zhǎng)度 元組的第二已編譯表示。
14. 根據(jù)權(quán)利要求12所述的方法,其中每個(gè)過(guò)濾器規(guī)則的所述元 組從所述多個(gè)參數(shù)省去任何標(biāo)有通配符的參數(shù)。
15. 根據(jù)權(quán)利要求12所述的方法,其中每個(gè)過(guò)濾器規(guī)則還包括操 作字段,所述操作字段確定了響應(yīng)于所述分組匹配這樣的過(guò)濾器規(guī)則 的所述元組中所包括的參數(shù)而對(duì)所述分組將要進(jìn)行的操作。
16. 根據(jù)權(quán)利要求12所述的方法,其中每個(gè)過(guò)濾器規(guī)則還包括索 引字段,所述索引字段確定所述多個(gè)參數(shù)中的、被這樣的過(guò)濾器規(guī)則 的所述元組中所包括的那些參數(shù)。
17. 根據(jù)權(quán)利要求16所述的方法,還包括為每個(gè)過(guò)濾器規(guī)則編譯一個(gè)規(guī)則檢驗(yàn)功能,其中每個(gè)過(guò)濾器規(guī)則 的所述規(guī)則檢驗(yàn)功能被配置成,只測(cè)試所述多個(gè)參數(shù)中的、這樣的過(guò) 濾器規(guī)則的所述元組中所包括的那些參數(shù);和產(chǎn)生功能表,所述功能表包括由每個(gè)過(guò)濾器規(guī)則的索引字段索引 的多個(gè)表?xiàng)l目,每個(gè)表?xiàng)l目被配置成確定與有關(guān)過(guò)濾器規(guī)則相關(guān)聯(lián)的 所述規(guī)則檢驗(yàn)功能。
18. 根據(jù)權(quán)利要求17所述的方法,其中所述過(guò)濾器規(guī)則集的所述 元組被存儲(chǔ)在元組列表中,其中所述功能表中的每個(gè)表?xiàng)l目包括元組 長(zhǎng)度字段,其確定與這樣的表?xiàng)l目有關(guān)的所述元組的長(zhǎng)度,每個(gè)表?xiàng)l 目的所述元組長(zhǎng)度字段被配置成,當(dāng)分組不匹配與這樣的表?xiàng)l目有關(guān) 的所述過(guò)濾器規(guī)則的所述元組中規(guī)定的所述參數(shù)時(shí),用來(lái)定位在所述 元組列表中的下個(gè)元組。
19. 一種i殳備,包括存儲(chǔ)器,配置成存儲(chǔ)過(guò)濾器規(guī)則集,其中所述過(guò)濾器規(guī)則集中的 所述過(guò)濾器規(guī)則包括可變長(zhǎng)度的元組;和控制邏輯,聯(lián)接到所述存儲(chǔ)器并且配置成,響應(yīng)于分組的接收, 訪問(wèn)來(lái)自所述存儲(chǔ)器的所述過(guò)濾器規(guī)則集中的第一過(guò)濾器規(guī)則,并且 基于所述第一過(guò)濾器規(guī)則對(duì)于所述分組選擇性地進(jìn)行操作。
20. 根據(jù)權(quán)利要求19所述的設(shè)備,其中所述過(guò)濾器規(guī)則集中的每 個(gè)過(guò)濾器規(guī)則規(guī)定了測(cè)試一分組所能夠基于的多個(gè)參數(shù)的至少 一個(gè)子 集,其中每個(gè)過(guò)濾器規(guī)則的所述元組只包括由這樣的過(guò)濾器規(guī)則測(cè)試 一個(gè)分組所基于的那些參數(shù),以及其中所述控制邏輯配置成,當(dāng)基于 所述第 一過(guò)濾器規(guī)則對(duì)所述分組選擇性地進(jìn)行操作時(shí),基于由所述第 一過(guò)濾器規(guī)則規(guī)定的所述參數(shù)測(cè)試所述分組。
21. 根據(jù)權(quán)利要求20所述的方法,其中,每個(gè)過(guò)濾器規(guī)則還包括 操作字段,所述操作字段確定了響應(yīng)于所述分組匹配這樣的過(guò)濾器規(guī) 則的所述元組中所包括的參數(shù)而對(duì)所述分組將要進(jìn)行的操作,以及索 引字段,所述索引字段確定所述多個(gè)參數(shù)中的、被這樣的過(guò)濾器規(guī)則的所述元組中所包括的那些參數(shù),其中所述控制邏輯還配置成,在訪 問(wèn)所述第 一過(guò)濾器規(guī)則之后,調(diào)用由所述第 一過(guò)濾器規(guī)則的所述索引 字段確定的規(guī)則檢驗(yàn)功能,以及其中所述規(guī)則檢驗(yàn)功能被配置成,只 測(cè)試所述多個(gè)參數(shù)中的、所述第 一過(guò)濾器規(guī)則的所述元組中所包括的 那些參數(shù)。
22. 根據(jù)權(quán)利要求21所述的設(shè)備,其中所述控制邏輯配置成,通 過(guò)訪問(wèn)由所述索引字段索引的功能表而調(diào)用所述規(guī)則檢驗(yàn)功能,所述 功能表包括多個(gè)表?xiàng)l目,每個(gè)條目包括到一個(gè)規(guī)則檢驗(yàn)功能的指針。
23. 根據(jù)權(quán)利要求22所述的設(shè)備,其中所述過(guò)濾器規(guī)則集的所述 元組被存儲(chǔ)在元組列表中,其中所述功能表中的每個(gè)表?xiàng)l目包括元組 長(zhǎng)度字段,所述元組長(zhǎng)度字段確定與這樣的表?xiàng)l目有關(guān)的所述元組的 長(zhǎng)度,其中所述控制邏輯配置成調(diào)用規(guī)則搜索功能以搜索所述過(guò)濾器 規(guī)則集中的一個(gè)匹配過(guò)濾器規(guī)則,其中所述規(guī)則搜索功能被配置成訪 問(wèn)所述功能表中的表?xiàng)l目的元組長(zhǎng)度字段,以識(shí)別在所述元組列表中 的下個(gè)元組。
24. 根據(jù)權(quán)利要求20所述的設(shè)備,其中所述多個(gè)參數(shù)的每一個(gè)與 在分組中的一字段相對(duì)應(yīng),并且其中所述多個(gè)參數(shù)包括源地址、目的 地地址、源端口、目的地端口及協(xié)i義。
全文摘要
可變-長(zhǎng)度元組被用在分組過(guò)濾器規(guī)則中,以優(yōu)化在分組過(guò)濾系統(tǒng)中的時(shí)間和/或空間效率??勺?長(zhǎng)度元組只存儲(chǔ)實(shí)施規(guī)則必需的參數(shù),并且理想地省去任何多余參數(shù)。索引字段也可以提供在每個(gè)規(guī)則中,以識(shí)別在所述規(guī)則的元組中存儲(chǔ)的參數(shù)的數(shù)量和類型,所述索引字段可選地被用來(lái)映像到該規(guī)則的優(yōu)化規(guī)則檢驗(yàn)功能。
文檔編號(hào)H04L29/06GK101175081SQ20071014118
公開(kāi)日2008年5月7日 申請(qǐng)日期2007年8月13日 優(yōu)先權(quán)日2006年10月30日
發(fā)明者戴維·A.·克里斯坦森 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司