專利名稱:一種IPv6多域分類處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)分類處理領(lǐng)域,特別是涉及數(shù)據(jù)通信領(lǐng)域用于實現(xiàn)服務(wù)質(zhì)量控制的一種分類處理方法。
背景技術(shù):
分類處理技術(shù)廣泛地應(yīng)用在防火墻、基于策略的路由、VPN(Virtual PrivateNetwork,虛擬專用網(wǎng)絡(luò))和QoS(Quality of Service,服務(wù)質(zhì)量)控制中。通常,分類處理規(guī)則包含數(shù)據(jù)報文頭的五個域內(nèi)容源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議類型。
隨著網(wǎng)絡(luò)向高速化和業(yè)務(wù)多樣化發(fā)展,特別是IPv6(Internet Protocol Version6,IPv6)網(wǎng)絡(luò)的逐漸商用,分類處理方法需要支持IPv6。公開文獻(Design ofMulti-field IPv6 Packet Classifiers Using Ternary CAMs,IEEE 2001)給出了一種采用CAM(Content Addressable Memories,內(nèi)容關(guān)聯(lián)存儲器)結(jié)構(gòu)實現(xiàn)IPv6多域分類的方法。在該方法中,設(shè)計了一個基于CLM(CAM-Like Memory)結(jié)構(gòu)的硬件分類結(jié)構(gòu),可以同時發(fā)起對五個規(guī)則域的匹配查找;同時該文還提出了一種對IPv6數(shù)據(jù)報文協(xié)議字段和端口字段的壓縮方法。但是這種用硬件實現(xiàn)分類的方法存在以下弊端(1)、缺乏靈活性,無法實現(xiàn)規(guī)則域的隨意擴充。分類規(guī)則變化時,需要對原來的硬件進行重新開發(fā)。而對于實現(xiàn)QoS控制的分類來說,往往要求分類規(guī)則是靈活多變的,以方便ISP(Internet ServiceProvider,因特網(wǎng)服務(wù)提供商)根據(jù)網(wǎng)絡(luò)上具體的應(yīng)用進行配置。(2)、隨著網(wǎng)絡(luò)容量的擴大,需要對多種類型的業(yè)務(wù)流進行分類處理,分類處理規(guī)則數(shù)目將不斷增多也日趨復(fù)雜,這將導(dǎo)致存儲單元容量的急劇擴大。更高容量的存儲單元不僅增加了CAM制造商的技術(shù)實現(xiàn)難度,而且面對成本作為產(chǎn)品占有市場的一個不可輕視的因素時,產(chǎn)品制造商需要在成本和功能之間尋找平衡。同時,硬件實現(xiàn)的分類裝置,規(guī)則條目往往是固化在存儲單元中,因此當需要添加新的規(guī)則條目時,就得面臨重新設(shè)計硬件的尷尬。(3)、需要產(chǎn)品制造商本身具有ASIC(Application Specific Integrated Circuit,專用集成電路)研發(fā)的實力和基礎(chǔ)。
對于支持多域分類處理的軟件方式有以下三種(1)、使用線性表為數(shù)據(jù)結(jié)構(gòu),遞歸匹配規(guī)則的RFC(Recursive Flow Classification,遞歸流程分類)算法。(2)、使用哈希(hash)表結(jié)構(gòu)的元組空間查找(Tuple Space Search)算法。(3)、基于trie表的多維查找。特別地,對于源和目的IP地址的二維查找,Grid-of-tries結(jié)構(gòu)較為多用。通過在每個節(jié)點處設(shè)置jump-switch(跳轉(zhuǎn)指針)克服trie查找中引入的back-tracking(回溯查找)問題。上述方法都是針對IPv4(Internet ProtocolVersion 4,互聯(lián)網(wǎng)協(xié)議第4版)報文的分類處理方法,如果直接用于IPv6,則會由于IPv6長達128比特的地址長度,使得內(nèi)存耗費增加(內(nèi)存的耗費不僅指容納規(guī)則庫所占用的空間還包括建立各種數(shù)據(jù)結(jié)構(gòu)所消耗的內(nèi)存)。耗用內(nèi)存空間越大,規(guī)則更新時的時間復(fù)雜度就越大,同時也將影響表的搜索時間。因此在分類方法關(guān)注的兩個相互制約因素時間效率和空間效率之間,如何提高空間效率是較為關(guān)鍵的因素。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種用于IPv6多域分類處理方法,用以解決傳統(tǒng)軟件方法實現(xiàn)IPv6多域分類方法帶來的內(nèi)存空間耗費較大和影響搜索時間的問題,進而提高在應(yīng)用時的空間效率。
為了實現(xiàn)上述目的,本發(fā)明提供了一種IPv6多域分類處理方法,其特點在于,對IPv6規(guī)則域進行壓縮和歸并;根據(jù)IPv6地址編址的可類聚和分層的特點,分段查找IPv6地址,將前16比特的IPv6地址域的內(nèi)容和其他規(guī)則域的內(nèi)容一起參與查找,獨立出host id域;采用一三級表結(jié)構(gòu)中的基本哈希表和擴展哈希表分開存放規(guī)則表,實現(xiàn)IPv6多域分類處理;其中,所述三級表結(jié)構(gòu),其第一級為基本哈希表,每一個哈希表條目是一二維的Grid-of-tries結(jié)構(gòu),構(gòu)成其第二級表,其第三級表為兩張相對獨立的擴展哈希表。
上述的IPv6多域分類處理方法,其特點在于,該方法具體包括如下步驟步驟一,對五域規(guī)則中的協(xié)議類型、源端口號、目的端口號進行壓縮,并分別抽取源和目的IPv6地址的前16比特進行五域的一次精確匹配基本哈希表查找;
步驟二,當?shù)刂芬?guī)則中前綴長度大于16比特時,發(fā)起對源和目的IPv6地址的111:64位的最長96(48+48)比特的二維Grid of Tries(網(wǎng)格trie結(jié)構(gòu))的查找;步驟三,當?shù)刂芬?guī)則為全長匹配時,發(fā)起對IPv6源和目的地址的末64比特host-id進行相對獨立的擴展哈希表查找;及步驟四,獲得動作結(jié)果,結(jié)束查找。
上述的IPv6多域分類處理方法,其特點在于,所述步驟一進一步包括步驟1、對端口域和協(xié)議域進行壓縮;步驟2、抽取IPv6源和目的地址的前16比特,進行合并,參與基本哈希表精確匹配;步驟3、規(guī)則的歸并,組成哈希表精確匹配的查找關(guān)鍵字;及步驟4、發(fā)起基本哈希表查找。
上述的IPv6多域分類處理方法,其特點在于,所述步驟二中,在基本哈希表條目中增加表征需要進行后續(xù)查找的標志位和查找指針,用以在前16比特和中間的48比特之間建立聯(lián)系。
上述的IPv6多域分類處理方法,其特點在于,所述步驟三中,在Grid_of_Tries(網(wǎng)格trie結(jié)構(gòu))的最后一級葉子節(jié)點設(shè)置擴展哈希表查找的標志位,并對不需要該步查找的數(shù)據(jù)包設(shè)置返回基本哈希表查找的指針。
上述的IPv6多域分類處理方法,其特點在于,所述步驟四中,當只需要第一級基本哈希表查找時,查找結(jié)果可以直接從基本哈希表的條目中獲得;當需要進行二級的Grid_of_Tries查找而不需要擴展哈希查找時,可以通過tries的指針,該指針指向基本哈希表的結(jié)果域;對于需要進行擴展查找時,動作結(jié)果可直接從擴展哈希表條目中獲得。
上述的IPv6多域分類處理方法,其特點在于,查找擴展哈希表之前,將64比特的host-id還原為48比特的MAC地址,用以減少哈希表的內(nèi)存占用。
上述的IPv6多域分類處理方法,其特點在于,在所述步驟一中添加規(guī)則域,對其進行歸并,一起參與第一級的基本哈希表查找,用以擴充域?qū)挕?br>
上述的IPv6多域分類處理方法,其特點在于,根據(jù)IPv6地址分層的特點及地址掩碼長度一般為8的整數(shù)倍的特點,只在每8比特后設(shè)置返回指針,用以減少對Grid-of-tries的jump-switch的指針個數(shù)。
上述的IPv6多域分類處理方法,其特點在于,對所述IPv6地址中間的48比特還可以再次進行分段,可以分成32+16的形式,進行兩級的Grid_of_Tries的查找。
以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。
圖1為本發(fā)明中協(xié)議字段壓縮的編碼映射示意圖;圖2為IPv6全球單播地址的編址構(gòu)成示意圖;圖3為本發(fā)明中用于精確匹配的被分割和重組后的規(guī)則示意圖;及圖4為本發(fā)明中的表結(jié)構(gòu)圖。
具體實施例方式
圖1所示為本發(fā)明中協(xié)議字段壓縮的編碼映射表;圖2所示為IPv6全球單播地址的編址構(gòu)成;圖4所示為本發(fā)明中的表結(jié)構(gòu)圖及表條目定義。本發(fā)明的技術(shù)解決方案是針對IPv6分類面臨的問題癥結(jié)所在,即多維數(shù)和IPv6規(guī)則條目長度(五元組為296bit),對規(guī)則域進行適當?shù)膲嚎s和歸并。特別地,利用IPv6地址編址的可類聚和分層的特點,將IPv6地址進行分段查找。前16比特的IPv6地址域的內(nèi)容和其他三個規(guī)則域的內(nèi)容一起參與查找,而獨立出host id域;相應(yīng)的,采用一個三級表結(jié)構(gòu)第一級為基本哈希表(base-hash),每一個哈希表條目是一個二維的Grid-of-tries結(jié)構(gòu),從而構(gòu)成第二級表;第三級表相對獨立,是兩張擴展哈希表(extended-hash)。利用兩種表結(jié)構(gòu)(hash哈希和trie)的有效結(jié)合,將規(guī)則表分開存放,在降維的同時,減小了由于地址長度增大帶來的構(gòu)建表結(jié)構(gòu)的內(nèi)存空間占用和規(guī)則庫存儲空間占用,從而提高了查找速度。其中,查找過程分為以下幾個步驟步驟一,對五域規(guī)則中的協(xié)議類型、端口號(包括源和目的端口號)進行壓縮,并分別抽取源和目的IPv6地址的前16比特進行五域的一次精確匹配base-hash查找。本步驟又包含如下操作(1)、對端口域和協(xié)議域進行壓縮。特別考慮到對QoS控制中的分類應(yīng)用來說,感興趣的只是TCP(Transfer ControlProtocol,傳輸控制協(xié)議)和UDP(User Data Protocol,用戶數(shù)據(jù)協(xié)議),而并不關(guān)心管理控制等其他協(xié)議報文,所以規(guī)則中的協(xié)議字段只需要2個比特。壓縮的協(xié)議編碼參見圖1。對于端口域的壓縮,采用公開文獻(Design of Multi-fieldIPv6 Packet Classifiers Using Ternary CAMs,IEEE 2001)中的思想,壓縮為4個比特。也可以根據(jù)QoS控制中普通數(shù)據(jù)業(yè)務(wù)、音頻業(yè)務(wù)和視頻業(yè)務(wù)的承載應(yīng)用進行再次壓縮。(2)、抽取IPv6源和目的地址的前16比特,進行合并,參與base-hash精確匹配。對于QoS控制,更多的關(guān)注于終端用戶,因此分類規(guī)則中的地址域不應(yīng)出現(xiàn)只是通配符*的情形,大多數(shù)為前綴匹配。同時對圖2的IPv6可集聚全球單播地址的地址編址分析來看,前綴長度最短應(yīng)為16比特,即包含頂層ID(否則沒法標識一個網(wǎng)絡(luò))。所以分別從源和目的IPv6地址取前16比特并進行連接,組成長度為32比特位串。(3)、規(guī)則的歸并,組成hash精確匹配的查找關(guān)鍵字。(4)、發(fā)起base-hash查找。
步驟二,只有當?shù)刂芬?guī)則中前綴長度(Prefix Length)大于16比特時,需要發(fā)起對源和目的IPv6地址的111:64位的最長96(48+48)可以比特的二維Grid_of_Tries的查找。由于對地址進行了分割,所以需要在前16比特和中間的48比特之間建立聯(lián)系。因此需要在base-hash表條目中增加表征需要進行后續(xù)查找的標志位和查找指針。
步驟三,只有當?shù)刂芬?guī)則為全長匹配時,需要發(fā)起對IPv6源和目的地址的末64比特host-id(主機號)進行相對獨立的extended-hash查找。在此,需要在Grid_of_Tries的最后一級葉子節(jié)點設(shè)置extended-hash查找的標志位,同時對不需要該步查找的數(shù)據(jù)包設(shè)置返回base-hash查找表的指針。
步驟四,獲得動作結(jié)果。當只需要第一級base-hash查找時,查找結(jié)果可以直接從base-hash表的條目中獲得;當需要進行二級的Grid_of_Tries查找而不需要extend-hash查找時,可以通過trie的指針,該指針指向base-hash表的結(jié)果域;對于需要進行extended-hash查找時,動作結(jié)構(gòu)可直接從extended-hash表條目中獲得,查找結(jié)束。
圖3所示為本發(fā)明中用于精確匹配的被分割和重組后的規(guī)則示意圖;如表1和表2所示為輸入原始數(shù)據(jù)和規(guī)則示意表。
表1原始規(guī)則列表舉例
表2輸入數(shù)據(jù)相關(guān)域提取后的原始數(shù)據(jù)
以上表中的規(guī)則表和原始的輸入數(shù)據(jù)為例,基于如下的假定,本發(fā)明的實施過程如下假定如下,①依托Intel網(wǎng)絡(luò)處理,利用網(wǎng)絡(luò)處理器上的硬件hash單元,發(fā)起hash索引值的計算②所有的表均存放在SRAM中,內(nèi)存訪問長度為32比特。
步驟一、當網(wǎng)絡(luò)處理器接收到數(shù)據(jù)包時,首先是從包頭中提取五個域的內(nèi)容,得到如下信息(TCP,80,80,3ffe:3600:0001:0002∷1,3ffe:3600:0002:0003∷1)。對各域的信息進行壓縮和歸并。具體來說,①按照圖1中的協(xié)議和端口的壓縮編碼規(guī)則,TCP對應(yīng)的編碼值為00,80的源端口和目的端口編碼均為001001。②源和目的IPv6地址的前16比特的連接。連接后的比特串為0x3ffe3ffe。③歸并。按圖3的格式對壓縮和重組后的五域內(nèi)容進行歸并。壓縮歸并后的48比特串為0x02493ffe3ffe。
步驟二、將48比特串進行精確base-hash匹配查找,由微碼發(fā)起對硬件哈希單元操作的請求,返回值為48比特的index,作為base-hash表的索引。假定index指向如表1、2所示的條目。該條目中的信息如表中所示。條目中的flow-id的最高位valid-bit(有效位)為0,表明該flow-id(流標識)并不是真正的查找結(jié)果(地址規(guī)則的掩碼長度大于16比特),還需下一級Grid-of-Tries表的查找,此時flow-id將指向下一級表。
在這里可能會出現(xiàn)一個數(shù)據(jù)包匹配原始規(guī)則表中多個規(guī)則的情況。這就涉及到規(guī)則的優(yōu)先級問題。我們設(shè)定規(guī)則的地址域存在從屬關(guān)系時,總是掩碼長度長的規(guī)則優(yōu)先級高一些。這樣就產(chǎn)生了如何選擇最優(yōu)規(guī)則的問題,該問題的解決見步驟三。
步驟三、分別取IPv6目的地址和源地址的111:64位共96比特,組成二維數(shù)組(3600:0002:0003,3600:0001:0002)進行Grid_of_tries查找。該表的構(gòu)建基于公開文獻(Packet Classification for Core RoutersIs there an alternative to CAMs?,IEEE INFOCOM 2003)中已有方法,采用jump-switch克服trie查找中引入的back-tracking問題。首先進行dst-trie(目的地址trie)的匹配查找。對于本文所列出的規(guī)則庫,dest-trie需要查完32比特,然后開始src-trie(源地址trie)的查找。當查到最長的16比特后,在本次查找的葉子節(jié)點處獲得返回base-hash表的指針base-hash-index。
基于可能出現(xiàn)的哈希沖突考慮,在Grid-of-Tries的根節(jié)點處也添加返回base-hash的指針,從而防止步驟二中由于base-hash沖突引起的查找錯誤。使得最長匹配查找(規(guī)則的優(yōu)先級造成,本身是不需要的)及時結(jié)束而返回到上一級表中。
步驟四、由于base-hash-index的高二位均為0(該兩位分別表征是否還需要進行源和目的地址末64比特的extended-hash查找),表明不需要進行extended-hash表的查找。根據(jù)base-hash-index的值,返回base-hash表的action域。
步驟五、從索引所指的條目中獲得最終的查找結(jié)果flow id(流標識),結(jié)束查找過程。網(wǎng)絡(luò)處理器獲取該查找結(jié)果,分類過程結(jié)束。
由于Intel網(wǎng)絡(luò)處理器支持對SRAM的連續(xù)訪問,在具體實現(xiàn)時還可以優(yōu)化查找過程。
以上過程僅為舉例,實際過程依規(guī)則庫和輸入數(shù)據(jù)包頭內(nèi)容決定。最差情況為源和目的地址均為全匹配的情況。在該種情況下,還需要發(fā)起對源和目的地址末64比特的獨立的extended-hash查找。為了進一步減少hash表的內(nèi)存占用,可以在查表之前對64比特的host-id進行還原。還原為48比特的MAC地址后再進行extended-hash查找。
本發(fā)明還有以下幾點擴充1、可實現(xiàn)域?qū)挼臄U充。當需要增加規(guī)則域時(比如DSCP(Differentiated Services CodePoint,差分業(yè)務(wù)代碼點)域),只需在步驟一中添加該域,對其進行歸并,一起參與第一級的base-hash查找即可。2、在具體實現(xiàn)過程中,hash表的查找等操作也可以直接通過軟件或其他變通方法實現(xiàn)。3、針對IPv6地址分層的特點及地址掩碼長度一般為8的整數(shù)倍的特點,可以減少對Grid-of-tries的jump-switch的指針個數(shù),只在每8比特后設(shè)置返回指針。4、對于IPv6地址中間的48比特還可以再次進行分段,比如可以分成32+16的形式,進行兩級的Grid_of_Tries的查找。
本發(fā)明提出的一種用軟件實現(xiàn)IPv6報文多域分類的方法能有效降低傳統(tǒng)軟件方法直接應(yīng)用到IPv6報文而引入的巨大的內(nèi)存空間耗費,從而提高了查表的速度。效果如下按照計算幾何的最好結(jié)果,以1000條的規(guī)則數(shù)目來說,按公式LogN的時間和o(Nk)的空間(其中N為規(guī)則的條數(shù),k為維數(shù)即包頭中參與分類的域數(shù))計算,當k=5,需要的空間為10005=1000TB。而本發(fā)明在地址前綴長度小于16比特的情況下只需要(1000×64)bit=8KB的空間。
當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.一種IPv6多域分類處理方法,其特征在于,對IPv6規(guī)則域進行壓縮和歸并;根據(jù)IPv6地址編址的可類聚和分層的特點,分段查找IPv6地址,將前16比特的IPv6地址域的內(nèi)容和其他規(guī)則域的內(nèi)容一起參與查找,獨立出主機號域;采用一三級表結(jié)構(gòu)中的基本哈希表和擴展哈希表分開存放規(guī)則表,實現(xiàn)IPv6多域分類處理;其中,所述三級表結(jié)構(gòu),其第一級為基本哈希表,每一個哈希表條目是一二維的Grid-of-tries結(jié)構(gòu),構(gòu)成其第二級表,其第三級表為兩張相對獨立的擴展哈希表。
2.根據(jù)權(quán)利要求1所述的IPv6多域分類處理方法,其特征在于,該方法具體包括如下步驟步驟一,對五域規(guī)則中的協(xié)議類型、源端口號、目的端口號進行壓縮,并分別抽取源和目的IPv6地址的前16比特進行五域的一次精確匹配基本哈希表查找;步驟二,當?shù)刂芬?guī)則中前綴長度大于16比特時,發(fā)起對源和目的IPv6地址的11164位的最長96(48+48)比特的二維Grid_of_Tries的查找;步驟三,當?shù)刂芬?guī)則為全長匹配時,發(fā)起對IPv6源和目的地址的末64比特host-id進行相對獨立的擴展哈希表查找;及步驟四,獲得動作結(jié)果,結(jié)束查找。
3.根據(jù)權(quán)利要求2所述的IPv6多域分類處理方法,其特征在于,所述步驟一進一步包括步驟1、對端口域和協(xié)議域進行壓縮;步驟2、抽取IPv6源和目的地址的前16比特,進行合并,參與基本哈希表精確匹配;步驟3、規(guī)則的歸并,組成哈希表精確匹配的查找關(guān)鍵字;及步驟4、發(fā)起基本哈希表查找。
4.根據(jù)權(quán)利要求2所述的IPv6多域分類處理方法,其特征在于,所述步驟二中,在基本哈希表條目中增加表征需要進行后續(xù)查找的標志位和查找指針,用以在前16比特和中間的48比特之間建立聯(lián)系。
5.根據(jù)權(quán)利要求2所述的IPv6多域分類處理方法,其特征在于,所述步驟三中,在Grid_of_Tries的最后一級葉子節(jié)點設(shè)置擴展哈希表查找的標志位,并對不需要該步查找的數(shù)據(jù)包設(shè)置返回基本哈希表查找的指針。
6.根據(jù)權(quán)利要求2所述的IPv6多域分類處理方法,其特征在于,所述步驟四中,當只需要第一級基本哈希表查找時,查找結(jié)果可以直接從基本哈希表的條目中獲得;當需要進行二級的Grid_of_Tries查找而不需要擴展哈希查找時,可以通過tries的指針,該指針指向基本哈希表的結(jié)果域;對于需要進行擴展查找時,動作結(jié)果可直接從擴展哈希表條目中獲得。
7.根據(jù)權(quán)利要求2所述的IPv6多域分類處理方法,其特征在于,查找擴展哈希表之前,將64比特的host-id還原為48比特的MAC地址,用以減少哈希表的內(nèi)存占用。
8.根據(jù)權(quán)利要求2或3所述的IPv6多域分類處理方法,其特征在于,在所述步驟一中添加規(guī)則域,對其進行歸并,一起參與第一級的基本哈希表查找,用以擴充域?qū)挕?br>
9.根據(jù)權(quán)利要求1所述的IPv6多域分類處理方法,其特征在于,根據(jù)IPv6地址分層的特點及地址掩碼長度一般為8的整數(shù)倍的特點,只在每8比特后設(shè)置返回指針,用以減少對Grid-of-tries的jump-switch的指針個數(shù)。
10.根據(jù)權(quán)利要求4所述的IPv6多域分類處理方法,其特征在于,對所述IPv6地址中間的48比特還可以再次進行分段,可以分成32+16的形式,進行兩級的Grid_of_Tries的查找。
全文摘要
本發(fā)明公開了一種IPv6多域分類方法,用以有效降低傳統(tǒng)軟件方法實現(xiàn)IPv6多域分類方法帶來的內(nèi)存空間耗費,其特征在于,該方法是對規(guī)則域進行適當?shù)膲嚎s和歸并,利用IPv6地址編址的可類聚和分層的特點,對IPv6地址進行分段查找。
文檔編號H04L29/06GK1805435SQ20051001116
公開日2006年7月19日 申請日期2005年1月13日 優(yōu)先權(quán)日2005年1月13日
發(fā)明者劉麗娜, 甘振錦, 李華驛, 熊韜 申請人:中興通訊股份有限公司