
本申請涉及通訊
技術(shù)領(lǐng)域:
,尤其涉及一種基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾方法及裝置。
背景技術(shù):
:在網(wǎng)絡(luò)安全領(lǐng)域中,包過濾算法根據(jù)用戶配置的規(guī)則對進出網(wǎng)絡(luò)的數(shù)據(jù)包過濾,其中,根據(jù)匹配于數(shù)據(jù)包的規(guī)則對應(yīng)的過濾策略,對數(shù)據(jù)包進行過濾處理。傳統(tǒng)的包過濾算法以范圍(例如IP地址范圍,端口范圍等)的形式來配置規(guī)則。隨著用戶需求的變化,規(guī)則中的一些或全部字段(通常是IP地址字段)需要配置為通配符掩碼的形式。在相關(guān)技術(shù)中,先根據(jù)規(guī)則中通配符的位置將其拆分成不相交的多個范圍,然后根據(jù)得到的范圍將原有規(guī)則拆分成多條基于范圍表示的規(guī)則,再根據(jù)這些基于范圍表示的規(guī)則來對進出網(wǎng)絡(luò)的數(shù)據(jù)包進行過濾處理。然而,由于通常情況下由采用通配符掩碼表示的規(guī)則拆分出的范圍的數(shù)量較多,使得拆分后規(guī)則數(shù)量急劇增長,導(dǎo)致降低了對規(guī)則的匹配效率,從而進一步降低了對待過濾數(shù)據(jù)包的過濾效率。技術(shù)實現(xiàn)要素:有鑒于此,本申請?zhí)峁┮环N基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾方法及裝置,可以不需要將通配符掩碼規(guī)則拆分成多個基于范圍表示的規(guī)則,避免拆分后規(guī)則數(shù)量急劇增長的情況,從而提高匹配待過濾數(shù)據(jù)包對應(yīng)的規(guī)則的效率,進一步提高對待過濾數(shù)據(jù)包的過濾效率。為實現(xiàn)上述目的,本申請?zhí)峁┘夹g(shù)方案如下:根據(jù)本申請的第一方面,提出了一種基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾方法,包括:從接收到的待過濾數(shù)據(jù)包中提取預(yù)設(shè)bit位的數(shù)值,并按照預(yù)設(shè)算法將提取到的數(shù)值生成相應(yīng)的索引值;根據(jù)預(yù)定義的通配符掩碼規(guī)則對應(yīng)的規(guī)則索引表,確定對應(yīng)于所述索引值的所有通配符掩碼規(guī)則;其中,所述規(guī)則索引表中包含預(yù)定義的若干索引值與通配符掩碼規(guī)則的映射關(guān)系對,且每一索引值由映射的通配符掩碼規(guī)則中對應(yīng)于所述預(yù)設(shè)bit位的數(shù)值按照所述預(yù)設(shè)算法計算得到;在對應(yīng)于所述索引值的所有通配符掩碼規(guī)則中,確定匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則;根據(jù)匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則對應(yīng)的過濾策略,對所述待過濾數(shù)據(jù)包進行過濾處理。根據(jù)本申請的第二方面,提出了一種基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾裝置,包括:提取單元,從接收到的待過濾數(shù)據(jù)包中提取預(yù)設(shè)bit位的數(shù)值,并按照預(yù)設(shè)算法將提取到的數(shù)值生成相應(yīng)的索引值;第一確定單元,根據(jù)預(yù)定義的通配符掩碼規(guī)則對應(yīng)的規(guī)則索引表,確定對應(yīng)于所述索引值的所有通配符掩碼規(guī)則;其中,所述規(guī)則索引表中包含預(yù)定義的若干索引值與通配符掩碼規(guī)則的映射關(guān)系對,且每一索引值由映射的通配符掩碼規(guī)則中對應(yīng)于所述預(yù)設(shè)bit位的數(shù)值按照所述預(yù)設(shè)算法計算得到;第二確定單元,在對應(yīng)于所述索引值的所有通配符掩碼規(guī)則中,確定匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則;過濾單元,根據(jù)匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則對應(yīng)的過濾策略,對所述待過濾數(shù)據(jù)包進行過濾處理。由以上技術(shù)方案可見,在本申請的技術(shù)方案中,通過預(yù)設(shè)算法為所有的通配符掩碼規(guī)則創(chuàng)建相應(yīng)的規(guī)則索引表,只需要同樣通過該預(yù)設(shè)算法確定出待過濾數(shù)據(jù)包對應(yīng)的索引值,即可在匹配于該索引值的所有通配符掩碼規(guī)則中快速選取出該待過濾數(shù)據(jù)包對應(yīng)的通配符掩碼規(guī)則(相比于所有預(yù)定義通配符掩碼規(guī)則的數(shù)量,對應(yīng)于該索引值的通配符掩碼規(guī)則的數(shù)量已經(jīng)大大減少了),而無需將通配符掩碼規(guī)則拆分為數(shù)量龐大的范圍規(guī)則,一方面降低了對網(wǎng)絡(luò)設(shè)備的規(guī)則緩存空間的需求(該緩存空間用于存儲上述數(shù)量龐大的范圍規(guī)則),另一方面能夠提升對待過濾數(shù)據(jù)包的規(guī)則匹配效率,并有助于提升對待過濾數(shù)據(jù)包的過濾效率。附圖說明圖1是本申請一示例性實施例示出的一種基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾方法的流程圖。圖2A是本申請一示例性實施例示出的定義索引的流程圖。圖2B是本申請一示例性實施例示出的統(tǒng)計切分bit位使用次數(shù)的示意圖。圖3是本申請一示例性實施例示出的一種電子設(shè)備的結(jié)構(gòu)示意圖。圖4是本申請一示例性實施例示出的一種基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾裝置的框圖。具體實施方式這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。應(yīng)當理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應(yīng)于確定”。在相關(guān)技術(shù)中,當規(guī)則中的一些或全部字段(通常是IP地址字段)被配置為通配符掩碼的形式時,先根據(jù)規(guī)則中通配符的位置將其拆分成不相交的多個范圍,然后根據(jù)得到的范圍將原有規(guī)則拆分成多條基于范圍表示的規(guī)則,再根據(jù)這些基于范圍表示的規(guī)則來對進出網(wǎng)絡(luò)的數(shù)據(jù)包進行過濾處理。舉例而言,一個通配符掩碼規(guī)則由值(value)和掩碼(mask)兩部分組成,假定其具體形式如下所示:value:10011101010011101100111011010001mask:10100100101011100111110010010111其中,bit(比特)位的編號從左到右依次為1-32,mask中所有值為1的bit位表示該bit的值取決于value中對應(yīng)bit位的值,mask中所有值為0的bit位表示該bit位的值可以為任意值(0或1)。在上述這條規(guī)則中,如果一個待過濾數(shù)據(jù)包能夠匹配這條規(guī)則,就要求其第1、3、6、9、11、13、14、15、18、19、20、21、22、25、28、30、31、32bit位的值和value中對應(yīng)bit位的值相同。根據(jù)通配符掩碼的表示方式可以看出,若將該通配符掩碼規(guī)則拆分成不相交的多個范圍,則拆分后的范圍的數(shù)量是比較大的??梢?,在相關(guān)技術(shù)中,當匹配與待過濾數(shù)據(jù)包對應(yīng)的規(guī)則時,需要在數(shù)量龐大的規(guī)則中逐個匹配,導(dǎo)致降低了對規(guī)則的匹配效率,從而進一步降低了對待過濾數(shù)據(jù)包的過濾效率。因此,本申請通過改進匹配通配符掩碼規(guī)則的方式,以解決相關(guān)技術(shù)中存在的上述技術(shù)問題。為對本申請進行進一步說明,提供下列實施例:圖1是本申請一示例性實施例示出的一種基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾方法的流程圖,該方法可以應(yīng)用于過濾設(shè)備。如圖1所示,該方法可以包括以下步驟:步驟101,從接收到的待過濾數(shù)據(jù)包中提取預(yù)設(shè)bit位的數(shù)值,并按照預(yù)設(shè)算法將提取到的數(shù)值生成相應(yīng)的索引值。步驟102,根據(jù)預(yù)定義的通配符掩碼規(guī)則對應(yīng)的規(guī)則索引表,確定對應(yīng)于所述索引值的所有通配符掩碼規(guī)則。在本實施例中,所述規(guī)則索引表中包含預(yù)定義的若干索引值與通配符掩碼規(guī)則的映射關(guān)系對,且每一索引值由映射的通配符掩碼規(guī)則中對應(yīng)于所述預(yù)設(shè)bit位的數(shù)值按照所述預(yù)設(shè)算法計算得到。其中,所述預(yù)設(shè)算法可以為:將提取的數(shù)值按照預(yù)設(shè)順序排序;將排序后的數(shù)值生成為對應(yīng)的索引值。在本申請的技術(shù)方案中,可以將排序后的數(shù)值所代表的二進制換算成十進制,當然,也可以采取其他算法,比如直接將對應(yīng)于預(yù)設(shè)bit位的二進制數(shù)值作為索引值等,只需保證根據(jù)不同數(shù)值計算出的索引值也不同(即數(shù)值與索引值為一一對應(yīng))即可,本申請并不對此進行限制。在本實施例中,所有預(yù)定義的通配符掩碼規(guī)則在所述預(yù)設(shè)bit位上的數(shù)值,使任意不具有包含關(guān)系的通配符掩碼規(guī)則之間相互區(qū)分。由于通配符掩碼規(guī)則是二進制字符串,每個bit位上的數(shù)值為0或1,因而當兩條通配符掩碼規(guī)則在同一bit位上的取值不同時,即可對這兩條通配符掩碼規(guī)則進行區(qū)分;而當存在更多通配符掩碼規(guī)則時,可以通過選取更多數(shù)量的bit位,從而通過這些通配符掩碼規(guī)則在這些被選取的bit位上的數(shù)值之間的差異,即可對這些通配符掩碼規(guī)則進行相互區(qū)分,而這些通配符掩碼規(guī)則在這些被選取的bit位上的數(shù)值或基于這些數(shù)值計算出的其他相關(guān)數(shù)值,即可作為對應(yīng)于該通配符掩碼規(guī)則的索引值,以指向?qū)?yīng)的通配符掩碼規(guī)則。而對于這些bit位的選取方式,具體可以包括:判斷是否存在滿足下述條件的分組:所述分組中包含多個不具有包含關(guān)系的通配符掩碼規(guī)則;其中,所有預(yù)定義的通配符掩碼規(guī)則最初被劃分至同一分組;當存在滿足所述條件的任一分組時,選取所述任一分組對應(yīng)的切分bit位,并按照所述任一分組中的各個通配符掩碼規(guī)則在被選取的切分bit位的取值,將所述任一分組中的通配符掩碼規(guī)則劃分至兩個分組;當不存在滿足所述條件的分組時,分別統(tǒng)計每個被選取的切分bit位對應(yīng)的使用次數(shù),按照使用次數(shù)從大到小的順序依次選取k個切分bit位作為所述預(yù)設(shè)bit位,其中k為正整數(shù)。而對于使用次數(shù)的統(tǒng)計,可以分別確定每個分組對應(yīng)的切分bit位,并進一步統(tǒng)計每一切分bit位的對應(yīng)分組的數(shù)量,以作為該bit位的使用次數(shù);其中,每一分組對應(yīng)的切分bit位能夠?qū)⒃摲纸M中的通配符掩碼規(guī)則區(qū)別于其他所有通配符掩碼規(guī)則。在本申請的技術(shù)方案中,可以通過下述公式選取所述任一分組中的切分bit位:bit[i].zero表示所述任一分組中第i個bit位為0的規(guī)則數(shù)量;bit[i].one表示所述任一分組中第i個bit位為1的規(guī)則數(shù)量;bit[i].star表示所述任一分組中第i個bit位為通配符的規(guī)則數(shù)量。通過該公式選取出的切分bit位,可以使得分組結(jié)果趨向于平均分配,并減少選取的切分bit位的數(shù)量。步驟103,在對應(yīng)于所述索引值的所有通配符掩碼規(guī)則中,確定匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則。在本實施例中,在一種情況下,同一索引值可能只對應(yīng)一個通配符掩碼規(guī)則,當根據(jù)從待過濾數(shù)據(jù)包提取的數(shù)值計算生成該索引值時,需要進一步確定該索引值對應(yīng)的這個通配符掩碼規(guī)則是否匹配于該待過濾數(shù)據(jù)包。在另一種情況下,同一索引值可能對應(yīng)多個通配符掩碼規(guī)則,因此需要在該多個通配符掩碼規(guī)則中確定匹配于待過濾數(shù)據(jù)包的通配符掩碼規(guī)則。但即使可能存在上述同一索引值對應(yīng)多個通配符掩碼規(guī)則的情況,在匹配對應(yīng)于待過濾數(shù)據(jù)包的通配符掩碼規(guī)則時,也可以降低匹配的次數(shù)(因為相比于所有預(yù)定義的通配符掩碼規(guī)則的數(shù)量,對應(yīng)于該索引值的通配符掩碼規(guī)則的數(shù)量已經(jīng)大大減少了),從而提升了對待過濾數(shù)據(jù)包的規(guī)則匹配效率。在又一種情況下,當索引值對應(yīng)的內(nèi)容為空時,即不存在對應(yīng)的通配符掩碼規(guī)則,可以判定為待過濾數(shù)據(jù)包不存在相匹配的規(guī)則,可以不對該數(shù)據(jù)包進行過濾處理。步驟104,根據(jù)匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則對應(yīng)的過濾策略,對所述待過濾數(shù)據(jù)包進行過濾處理。由以上技術(shù)方案可見,在本申請的技術(shù)方案中,通過預(yù)設(shè)算法為所有的通配符掩碼規(guī)則創(chuàng)建相應(yīng)的規(guī)則索引表,只需要同樣通過該預(yù)設(shè)算法確定出待過濾數(shù)據(jù)包對應(yīng)的索引值,即可在匹配于該索引值的所有通配符掩碼規(guī)則中快速選取出該待過濾數(shù)據(jù)包對應(yīng)的通配符掩碼規(guī)則(相比于所有預(yù)定義通配符掩碼規(guī)則的數(shù)量,對應(yīng)于該索引值的通配符掩碼規(guī)則的數(shù)量已經(jīng)大大減少了),而無需將通配符掩碼規(guī)則拆分為數(shù)量龐大的范圍規(guī)則,一方面降低了對網(wǎng)絡(luò)設(shè)備的規(guī)則緩存空間的需求(該緩存空間用于存儲上述數(shù)量龐大的范圍規(guī)則),另一方面能夠提升對待過濾數(shù)據(jù)包的規(guī)則匹配效率,并有助于提升對待過濾數(shù)據(jù)包的過濾效率。在實現(xiàn)基于本申請的技術(shù)方案時,其處理過程可以分為兩個階段:1)第一階段:創(chuàng)建規(guī)則索引表;2)第二階段:匹配規(guī)則。下面分別對這兩個階段進行詳細描述。1)創(chuàng)建規(guī)則索引表請參見圖2A,圖2A是本申請一示例性實施例示出的創(chuàng)建規(guī)則索引表的流程圖,如圖2A所示,該定義過程可以包括以下步驟:步驟201,選取切分bit位。步驟202,判斷是否可以繼續(xù)選取切分bit位,若可以繼續(xù)選取,則轉(zhuǎn)入步驟201,否則轉(zhuǎn)入步驟203。步驟203,統(tǒng)計切分bit位。在本實施例中,先對所有的通配符掩碼規(guī)則進行統(tǒng)計,統(tǒng)計所有通配符掩碼規(guī)則在各個bit位上的數(shù)值的取值情況,然后再根據(jù)公式選取切分bit位。在選取完一次切分bit位后,判斷是否存在滿足下述條件的分組:分組中包含多個不具有包含關(guān)系的通配符掩碼規(guī)則(所有預(yù)定義的通配符掩碼規(guī)則最初被劃分至同一分組);當存在滿足條件的任一分組時,繼續(xù)選取該任一分組對應(yīng)的切分bit位,并按照該任一分組中的各個通配符掩碼規(guī)則在被選取的切分bit位上的取值,將該任一分組中的通配符掩碼規(guī)則劃分至兩個分組;當不存在滿足所述條件的分組時,分別統(tǒng)計每個被選取的切分bit位對應(yīng)的使用次數(shù),按照使用次數(shù)從大到小的順序依次選取k個切分bit位作為所述預(yù)設(shè)bit位,其中k為正整數(shù)。而對于使用次數(shù)的統(tǒng)計,可以分別確定每個分組對應(yīng)的切分bit位,并進一步統(tǒng)計每一切分bit位的對應(yīng)分組的數(shù)量,以作為該bit位的使用次數(shù);其中,每一分組對應(yīng)的切分bit位能夠?qū)⒃摲纸M中的通配符掩碼規(guī)則區(qū)別于其他所有通配符掩碼規(guī)則。選取切分bit位的公式如下:bit[i].zero表示所述任一分組中第i個bit位為0的規(guī)則數(shù)量;bit[i].one表示所述任一分組中第i個bit位為1的規(guī)則數(shù)量;bit[i].star表示所述任一分組中第i個bit位為通配符的規(guī)則數(shù)量;當計算結(jié)果中最小值對應(yīng)多個bit位時,選取其中任一bit位作為切分bit位。通過該公式選取出的切分bit位,可以使得分組結(jié)果趨向于平均分配(切分后的兩個分組中包含的規(guī)則數(shù)量盡可能相近),并減少選取的切分bit位的數(shù)量。舉例而言,假定共有a、b、c、d、e5條通配符掩碼規(guī)則,具體如表1所示:表1統(tǒng)計所有通配符掩碼規(guī)則在各個bit位上的數(shù)值的取值情況,統(tǒng)計結(jié)果如表2所示:bit_stat[1].zero2bit_stat[1].one3bit_stat[1].star0bit_stat[2].zero3bit_stat[2].one0bit_stat[2].star2bit_stat[3].zero0bit_stat[3].one3bit_stat[3].star2bit_stat[4].zero0bit_stat[4].one0bit_stat[4].star5bit_stat[5].zero3bit_stat[5].one1bit_stat[5].star1bit_stat[6].zero2bit_stat[6].one3bit_stat[6].star0bit_stat[7].zero2bit_stat[7].one2bit_stat[7].star1bit_stat[8].zero0bit_stat[8].one4bit_stat[8].star1表2其中,bit位的編號從左到右依次為1-8,bit-i表示第i個bit位;bit_stat[i].zero表示bit-i值為0的規(guī)則個數(shù);bit_stat[i].one表示bit-i值為1的規(guī)則個數(shù);bit_stat[i].star表示bit-i為通配符的規(guī)則個數(shù)。所有通配符掩碼規(guī)則最初被劃分至同一分組,比如為group0(分組0)={a,b,c,d,e}。根據(jù)上述公式,選取切分bit位。其中,各個bit位根據(jù)|bit[i].zero-bit[i].one|+2bit[i].star計算分別得到:1、7、7、10、4、1、2、6??梢?,第1、6個bit位的值1是最小值,此處可以選擇第1個bit位,也可以選擇第6個bit位,本申請并不對此進行限制。比如選取第1個bit位,由于規(guī)則b、d在第1個bit位上的數(shù)值為0,而規(guī)則a、c、e在第1個bit位上的數(shù)值為1,所以第1個bit位可以將group0切分為兩個分組group1(分組1)={b,d},group2(分組2)={a,c,e}。然后對group1和group2進行切分,其切分過程與上述切分group0的過程類似,在此不再贅述。最終通過第5、6、7個bit位中任一bit位(假定選取的是第5個bit位),可以把group1切分為group3(分組3)=和group4(分組4)=6qys7n5sxhx7;通過第6個bit位可以把group2切分為group5(分組5)={c}和group6(分組6)={a,e}。因為剩下的分組group3,group4,group5中都僅包含一條通配符掩碼規(guī)則,同時group6中的規(guī)則e包含規(guī)則a,所以不需要再繼續(xù)切分了。此時,統(tǒng)計所有被選取的切分bit位,即第1、5、6個bit位。在選取預(yù)設(shè)bit位時,分別統(tǒng)計每個被選取的切分bit位對應(yīng)的使用次數(shù),按照使用次數(shù)從大到小的順序依次選取k個切分bit位作為所述預(yù)設(shè)bit位,其中k為正整數(shù)。在本申請的技術(shù)方案中,可以將k個使用次數(shù)最多的切分bit位作為預(yù)設(shè)bit位(因為同一切分bit位使用的次數(shù)越多,說明該切分bit位可以將越多的通配符掩碼規(guī)則盡可能平均分配),數(shù)量“k”是一個可配置的數(shù)值,在實際網(wǎng)絡(luò)環(huán)境中,可以根據(jù)過濾設(shè)備的內(nèi)存大小和通配符掩碼規(guī)則的個數(shù)進行動態(tài)調(diào)整,通常情況下,“k”的值越大,占用的內(nèi)存空間越大,但是對通配符掩碼規(guī)則的匹配效率會越高。假定k=3,如圖2B所示:group3和group4都對應(yīng)第1、5個bit位;group5和group6都對應(yīng)第1、6個bit位。因此確定第1個bit位的使用次數(shù)為4;第5個bit位的使用次數(shù)為2;第6個bit位的使用次數(shù)為2,即將第1、5、6個bit位作為預(yù)設(shè)bit位。步驟204,提取預(yù)設(shè)bit位上的數(shù)值并按照預(yù)設(shè)算法計算索引值。步驟205,根據(jù)計算得到的索引值創(chuàng)建規(guī)則索引表。在本實施例中,預(yù)設(shè)算法可以為:將提取的數(shù)值按照預(yù)設(shè)順序排序,并將排序后的數(shù)值所代表的二進制換算成十進制。當然,也可以采取其他算法,比如直接將對應(yīng)于預(yù)設(shè)bit位的二進制數(shù)值作為索引值等,只需保證根據(jù)不同數(shù)值計算出的索引值也不同(即數(shù)值與索引值為一一對應(yīng))即可,本申請并不對此進行限制。具體的,用選取的k個bit位相對應(yīng)的bit值來計算索引值。假設(shè)選擇的k個bit位為:bit-x1、bit-x2...bit-xi...bit-xk,其中x1<xi<xk。通配符掩碼規(guī)則中對應(yīng)bit位的value值為:mask值為:表示value中bit-xi的值,表示mask中bit-xi的值。當M中的值全為1(即沒有通配符)時,對應(yīng)的索引值為:其中,index表示索引值。當M中有r個值為0(即有r個通配符)時,對應(yīng)2r個索引值。當r=1,且時,對應(yīng)的2個索引值分別為:類似的,當r=2,且時,對應(yīng)的4個索引值分別為:舉例而言,假定預(yù)設(shè)順序為按照編號從小到大排列,當然,也可以是其他任意順序,本申請并不對此進行限制。承接于上述舉例,預(yù)設(shè)順序為1、5、6。規(guī)則a中的第1、5、6個bit位的mask值都為1,且第1、5、6個bit位對應(yīng)的value值分別為1、0、1,因此索引值為:1×22+0×21+1×20=5;規(guī)則b中的第1、5、6個bit位的mask值都為1,且第1、5、6個bit位對應(yīng)的value值分別為0、0、0,因此索引值為:0×22+0×21+0×20=0;規(guī)則c中的第1、5、6個bit位的mask值都為1,且第1、5、6個bit位對應(yīng)的value值分別為1、0、0,因此索引值為:1×22+0×21+0×20=4;規(guī)則d中的第1、5、6個bit位的mask值都為1,且第1、5、6個bit位對應(yīng)的value值分別為0、1、1,因此索引值為:0×22+1×21+1×20=3;規(guī)則e中的第1、6個bit位的mask值為1,第5個bit位的mask值為0(即第5個bit位的值可以是0或1,所以對應(yīng)兩個索引值),且第1、5、6個bit位對應(yīng)的value值分別為1、1、1,因此索引值分別為:1×22+0×21+1×20=5;1×22+1×21+1×20=7。待計算完索引值后,根據(jù)計算得到的索引值創(chuàng)建規(guī)則索引表,即建立索引值與通配符掩碼規(guī)則之間的映射關(guān)系,如表3所示:索引值01234567規(guī)則b--dca、e-e表3至此,創(chuàng)建規(guī)則索引表的階段完成。2)匹配規(guī)則在本申請的技術(shù)方案中,當接收到待過濾數(shù)據(jù)包時,提取該待過濾數(shù)據(jù)包中預(yù)設(shè)bit位的數(shù)值,并按照預(yù)設(shè)算法將提取到的數(shù)值計算生成相應(yīng)的索引值,再根據(jù)上述階段中創(chuàng)建的規(guī)則索引表,確定對應(yīng)于該索引值的所有通配符掩碼規(guī)則。舉例而言,假定接收到的待過濾數(shù)據(jù)包為:10110011。承接于上述舉例,預(yù)設(shè)bit位為第1、5、6個bit位,因此提取該待過濾數(shù)據(jù)包第1、5、6個bit位的數(shù)值,分別為1、0、0。那么計算對應(yīng)于該待過濾數(shù)據(jù)包的索引值為:1×22+0×21+0×20=4。根據(jù)表3中記錄的映射關(guān)系,確定索引值4對應(yīng)于規(guī)則c,因此將該待過濾數(shù)據(jù)包和規(guī)則c進行匹配。可見,該待過濾數(shù)據(jù)包除了第4個bit位之外,其他bit位都和規(guī)則c對應(yīng)的value值相等(規(guī)則c中除第4個bit位之外,其他bit位的mask值都為1,即其他bit位的值取決于value值),但由于規(guī)則c的第4個bit位的mask值為0,即第4個bit位的值可以是0或1,所以該待過濾數(shù)據(jù)包最終匹配到了規(guī)則c。在根據(jù)規(guī)則索引表確定匹配于索引值的所有通配符掩碼規(guī)則后,在對應(yīng)于索引值的所有通配符掩碼規(guī)則中確定對應(yīng)于待過濾數(shù)據(jù)包的通配符掩碼規(guī)則,再根據(jù)匹配到的通配符掩碼規(guī)則對應(yīng)的過濾策略對該待過濾數(shù)據(jù)包進行過濾處理。在本申請的技術(shù)方案中,通過預(yù)設(shè)算法為所有的通配符掩碼規(guī)則創(chuàng)建相應(yīng)的規(guī)則索引表,只需要同樣通過該預(yù)設(shè)算法確定出待過濾數(shù)據(jù)包對應(yīng)的索引值,即可在匹配于該索引值的所有通配符掩碼規(guī)則中快速選取出該待過濾數(shù)據(jù)包對應(yīng)的通配符掩碼規(guī)則(相比于所有預(yù)定義通配符掩碼規(guī)則的數(shù)量,對應(yīng)于該索引值的通配符掩碼規(guī)則的數(shù)量已經(jīng)大大減少了,比如索引值5對應(yīng)規(guī)則a、e),而無需將通配符掩碼規(guī)則拆分為數(shù)量龐大的范圍規(guī)則,一方面降低了對網(wǎng)絡(luò)設(shè)備的規(guī)則緩存空間的需求(該緩存空間用于存儲上述數(shù)量龐大的范圍規(guī)則),另一方面能夠提升對待過濾數(shù)據(jù)包的規(guī)則匹配效率,并有助于提升對待過濾數(shù)據(jù)包的過濾效率。圖3示出了根據(jù)本申請的一示例性實施例的電子設(shè)備的結(jié)構(gòu)示意圖。請參考圖3,在硬件層面,該電子設(shè)備包括處理器302、內(nèi)部總線304、網(wǎng)絡(luò)接口306、內(nèi)存308以及非易失性存儲器310,當然還可能包括其他業(yè)務(wù)所需要的硬件。處理器302從非易失性存儲器310中讀取對應(yīng)的計算機程序到內(nèi)存302中然后運行,在邏輯層面上形成基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾裝置。當然,除了軟件實現(xiàn)方式之外,本申請并不排除其他實現(xiàn)方式,比如邏輯器件抑或軟硬件結(jié)合的方式等等,也就是說以下處理流程的執(zhí)行主體并不限定于各個邏輯單元,也可以是硬件或邏輯器件。請參考圖4,在軟件實施方式中,該基于通配符掩碼規(guī)則的數(shù)據(jù)包過濾裝置可以包括提取單元401、第一確定單元402、第二確定單元403和過濾單元404。其中:提取單元401,從接收到的待過濾數(shù)據(jù)包中提取預(yù)設(shè)bit位的數(shù)值,并按照預(yù)設(shè)算法將提取到的數(shù)值生成相應(yīng)的索引值;第一確定單元402,根據(jù)預(yù)定義的通配符掩碼規(guī)則對應(yīng)的規(guī)則索引表,確定對應(yīng)于所述索引值的所有通配符掩碼規(guī)則;其中,所述規(guī)則索引表中包含預(yù)定義的若干索引值與通配符掩碼規(guī)則的映射關(guān)系對,且每一索引值由映射的通配符掩碼規(guī)則中對應(yīng)于所述預(yù)設(shè)bit位的數(shù)值按照所述預(yù)設(shè)算法計算得到;第二確定單元403,在對應(yīng)于所述索引值的所有通配符掩碼規(guī)則中,確定匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則;過濾單元404,根據(jù)匹配于所述待過濾數(shù)據(jù)包的通配符掩碼規(guī)則對應(yīng)的過濾策略,對所述待過濾數(shù)據(jù)包進行過濾處理??蛇x的,所有預(yù)定義的通配符掩碼規(guī)則在所述預(yù)設(shè)bit位上的數(shù)值,使任意不具有包含關(guān)系的通配符掩碼規(guī)則之間相互區(qū)分??蛇x的,通過以下方式選取所述預(yù)設(shè)bit位:判斷是否存在滿足下述條件的分組:所述分組中包含多個不具有包含關(guān)系的通配符掩碼規(guī)則;其中,所有預(yù)定義的通配符掩碼規(guī)則最初被劃分至同一分組;當存在滿足所述條件的任一分組時,選取所述任一分組對應(yīng)的切分bit位,并按照所述任一分組中的各個通配符掩碼規(guī)則在被選取的切分bit位的取值,將所述任一分組中的通配符掩碼規(guī)則劃分至兩個分組;當不存在滿足所述條件的分組時,分別統(tǒng)計每個被選取的切分bit位對應(yīng)的使用次數(shù),按照使用次數(shù)從大到小的順序依次選取k個切分bit位作為所述預(yù)設(shè)bit位,其中k為正整數(shù)??蛇x的,可以通過下述公式選取所述任一分組中的切分bit位:其中,bit[i].zero表示所述任一分組中第i個bit位為0的規(guī)則數(shù)量;bit[i].one表示所述任一分組中第i個bit位為1的規(guī)則數(shù)量;bit[i].star表示所述任一分組中第i個bit位為通配符的規(guī)則數(shù)量??蛇x的,所述預(yù)設(shè)算法為:將提取的數(shù)值按照預(yù)設(shè)順序排序;將排序后的數(shù)值生成為對應(yīng)的索引值。上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請保護的范圍之內(nèi)。當前第1頁1 2 3