專利名稱:一種實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及使用TCAM(Ternary ContentAddressable Memory,三重內(nèi)容可尋址存儲器)實現(xiàn)ACL/QoS(Access ControlList/Quality of Service,訪問控制列表/服務(wù)質(zhì)量)方面的技術(shù),主要應(yīng)用在路由器,交換機,防火墻,入侵檢測系統(tǒng)等網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
現(xiàn)今的網(wǎng)絡(luò)設(shè)備中,大多都需要實現(xiàn)ACL/QoS,這些技術(shù)中最關(guān)鍵部分就是規(guī)則匹配,但是因為規(guī)則中的字段很多,匹配方式也不同,所以當(dāng)規(guī)則很多時,匹配速度就成了性能瓶頸?,F(xiàn)以ACL舉例,傳統(tǒng)的ACL由五元組構(gòu)成源IP地址,目的IP地址,源端口號,目的端口號,協(xié)議。一般的實現(xiàn)中,IP地址使用前綴匹配,協(xié)議使用精確匹配,而端口則使用范圍匹配。目前實現(xiàn)ACL主要有兩種途徑,一種是使用軟件實現(xiàn),最典型的就是RFC(RecursiveFlow Classification,遞歸流分類)算法;另一種就是使用硬件實現(xiàn),最典型的就是TCAM。當(dāng)然硬件實現(xiàn)肯定比軟件快很多,尤其是在一些高速網(wǎng)絡(luò)中,一般都使用硬件進行加速。
TCAM是一種專用三重內(nèi)容可尋址存儲器,可以進行快速大量并行搜索。搜索的時候,存儲器中所有的條目同時與搜索關(guān)鍵字比較,搜索結(jié)果就是匹配項的物理地址。在進行條目匹配時,條目的每個位可以是0、1、x三種狀態(tài),如果是x,那么該位不參與比較,默認(rèn)是成功,否則關(guān)鍵字和條目的相應(yīng)位進行比較,如果相同則成功否則失敗。在比較過程中,如果某位不匹配,那么該條目匹配失?。蝗绻形欢计ヅ?,那么該條目匹配成功。
TCAM硬件的固有特性使得TCAM非常適合進行精確匹配和前綴匹配,這時可以使用TCAM直接表示這些字段。比如MAC(Media Access Control,介質(zhì)訪問控制)地址表、MPLS(Multi-protocol Label Switching,多協(xié)議標(biāo)簽交換)轉(zhuǎn)發(fā)表就是精確匹配,而IPv4/v6(Internet Protocol version 4/6,互聯(lián)網(wǎng)協(xié)議第四/六版)路由表則是前綴匹配。但是當(dāng)TCAM用于范圍匹配時,比如TCP/UDP(Transfer Control Protocol/User Datagram Protocol,傳輸控制協(xié)議/用戶數(shù)據(jù)報協(xié)議)端口范圍,那么這時就無法簡單的直接表示這些字段。
TCAM的范圍匹配問題一直是應(yīng)用TCAM的難點,而目前還沒有一個很好的方法來解決這個問題。中國專利基于TCAM的解決范圍匹配的并行IP包分類器及方法,申請?zhí)?00510011511,公開號1674557,使用了一種區(qū)域編碼法來解決范圍匹配問題,但是該方法有如下缺點需要對查找關(guān)鍵字進行處理,查找效率低,依賴規(guī)則庫,需要使用很多擴展位,支持范圍個數(shù)有限,更新效率低,需要占用額外的TCAM空間等。本發(fā)明實現(xiàn)了一種簡單的前綴擴展方法,可以有效的解決TCAM范圍匹配問題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種簡單易行的實現(xiàn)TCAM范圍匹配的前綴擴展方法,以解決TCAM應(yīng)用于ACL/QoS方面的范圍匹配問題。
為實現(xiàn)上述目的,本發(fā)明提出了一種實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,實現(xiàn)報文分類規(guī)則匹配中的端口范圍匹配或IP地址范圍匹配,其中,將規(guī)則中需要范圍匹配字段的起始值設(shè)為完全二叉樹的起始節(jié)點,迭代找出全部擴展前綴,該找出擴展前綴的步驟具體包括步驟一,判斷當(dāng)前節(jié)點是左孩子,還是右孩子;步驟二,若當(dāng)前節(jié)點為右孩子,則所述當(dāng)前節(jié)點單獨占用一個前綴,所述當(dāng)前節(jié)點的下一個節(jié)點設(shè)為新的當(dāng)前節(jié)點,并返回所述步驟一;步驟三,若當(dāng)前節(jié)點為左孩子,則所述當(dāng)前節(jié)點的最大右祖先節(jié)點占用一個前綴,所述當(dāng)前節(jié)點的所述最大右祖先節(jié)點的最右葉子節(jié)點的下一個節(jié)點設(shè)為新的當(dāng)前節(jié)點,并返回所述步驟一。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,當(dāng)節(jié)點中存在起始節(jié)點時,所述步驟一之前還包括將起始節(jié)點作為最初的當(dāng)前節(jié)點的步驟。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,當(dāng)節(jié)點中存在終止節(jié)點時,所述步驟一還包括以下步驟步驟31,判斷所述當(dāng)前節(jié)點是否大于或等于或小于所述終止節(jié)點;
步驟32,若所述當(dāng)前節(jié)點大于所述終止節(jié)點,則結(jié)束迭代;步驟33,若所述當(dāng)前節(jié)點等于所述終止節(jié)點,則結(jié)束迭代并將所述當(dāng)前節(jié)點加入擴展前綴中;步驟34,若所述當(dāng)前節(jié)點小于所述終止節(jié)點,則進行迭代。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,所述步驟三還包括以下步驟步驟41,將所述當(dāng)前節(jié)點的上一層祖先節(jié)點設(shè)為當(dāng)前祖先節(jié)點;步驟42,判斷所述當(dāng)前祖先節(jié)點是左孩子還是右孩子;步驟43,若所述當(dāng)前祖先節(jié)點是右孩子,則所述當(dāng)前祖先節(jié)點為所述當(dāng)前節(jié)點的最大右祖先節(jié)點;步驟44,若所述當(dāng)前祖先節(jié)點是左孩子,則將所述當(dāng)前祖先節(jié)點的上一層祖先節(jié)點設(shè)為新的當(dāng)前祖先節(jié)點,并返回步驟42。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,當(dāng)節(jié)點中存在終止節(jié)點時,所述步驟43還包括以下步驟步驟51,判斷所述當(dāng)前祖先節(jié)點的最右葉子節(jié)點是否大于所述終止節(jié)點;步驟52,若是,則將所述當(dāng)前祖先節(jié)點的下一層左孩子設(shè)為所述當(dāng)前節(jié)點的最右祖先節(jié)點;步驟53,若否,則所述當(dāng)前祖先節(jié)點即為所述當(dāng)前節(jié)點的最右祖先節(jié)點。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,當(dāng)節(jié)點中存在終止節(jié)點時,所述步驟44還包括以下步驟步驟61,判斷所述當(dāng)前祖先節(jié)點的最右葉子節(jié)點是否大于所述終止節(jié)點;步驟62,若是,則將所述當(dāng)前祖先節(jié)點的下一層左孩子設(shè)為所述當(dāng)前節(jié)點的最右祖先節(jié)點;步驟63,若否,則將所述當(dāng)前祖先節(jié)點的上一層祖先節(jié)點設(shè)為新的當(dāng)前祖先節(jié)點,并返回所述步驟42。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,判斷所述當(dāng)前祖先節(jié)點的覆蓋范圍是否大于所述終止節(jié)點,判斷公式如下L-1+POW2(level)≤N“L”表示所述當(dāng)前祖先節(jié)點覆蓋的起始葉子節(jié)點,“POW2(level)=2level”表示所述當(dāng)前祖先節(jié)點覆蓋的葉子節(jié)點個數(shù),“L-1+POW2(level)”就表示所述當(dāng)前祖先節(jié)點覆蓋的最右葉子節(jié)點,“N”表示所述終止節(jié)點。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,當(dāng)對Wbit字段進行擴展時,Wbit字段在范圍[1,2W-2]所擴展的前綴個數(shù)最多為2(W-1),所述完全二叉樹的高度為W+1,W表示字段bit位數(shù)。
上述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其中,當(dāng)對IP地址進行范圍匹配時,高位使用前綴表示,低位使用所述前綴擴展方法進行擴展。
采用本發(fā)明所述方法可以簡單有效地實現(xiàn)TCAM的范圍匹配。本發(fā)明不僅可以支持端口的范圍匹配,同時還可以支持IP地址的范圍匹配,為使用TCAM實現(xiàn)ACL/QoS提供了一個非常好的解決方法。它的優(yōu)點如下不改變查找關(guān)鍵字,查找效率高,不依賴規(guī)則庫,不使用擴展位,支持任意范圍,更新效率高,不占用額外的TCAM空間等。
圖1是本發(fā)明前綴擴展方法的概念描述示意圖;圖2是本發(fā)明前綴擴展方法的證明示意圖;圖3是本發(fā)明前綴擴展方法的流程圖;圖4是本發(fā)明查找最大右祖先節(jié)點的流程圖;圖5是本發(fā)明具體實施方式
的示意圖。
具體實施例方式
下面結(jié)合附圖對技術(shù)方案的實施作進一步的詳細(xì)描述本技術(shù)方案使用了很多完全二叉樹里的概念,圖1是本發(fā)明前綴擴展方法的概念描述示意圖。如圖1所示,包括以下概念a.孩子/父節(jié)點如果一個二叉樹中的某個節(jié)點有下一層節(jié)點,那么該節(jié)點就叫做它下一層節(jié)點的父節(jié)點;下一層節(jié)點就是該節(jié)點的孩子節(jié)點,左/右邊的孩子節(jié)點叫左/右孩子。注意孩子/父節(jié)點是一個層次相對概念。
b.兄弟/同層節(jié)點父節(jié)點相同的兩個節(jié)點叫兄弟節(jié)點;同層的其它節(jié)點稱為同層節(jié)點。兄弟節(jié)點也是同層節(jié)點。
c.左/右祖先節(jié)點一個節(jié)點沿其左/右側(cè)向上經(jīng)過的所有節(jié)點統(tǒng)稱為該節(jié)點的左/右祖先節(jié)點。
d.葉子/枝干節(jié)點最下一層節(jié)點稱為葉子節(jié)點;其它節(jié)點稱為枝干節(jié)點。葉子節(jié)點為第0層,枝干節(jié)點從第1層開始。
e.節(jié)點覆蓋范圍一個節(jié)點沿左右兩側(cè)包含的所有節(jié)點統(tǒng)稱為該節(jié)點的覆蓋范圍。
f.最大左/右祖先節(jié)點一個節(jié)點M相對于同層左邊/右邊的一個節(jié)點N有一個最大左/右祖先節(jié)點,該祖先節(jié)點在該層覆蓋的節(jié)點范圍中,最左/右邊的節(jié)點≥/≤節(jié)點N。
g.最左/右葉子節(jié)點一個枝干節(jié)點覆蓋的所有葉子節(jié)點中最左/右邊的節(jié)點稱為最左/右葉子節(jié)點。
本發(fā)明的設(shè)計思想在于通過使用一組前綴來表示一個范圍。例如4bit表示[3,12]將擴展成0011(3),01xx(4-7),10xx(8-11)和1100(12)。W-bit字段最多擴展成2(W-1)個前綴。
圖2是本發(fā)明前綴擴展方法的證明示意圖。如圖所示,要證明本方法必需要闡述以下幾個成立的命題,該些命題自身的證明過程,在這里不以說明了。以成立的命題包括a.在相同情況下,跨度越遠(yuǎn),所需要的前綴個數(shù)越多。相同情況是指兩個范圍的兩個起始節(jié)點和兩個終止節(jié)點都是左/右孩子。
b.對于兩個兄弟節(jié)點,左邊的節(jié)點是左孩子,在終止邊界相同的情況下,右邊的節(jié)點需要的前綴個數(shù)≥左邊節(jié)點。
c.對于兩個兄弟節(jié)點,右邊的節(jié)點是右孩子,在起始邊界相同的情況下,左邊的節(jié)點需要的前綴個數(shù)≥右邊節(jié)點。
在上述3個命題的前提下,可以推出下述結(jié)論1.當(dāng)起始節(jié)點是第一層枝干節(jié)點第一個節(jié)點的右孩子,終止節(jié)點是第一層枝干節(jié)點最后一個節(jié)點的左孩子時,所需要的前綴個數(shù)最多。
2.可以用遞歸法證明次內(nèi)層節(jié)點包絡(luò)線可以覆蓋上面所說的區(qū)域,所以次內(nèi)層節(jié)點的個數(shù)即是需要的最大前綴個數(shù)。
3.根據(jù)完全二叉樹特性可得Wbit字段在范圍[1,2W-2]所擴展的前綴個數(shù)最多為2(W-1)。
圖3是本發(fā)明前綴擴展方法的流程圖。如圖所示,對于給定范圍[M,N],該方法采用一個逐步迭代的過程,每個迭代過程找出一個前綴,直到找出所有的前綴,具體步驟描述如下步驟S301,把起始節(jié)點M賦給一個變量L,該變量用于迭代。
步驟S302,如果L>N則迭代結(jié)束跳到步驟S307。
步驟S303,如果L=N則迭代結(jié)束,將L節(jié)點加入擴展前綴中,然后跳到S307。
步驟S304,如果L是左孩子,跳到S306,判斷是否是左孩子只需要將LMOD2,如果為0則為左孩子,否則為右孩子。
步驟S305,L是右孩子,因為L是右孩子,所以不可能使用其祖先節(jié)點對其進行覆蓋,因此L必須單獨占一個前綴,將L節(jié)點加入擴展前綴中,同時把L指向其下一個節(jié)點,然后跳到步驟S302開始下一輪迭代。
步驟S306,L是左孩子,所以可以使用其祖先節(jié)點對其進行覆蓋。找到L的最大右祖先節(jié)點,該最大右祖先節(jié)點一定存在因為N>L,同時該最大右祖先節(jié)點滿足下面的條件該節(jié)點的最右葉子節(jié)點≤N,這樣就可以使用該祖先節(jié)點覆蓋一大片節(jié)點,把該最大右祖先節(jié)點加入擴展前綴中,同時把L指向該最大右祖先節(jié)點最右葉子節(jié)點的下一個節(jié)點,這正好是該祖先節(jié)點覆蓋的葉子節(jié)點區(qū)域,然后跳到S302開始下一輪迭代。
步驟S307,迭代結(jié)束。
圖4是本發(fā)明查找最大右祖先節(jié)點的流程圖。如圖所示,具體包括如下步驟步驟S401,設(shè)置變量level=1,ancestor=L÷2,level表示當(dāng)前的節(jié)點層次,最下面一層為0,ancestor表示祖先節(jié)點所在層的節(jié)點序號。因為祖先節(jié)點一定存在,所以先將這兩個變量設(shè)置成第一層祖先,即其父節(jié)點。該父節(jié)點在第一層,它所在層的節(jié)點序號為葉子節(jié)點序號L÷2,這是由完全二叉樹的特性確定的。
步驟S402,如果ancestor MOD2=0則跳到S404,即判斷ancestor節(jié)點是否是其父節(jié)點的左孩子。因為現(xiàn)在需要找最大右祖先節(jié)點,所以這個過程也是一個迭代的過程,所經(jīng)過的每一層節(jié)點都必須是其父節(jié)點的左孩子,這樣就可以保證是按向右上方向的路徑進行遍歷。
步驟S403,ancestor是右孩子,這時迭代結(jié)束,然后判斷當(dāng)前祖先節(jié)點的覆蓋范圍是否超過N,判斷公式如下L-1+POW2(level)≤NL是該祖先節(jié)點覆蓋的起始葉子節(jié)點,POW2(level)=2level表示該祖先節(jié)點覆蓋的葉子節(jié)點個數(shù),那么L-1+POW2(level)就表示該祖先節(jié)點覆蓋的最右葉子節(jié)點。如果最右葉子節(jié)點>N,那么說明覆蓋的區(qū)域已經(jīng)超過N,所以將level減1,即將祖先節(jié)點向下降一級,這樣就可以保證最右葉子節(jié)點≤N,因為現(xiàn)在的祖先節(jié)點在前一輪迭代過程中已經(jīng)滿足該條件。執(zhí)行完操作后跳到S405。
步驟S404,ancestor是左孩子,第一個條件滿足了,然后判斷該祖先節(jié)點的最右葉子節(jié)點是否超過N,判斷方法參見S403。如果超過則迭代結(jié)束,把level減1,跳到S405;否則說明該層的右祖先節(jié)點是合法的,然后繼續(xù)迭代上一層右祖先節(jié)點將level加1,ancestor除以2后跳到S402開始下一輪迭代。
步驟S405,迭代結(jié)束。
迭代完成后,L節(jié)點在level層的祖先節(jié)點即為當(dāng)前的最大右祖先節(jié)點。該祖先節(jié)點的表示方法如下假設(shè)使用W bits表示,那么L可以表示成bw-1…b1b0,其level層的最大右祖先節(jié)點表示方法是將L的低level位置成x,其它位不變,結(jié)果如下bw-1…blevel+1blevelxlevel-1…x1x0說明b表示為0/1,x表示任意。
目前的IP地址一般只支持前綴匹配,雖然也可以支持范圍匹配,但是范圍有限,并且限制的太死,如果要支持靈活的范圍匹配,那么如何實現(xiàn)呢?如果直接使用前綴擴展法,那么方法將變得復(fù)雜,另外擴展的條目也會太多,尤其是擴展IPv6地址時,所以這個方法行不通。根據(jù)IP地址的特點,即使支持范圍,主要也是對一些主機地址的限制,比如10.1.1.2~10.1.1.100。根據(jù)實際應(yīng)用情況,主機地址一般都是使用低位進行表示,而高位則是網(wǎng)絡(luò)地址,這時可以對IP地址采用如下方式表示網(wǎng)絡(luò)地址(高位)前綴匹配,采用前綴直接表示主機地址(低位)范圍匹配,采用前綴擴展方法進行擴展比如可以對IPv4地址的低8位進行前綴擴展,高24位使用前綴表示,這樣就可以靈活的實現(xiàn)IP地址的范圍匹配。
圖5是本發(fā)明具體實施方式
的示意圖。如圖5所示,W=4bit時的情況,根據(jù)公式可得最多需要2×(4-1)=6個前綴,范圍是[1,14],下面就使用上面的方法找出所有的前綴步驟S501,起點1是一個右孩子,因為1MOD2=1,所以將0001加入擴展前綴中,現(xiàn)在起點=1+1=2。
步驟S502,起點2是一個左孩子,因為2MOD2=0,找到它的最大右祖先節(jié)點為001x,該祖先節(jié)點的最右葉子節(jié)點=3≤14,把001x加入擴展前綴中,現(xiàn)在起點=3+1=4。
步驟S503,起點4是一個左孩子,因為4MOD2=0,找到它的最大右祖先節(jié)點為01xx,該祖先節(jié)點的最右葉子節(jié)點=7≤14,把01xx加入擴展前綴中,現(xiàn)在起點=7+1=8。
步驟S504,起點8是一個左孩子,因為8MOD2=0,找到它的最大右祖先節(jié)點為10xx,該祖先節(jié)點的最右葉子節(jié)點=11≤14,把10xx加入擴展前綴中,現(xiàn)在起點=11+1=12。
步驟S505,起點12是一個左孩子,因為12MOD2=0,找到它的最大右祖先節(jié)點為110x,該祖先節(jié)點的最右葉子節(jié)點=13≤14,把110x加入擴展前綴中,現(xiàn)在起點=13+1=14。
步驟S506,因為起點14=終點14,所以將1110加入擴展前綴中,這時迭代結(jié)束。
下面再以步驟S503為例,說明如何找最大右祖先節(jié)點步驟01,level=1,ancestor=4÷2=2。
步驟02,因為2MOD2=0(左孩子),4-1+POW2(1)=5≤14,所以level=1+1=2,ancestor=2÷2=1。
步驟03,因為1MOD2=1(右孩子)≠0,所以迭代結(jié)束,然后判斷4-1+POW2(2)=7≤14,說明當(dāng)前第2層的祖先節(jié)點是合法的最大右祖先節(jié)點。因為4表示成0100,所以該祖先節(jié)點表示成01xx。
經(jīng)過上面這些迭代過程后可以得到表示范圍[1,14]總共需要6個前綴分別如下
擴展前綴覆蓋范圍節(jié)點個數(shù)00011~11001x2~3201xx4~7410xx8~11 4110x12~13 2111014~14 1現(xiàn)在假設(shè)查找關(guān)鍵字中的字段值是6,那么0110與0001、001x、01xx、10xx、110x、1110進行TCAM匹配,可得只有01xx匹配,而01xx表示的范圍是[4-7],所以結(jié)果完全正確。
當(dāng)然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的普通技術(shù)人員當(dāng)可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.一種實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,實現(xiàn)報文分類規(guī)則匹配中的端口范圍匹配或IP地址范圍匹配,其特征在于,將規(guī)則中需要范圍匹配字段的起始值設(shè)為完全二叉樹的起始節(jié)點,迭代找出全部擴展前綴,該找出擴展前綴的步驟具體包括步驟一,判斷當(dāng)前節(jié)點是左孩子,還是右孩子;步驟二,若當(dāng)前節(jié)點為右孩子,則所述當(dāng)前節(jié)點單獨占用一個前綴,所述當(dāng)前節(jié)點的下一個節(jié)點設(shè)為新的當(dāng)前節(jié)點,并返回所述步驟一;步驟三,若當(dāng)前節(jié)點為左孩子,則所述當(dāng)前節(jié)點的最大右祖先節(jié)點占用一個前綴,所述當(dāng)前節(jié)點的所述最大右祖先節(jié)點的最右葉子節(jié)點的下一個節(jié)點設(shè)為新的當(dāng)前節(jié)點,并返回所述步驟一。
2.根據(jù)權(quán)利要求1所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,當(dāng)節(jié)點中存在起始節(jié)點時,所述步驟一之前還包括將起始節(jié)點作為最初的當(dāng)前節(jié)點的步驟。
3.根據(jù)權(quán)利要求1所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,當(dāng)節(jié)點中存在終止節(jié)點時,所述步驟一還包括以下步驟步驟31,判斷所述當(dāng)前節(jié)點是否大于或等于或小于所述終止節(jié)點;步驟32,若所述當(dāng)前節(jié)點大于所述終止節(jié)點,則結(jié)束迭代;步驟33,若所述當(dāng)前節(jié)點等于所述終止節(jié)點,則結(jié)束迭代并將所述當(dāng)前節(jié)點加入擴展前綴中;步驟34,若所述當(dāng)前節(jié)點小于所述終止節(jié)點,則進行迭代。
4.根據(jù)權(quán)利要求1所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,所述步驟三還包括以下步驟步驟41,將所述當(dāng)前節(jié)點的上一層祖先節(jié)點設(shè)為當(dāng)前祖先節(jié)點;步驟42,判斷所述當(dāng)前祖先節(jié)點是左孩子還是右孩子;步驟43,若所述當(dāng)前祖先節(jié)點是右孩子,則所述當(dāng)前祖先節(jié)點為所述當(dāng)前節(jié)點的最大右祖先節(jié)點;步驟44,若所述當(dāng)前祖先節(jié)點是左孩子,則將所述當(dāng)前祖先節(jié)點的上一層祖先節(jié)點設(shè)為新的當(dāng)前祖先節(jié)點,并返回步驟42。
5.根據(jù)權(quán)利要求4所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,當(dāng)節(jié)點中存在終止節(jié)點時,所述步驟43還包括以下步驟步驟51,判斷所述當(dāng)前祖先節(jié)點的最右葉子節(jié)點是否大于所述終止節(jié)點;步驟52,若是,則將所述當(dāng)前祖先節(jié)點的下一層左孩子設(shè)為所述當(dāng)前節(jié)點的最右祖先節(jié)點;步驟53,若否,則所述當(dāng)前祖先節(jié)點即為所述當(dāng)前節(jié)點的最右祖先節(jié)點。
6.根據(jù)權(quán)利要求4所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,當(dāng)節(jié)點中存在終止節(jié)點時,所述步驟44還包括以下步驟步驟61,判斷所述當(dāng)前祖先節(jié)點的最右葉子節(jié)點是否大于所述終止節(jié)點;步驟62,若是,則將所述當(dāng)前祖先節(jié)點的下一層左孩子設(shè)為所述當(dāng)前節(jié)點的最右祖先節(jié)點;步驟63,若否,則將所述當(dāng)前祖先節(jié)點的上一層祖先節(jié)點設(shè)為新的當(dāng)前祖先節(jié)點,并返回所述步驟42。
7.根據(jù)權(quán)利要求5、6所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,判斷所述當(dāng)前祖先節(jié)點的覆蓋范圍是否大于所述終止節(jié)點,判斷公式如下L-1+POW2(level)≤N“L”表示所述當(dāng)前祖先節(jié)點覆蓋的起始葉子節(jié)點,“POW2(level)=2level”表示所述當(dāng)前祖先節(jié)點覆蓋的葉子節(jié)點個數(shù),“L-1+POW2(level)”就表示所述當(dāng)前祖先節(jié)點覆蓋的最右葉子節(jié)點,“N”表示所述終止節(jié)點。
8.根據(jù)權(quán)利要求1所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,當(dāng)對Wbit字段進行擴展時,Wbit字段在范圍[1,2W-2]所擴展的前綴個數(shù)最多為2(W-1),所述完全二叉樹的高度為W+1,W表示字段bit位數(shù)。
9.根據(jù)權(quán)利要求1所述的實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,其特征在于,當(dāng)對IP地址進行范圍匹配時,高位使用前綴表示,低位使用所述前綴擴展方法進行擴展。
全文摘要
本發(fā)明提出了一種實現(xiàn)三重內(nèi)容可尋址存儲器范圍匹配的前綴擴展方法,實現(xiàn)報文分類規(guī)則匹配中的端口范圍匹配或IP地址范圍匹配,其中,將規(guī)則中需要范圍匹配字段的起始值設(shè)為完全二叉樹的起始節(jié)點,迭代找出全部擴展前綴,該找出擴展前綴的步驟具體包括步驟一,判斷當(dāng)前節(jié)點是左孩子,還是右孩子;步驟二,若當(dāng)前節(jié)點為右孩子,則所述當(dāng)前節(jié)點單獨占用一個前綴,所述當(dāng)前節(jié)點的下一個節(jié)點設(shè)為新的當(dāng)前節(jié)點,并返回所述步驟一;步驟三,若當(dāng)前節(jié)點為左孩子,則所述當(dāng)前節(jié)點的最大右祖先節(jié)點占用一個前綴,所述當(dāng)前節(jié)點的所述最大右祖先節(jié)點的最右葉子節(jié)點的下一個節(jié)點設(shè)為新的當(dāng)前節(jié)點,并返回所述步驟一。
文檔編號H04L29/06GK101039253SQ20061001151
公開日2007年9月19日 申請日期2006年3月17日 優(yōu)先權(quán)日2006年3月17日
發(fā)明者王俊川, 姚學(xué)軍, 于偉 申請人:中興通訊股份有限公司