亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于hash進行標簽映射的交叉方法

文檔序號:7758841閱讀:242來源:國知局
專利名稱:一種基于hash進行標簽映射的交叉方法
技術(shù)領(lǐng)域
本發(fā)明涉及T-MPLS (傳送多協(xié)議標簽交換)技術(shù)及其交叉實現(xiàn)方法,具體說是一 種基于HASH進行標簽映射的交叉方法。
背景技術(shù)
T-MPLS是ITU_T(國際電信聯(lián)盟)標準化的一種分組傳送網(wǎng)技術(shù),其解決傳統(tǒng) SDH(同步數(shù)字體系)在以分組交換為主的網(wǎng)絡(luò)環(huán)境中暴露出效率低下的缺點。T-MPLS具 有面向連接的數(shù)據(jù)轉(zhuǎn)發(fā)機制、多業(yè)務(wù)承載、較強的網(wǎng)絡(luò)擴展性、豐富的OAM(操作,維護,管 理)、嚴格的QoS(服務(wù)質(zhì)量)機制以及50ms的網(wǎng)絡(luò)保護等技術(shù)特征。T-MPLS是MPLS (多協(xié)議標簽交換)的一個子集,在業(yè)務(wù)封裝模式上,它定義了層 次化的封裝模型。它先將每條業(yè)務(wù)封裝進不同的PW(偽線)里得到PW數(shù)據(jù)包,再將PW數(shù) 據(jù)包封裝進不同的TUNNEL(隧道)里得到兩層標簽的MPLS包,然后將該MPLS包送到MPLS 網(wǎng)絡(luò)進行轉(zhuǎn)發(fā),MPLS網(wǎng)絡(luò)根據(jù)MPLS包攜帶的TUNNEL標簽進行轉(zhuǎn)發(fā),在中間節(jié)點可以進行 TUNNEL標簽交換。在業(yè)務(wù)的保護方式上,ITU-T定義了 T-MPLS環(huán)網(wǎng)保護標準G. 8132和線性保護標 準 G. 8131。為了實現(xiàn)各種業(yè)務(wù)保護,一般的系統(tǒng)都要構(gòu)造一個TUNNEL層面的CROSS (交叉) 矩陣實現(xiàn)TUNNEL交叉。所說的TUNNEL交叉就是將含有某種TUNNEL標簽的MPLS包轉(zhuǎn)發(fā) 到指定的一個或多個出口,即實現(xiàn)“ INP0RT+TUNNEL— > 0UTP0RT LIST ”的功能。對于 TUNNEL層面的CROSS交叉矩陣而言,其入接口和出接口的包都是基于以太網(wǎng)的兩層標簽 (TUNNEL+PW)的MPLS包,基于以太網(wǎng)的兩層標簽(TUNNEL+PW)的MPLS包格式如下 其中各字段含義如下
DMAC 目標MAC地址;
SMAC 源MAC地址;
0X8847 =MPLS包的以太網(wǎng)類型值;
TUNNEL 隧道標簽值;
PW 偽線標簽值;
CUSTOM DATA 客戶數(shù)據(jù)內(nèi)容;
CRC 循環(huán)冗余校驗。
為了實現(xiàn)大容量的TUNNEL層面的CROSS交叉矩陣,所述大容量是指交叉條目>
4K*N(N>= 1)。根據(jù)目前的芯片技術(shù)情況,使用標簽映射是其中的一種實現(xiàn)方法。圖1即
為標簽映射的業(yè)務(wù)交叉模型。 1)如圖1所示,其業(yè)務(wù)轉(zhuǎn)發(fā)過程為
5
步驟1,分支芯片T(即圖1中的Tl、T2、……、Tn)對客戶業(yè)務(wù)進行封裝處理,在 入接口處形成兩層標簽的MPLS包,所說的兩層標簽為TUNNEL+PW標簽;步驟2,TUNNEL MAP芯片(即圖1中的MAP_1、MAP_2、......、MAP_n)接收兩層標
簽的MPLS包后,用其具有的TUNNEL映射為DMAC的功能,對兩層標簽的MPLS包進行標簽映 射;步驟3,DMAC交叉芯片接收進行標簽映射后的MPLS包,用其具有的L2 MAC表的單 播和組播資源,根據(jù)相應(yīng)的交叉配置進行轉(zhuǎn)發(fā)設(shè)置;步驟4,最后,出接口的分支芯片T再將MPLS包轉(zhuǎn)發(fā)到相應(yīng)的網(wǎng)絡(luò)上;上述入接口的分支芯片T和對稱的出接口的分支芯片T是同一個芯片。2)步驟2中所述的對兩層標簽的MPLS包進行標簽映射是指利用基于以太網(wǎng)的MPLS包的DMAC域進行標簽映射,進行映射后MPLS包頭的DMAC 值將會發(fā)生改變,由于MPLS包頭的DMAC和SMAC域只是為了形成以太網(wǎng)包格式而增加的, 一般都不存在任何具體意義,所以DMAC域的改變不會對后續(xù)的包處理產(chǎn)生任何影響。圖1中,大容量的DMAC交叉芯片缺乏TUNNEL交叉資源,但是卻有豐富的L2MAC表 的單播和組播資源,這個MAC表資源就是實現(xiàn)標簽映射的媒介。大容量的DMAC交叉芯片可 實現(xiàn)單播和組播,其中L2單播條目的內(nèi)容為DMAC— > 0UTP0RT ;L2 組播條目的內(nèi)容為DMAC— > 0UTP0RT LIST ;小容量的TUNNEL MAP芯片擁有豐富的TUNNEL交叉資源,并且可以實現(xiàn)將TUNNEL 映射為DMAC的功能,即它可以實現(xiàn)INP0RT+TUNNEL— > 0UTP0RT,以及TUNNEL— > DMAC ;因此,首先TUNNEL MAP芯片進行TUNNEL到DMAC的映射,然后后級的DMAC交叉芯 片再對DMAC配置L2MAC表的單播或者組播條目進行轉(zhuǎn)發(fā),從而達到系統(tǒng)TUNNEL層面的大 容量交叉。 3) L2MAC表的HASH (哈希)存儲原理HASH主要是用來提供一種簡單快速的索引功能,它需要兩個計算因素關(guān)鍵字 KEY和算法,然后用算法對KEY進行計算得到HASH值,即索引值。對于L2MAC表,KEY主要是MAC值,算法可以有多種,如CRC16,CRC32,異或等。如 圖2,L2MAC表由X個BUCKET (桶)組成,每個BUCKET由Y個ENTRY (條目)組成,則L2MAC 表的物理存儲容量為MAX = X*Y(X > = 1,Y > = 1)。每條TUNNEL交叉Cross_n都會映射到某個地址Mac_n,η = 1、2、3、......,再由
Mac_n根據(jù)HASH算法計算出BUCKET索引值,BUCKET的范圍為
,相同的BUCKET值 指向相同的BUCKET存儲區(qū),BUCKET里的空閑ENTRY將被隨機選取一個用于存儲Mac_n。當 HASH指向的BUCKET滿后,則出現(xiàn)HASH存儲沖突,雖然此時L2MAC表還有大量的BUCKET還 未使用。比如設(shè)L2MAC表的物理容量為32k個ENTRY條目,每個BUCKET包含8個ENTRY,則L2MAC 表共有BUCKET個數(shù)32K/8 = 4Κ(即=2"12),則其HASH比特需要12位。假設(shè)HASH算法 為取MAC地址的低12位進行HASH,則當有8個MAC地址分別為0X0000,0X1000,0X2000,
60X3000,0X4000,0X5000,0X6000,0X7000 時,其 HASH 結(jié)果都是 0 (因為這些 MAC 地址的低 12 位都相同,故HASH結(jié)果也相同),此時BUCKET = 0的桶就會存滿。若再有一個MAC = 0X8000 需要存儲,由于它的HASH值也是0,所以此時雖然L2MAC物理表還有很多其他的BUCKET > =1未使用,但是該MAC地址已經(jīng)由于BUCKET = 0的HASH沖突而無法存儲了。一般的DMAC交叉芯片的L2MAC表都是使用HASH方式進行索引存儲,HASH算法雖 然有多種,但是不管哪種算法都會存在HASH存儲沖突,也即若TUNNEL- > DMAC的映射方 式采用非HASH映射,如直接映射方式,則理論上肯定會帶來天生的HASH沖突。以下舉例說 明采用直接映射方式,映射結(jié)果如下單播交叉DMAC = (0UTP0RT < < 20) +TUNNEL ;組播交叉DMAC = 0X010000000000+ (0UTP0RT < < 20) +TUNNEL ;采用直接映射方式存在以下問題A)直接映射的DMAC值包含TUNNEL信息,映射方式雖然簡單明了,但是無法避免 HASH沖突問題。B) L2MAC表會出現(xiàn)使用率低下的問題,交叉條目數(shù)不等同于L2MAC表的容量。在實際應(yīng)用中,對于一條正確的交叉配置,當然不允許由于HASH算法等原因而出 現(xiàn)配置不能存儲的問題。針對這個問題雖然可以用ACL等資源進行HASH沖突以后的擬補, 但是其始終不是最好的解決方法,畢竟不是所有的DMAC交叉芯片都有ACL (訪問控制列表) 資源。

