專利名稱:網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),特別涉及一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法。
背景技術(shù):
端口捆綁功能提供將多個(gè)以太鏈路聚合成一個(gè)邏輯鏈路,提高鏈路帶寬的方法,是交換機(jī)、路由器的一個(gè)重要功能。捆綁組中的所有端口的速率應(yīng)該相同。端口捆綁應(yīng)當(dāng)實(shí)現(xiàn)數(shù)據(jù)流量在捆綁組內(nèi)的均勻分布,當(dāng)捆綁組中的某個(gè)端口失效時(shí),流量應(yīng)自動(dòng)均勻切換到捆綁組的其他端口上。
當(dāng)報(bào)文經(jīng)過(guò)捆綁端口發(fā)出時(shí),系統(tǒng)需要從捆綁組內(nèi)選擇一個(gè)出端口。選擇的結(jié)果應(yīng)該滿足以下的兩點(diǎn)要求(1)同一個(gè)流(特定源和特定目的間的特定應(yīng)用數(shù)據(jù)報(bào)文)應(yīng)該從同一個(gè)端口發(fā)出。這樣可以保證同一個(gè)流數(shù)據(jù)幀的次序,這在二層交換機(jī)的局域網(wǎng)情況下是必須的,因?yàn)榫钟蚓W(wǎng)通信程序一般是不考慮數(shù)據(jù)幀亂序的??梢酝ㄟ^(guò)將標(biāo)識(shí)數(shù)據(jù)幀的特征值映射到一個(gè)端口序號(hào)上實(shí)現(xiàn)。
(2)應(yīng)該保證各個(gè)端口流量的均衡。根據(jù)當(dāng)前的端口數(shù),將數(shù)據(jù)流均勻的分布到各個(gè)端口上。
目前系統(tǒng)多采用硬件實(shí)現(xiàn)端口捆綁(多采用ASIC實(shí)現(xiàn)),其流量均擔(dān)的方法為(1)根據(jù)報(bào)文的特征(源MAC地址、目的MAC地址;源IP地址、目的IP地址;或者源和目的的組合),生成一個(gè)特征值X。
(2)根據(jù)當(dāng)前捆綁組中可用的端口數(shù)n,對(duì)特征值X進(jìn)行取模操作,得到端口序號(hào)i=X%n。
(3)根據(jù)端口序號(hào)選取相應(yīng)的端口發(fā)出。
由于現(xiàn)有的流量均擔(dān)算法受到硬件限制,分擔(dān)的效果只在2的整數(shù)次冪端口數(shù)時(shí),即端口數(shù)為2、4、8時(shí)效果較好,此時(shí)可以實(shí)現(xiàn)各個(gè)端口流量的均勻分布。但是當(dāng)捆綁組中的某個(gè)端口失效,使得可用端口數(shù)不再是2的整數(shù)次冪時(shí),流量就不能保持均勻。這是由于數(shù)字系統(tǒng)使用2進(jìn)制,且只能進(jìn)行整數(shù)運(yùn)算的結(jié)果。例如當(dāng)以源MAC地址后2bits作為hashed值時(shí),100個(gè)流在3個(gè)端口分得的流數(shù)為25/50/25,合理的分布應(yīng)該是34/33/33,可見此時(shí)流量分擔(dān)的效果很差。捆綁端口流量分擔(dān)不好,會(huì)造成帶寬的浪費(fèi)一方面某些端口超過(guò)物理帶寬造成丟包,而另一些端口流量很小。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法,通過(guò)根據(jù)當(dāng)前可用端口數(shù)采用不同的端口選擇方法,以得到最佳的流量分擔(dān)效果。
本發(fā)明的技術(shù)方案一一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法,所述端口捆綁是由物理特性相同的多個(gè)成員端口聚合成一個(gè)捆綁組,當(dāng)所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的非整數(shù)次冪時(shí)按以下步驟分配數(shù)據(jù)報(bào)文A、獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;B、在由當(dāng)前活動(dòng)成員端口數(shù)基本等分?jǐn)?shù)據(jù)流哈希值的分散區(qū)間后所形成的多個(gè)取值區(qū)間中,查找當(dāng)前數(shù)據(jù)報(bào)文的哈希值所屬的取值區(qū)間;C、根據(jù)查找到的取值區(qū)間得到該區(qū)間對(duì)應(yīng)的成員端口索引;以及D、將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述成員端口索引所對(duì)應(yīng)的成員端口。
根據(jù)上述技術(shù)方案所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)按以下步驟分配數(shù)據(jù)報(bào)文
獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;將捆綁組中活動(dòng)端口數(shù)減1并與當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行算術(shù)“與”,得到被選成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)還可按以下步驟分配數(shù)據(jù)流所述捆綁組中活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)按以下步驟分配數(shù)報(bào)文獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;用活動(dòng)的成員端口數(shù)對(duì)當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行取模操作,得到被選成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
從多個(gè)取值區(qū)間中查數(shù)據(jù)流特征值所屬區(qū)間時(shí)采用二分法進(jìn)行查找。
數(shù)據(jù)報(bào)文的特征值為源MAC地址、目的MAC地址、源IP地址、目的IP地址、IP端口號(hào)和MPLS標(biāo)簽之一或多項(xiàng)的組合。
本發(fā)明的技術(shù)方案二一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法,所述端口捆綁是由物理特性相同的多個(gè)成員端口聚合成一個(gè)捆綁組,當(dāng)所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)按以下步驟分配數(shù)據(jù)報(bào)文獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;將捆綁組中活動(dòng)端口數(shù)減1并與當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行算術(shù)“與”,得到被選成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
本發(fā)明在捆綁組中成員端口數(shù)目為2的非整數(shù)冪時(shí),將數(shù)據(jù)報(bào)文在其哈希值的取值范圍內(nèi)均勻地分散,并根據(jù)當(dāng)前活動(dòng)的成員端口數(shù)對(duì)取值范圍基本等分來(lái)分配流量,因而能夠更均勻、動(dòng)態(tài)地將數(shù)據(jù)流分布到各個(gè)成員端口上,從而能真正保證捆綁組中各個(gè)成員端口流量的均衡。
圖1為現(xiàn)有技術(shù)中端口捆綁流量分擔(dān)示意圖;圖2為本發(fā)明數(shù)據(jù)報(bào)文發(fā)向捆綁端口的示意圖;圖3、圖5和圖6為本發(fā)明的流量均擔(dān)的流程圖;圖4為本發(fā)明通過(guò)二分法查找端口索引示意圖。
具體實(shí)施例方式
端口捆綁是由物理特性相同的多個(gè)成員端口聚合成一個(gè)捆綁組,成員端口為物理端口,其索引從0開始。參閱圖2所示,在交換機(jī),以二層報(bào)文為例,當(dāng)報(bào)文從某個(gè)端口進(jìn)入后,在源接口板SB通過(guò)目的MAC地址查找MAC表得到出端口的目標(biāo)板TB和目標(biāo)端口TP,通過(guò)處理后,報(bào)文經(jīng)過(guò)網(wǎng)板被發(fā)送到目標(biāo)板TB。目標(biāo)板TB根據(jù)目標(biāo)端口TP的屬性表得知該目標(biāo)端口TP是捆綁端口。網(wǎng)絡(luò)處理器根據(jù)捆綁端口中當(dāng)前活動(dòng)的成員端口數(shù)目是2的整數(shù)次冪還是非整數(shù)次對(duì)數(shù)據(jù)報(bào)文的流量進(jìn)行均分。
數(shù)據(jù)報(bào)文的流量均擔(dān)是通過(guò)哈希(hash)算法把所有的流壓縮為一定數(shù)目的流,該數(shù)目由數(shù)據(jù)流的哈希值的總比特位數(shù)決定,如哈希值取9個(gè)比特位,則將所有流壓縮為512個(gè)流(2的9次冪),然后把512個(gè)流均勻分擔(dān)就實(shí)現(xiàn)了所有流的均勻分擔(dān)。
參閱圖3,當(dāng)捆綁端口中當(dāng)前活動(dòng)的成員端口數(shù)目為2的非整數(shù)次冪(即3,5,6,或7等)時(shí)進(jìn)行下述步驟。其中活動(dòng)端口數(shù)為1時(shí),被選端口索引=0。
步驟10獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值。
數(shù)據(jù)報(bào)文的特征值為源MAC地址、目的MAC地址、源IP地址、目的IP地址、IP端口號(hào)和MPLS標(biāo)簽(多協(xié)議標(biāo)簽交換報(bào)文的標(biāo)簽)之一或多項(xiàng)的組合。
在本實(shí)施例中,對(duì)于二層報(bào)文,使用數(shù)據(jù)流的源MAC地址和目的MAC地址生成標(biāo)識(shí)數(shù)據(jù)流的哈希值;對(duì)于三層報(bào)文,使用數(shù)據(jù)流的源IP地址和目的IP地址生成標(biāo)識(shí)數(shù)據(jù)流的哈希值。
步驟20在由當(dāng)前活動(dòng)成員端口數(shù)基本等分?jǐn)?shù)據(jù)流哈希值的分散區(qū)間后所形成的多個(gè)取值區(qū)間中,查找當(dāng)前數(shù)據(jù)報(bào)文的哈希值所屬的取值區(qū)間。
數(shù)據(jù)流的特征值(哈希值)的總比特?cái)?shù)不同,其特征值的分散區(qū)間也不同。由捆綁組中當(dāng)前活動(dòng)的端口數(shù)將分散區(qū)間基本等分,形成多個(gè)取值區(qū)間,其中每一取值區(qū)間對(duì)應(yīng)一個(gè)活動(dòng)的成員端口索引。所有這些不同的分散區(qū)間被基本等分后,取值區(qū)間與成員端口索引的對(duì)應(yīng)關(guān)系可預(yù)先生成并保存于交換機(jī)或路由器中供轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文時(shí)查詢,查詢時(shí)可通過(guò)活動(dòng)成員端口數(shù)等進(jìn)行索引。
查找取值區(qū)間采用二分法進(jìn)行,也可采用其它查找方法。
步驟30根據(jù)查找到的取值區(qū)間得到該區(qū)間對(duì)應(yīng)的成員端口索引。
步驟40將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述成員端口索引對(duì)應(yīng)的成員端口。
以哈希值(hashed)取9個(gè)比特位為例進(jìn)行說(shuō)明。數(shù)據(jù)流的特征值經(jīng)hash后分散到
(29)之間。設(shè)捆綁組中當(dāng)前活動(dòng)端口數(shù)為7,并采用二分法查找,參閱圖4。
哈希(hashed)值最大為511,基本分成7等分,則分界點(diǎn)分別為0、73、146、219、292、365、438,511(9比特的最大值)。這樣就形成了7個(gè)取值區(qū)間
,(73,146],(146,219],(219,292],(292,365],(365,438],(438,511],其中“()”表示不包含邊界值,“[]”表示包含邊界值。每個(gè)區(qū)間的大小為74,73,73,73,73,73,73。
這樣,就將總流量分成了基本均勻的7等分,每個(gè)區(qū)間唯一對(duì)應(yīng)捆綁組的一個(gè)成員端口索引,將hashed值落在相應(yīng)區(qū)間的報(bào)文發(fā)送到對(duì)應(yīng)的端口,從而實(shí)現(xiàn)流量的均衡分擔(dān)。(當(dāng)哈希值能被活動(dòng)成員端口數(shù)整除時(shí),則屬于等分。)二分法查找流程如下得到數(shù)據(jù)報(bào)文的哈希值值后,首先比較hashed值和中間值219。如果大于,就在右半?yún)^(qū)繼續(xù)比較;如果小于,則在左半?yún)^(qū)繼續(xù)比較。使用同樣的方式,直到hashed值落入它所在的區(qū)間,得到該區(qū)間對(duì)應(yīng)的成員端口索引,進(jìn)而得到該數(shù)據(jù)報(bào)文的出端口。
從上可看出,7個(gè)端口時(shí)各個(gè)端口上分擔(dān)的流數(shù)比為74/73/73/73/73/73/73,可見分擔(dān)效果已經(jīng)很好。
當(dāng)捆綁端口中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪(即2,4,或8等)時(shí)可通過(guò)下述兩種方法進(jìn)行流量均擔(dān)。
參閱圖5,其過(guò)程如下步驟100獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值。
步驟110將捆綁組中活動(dòng)端口數(shù)減1并與當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行邏輯“與”,得到被選成員端口索引。
步驟120將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
參閱圖6,其過(guò)程如下步驟200獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值。
步驟210用活動(dòng)的成員端口數(shù)對(duì)當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行取模操作,得到被選成員端口索引。
步驟220將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
在本發(fā)明中,捆綁組中的成員端口數(shù)據(jù)為可2~8。數(shù)據(jù)流的哈希值X取值范圍為0<=X<216。
權(quán)利要求
1.一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法,所述端口捆綁是由物理特性相同的多個(gè)成員端口聚合成一個(gè)捆綁組,其特征在于所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的非整數(shù)次冪時(shí)按以下步驟分配數(shù)據(jù)報(bào)文A、獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;B、在由當(dāng)前活動(dòng)成員端口數(shù)基本等分?jǐn)?shù)據(jù)流哈希值的分散區(qū)間后所形成的多個(gè)取值區(qū)間中,查找當(dāng)前數(shù)據(jù)報(bào)文的哈希值所屬的取值區(qū)間;C、根據(jù)查找到的取值區(qū)間得到該區(qū)間對(duì)應(yīng)的成員端口索引;以及D、將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述成員端口索引所對(duì)應(yīng)的成員端口。
2.如權(quán)利要求1所述的方法,其特征在于所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)按以下步驟分配數(shù)據(jù)報(bào)文獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;將捆綁組中活動(dòng)端口數(shù)減1并與當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行算術(shù)“與”,得到被選成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
3.如權(quán)利要求1所述的方法,其特征在于所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)按以下步驟分配數(shù)報(bào)文獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;用活動(dòng)的成員端口數(shù)對(duì)當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行取模操作,得到被選成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
4.如權(quán)利要求1所述的方法,其特征在于步驟B中采用二分法進(jìn)行查找。
5.如權(quán)利要求1至4任一所述的方法,其特征在于,成員端口索引從0開始,當(dāng)所述捆綁組中活動(dòng)的成員端口數(shù)目為1時(shí)被選成員端口索引值取0。
6.如權(quán)利要求1至4任一所述的方法,其特征在于,數(shù)據(jù)報(bào)文的特征值為源MAC地址、目的MAC地址、源IP地址、目的IP地址、IP端口號(hào)和MPLS標(biāo)簽之一或多項(xiàng)的組合。
7.如權(quán)利要求1所述的方法,其特征在于,所述的捆綁組中的成員端口數(shù)據(jù)為2~8。
8.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)流的哈希值的取值范圍為大于等于0并小于2^16。
9.如權(quán)利要求1、7或8所述的方法,其特征在于,每一分散區(qū)間在不同的活動(dòng)成員端口數(shù)下所形成的多種對(duì)應(yīng)關(guān)系預(yù)先保存。
10.一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法,所述端口捆綁是由物理特性相同的多個(gè)成員端口聚合成一個(gè)捆綁組,其特征在于所述捆綁組中當(dāng)前活動(dòng)的成員端口數(shù)目為2的整數(shù)次冪時(shí)按以下步驟分配數(shù)據(jù)報(bào)文獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;將捆綁組中活動(dòng)端口數(shù)減1并與當(dāng)前數(shù)據(jù)報(bào)文的哈希值進(jìn)行算術(shù)“與”,得到被選成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述被選成員端口索引所對(duì)應(yīng)的成員端口。
全文摘要
本發(fā)明公開了一種網(wǎng)絡(luò)處理器系統(tǒng)端口捆綁中實(shí)現(xiàn)流量均擔(dān)的方法,該方法在當(dāng)活動(dòng)的成員端口數(shù)目為2的非整數(shù)次冪時(shí)進(jìn)行步驟獲取當(dāng)前數(shù)據(jù)報(bào)文的特征值,經(jīng)過(guò)哈希操作得到能夠標(biāo)識(shí)該報(bào)文特征的哈希值;在由當(dāng)前活動(dòng)成員端口數(shù)基本等分?jǐn)?shù)據(jù)流哈希值的分散區(qū)間后所形成的多個(gè)取值區(qū)間中,查找當(dāng)前數(shù)據(jù)報(bào)文的哈希值所屬的取值區(qū)間;根據(jù)查找到的取值區(qū)間得到該區(qū)間對(duì)應(yīng)的成員端口索引;以及將當(dāng)前數(shù)據(jù)報(bào)文發(fā)送到所述成員端口索引對(duì)應(yīng)的成員端口。本發(fā)明在活動(dòng)的成員端口數(shù)目為2的非整數(shù)次冪時(shí)能夠更均勻、動(dòng)態(tài)地將數(shù)據(jù)流分布到各個(gè)成員端口上,從而能真正保證捆綁組中各個(gè)成員端口流量的均衡。
文檔編號(hào)H04Q3/545GK1553654SQ03138388
公開日2004年12月8日 申請(qǐng)日期2003年5月26日 優(yōu)先權(quán)日2003年5月26日
發(fā)明者申紀(jì)偉 申請(qǐng)人:華為技術(shù)有限公司