一種數(shù)據(jù)包分類方法及裝置制造方法
【專利摘要】本發(fā)明提供一種數(shù)據(jù)包分類方法及裝置,所述方法包括:接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表ACL;根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。通過本發(fā)明提供的方法能夠提高數(shù)據(jù)包分類效率,在提高分類速度的同時能夠兼顧內(nèi)存消耗,以使匹配速度和內(nèi)存消耗更加平衡。
【專利說明】一種數(shù)據(jù)包分類方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字通信【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)包分類方法及裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)包分類是根據(jù)數(shù)據(jù)包包頭中的一個或幾個匹配域來劃分?jǐn)?shù)據(jù)包所歸屬的流,即將到達(dá)的數(shù)據(jù)包分為不同的數(shù)據(jù)流,再對不同的數(shù)據(jù)流進(jìn)行相應(yīng)的處理。其中,常用的匹配域有:源IP地址、目的IP地址、源端口、目的端口、協(xié)議等。
[0003]數(shù)據(jù)包分類的設(shè)置可以通過匹配ACL (Access Control List,,訪問控制列表)來完成。ACL大量應(yīng)用在報文過濾等應(yīng)用中。
[0004]一個ACL通常是若干具有優(yōu)先級的過濾規(guī)則組成,每條過濾規(guī)則,用以描述對數(shù)據(jù)報文的頭部中的幾個匹配域進(jìn)行匹配的特征條件,以及對應(yīng)的動作(例如permit和deny),該動作用來決定如何處理報文。
[0005]ACL的實現(xiàn)可基于硬件實現(xiàn),也可基于軟件實現(xiàn)。因基于硬件實現(xiàn)時靈活性差,且支持的匹配域有限,不利于修改和擴(kuò)展,故一般使用軟件實現(xiàn)的方法。
[0006]當(dāng)基于軟件實現(xiàn)時,ACL中表項的生成、存儲和修改,數(shù)據(jù)流的分析,匹配和流處理均由軟件實現(xiàn)。目前的ACL匹配算法主要使用的是線性匹配算法,即以ACL表項規(guī)則的序數(shù)從小到大(即規(guī)則的優(yōu)先級從高至低)進(jìn)行查找匹配,在匹配成功后即退出,根據(jù)匹配的結(jié)果對數(shù)據(jù)流進(jìn)行處理。這種方法在表項條目數(shù)較多,列表規(guī)模較大的情況下,因需要逐項匹配,所以匹配性能極低。
[0007]為克服以上匹配性能低的問題,目前應(yīng)用比較多的軟件包分類算法是基于計算幾何學(xué)點定位算法思想的各種變通算法,如HiCuts算法(Hierarchical IntelligentCuttings,智能層次分割算法)、在HiCuts算法基礎(chǔ)上改進(jìn)而來的算法(如HyperCuts)、RFC算法(Recursive Flow Classificat1n,RFC算法)等。其中,RFC算法的主要思想是將數(shù)據(jù)包分類問題看成一個將包頭中的S比特數(shù)據(jù)到T比特的classID的一個映射(T =1gN且N〈〈S,N是過濾規(guī)則的總數(shù))。如果預(yù)先計算出包頭中的這S位共2s種不同情況中每種情況所對應(yīng)的classID值。那么每一個包只需要一次查表,即一次內(nèi)存訪問就可以得到相應(yīng)的classID,但是這樣會消耗極大的空間。RFC的思想是映射不是通過一步來完成,而是通過多個階段(phase)完成,在進(jìn)行數(shù)據(jù)包分類之前已經(jīng)為每個階段建立的用于查找的映射表。然而,這些數(shù)據(jù)包分類算法雖然通過不同的方法提高了數(shù)據(jù)包分類速度,但由于它們一般都采用了決策樹結(jié)構(gòu),因此需要較大的內(nèi)存消耗。
[0008]綜上可以看出,現(xiàn)有技術(shù)的數(shù)據(jù)包分類算法不是匹配速度慢就是內(nèi)存消耗多,面對數(shù)據(jù)量日益龐大的待分類數(shù)據(jù)包,如何均衡內(nèi)存消耗和匹配速度從而進(jìn)一步提高匹配效率是一個亟需解決的冋題。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的是提供一種,以克服相關(guān)技術(shù)中數(shù)據(jù)包分類效率低的問題。
[0010]一方面,本發(fā)明提供一種數(shù)據(jù)包分類方法,包括:
[0011]接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表ACL;
[0012]根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。
[0013]另一方面,本發(fā)明還提供一種數(shù)據(jù)包分類裝置,包括:
[0014]第一確定模塊,用于接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表ACL ;
[0015]匹配模塊,用于根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。本發(fā)明至少具有以下有益效果:對用于進(jìn)行數(shù)據(jù)包分類的ACL進(jìn)行預(yù)處理,根據(jù)ACL的不同特征,確定適用于具有不同特征的ACL的匹配方法,從而實現(xiàn)為具有不同特征的ACL的較佳的匹配方案,例如對于過濾規(guī)則數(shù)較少的ACL采用線性匹配算法,算法簡單,能夠消耗較低的內(nèi)存,匹配速度也容易滿足要求,對于過濾規(guī)則數(shù)較多,匹配域較多較大的ACL可以根據(jù)該ACL是否頻繁被修改,然后將該類ACL劃分為穩(wěn)定性ACL和靈活A(yù)CL,對于穩(wěn)定性ACL可以采用RFC算法匹配,從而能夠保證匹配速度的同時,均衡內(nèi)存消耗;對于靈活性ACL可以采用HiCuts算法,以便于在日后修改ACL時能夠及時響應(yīng)該修改操作,提高修改的效率。由此可見,本發(fā)明實施例通過為具有不同特征的ACL進(jìn)行預(yù)處理,以為不同的ACL配置不同的匹配方法,能夠有效的提高匹配ACL的速度,進(jìn)而提高數(shù)據(jù)包分類的效率。此外,本發(fā)明通過對RFC算法和HiCuts算法進(jìn)行改進(jìn),在提高分類速度的同時能夠兼顧內(nèi)存消耗,以使匹配速度和內(nèi)存消耗更加平衡。
[0016]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
【專利附圖】
【附圖說明】
[0017]圖1為本發(fā)明實施例中數(shù)據(jù)包分類方法的示例性流程圖;
[0018]圖2為現(xiàn)有技術(shù)中RFC算法進(jìn)行匹配查找的示例性流程圖;
[0019]圖3為本發(fā)明實施例中數(shù)據(jù)包分類方法中改進(jìn)RFC算法的示意圖之一;
[0020]圖4為本發(fā)明實施例中數(shù)據(jù)包分類方法中改進(jìn)RFC算法的示意圖之二 ;
[0021]圖5為本發(fā)明實施例中數(shù)據(jù)包分類方法的另一示例性流程圖;
[0022]圖6為本發(fā)明實施例中數(shù)據(jù)包分類裝置的示意圖之一;
[0023]圖7為本發(fā)明實施例中數(shù)據(jù)包分類裝置的示意圖之二。
【具體實施方式】
[0024]以下結(jié)合說明書附圖對本發(fā)明的優(yōu)選實施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明,并且在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
[0025]本發(fā)明實施例提供一種數(shù)據(jù)包分類方法,在本發(fā)明提供的分類方法中,對用于進(jìn)行數(shù)據(jù)包分類的ACL進(jìn)行預(yù)處理,根據(jù)ACL的不同特征,確定適用于具有不同特征的ACL的匹配方法,從而實現(xiàn)為具有不同特征的ACL的較佳的匹配方案,例如對于過濾規(guī)則數(shù)較少的ACL采用線性匹配算法,算法簡單,能夠消耗較低的內(nèi)存,匹配速度也容易滿足要求,對于過濾規(guī)則數(shù)較多,匹配域較多較大的ACL可以根據(jù)該ACL是否頻繁被修改,然后將該類ACL劃分為穩(wěn)定性ACL和靈活A(yù)CL,對于穩(wěn)定性ACL可以采用RFC算法匹配,從而能夠保證匹配速度的同時,均衡內(nèi)存消耗;對于靈活性ACL可以采用HiCuts算法,以便于在日后修改ACL時能夠及時響應(yīng)該修改操作,提高修改的效率。由此可見,本發(fā)明實施例通過為具有不同特征的ACL進(jìn)行預(yù)處理,以為不同的ACL配置不同的匹配方法,能夠有效的提高匹配ACL的速度,進(jìn)而提高數(shù)據(jù)包分類的效率。此外,本發(fā)明實施例中還可以通過對RFC算法和HiCuts算法進(jìn)行改進(jìn),以提高匹配查找的工作效率,進(jìn)而進(jìn)一步提高數(shù)據(jù)包分類的效率。下面對本發(fā)明實施例中提供的數(shù)據(jù)包分類方法進(jìn)行詳細(xì)說明。
[0026]實施例一
[0027]如圖1所示,為本發(fā)明實施例中數(shù)據(jù)包分類方法的示例性流程圖,該方法包括以下步驟:
[0028]步驟101:接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表 ACL0
[0029]步驟102:根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。
[0030]其中,在一個實施例中,對于過濾規(guī)則數(shù)較少的ACL采用線性匹配算法還是其他復(fù)雜的分類算法(如RFC算法),對于該類ACL的匹配速度上并無太大差別,反而輔助的分類算法會消耗更多的內(nèi)存,因此對于過濾規(guī)則數(shù)較少的ACL采用線性匹配算法即可。為綜合衡量匹配速度和內(nèi)存消耗,結(jié)合數(shù)據(jù)包分類算法的特性,本發(fā)明實施例中,當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配:
[0031]I)、當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率小于等于預(yù)設(shè)頻率時采用第一包分類算法進(jìn)行匹配,所述第一包分類算法為具有以下特征的算法:表項改變后,需要重新建立映射表的非線性匹配算法。
[0032]其中,當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率小于等于預(yù)設(shè)頻率時說明該類ACL比較穩(wěn)定,短期內(nèi)不會改變,這樣,可以以提高匹配速度為優(yōu)先,采用匹配速度高的分類算法,例如RFC算法。
[0033]2)、當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率大于預(yù)設(shè)頻率時采用第二包分類算法進(jìn)行匹配,所述第二分類算法為具有以下特征的算法:表項改變后,需要更新之前建立的映射表的非線性匹配算法。
[0034]其中,當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率大于預(yù)設(shè)頻率時說明該類ACL的過濾規(guī)則數(shù)目及過濾規(guī)則內(nèi)容容易發(fā)生改變,因此,可以以提高匹配速度兼顧能夠及時響應(yīng)對ACL的更改為優(yōu)先,采用匹配速度高且能夠及時響應(yīng)ACL修改操作的分類算法。其中,在一個實施例中,所述第二包分類算法為HiCuts算法,或者,改進(jìn)的HiCuts算法。
[0035]以上,通過過濾規(guī)則數(shù)量和預(yù)設(shè)時長內(nèi)的修改頻率,實現(xiàn)了將ACL劃分為具有不同特征的ACL集合中。進(jìn)一步的,通過使具有不同特征的ACL使用適用于該類ACL的匹配方法,使得本發(fā)明實施例提供的數(shù)據(jù)包分類方法能夠適用于不同的ACL,易于實現(xiàn)對數(shù)據(jù)包分類的擴(kuò)展,和提高數(shù)據(jù)包分類的效率。
[0036]其中,在RFC算法中,進(jìn)行數(shù)據(jù)包分類時需要經(jīng)過多個階段進(jìn)行查找匹配,每個階段的結(jié)果是將一個較大的集合映射成一個較小的集合,稱其為一次縮減(reduct1n)。RFC算法共分為P個階段。每個階段查找的結(jié)果值比用于查找的索引值要短(故稱為一次縮減)。如圖2所示,以匹配域有3個為例,對RFC算法的匹配查找過程進(jìn)行說明:
[0037]I)在第一階段(Phase O),以預(yù)先為每個域建立的表為索引。其中,一個匹配域在該階段對應(yīng)一個表,以匹配域為IP地址為例,IP地址域數(shù)據(jù)長度若為32位,在該階段則已預(yù)先建立一個232 (即4294967296)長度的chunk表,和一個表征該域規(guī)則復(fù)雜度的eqlD表,當(dāng)進(jìn)行數(shù)據(jù)包分類時,以待分類數(shù)據(jù)包的IP為索引chunk表和eqlD表中得到查找結(jié)果。
[0038]2)從第2階段開始,每次用于繼續(xù)查找的索引值都是由前幾個階段的查找結(jié)果合并而成的。
[0039]3)在最后一個階段,查找的結(jié)果得到一個值即classID。
[0040]當(dāng)使用RFC算法進(jìn)行ACL匹配實現(xiàn)數(shù)據(jù)包分類時,在第一階段,每個匹配域仍然以線性匹配算法進(jìn)行查找,由于一個匹配域?qū)?yīng)一個chunk表和一個eqlD表,而這兩個包中的表項又多,因此開第一階段的匹配查找的效率較低。因此,在一個實施例中,為進(jìn)一步提高匹配效率,進(jìn)入提高數(shù)據(jù)包分類效率,可以對RFC算法進(jìn)行改進(jìn),將改進(jìn)的RFC算法作為第一包分類算法,當(dāng)所述ACL所屬的預(yù)設(shè)匹配方法為第一包分類算法時,通過改進(jìn)的RFC算法對所述待分類數(shù)據(jù)包進(jìn)行分類;
[0041 ] 其中,RFC算法的改進(jìn)方法如下:
[0042]在第一建表階段,針對任一匹配域,根據(jù)預(yù)設(shè)規(guī)則將該匹配域分割為至少兩個子匹配域,為每一個子匹配域生成一個chunk表和eqlD表;并在第二建表階段將初始建表階段中屬于同一匹配域的至少兩個子匹配域的匹配結(jié)果合并用于在之后階段作為查詢的索弓丨,以使查詢總階段數(shù)控制在預(yù)設(shè)階段數(shù)之內(nèi)。
[0043]例如IP地址為匹配域時,若IP地址為32位,而將其劃分為大小為4*8的子匹配±或,則只需要4個28長度的表,即4個256長度的chunk表,從而有效的減少了內(nèi)存消耗。而在第一階段,進(jìn)行匹配查找時,因為可以從4個表中并行查找,還可以提高在第一階段的匹配查找的速度。
[0044]其中,在一個實施例中,所述根據(jù)預(yù)設(shè)規(guī)則將該匹配域分割為至少兩個子匹配域,具體包括:
[0045]I)、當(dāng)ACL的過濾規(guī)則數(shù)大于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量大于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為大于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域。
[0046]其中,為了權(quán)衡匹配速度和內(nèi)存消耗,可以采用如圖3所示的建表方法。在圖3中,將匹配域劃分為較多的子匹配域,從而可以通過劃分匹配域降低內(nèi)存消耗,提高第一階段的匹配速度,但當(dāng)子匹配域較多時,相應(yīng)的建表階段數(shù)也會增加,這樣會增加建表階段數(shù),即增加匹配查找的階段數(shù),會影響第一階段之后整體的匹配查找的速度,因此要將建表階段數(shù)控制在預(yù)設(shè)的階段數(shù)內(nèi),以權(quán)衡匹配速度和內(nèi)存消耗。由此可見,該劃分匹配域建表的方法是一種以節(jié)約內(nèi)存消耗為優(yōu)先的劃分匹配域的方法。需要說明的是,節(jié)約內(nèi)存消耗為優(yōu)先的劃分匹配域的方法并不僅限于圖3所示的方法,用戶可以視自己的需求合理劃分匹配域。
[0047]2)、當(dāng)ACL的過濾規(guī)則數(shù)小于等于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量小于等于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為小于等于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域。
[0048]其中,為了權(quán)衡匹配速度和內(nèi)存消耗,可以采用如圖4所示的建表方法。在圖4中,將匹配域劃分為相對圖3的方法較少的子匹配域,相應(yīng)的減少了建表階段數(shù)提高匹配速度,但會占用較多的內(nèi)存,由此可見,該劃分匹配域建表的方法是一種以提高匹配速度為優(yōu)先的劃分匹配域的方法。需要說明的是,提高匹配速度優(yōu)先的劃分匹配域的方法并不僅限于圖4所示的方法,用戶可以視自己的需求合理劃分匹配域。
[0049]此外,本發(fā)明實施例中,對于其它的情況,如當(dāng)ACL的過濾規(guī)則數(shù)大于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量小于等于預(yù)設(shè)匹配域數(shù)量時,或者,當(dāng)ACL的過濾規(guī)則數(shù)小于等于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量大于預(yù)設(shè)匹配域數(shù)量時,可以根據(jù)需求配置選擇圖3或圖4所示的劃分匹配域建表的方法。
[0050]除了現(xiàn)有技術(shù)中HyperCuts算法作為一種改進(jìn)的HiCuts算法外,在本發(fā)明實施例中,還提出一種對HiCuts改進(jìn)的方法,具體的:
[0051]Hicuts算法通過在各個匹配域上進(jìn)行切割建立樹形結(jié)構(gòu)進(jìn)行匹配查找,其運算量和匹配查找效率基本由樹深度及葉子節(jié)點容忍度決定。故對其作如下改進(jìn):
[0052]I)、非等分優(yōu)化切割:在ACL的應(yīng)用場景中,有些匹配域其在實際應(yīng)用中分布較為集中,若按Hicuts算法中所描述的等分切割方式將會導(dǎo)致某些子樹間深度的巨大不平衡,導(dǎo)致匹配性能較差。如端口域取值范圍為O?65535,而常用的保留端口號范圍為I?1023,其中相對而言還有使用頻率更高的80端口(HTTP服務(wù)),21端口(FTP服務(wù))等。又如協(xié)議域取值為O?255,而其中常用的6(TCP協(xié)議),17 (UDP協(xié)議)幾乎占據(jù)了數(shù)據(jù)流的絕大多數(shù)。故可以通過分析匹配域高頻使用點作切割將更有利于子樹的平衡,減小樹深度,有利于提高匹配查找的速度。
[0053]2)、動態(tài)樹調(diào)整:增加葉子節(jié)點的容忍度,使得在對ACL進(jìn)行修改時,能夠減少的修改樹結(jié)構(gòu)的操作,以便快速響應(yīng)對ACL的修改。
[0054]此外,在本發(fā)明實施例中,當(dāng)對歸屬于第一包分類算法或第二包分類算法的ACL進(jìn)行修改,例如擴(kuò)展其匹配域、增加過濾規(guī)則等時,可以將用該類ACL進(jìn)行數(shù)據(jù)包分類的方法切換至線性匹配算法,在調(diào)整ACL并適應(yīng)性調(diào)整第一包分類算法或第二包分類算法后,在切換至調(diào)整后的對應(yīng)分類算法,從而更好的保障網(wǎng)絡(luò)通信。
[0055]綜上,本發(fā)明實施例,通過對ACL進(jìn)行預(yù)處理,根據(jù)ACL的不同特征,確定適用于具有不同特征的ACL的匹配方法,從而實現(xiàn)為具有不同特征的ACL的較佳的匹配方案,能夠有效的提高匹配ACL的速度,進(jìn)而提高數(shù)據(jù)包分類的效率。通過對RFC算法和HiCuts算法進(jìn)行改進(jìn),以提高匹配查找的工作效率,進(jìn)而進(jìn)一步提高數(shù)據(jù)包分類的效率。
[0056]實施例二
[0057]下面以一個實施例,對本發(fā)明實施例中數(shù)據(jù)包分類方法進(jìn)行詳細(xì)說明,如圖5所示,該方法包括以下步驟:
[0058]步驟501:獲得ACL的過濾規(guī)則數(shù),并統(tǒng)計ACL在預(yù)設(shè)時長內(nèi)被修改的頻率。
[0059]步驟502:對ACL進(jìn)行預(yù)處理,確定ACL所屬的匹配方法。
[0060]具體的:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;
[0061]當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率小于等于預(yù)設(shè)頻率時采用改進(jìn)的RFC算法進(jìn)行匹配;
[0062]當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率大于預(yù)設(shè)頻率時采用改進(jìn)的HiCuts算法進(jìn)行匹配。
[0063]步驟503:接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的ACL。
[0064]步驟504:步驟503中確定的ACL所屬的預(yù)設(shè)匹配方法為改進(jìn)的RFC算法,根據(jù)改進(jìn)的RFC算法將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類。
[0065]步驟505:當(dāng)確定需要修改步驟503中的確定的ACL時,將之后接收的用該ACL進(jìn)行分類的待分類數(shù)據(jù)包,通過線性匹配算法用該ACL進(jìn)行分類。
[0066]步驟506:當(dāng)修改ACL完成并重新建立改進(jìn)的RFC算法各階段的chunk表以及eqlD表以后,將重新建表后的改進(jìn)的RFC算法對用該ACL進(jìn)行分類的待分類數(shù)據(jù)包進(jìn)行分類。
[0067]本發(fā)明實施例,用適用于ACL的匹配方法進(jìn)行數(shù)據(jù)包分類,并在需要對ACL及匹配方法進(jìn)行調(diào)整時,用線性匹配算法進(jìn)行數(shù)據(jù)包分類,當(dāng)調(diào)整完成后,再切換至用調(diào)整完成的匹配方法進(jìn)行數(shù)據(jù)包分類,以保證網(wǎng)絡(luò)的正常運行。
[0068]基于相同的發(fā)明構(gòu)思,本發(fā)明實施例還提供一種數(shù)據(jù)包分類裝置,如圖6所示,該裝置包括:
[0069]第一確定模塊601,用于接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表ACL;
[0070]匹配模塊602,用于根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。
[0071 ] 其中,在一個實施例中,如圖7所示,所述裝置還包括:
[0072]第二確定模塊603,用于當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率小于等于預(yù)設(shè)頻率時采用第一包分類算法進(jìn)行匹配,所述第一包分類算法為具有以下特征的算法:表項改變后,需要重新建立映射表的非線性匹配算法;
[0073]第三確定模塊604,用于當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率大于預(yù)設(shè)頻率時采用第二包分類算法進(jìn)行匹配,所述第二分類算法為具有以下特征的算法:表項改變后,需要更新之前建立的映射表的非線性匹配算法。
[0074]其中,在一個實施例中,所述匹配模塊602用于將改進(jìn)的RFC算法作為第一包分類算法,當(dāng)所述ACL所屬的預(yù)設(shè)匹配裝置為第一包分類算法時,通過改進(jìn)的RFC算法對所述待分類數(shù)據(jù)包進(jìn)行分類;
[0075]其中,RFC算法的改進(jìn)裝置如下:
[0076]在第一建表階段,針對任一匹配域,根據(jù)預(yù)設(shè)規(guī)則將該匹配域分割為至少兩個子匹配域,為每一個子匹配域生成一個chunk表和eqlD表;并在第二建表階段將初始建表階段中屬于同一匹配域的至少兩個子匹配域的匹配結(jié)果合并用于在之后階段作為查詢的索弓丨,以使查詢總階段數(shù)控制在預(yù)設(shè)階段數(shù)之內(nèi)。
[0077]其中,在一個實施例中,如圖7所示,所述裝置還包括:
[0078]第一劃分模塊605,用于當(dāng)ACL的過濾規(guī)則數(shù)大于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量大于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為大于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域;
[0079]第二劃分模塊606,用于當(dāng)ACL的過濾規(guī)則數(shù)小于等于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量小于等于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為小于等于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域。
[0080]其中,在一個實施例中,所述匹配模塊602用于當(dāng)調(diào)整歸屬于第一包分類方算法或第二包分類算法的ACL時,用線性匹配算法對該ACL進(jìn)行匹配查找以實現(xiàn)數(shù)據(jù)包分類。
[0081]關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0082]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
[0083]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0084]這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0085]這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0086]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0087]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)包分類方法,其特征在于,所述方法包括: 接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表ACL ; 根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配,包括: 當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率小于等于預(yù)設(shè)頻率時采用第一包分類算法進(jìn)行匹配,所述第一包分類算法為具有以下特征的算法:表項改變后,需要重新建立映射表的非線性匹配算法; 當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率大于預(yù)設(shè)頻率時采用第二包分類算法進(jìn)行匹配,所述第二分類算法為具有以下特征的算法:表項改變后,需要更新之前建立的映射表的非線性匹配算法。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類包括: 將改進(jìn)的RFC算法作為第一包分類算法,當(dāng)所述ACL所屬的預(yù)設(shè)匹配方法為第一包分類算法時,通過改進(jìn)的RFC算法對所述待分類數(shù)據(jù)包進(jìn)行分類; 其中,RFC算法的改進(jìn)方法如下: 在第一建表階段,針對任一匹配域,根據(jù)預(yù)設(shè)規(guī)則將該匹配域分割為至少兩個子匹配域,為每一個子匹配域生成一個chunk表和eqlD表;并在第二建表階段將初始建表階段中屬于同一匹配域的至少兩個子匹配域的匹配結(jié)果合并用于在之后階段作為查詢的索引,以使查詢總階段數(shù)控制在預(yù)設(shè)階段數(shù)之內(nèi)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)規(guī)則將該匹配域分割為至少兩個子匹配域,包括: 當(dāng)ACL的過濾規(guī)則數(shù)大于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量大于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為大于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域; 當(dāng)ACL的過濾規(guī)則數(shù)小于等于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量小于等于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為小于等于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第二包分類算法為HiCuts算法,或者,改進(jìn)的HiCuts算法。
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類,包括: 當(dāng)調(diào)整歸屬于第一包分類方算法或第二包分類算法的ACL時,用線性匹配算法對該ACL進(jìn)行匹配查找以實現(xiàn)數(shù)據(jù)包分類。
7.一種數(shù)據(jù)包分類裝置,其特征在于,所述裝置包括: 第一確定模塊,用于接收待分類數(shù)據(jù)包,并確定對該待分類數(shù)據(jù)包進(jìn)行分類的訪問控制列表ACL ; 匹配模塊,用于根據(jù)所述ACL所屬的預(yù)設(shè)匹配方法,將所述待分類數(shù)據(jù)包與所述ACL進(jìn)行匹配,并根據(jù)匹配結(jié)果對所述待分類數(shù)據(jù)包進(jìn)行分類;其中,根據(jù)以下方法確定ACL所屬的預(yù)設(shè)匹配方法:當(dāng)ACL的過濾規(guī)則數(shù)小于等于第一預(yù)設(shè)數(shù)值時,確定該ACL采用線性匹配算法進(jìn)行匹配;當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值時,采用非線性匹配算法的包分類算法進(jìn)行匹配。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 第二確定模塊,用于當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率小于等于預(yù)設(shè)頻率時采用第一包分類算法進(jìn)行匹配,所述第一包分類算法為具有以下特征的算法:表項改變后,需要重新建立映射表的非線性匹配算法; 第三確定模塊,用于當(dāng)ACL的過濾規(guī)則數(shù)大于第一預(yù)設(shè)數(shù)值,且該ACL在預(yù)設(shè)時長內(nèi)被修改的頻率大于預(yù)設(shè)頻率時采用第二包分類算法進(jìn)行匹配,所述第二分類算法為具有以下特征的算法:表項改變后,需要更新之前建立的映射表的非線性匹配算法。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述匹配模塊用于將改進(jìn)的RFC算法作為第一包分類算法,當(dāng)所述ACL所屬的預(yù)設(shè)匹配裝置為第一包分類算法時,通過改進(jìn)的RFC算法對所述待分類數(shù)據(jù)包進(jìn)行分類; 其中,RFC算法的改進(jìn)裝置如下: 在第一建表階段,針對任一匹配域,根據(jù)預(yù)設(shè)規(guī)則將該匹配域分割為至少兩個子匹配域,為每一個子匹配域生成一個chunk表和eqlD表;并在第二建表階段將初始建表階段中屬于同一匹配域的至少兩個子匹配域的匹配結(jié)果合并用于在之后階段作為查詢的索引,以使查詢總階段數(shù)控制在預(yù)設(shè)階段數(shù)之內(nèi)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括: 第一劃分模塊,用于當(dāng)ACL的過濾規(guī)則數(shù)大于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量大于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為大于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域; 第二劃分模塊,用于當(dāng)ACL的過濾規(guī)則數(shù)小于等于第二預(yù)設(shè)數(shù)值,且該ACL的匹配域的數(shù)量小于等于預(yù)設(shè)匹配域數(shù)量時,針對每個匹配域,將該匹配域劃分為小于等于對應(yīng)的預(yù)設(shè)子匹配數(shù)量的子匹配域。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述匹配模塊用于當(dāng)調(diào)整歸屬于第一包分類方算法或第二包分類算法的ACL時,用線性匹配算法對該ACL進(jìn)行匹配查找以實現(xiàn)數(shù)據(jù)包分類。
【文檔編號】H04L12/813GK104486240SQ201410745366
【公開日】2015年4月1日 申請日期:2014年12月8日 優(yōu)先權(quán)日:2014年12月8日
【發(fā)明者】何濤 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司