發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種基于HASH進行標簽映 射的交叉方法,徹底解決因HASH沖突而引起的交叉限制,交叉條目數(shù)完全等于MAC表的物 理容量;交叉配置所對應(yīng)的MAC表物理位置已提前算出,易于錯誤定位。為達到以上目的,本發(fā)明采取的技術(shù)方案是一種基于HASH進行標簽映射的交叉方法,其特征在于,包括以下步驟步驟1,生成一張MAC地址和所有ENTRY的HASH關(guān)系對應(yīng)表,所有ENTRY的初始狀 態(tài)都為空閑態(tài);步驟2,為每條新業(yè)務(wù)分配一個空閑的ENTRY 對于每一條新配置的交叉業(yè)務(wù),從HASH關(guān)系對應(yīng)表中申請一個空閑的未使用的 ENTRY,若新配置的交叉業(yè)務(wù)的交叉屬性是單播交叉,則選擇ENTRY內(nèi)容中對應(yīng)的單播 MAC地址做為業(yè)務(wù)的映射地址;若新配置的交叉業(yè)務(wù)的交叉屬性是組播交叉,則選擇ENTRY內(nèi)容中對應(yīng)的組播 MAC地址做為映射地址;分配后,該ENTRY的狀態(tài)變?yōu)槭褂脩B(tài);步驟3,使用分配的MAC地址進行映射配置TUNNEL MAP芯片使用分配的MAC地址進行標簽映射,MAC交叉芯片也用該MAC地 址設(shè)置L2地址表;
7
由于新分配的MAC地址總能對應(yīng)交叉芯片MAC表里的一個已知位置的但未使用的 ENTRY,所以對于每條新交叉業(yè)務(wù),MAC交叉芯片將不再出現(xiàn)MAC表的HASH沖突問題;步驟4,業(yè)務(wù)刪除,釋放ENTRY —個ENTRY只能被分配一次,直到對應(yīng)的交叉業(yè)務(wù)被刪除,才能重新被分配;當交叉業(yè)務(wù)被刪除時,ENTRY被釋放,且被釋放的ENTRY狀態(tài)將重新賦值為空閑 態(tài)。在上述技術(shù)方案的基礎(chǔ)上,步驟1中生成一張MAC地址和所有ENTRY的HASH關(guān)系 對應(yīng)表時,若HASH算法為直接索引算法,且算法使用MAC地址的低位進行索引,HASH關(guān)系 對應(yīng)表的生成方法如下MAC 地址為 48BIT,表示為 BITl BIT48,值范圍為
;若BIT8 = 0,則MAC為單播地址;若BIT8 = 1,且所有BIT不全為1,則MAC地址 為組播地址;設(shè)BUCKET個數(shù)為4K,4K = 2~12,則索引BUCKET的位數(shù)需要12BIT,設(shè)每BUCKET有8個ENTRY,8 = 2"3,則索引對應(yīng)BUCKET里的8個ENTRY位置需要 3BIT,使用數(shù)組MAC_UC[4K] [8]存儲對應(yīng)的單播MAC地址,使用數(shù)組MAC_MC[4K] [8]存儲對應(yīng)的組播MAC地址,由于算法使用MAC地址的低位進行索引,即MAC高位不參與HASH算法,高位可以 都為0,所以MAC地址的取值為MAC_UC[B_NUM] [E_NUM] = (E_NUM << 12) | (B_NUM);MAC_MC[B_NUM] [E_NUM] = (0X01 << 40) | (E_NUM << 12) | (B_NUM);其中B_NUM 為 12BIT,值范圍為
;E_NUM 為 3BIT,值范圍為
; 得出單播MAC數(shù)組MAC_UC [X] [Y]和組播MAC數(shù)組MAC_MC [X] [Y],即得出了一張 MAC地址和ENTRY的HASH關(guān)系對應(yīng)表,每個ENTRY將對應(yīng)一個單播地址和一個組播地址。在上述技術(shù)方案的基礎(chǔ)上,步驟1中生成一張MAC地址和所有ENTRY的HASH關(guān)系 對應(yīng)表時,若HASH算法為間接索引算法,設(shè)HASH算法為CRC-32校驗,取校驗值的低位進行HASH,a)計算的CRC多項式為G(x) = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1b)計算的過程為設(shè)BUCKET個數(shù)為4K,4K = 2~12,則索引BUCKET的位數(shù)需要12BIT,設(shè)每BUCKET有8個ENTRY,對于同一個BUCKET,需要找出8個HASH值相同的MAC 地址來對應(yīng)其包含的8個ENTRY,首先,進行單播MAC地址的查找數(shù)組MAC_UC [4K] [8]用于存儲相同BUCKET的單播MAC值,數(shù)組C0UNT_UC [4K]用于 累計每個BUCKET存儲的單播個數(shù),變量T0TAL_UC用于累計當前已得的單播MAC值總數(shù),所 有數(shù)組和變量的初始值都為0,當T0TAL_UC = 4K*8 = 32Κ時,單播MAC地址查找將終止;將MAC地址從小到大依次進行CRC-32的計算,MAC地址的取值范圍為W,2~48]內(nèi)的單播地址;若某個單播地址MAC_UC_N的CRC值的低12位為B_NUM,其對應(yīng)BUCKET的ENTRY 存儲個數(shù)值 E_NUM = C0UNT_UC[B_NUM],則將 MAC_UC_N 存儲于 MAC_UC[B_NUM] [E_NUM]位 置,然后將 C0UNT_UC[B_NUM]加一,T0TAL_UC 加一;即執(zhí)行MAC_UC[B_NUM][E_NUM] = MAC_UC_N ;C0UNT_UC[B_NUM]++ ;T0TAL_UC++ ;當NUM = C0UNT_UC[B_NUM]值=8時,表示對應(yīng)B_NUM位置的BUCKET已經(jīng)裝滿8 個ENTRY的單播MAC地址,則該BUCKET無需再存儲,直接進行下一個單播MAC的CRC計算;當T0TAL_UC = 32K時,表示單播地址已經(jīng)存滿,則單播查找終止,繼續(xù)進行組播查 找;接下來,進行組播MAC地址的查找,進行組播MAC地址的查找與進行單播MAC地址 的查找同理,數(shù)組MAC_MC [4K] [8]用于存儲相同BUCKET的組播MAC值,數(shù)組C0UNT_MC [4K]用于 累計每個BUCKET存儲的組播個數(shù),變量T0TALM_C用于累計當前已得的組播MAC值總數(shù),所 有數(shù)組和變量的初始值都為0,當T0TAL_MC = 4K*8 = 32Κ時,組播MAC地址查找將終止;將MAC地址從小到大依次進行CRC-32的計算,MAC地址的取值范圍為
內(nèi) 的組播地址; 若某個組播地址MAC_MC_N的CRC值的低12位為B_NUM,其對應(yīng)BUCKET的ENTRY 存儲個數(shù)值 E_NUM = C0UNT_MC[B_NUM],則將 MAC_MC_N 存儲于 MAC_MC[B_NUM] [E_NUM]位 置,然后將 C0UNT_MC[B_NUM]加一,T0TAL_MC 加一;即執(zhí)行MAC_MC[B_NUM][E_NUM] = MAC_MC_N ;C0UNT_MC[B_NUM]++ ;T0TAL_MC++ ;當NUM = C0UNT_MC[B_NUM]值=8時,表示對應(yīng)B_NUM位置的BUCKET已經(jīng)裝滿8 個ENTRY的組播MAC地址,則該BUCKET無需再存儲,直接進行下一個組播MAC的CRC計算;當T0TAL_MC = 32K時,表示組播地址已經(jīng)存滿,則組播查找終止;得出單播MAC數(shù)組MAC_UC [X] [Y]和組播MAC數(shù)組MAC_MC [X] [Y],即得出了一張 MAC地址和ENTRY的HASH關(guān)系對應(yīng)表,每個ENTRY將對應(yīng)一個單播地址和一個組播地址。本發(fā)明所述的基于HASH進行標簽映射的交叉方法,徹底解決因HASH沖突而引起 的交叉限制,交叉條目數(shù)完全等于MAC表的物理容量;交叉配置所對應(yīng)的MAC表物理位置已 提前算出,易于錯誤定位。


