專利名稱:一種端口數(shù)據(jù)流量動態(tài)均衡分配方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),尤其涉及一種端口數(shù)據(jù)流量動態(tài)均衡分配方法。
背景技術(shù):
將一個高速率接口的數(shù)據(jù)流分配給幾個低速率的接口,是數(shù)據(jù)通信里面經(jīng)常會遇到的問題。如,從2.5G端口到四個622M端口,從10G端口到四個2.5G端口以及從40G端口到四個10G端口,都是典型的例子。為了保證四個端口都能以最大容量進(jìn)行處理,這就需要在將流分配給四個端口時需要保證其均衡性。
現(xiàn)有技術(shù),數(shù)據(jù)流初始化后,該流的數(shù)據(jù)包應(yīng)從固定的端口轉(zhuǎn)發(fā),不再作調(diào)整,雖然這種方法簡單,但由于數(shù)據(jù)流都具有突發(fā)性,所以不可能進(jìn)行絕對的靜態(tài)均衡分配,當(dāng)流發(fā)生突發(fā)性增加而超過端口流量時,無法將一部分流量調(diào)整到其他端口,即不能實現(xiàn)動態(tài)均衡流量,此時就會發(fā)生丟包現(xiàn)象。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種端口數(shù)據(jù)流量動態(tài)均衡分配方法,以解決現(xiàn)有技術(shù)中因多個端口數(shù)據(jù)流量不能動態(tài)均衡而在數(shù)據(jù)流量突發(fā)性增加時存在丟包的問題。
為解決上述問題,本發(fā)明提供下述技術(shù)方案一種端口數(shù)據(jù)流量動態(tài)均衡分配方法,用于將一個第一端口的數(shù)據(jù)流分配給多個第二端口;其特征在于該方法包括步驟A、接收第一端口一個數(shù)據(jù)流的數(shù)據(jù)包;B、根據(jù)數(shù)據(jù)流的標(biāo)號判斷該數(shù)據(jù)流是否已初始化,如果是則進(jìn)行步驟D,否則,進(jìn)行步驟C;
C、為所述數(shù)據(jù)流分配一個第二端口作為目的端口,從該第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包并記錄該數(shù)據(jù)流標(biāo)號與該第二端口的對應(yīng)關(guān)系,轉(zhuǎn)步驟A;D、判斷所述數(shù)據(jù)流對應(yīng)的第二端口是否發(fā)生擁塞,如果未發(fā)生擁塞,則從該數(shù)據(jù)流對應(yīng)的第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包,轉(zhuǎn)步驟A;否則,將該數(shù)據(jù)流調(diào)整到下一個未發(fā)生擁塞的第二端口,從該未發(fā)生擁塞的第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包并記錄數(shù)據(jù)流標(biāo)號與該第二端口的對應(yīng)關(guān)系,轉(zhuǎn)步驟A。
根據(jù)上述方法將數(shù)據(jù)流的初始化標(biāo)志,數(shù)據(jù)流的標(biāo)號,與該數(shù)據(jù)流對應(yīng)的目的端口號,以及該目的端口號的擁塞標(biāo)志之間的對應(yīng)關(guān)系保存于一個映射表中。
步驟C中,將一個取值在所述第二端口的數(shù)目之間循環(huán)的初始化令牌的值作為所述數(shù)據(jù)流的目的端口號,并在初始化該數(shù)據(jù)流后將初始化令牌的值加1,保證在初始化數(shù)據(jù)流時均衡分配端口號,其中該初始化令牌的初始值與多個第二端口中的最小端口號相同。
步驟D中,當(dāng)所有的第二端口均出現(xiàn)擁塞時,不調(diào)整所述數(shù)據(jù)流對應(yīng)的第二端口。
本發(fā)明能夠大幅度提高流量通過率,盡量減小因擁塞對流的影響,從而有效地減少了在流量突發(fā)時造成的丟包現(xiàn)象。
圖1為第一端與多個第二端口的模型圖;圖2為本發(fā)明的流程圖。
具體實施例方式
參閱圖1所示,第一端口為端口A,該端口A為一個高速率的端口,從端口A的流量經(jīng)過均衡分配后送到四個第二端口(并不限于四個)去并行處理,該四個第二端口分別為端口B、C、D、E,均為低速率的端口。
由于流量的突發(fā)性和不可預(yù)知性,所以當(dāng)原先分配到B端口的流量發(fā)生突發(fā),其速率超過了A端口的流量的1/4時,此時就會發(fā)生丟包。本發(fā)明在這種突發(fā)情況下,將多出的部分流量自動地轉(zhuǎn)移到端口C,D或E上去進(jìn)行處理,以最大限度的避免發(fā)生丟包的現(xiàn)象,達(dá)到最佳的性能。也就是說,數(shù)據(jù)流具體去哪一個端口是根據(jù)后面四個端口的流量情況進(jìn)行動態(tài)調(diào)節(jié)的,流量多的就會將其動態(tài)分配到流量小的端口上去,以保持四個端口之間的流量均衡,保證其最佳的處理的能力。
為了使流量動態(tài)均衡,設(shè)置以下標(biāo)志初始化令牌,初始分配數(shù)據(jù)流時均衡分配端口號。初始化令牌的取值在第二端口的數(shù)目間環(huán)循,并且初值與端口中的最小端口號相同。當(dāng)初始化一個數(shù)據(jù)流時將該初始化令牌的當(dāng)前值作為該數(shù)據(jù)流的目的端口號(一個第二端口的端口號),然后將初始化令牌的值加1。如圖1中,第二端口的數(shù)目為4,最小端口號為0,則初始化令牌的取值在0~3之間循環(huán),即如果當(dāng)前值為3,則加1后的取值為0。
初始化標(biāo)志,用于表示某一個流是否已經(jīng)分配了端口號。
擁塞標(biāo)志(或稱動態(tài)調(diào)整標(biāo)志),如果一個第二端口的流量達(dá)到一定的門限,表示此端口的流量已經(jīng)達(dá)到幾乎滿了,此時此標(biāo)志位將會置為1。
對于已經(jīng)初始化的數(shù)據(jù)流,將數(shù)據(jù)流的標(biāo)號(簡稱流號)、初始化標(biāo)志、目的端口號及該端口的擁塞標(biāo)志之間的對應(yīng)關(guān)系保存于映射表中,如下表所示。
如果為一個流分配的目的端口不發(fā)生擁塞,則以后這個流就一直發(fā)往這個目的端口。
初始分配時,流按照順序分配目的端口,分配了端口B后,將會去分配端口C,如此類推。按順序分配端口,在分配的過程中傳遞初始化令牌。同時當(dāng)一個流分配了一個端口后,將這個流以及它對應(yīng)的端口號等和初始化標(biāo)志寫入到映射表當(dāng)中去。
在非初始分配時,如果一個端口發(fā)生擁塞,此時擁塞標(biāo)志就會置起,則會將屬于他的部分的流分配給下一個目的端口,如果下一個目的端口也發(fā)生擁塞,則會分配給再下一個目的端口,以此類推。如果四個目的端口都需要動態(tài)調(diào)整,則目的端口不發(fā)生更改,此時就會發(fā)生丟包現(xiàn)象。
參閱圖2所示,對數(shù)據(jù)流的處理過程如下步驟10開始首先將所有的流的初始化標(biāo)志清為零,同時初始化令牌也清為零。
步驟20接收一個流的數(shù)據(jù)包,并根據(jù)流標(biāo)號查詢映射表。
步驟30判斷數(shù)據(jù)是否已經(jīng)初始化,如果沒有初始化,則進(jìn)行步驟40,否則進(jìn)行步驟50。
步驟40將流的目的端口號置為初始化令牌的值,即將端口號與初始化令牌的值相同的端口作為該流的目的端口,從該端口轉(zhuǎn)發(fā)數(shù)據(jù)包并將各對應(yīng)關(guān)系寫入映射表,同時將初始化令牌的值加1,轉(zhuǎn)步驟20。
步驟50判斷數(shù)據(jù)流對應(yīng)的目的端口是否發(fā)生擁塞,如果是則進(jìn)行步驟70,否則進(jìn)行步驟60;步驟60將數(shù)據(jù)包從數(shù)據(jù)流對應(yīng)的端口轉(zhuǎn)發(fā),即不調(diào)整目的端口,并轉(zhuǎn)步驟20。
步驟70將數(shù)據(jù)流的目的端口調(diào)整為下一個不擁塞的端口,從該不擁塞的端口轉(zhuǎn)發(fā)數(shù)據(jù)包并將各對應(yīng)關(guān)系寫入映射表中,轉(zhuǎn)步驟20。
如果所有的端口都發(fā)生擁塞,則不發(fā)生調(diào)整。
本發(fā)明雖然第二端口為四個端口進(jìn)行說明,但該第二端口的數(shù)目可根據(jù)需要增加或減少,其方法與上述相同。
權(quán)利要求
1.一種端口數(shù)據(jù)流量動態(tài)均衡分配方法,用于將一個第一端口的數(shù)據(jù)流分配給多個第二端口;其特征在于該方法包括步驟A、接收第一端口一個數(shù)據(jù)流的數(shù)據(jù)包;B、根據(jù)數(shù)據(jù)流的標(biāo)號判斷該數(shù)據(jù)流是否已初始化,如果是則進(jìn)行步驟D,否則,進(jìn)行步驟C;C、為所述數(shù)據(jù)流分配一個第二端口作為目的端口,從該第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包并記錄該數(shù)據(jù)流標(biāo)號與該第二端口的對應(yīng)關(guān)系,轉(zhuǎn)步驟A;D、判斷所述數(shù)據(jù)流對應(yīng)的第二端口是否發(fā)生擁塞,如果未發(fā)生擁塞,則從該數(shù)據(jù)流對應(yīng)的第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包,轉(zhuǎn)步驟A;否則,將該數(shù)據(jù)流調(diào)整到下一個未發(fā)生擁塞的第二端口,從該未發(fā)生擁塞的第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包并記錄數(shù)據(jù)流標(biāo)號與該第二端口的對應(yīng)關(guān)系,轉(zhuǎn)步驟A。
2.如權(quán)利要求1所述的方法,其特征在于,將數(shù)據(jù)流的初始化標(biāo)志,數(shù)據(jù)流的標(biāo)號,與該數(shù)據(jù)流對應(yīng)的目的端口號,以及該目的端口號的擁塞標(biāo)志之間的對應(yīng)關(guān)系保存于一個映射表中。
3.如權(quán)利要求1所述的方法,其特征在于,步驟C中,將一個取值在所述第二端口的數(shù)目之間循環(huán)的初始化令牌的值作為所述數(shù)據(jù)流的目的端口號,并在初始化該數(shù)據(jù)流后將初始化令牌的值加1,保證在初始化數(shù)據(jù)流時均衡分配端口號,其中該初始化令牌的初始值與多個第二端口中的最小端口號相同。
4.如權(quán)利要求1至3任一所述的方法,其特征在于,步驟D中,當(dāng)所有的第二端口均出現(xiàn)擁塞時,不調(diào)整所述數(shù)據(jù)流對應(yīng)的第二端口。
5.如權(quán)利要求4所述的方法,其特征在于,所述第一端口的速率高于第二端口。
全文摘要
本發(fā)明公開了一種端口數(shù)據(jù)流量動態(tài)均衡分配方法,用于將一個第一端口的數(shù)據(jù)流分配給多個第二端口;該方法為接收第一端口一個數(shù)據(jù)流的數(shù)據(jù)包;根據(jù)數(shù)據(jù)流的標(biāo)號判斷該數(shù)據(jù)流是否已初始化,如果未初始化,則為該流分配一個目的端口并記錄對應(yīng)關(guān)系;如果已初始化,則判斷所述數(shù)據(jù)流對應(yīng)的第二端口是否發(fā)生擁塞,如果未發(fā)生擁塞,則從該數(shù)據(jù)流對應(yīng)的第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包;如果發(fā)生擁塞則將該數(shù)據(jù)流調(diào)整到下一個未發(fā)生擁塞的第二端口,從該未發(fā)生擁塞的第二端口轉(zhuǎn)發(fā)數(shù)據(jù)包并記錄數(shù)據(jù)流標(biāo)號與該第二端口的對應(yīng)關(guān)系。
文檔編號H04L12/56GK1622532SQ20031011666
公開日2005年6月1日 申請日期2003年11月25日 優(yōu)先權(quán)日2003年11月25日
發(fā)明者葉錦華, 姚慧勇, 蔣治 申請人:華為技術(shù)有限公司