本發(fā)明有如下附圖圖1標簽映射的業(yè)務(wù)交叉模型,圖 2L2MAC 表的 HASH 過程,圖3HASH映射的業(yè)務(wù)配置流程圖。
具體實施例方式以下結(jié)合附圖對本發(fā)明作進一步詳細說明。本發(fā)明所述的基于HASH進行標簽映射的交叉方法,使用HASH映射方式來解決因 HASH沖突引起的交叉配置問題。圖3為本發(fā)明所述的基于HASH進行標簽映射的交叉方法 的業(yè)務(wù)配置流程圖,下面詳細介紹其實現(xiàn)過程步驟1,生成一張MAC地址和所有ENTRY的HASH關(guān)系對應(yīng)表;設(shè)L2MAC表由X個BUCKET組成,每個BUCKET由Y個ENTRY組成,則該L2MAC表的 存儲容量最大為MAX = X*Y ;每個ENTRY條目包含以下四項信息物理位置編號,范圍為
,BUCKET 編碼,范圍為
,MAC地址內(nèi)容,MAC地址內(nèi)容有單播、組播兩種,當前狀態(tài),當前狀態(tài)有空閑、使用兩種;所有ENTRY的初始狀態(tài)都為空閑態(tài);步驟1. 1)若HASH算法為直接索引算法,即使用48位MAC地址的某幾位進行直接 索引。當前的直接索引算法主要是取MAC地址的低位進行HASH算法,所以本文以此進行舉 例。舉例如下使用MAC地址的低位進行索引。MAC 地址為 48BIT,表示為 BITl BIT48,值范圍為
。若 BIT8 = 0,則 MAC 為單播地址;若BIT8 = 1,且所有BIT不全為1,則MAC地址為組播地址。設(shè)BUCKET個數(shù)為4K,4K = 2~12,則索引BUCKET的位數(shù)需要12BIT,設(shè)每BUCKET有8個ENTRY,8 = 2~3,則索引對應(yīng)BUCKET里的8個ENTRY位置需要 3BIT。使用數(shù)組MAC_UC [4K] [8]存儲對應(yīng)的單播MAC地址,使用數(shù)組MAC_MC [4K] [8]存 儲對應(yīng)的組播MAC地址。由于算法使用MAC地址的低位進行索引,即MAC高位不參與HASH算法,高位可以 都為0,所以MAC地址的取值為MAC_UC[B_NUM] [E_NUM] = (E_NUM << 12) | (B_NUM);MAC_MC[B_NUM] [E_NUM] = (0X01 << 40) | (E_NUM << 12) | (B_NUM);其中B_NUM 為 12BIT,值范圍為
;E_NUM 為 3BIT,值范圍為
;步驟1. 2)若HASH算法為間接索引算法,即使用48位MAC地址進行某種特定算法 的計算得出一個結(jié)果,再對這個結(jié)果進行HASH取值。當前的間接索引算法主要為CRC算法, 所以本文以CRC算法進行舉例。舉例如下HASH算法為CRC-32校驗,取校驗值的低位進行HASH。a)計算的CRC多項式為G(x) = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1b)計算的過程為設(shè)BUCKET個數(shù)為4K,4K = 2~12,則索引BUCKET的位數(shù)需要12BIT,
10
設(shè)每BUCKET有8個ENTRY,對于同一個BUCKET,需要找出8個HASH值相同的MAC 地址來對應(yīng)其包含的8個ENTRY。首先,進行單播MAC地址的查找。數(shù)組MAC_UC [4K] [8]用于存儲相同BUCKET的單播MAC值,數(shù)組C0UNT_UC [4K]用 于累計每個BUCKET存儲的單播個數(shù),變量T0TAL_UC用于累計當前已得的單播MAC值總數(shù), 所有數(shù)組和變量的初始值都為0,當T0TAL_UC = 4K*8 = 32Κ時,單播MAC地址查找將終止。將MAC地址從小到大依次進行CRC-32的計算,MAC地址的取值范圍為W,2~48]內(nèi) 的單播地址。若某個單播地址MAC_UC_N的CRC值的低12位為B_NUM,其對應(yīng)BUCKET的ENTRY 存儲個數(shù)值 E_NUM = C0UNT_UC[B_NUM],則將 MAC_UC_N 存儲于 MAC_UC [B_NUM] [E_NUM]位 置,然后將 C0UNT_UC[B_NUM]加一,T0TAL_UC 加一。即執(zhí)行MAC_UC[B_NUM][E_NUM] = MAC_UC_N ;C0UNT_UC[B_NUM]++ ;T0TAL_UC++ ;當NUM = C0UNT_UC [B_NUM]值=8時,表示對應(yīng)B_NUM位置的BUCKET已經(jīng)裝滿8 個ENTRY的單播MAC地址,則該BUCKET無需再存儲,直接進行下一個單播MAC的CRC計算。 當T0TAL_UC = 32K時,表示單播地址已經(jīng)存滿,則單播查找終止,繼續(xù)進行組播查找。其次,進行組播MAC地址的查找。同理,對應(yīng)組播MAC地址的查找需要存儲數(shù)組和變量MAC_MC[4K] [8],C0UNT_ MC[4K],T0TAL_MC。MAC地址的取值范圍為W,2~48]內(nèi)的組播地址。 數(shù)組MAC_MC [4K] [8]用于存儲相同BUCKET的組播MAC值,數(shù)組C0UNT_MC [4K]用于 累計每個BUCKET存儲的組播個數(shù),變量T0TAL_MC用于累計當前已得的組播MAC值總數(shù),所 有數(shù)組和變量的初始值都為0,當T0TAL_MC = 4K*8 = 32Κ時,組播MAC地址查找將終止;將MAC地址從小到大依次進行CRC-32的計算,MAC地址的取值范圍為W,2~48]內(nèi) 的組播地址;若某個組播地址MAC_MC_N的CRC值的低12位為B_NUM,其對應(yīng)BUCKET的ENTRY 存儲個數(shù)值 E_NUM = C0UNT_MC[B_NUM],則將 MAC_MC_N 存儲于 MAC_MC[B_NUM] [E_NUM]位 置,然后將 C0UNT_MC[B_NUM]加一,T0TAL_MC 加一;即執(zhí)行MAC_MC[B_NUM][E_NUM] = MAC_MC_N ;C0UNT_MC [B_NUM] ++ ;T0TAL_MC++ ;當NUM = C0UNT_MC[B_NUM]值=8時,表示對應(yīng)B_NUM位置的BUCKET已經(jīng)裝滿8 個ENTRY的組播MAC地址,則該BUCKET無需再存儲,直接進行下一個組播MAC的CRC計算;當T0TAL_MC = 32K時,表示組播地址已經(jīng)存滿,則組播查找終止。步驟1.3)由步驟1. 1或步驟1. 2可得出單播MAC數(shù)組MAC_UC[X] [Y]和組播MAC 數(shù)組MAC_MC[X] [Y],即得出了一張MAC地址和ENTRY的HASH關(guān)系對應(yīng)表,每個ENTRY將對 應(yīng)一個單播地址和一個組播地址,結(jié)果如下 步驟2,為每條新業(yè)務(wù)分配一個空閑的ENTRY ;對于每一條新配置的交叉業(yè)務(wù),從HASH關(guān)系對應(yīng)表中申請一個空閑的未使用的 ENTRY。若新配置的交叉業(yè)務(wù)的交叉屬性是單播交叉,則選擇ENTRY內(nèi)容中對應(yīng)的單播 MAC地址做為業(yè)務(wù)的映射地址;若新配置的交叉業(yè)務(wù)的交叉屬性是組播交叉,則選擇ENTRY內(nèi)容中對應(yīng)的組播 MAC地址做為映射地址;分配后,該ENTRY的狀態(tài)變?yōu)槭褂脩B(tài)。步驟3,使用分配的MAC地址進行映射配置;TUNNEL MAP芯片使用分配的MAC地址進行標簽映射,MAC交叉芯片也用該MAC地 址設(shè)置L2地址表。由于新分配的MAC地址總能對應(yīng)交叉芯片MAC表里的一個已知位置的 但未使用的ENTRY,所以對于每條新交叉業(yè)務(wù),MAC交叉芯片將不再出現(xiàn)MAC表的HASH沖突 問題。步驟4,業(yè)務(wù)刪除,釋放ENTRY。一個ENTRY只能被分配一次,直到對應(yīng)的交叉業(yè)務(wù)被刪除,才能重新被分配;當交叉業(yè)務(wù)被刪除時,ENTRY被釋放,且被釋放的ENTRY狀態(tài)將重新賦值為空閑 態(tài)。
權(quán)利要求
一種基于HASH進行標簽映射的交叉方法,其特征在于,包括以下步驟步驟1,生成一張MAC地址和所有ENTRY的HASH關(guān)系對應(yīng)表,所有ENTRY的初始狀態(tài)都為空閑態(tài);步驟2,為每條新業(yè)務(wù)分配一個空閑的ENTRY對于每一條新配置的交叉業(yè)務(wù),從HASH關(guān)系對應(yīng)表中申請一個空閑的未使用的ENTRY,若新配置的交叉業(yè)務(wù)的交叉屬性是單播交叉,則選擇ENTRY內(nèi)容中對應(yīng)的單播MAC地址做為業(yè)務(wù)的映射地址;若新配置的交叉業(yè)務(wù)的交叉屬性是組播交叉,則選擇ENTRY內(nèi)容中對應(yīng)的組播MAC地址做為映射地址;分配后,該ENTRY的狀態(tài)變?yōu)槭褂脩B(tài);步驟3,使用分配的MAC地址進行映射配置TUNNEL MAP芯片使用分配的MAC地址進行標簽映射,MAC交叉芯片也用該MAC地址設(shè)置L2地址表;由于新分配的MAC地址總能對應(yīng)交叉芯片MAC表里的一個已知位置的但未使用的ENTRY,所以對于每條新交叉業(yè)務(wù),MAC交叉芯片將不再出現(xiàn)MAC表的HASH沖突問題;步驟4,業(yè)務(wù)刪除,釋放ENTRY一個ENTRY只能被分配一次,直到對應(yīng)的交叉業(yè)務(wù)被刪除,才能重新被分配;當交叉業(yè)務(wù)被刪除時,ENTRY被釋放,且被釋放的ENTRY狀態(tài)將重新賦值為空閑態(tài)。
2.如權(quán)利要求1所述的基于HASH進行標簽映射的交叉方法,其特征在于步驟1中生 成一張MAC地址和所有ENTRY的HASH關(guān)系對應(yīng)表時,若HASH算法為直接索引算法,且算法 使用MAC地址的低位進行索引,HASH關(guān)系對應(yīng)表的生成方法如下MAC地址為48BIT,表示為BITl BIT48,值范圍為
; 若BIT8 = 0,則MAC為單播地址;若BIT8 = 1,且所有BIT不全為1,則MAC地址為組 播地址;設(shè)BUCKET個數(shù)為4K,4K = 2~12,則索引BUCKET的位數(shù)需要12BIT, 設(shè)每BUCKET有8個ENTRY,8 = 2 ~ 3,則索引對應(yīng)BUCKET里的8個ENTRY位置需要3BIT, 使用數(shù)組MAC_UC[4K] [8]存儲對應(yīng)的單播MAC地址, 使用數(shù)組MAC_MC[4K] [8]存儲對應(yīng)的組播MAC地址,由于算法使用MAC地址的低位進行索引,即MAC高位不參與HASH算法,高位可以都為 0,所以MAC地址的取值為MAC_UC[B_NUM] [E_NUM] = (E_NUM << 12) | (B_NUM); MAC_MC[B_NUM] [E_NUM] = (0X01 << 40) | (E_NUM << 12) | (B_NUM); 其中B_NUM為12BIT,值范圍為
; E_NUM為3BIT,值范圍為W,7];得出單播MAC數(shù)組MAC_UC[X] [Y]和組播MAC數(shù)組MAC_MC[X] [Y],即得出了一張MAC地 址和ENTRY的HASH關(guān)系對應(yīng)表,每個ENTRY將對應(yīng)一個單播地址和一個組播地址。
3.如權(quán)利要求1所述的基于HASH進行標簽映射的交叉方法,其特征在于步驟1中生 成一張MAC地址和所有ENTRY的HASH關(guān)系對應(yīng)表時,若HASH算法為間接索引算法,設(shè)HASH算法為CRC-32校驗,取校驗值的低位進行HASH,a)計算的CRC多項式為G(x) = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1b)計算的過程為設(shè)BUCKET個數(shù)為4K,4K = 2~12,則索引BUCKET的位數(shù)需要12BIT, 設(shè)每BUCKET有8個ENTRY,對于同一個BUCKET,需要找出8個HASH值相同的MAC地址 來對應(yīng)其包含的8個ENTRY,首先,進行單播MAC地址的查找數(shù)組MAC_UC[4K] [8]用于存儲相同BUCKET的單播MAC值,數(shù)組C0UNT_UC[4K]用于累 計每個BUCKET存儲的單播個數(shù),變量T0TAL_UC用于累計當前已得的單播MAC值總數(shù),所有 數(shù)組和變量的初始值都為0,當T0TAL_UC = 4K*8 = 32Κ時,單播MAC地址查找將終止;將MAC地址從小到大依次進行CRC-32的計算,MAC地址的取值范圍為W,2~48]內(nèi)的 單播地址;若某個單播地址MAC_UC_N的CRC值的低12位為B_NUM,其對應(yīng)BUCKET的ENTRY存儲 個數(shù)值 E_NUM = C0UNT_UC[B_NUM],則將 MAC_UC_N 存儲于 MAC_UC [B_NUM] [E_NUM]位置,然 后將 C0UNT_UC[B_NUM]加一,T0TAL_UC 加一;即執(zhí)行 MAC_UC[B_NUM][E_NUM] = MAC_UC_N ; C0UNT_UC[B_NUM]++ ; T0TAL_UC++ ;當NUM = C0UNT_UC[B_NUM]值=8時,表示對應(yīng)B_NUM位置的BUCKET已經(jīng)裝滿8個 ENTRY的單播MAC地址,則該BUCKET無需再存儲,直接進行下一個單播MAC的CRC計算; 當T0TAL_UC = 32K時,表示單播地址已經(jīng)存滿,則單播查找終止,繼續(xù)進行組播查找; 接下來,進行組播MAC地址的查找,進行組播MAC地址的查找與進行單播MAC地址的查 找同理,數(shù)組MAC_MC[4K] [8]用于存儲相同BUCKET的組播MAC值,數(shù)組C0UNT_MC[4K]用于累 計每個BUCKET存儲的組播個數(shù),變量T0TAL_MC用于累計當前已得的組播MAC值總數(shù),所有 數(shù)組和變量的初始值都為0,當T0TAL_MC = 4K*8 = 32Κ時,組播MAC地址查找將終止;將MAC地址從小到大依次進行CRC-32的計算,MAC地址的取值范圍為W,2~48]內(nèi)的 組播地址;若某個組播地址MAC_MC_N的CRC值的低12位為B_NUM,其對應(yīng)BUCKET的ENTRY存儲 個數(shù)值 E_NUM = C0UNT_MC[B_NUM],則將 MAC_MC_N 存儲于 MAC_MC [B_NUM] [E_NUM]位置,然 后將 C0UNT_MC[B_NUM]加一,T0TAL_MC 加一;即執(zhí)行 MAC_MC[B_NUM][E_NUM] = MAC_MC_N ; C0UNT_MC[B_NUM]++ ; T0TAL_MC++ ;當NUM = C0UNT_MC[B_NUM]值=8時,表示對應(yīng)B_NUM位置的BUCKET已經(jīng)裝滿8個 ENTRY的組播MAC地址,則該BUCKET無需再存儲,直接進行下一個組播MAC的CRC計算; 當T0TAL_MC = 32K時,表示組播地址已經(jīng)存滿,則組播查找終止; 得出單播MAC數(shù)組MAC_UC[X] [Y]和組播MAC數(shù)組MAC_MC[X] [Y],即得出了一張MAC地3址和ENTRY的HASH關(guān)系對應(yīng)表,每個ENTRY將對應(yīng)一個單播地址和一個組播地址。
全文摘要
本發(fā)明涉及一種基于HASH進行標簽映射的交叉方法,步驟如下步驟1,生成一張MAC地址和所有ENTRY的HASH關(guān)系對應(yīng)表,所有ENTRY的初始狀態(tài)都為空閑態(tài);步驟2,為每條新業(yè)務(wù)分配一個空閑的ENTRY并選擇ENTRY內(nèi)容中對應(yīng)的單播或組播MAC地址做為業(yè)務(wù)的映射地址;分配后,該ENTRY的狀態(tài)變?yōu)槭褂脩B(tài);步驟3,TUNNEL MAP芯片使用分配的MAC地址進行標簽映射,MAC交叉芯片也用該MAC地址設(shè)置L2地址表;步驟4,當交叉業(yè)務(wù)被刪除時,ENTRY被釋放且狀態(tài)重新賦值為空閑態(tài)。本發(fā)明所述方法,徹底解決因HASH沖突而引起的交叉限制,交叉條目數(shù)完全等于MAC表的物理容量;交叉配置所對應(yīng)的MAC表物理位置已提前算出,易于錯誤定位。
文檔編號H04L12/56GK101917347SQ20101027098
公開日2010年12月15日 申請日期2010年9月3日 優(yōu)先權(quán)日2010年9月3日
發(fā)明者徐劍輝, 施先清, 江榕, 涂育紅 申請人:烽火通信科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1