專利名稱::一種實(shí)現(xiàn)負(fù)載均衡的方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種實(shí)現(xiàn)負(fù)載均衡的方法及裝置。
背景技術(shù):
:隨著互聯(lián)網(wǎng)(Internet)的迅速普及與發(fā)展,產(chǎn)生了許多新的高帶寬需求的多媒體應(yīng)用,譬如網(wǎng)絡(luò)電視、視頻點(diǎn)播、多媒體遠(yuǎn)程教育等。這些多媒體應(yīng)用滿足了用戶對因特網(wǎng)的需求,同時也帶了網(wǎng)絡(luò)擁塞的問題。網(wǎng)絡(luò)擁塞的原因主要為網(wǎng)絡(luò)中間節(jié)點(diǎn)的輸出端口出現(xiàn)了負(fù)載不均衡。造成網(wǎng)絡(luò)中間節(jié)點(diǎn)的輸出端口負(fù)栽不均衡的原因主要為傳統(tǒng)路由選擇機(jī)制只選擇按路由協(xié)議得到的最短路徑,網(wǎng)絡(luò)中間節(jié)點(diǎn)接收到的數(shù)據(jù)包進(jìn)行傳輸均經(jīng)過該最短路徑。而網(wǎng)絡(luò)中間節(jié)點(diǎn)到目的節(jié)點(diǎn)之間還存在多條除最短路徑以外的次優(yōu)路徑,因此,傳統(tǒng)路由選擇機(jī)制易造成瓶頸鏈路,導(dǎo)致網(wǎng)絡(luò)發(fā)生擁塞。在基于傳輸控制協(xié)議/互聯(lián)網(wǎng)絡(luò)協(xié)議(TCP\IP,TransmissionControlProtocol/InternetProtocol)的網(wǎng)絡(luò)中,為了解決網(wǎng)絡(luò)中間節(jié)點(diǎn)的輸出端口負(fù)載不均衡的問題,現(xiàn)有解決方案主要包括以下兩種方式第一種方式為基于包水平(per-packet)的負(fù)載均衡。具體為收到業(yè)務(wù)流的網(wǎng)絡(luò)中間節(jié)點(diǎn)逐包進(jìn)行負(fù)載均衡處理,常見的方法有輪詢算法,加權(quán)輪詢算法,最小負(fù)載分配算法,隨機(jī)分配算法等。采用逐包的負(fù)載均衡方法,同一個業(yè)務(wù)流中的數(shù)據(jù)包可能沿著不同的路徑到達(dá)接收端,雖能實(shí)現(xiàn)很好的均衡效果,但是由于各路徑時延的不同,使得同一業(yè)務(wù)流中先發(fā)送的數(shù)據(jù)包滯后于后發(fā)送的數(shù)據(jù)包到達(dá)接收端,造成同一業(yè)務(wù)流的數(shù)據(jù)包在接收端發(fā)生亂序。第二種方式為是基于流水平(per-flow)的負(fù)載均衡。常見的基于流水平的負(fù)載均衡方法主要包括基于哈希算法的負(fù)載均衡?;诠K惴ǖ呢?fù)載均衡包括直接哈希算法以及基于表的哈希算法。直接哈希算法非常簡單且不需要維持?jǐn)?shù)據(jù)流的額外的狀態(tài)信息,常見的有目的地址哈希,源和目的地址折疊異或哈希,循環(huán)冗余校驗CRC-16等。基于表的哈希算法需要維護(hù)數(shù)據(jù)流的狀態(tài)信息,通ii^H周整哈希值與輸出端口在表項中的關(guān)系,實(shí)現(xiàn)負(fù)載按期望的負(fù)載分配比分派。基于流水平的負(fù)載分配方法使得同一業(yè)務(wù)流中的數(shù)據(jù)包沿著相同的路徑到達(dá)接收端,可以保證同一業(yè)務(wù)流中數(shù)據(jù)包按序到達(dá)接收端,在接收端不會出現(xiàn)亂序。但是由于網(wǎng)絡(luò)中的各業(yè)務(wù)流的持續(xù)時間、數(shù)據(jù)量不盡相同,基于流水平的負(fù)載均衡采用的算法很可能會造成某些持續(xù)時間長、數(shù)據(jù)量巨大的業(yè)務(wù)流映射到網(wǎng)絡(luò)中間節(jié)點(diǎn)的同一個輸出端口,而其它輸出端口相對空閑,造成負(fù)載均衡效果較差。發(fā)明人在研究過程中,發(fā)現(xiàn)上述兩種現(xiàn)有解決方案至少存在以下缺點(diǎn)無法在保證數(shù)據(jù)包按序到達(dá)的同時,更好地實(shí)現(xiàn)負(fù)載均衡。具體地,基于包水平的負(fù)載均衡只關(guān)注了均衡問題,沒有考慮數(shù)據(jù)包是否按序到達(dá)接收端。采用這種負(fù)載均衡的方法,數(shù)據(jù)包的亂序問題比較嚴(yán)重,網(wǎng)絡(luò)的性能也會嚴(yán)重下降?;诹魉降呢?fù)載均衡可以保證屬于同一個業(yè)務(wù)流的數(shù)據(jù)包沿著相同的路徑到達(dá)接收端,實(shí)現(xiàn)了數(shù)據(jù)包的按序到達(dá),但是,不能很好地實(shí)現(xiàn)負(fù)載均衡。
發(fā)明內(nèi)容有鑒于此,本發(fā)明提供了一種實(shí)現(xiàn)負(fù)載均衡的方法及裝置,以在保證數(shù)據(jù)包按序到達(dá)接收端的同時,更好地實(shí)現(xiàn)負(fù)載均衡。一種實(shí)現(xiàn)負(fù)載均衡的方法,所述方法包括若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口發(fā)生了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述極大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;通過為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述凄t據(jù)包。優(yōu)選地,所述極大流通過以下方式進(jìn)行判別設(shè)置第一計時器,在不大于所述第一計時器的門限值的時間內(nèi),若接收到的屬于同一業(yè)務(wù)流的數(shù)據(jù)包的個數(shù)大于第三門限值,則所述業(yè)務(wù)流為極大流??蛇x地,所述方法還包括為所述業(yè)務(wù)流設(shè)置計數(shù)器,所述第三門限值為所述計數(shù)器的門限值??蛇x地,所述方法還包括若所述業(yè)務(wù)流為極大流,則將所述業(yè)務(wù)流的標(biāo)識信息添加進(jìn)極大流表,所述極大流表用于維護(hù)已確定出的極大流和與極大流對應(yīng)的輸出端口的映射關(guān)系。優(yōu)選地,所述數(shù)據(jù)包是否屬于所述極大流通過如下方式實(shí)現(xiàn)根據(jù)所述數(shù)據(jù)包的標(biāo)識信息查找所述極大流表,若在所述極大流表中查找到與所述數(shù)據(jù)包的標(biāo)識信息匹配的信息,則所述數(shù)據(jù)包屬于所述才及大流??蛇x地,所述方法還包括為所述數(shù)據(jù)包所屬的極大流的標(biāo)識信息設(shè)定第二計時器,當(dāng)?shù)诙嫊r器累計的時間大于所述第二計時器的門限值時,若沒有接收到所述標(biāo)識信息的數(shù)據(jù)包,則將所述極大流的標(biāo)識信息從所述極大流表中刪除??蛇x地,所述方法還包括在初始化時,確定候選下一跳集,所述候選下一跳集是從各下一跳節(jié)點(diǎn)中選出的下一跳節(jié)點(diǎn)組成的集合,為所述數(shù)據(jù)包重新選擇的輸出端口對應(yīng)的下一跳節(jié)點(diǎn)屬于所述候選下一跳集。優(yōu)選地,所述確定候選下一跳集包括若可用下一跳節(jié)點(diǎn)個數(shù)大于所述候選下一跳集包含的下一跳節(jié)點(diǎn)個數(shù)門限值M,則從所述可用下一跳節(jié)點(diǎn)中選擇權(quán)值排在前M位的下一跳節(jié)點(diǎn)構(gòu)成候選下一跳集;若可用下一跳節(jié)點(diǎn)個數(shù)不大于所述M,則所述可用下一跳節(jié)點(diǎn)構(gòu)成候選下一跳集,所述M為自然數(shù);所述權(quán)值由所述各輸出端口包含的路徑的帶寬信息、時延信息確定。8對所述各輸出端口的隊列長度進(jìn)行統(tǒng)計;所述重新選4奪所述數(shù)據(jù)包的輸出端口包括根據(jù)所述各輸出端口的隊列長度重新選擇所述數(shù)據(jù)包的輸出端口??蛇x地,所述方法還包括若所述數(shù)據(jù)包屬于極小流,或者,所述數(shù)據(jù)包屬于極大流且當(dāng)前所述各輸出端口負(fù)載分配均衡,維持與所述數(shù)據(jù)包對應(yīng)的輸出端口不變;所述極小流為在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)小于第四門限值的業(yè)務(wù)流。一種實(shí)現(xiàn)負(fù)載均衡的裝置,所述裝置包括重新選#^單元,用于若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口出現(xiàn)了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述極大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;輸出端口隊列單元,用于通過所述重新選擇單元為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述數(shù)據(jù)包。優(yōu)選地,所述重新選擇單元包括極大流判別單元,用于設(shè)置第一計時器,以判別所述數(shù)據(jù)包所屬的業(yè)務(wù)流是否為所述極大流。優(yōu)選地,所述重新選擇單元包括查找單元,所述查找單元包括極大流表,所述查找單元用于根據(jù)所述數(shù)據(jù)包的標(biāo)識信息查找所述極大流表,若在所述極大流表中查找到與所述數(shù)據(jù)包的標(biāo)識信息匹配的信息,則所述凄t據(jù)包屬于所述;fe大流;所述極大流判別單元還用于若所述業(yè)務(wù)流為極大流,則將所述業(yè)務(wù)流的標(biāo)識信息添加進(jìn)所述查找單元的所述極大流表??蛇x地,所述重新選擇單元還包括極大流表維護(hù)單元,用于為所述數(shù)據(jù)包所屬的極大流的標(biāo)識信息設(shè)定第二計時器,當(dāng)?shù)诙嫊r器累計的時間大于所述第二計時器的門限值時,若沒有接收到所述標(biāo)識信息的數(shù)據(jù)包,則將所述極大流的標(biāo)識信息從所述極大流表中刪除。可選地,所述裝置還包括候選下一跳集單元,用于在初始化時,確定候選下一跳集,所述候選下一跳集是從各下一跳節(jié)點(diǎn)中選出的下一跳節(jié)點(diǎn)組成的集合,為所述數(shù)據(jù)包確定的輸出端口對應(yīng)的下一跳節(jié)點(diǎn)屬于所述候選下一跳集。可選地,所述裝置還包括統(tǒng)計單元,用于對所述各輸出端口的隊列長度進(jìn)行統(tǒng)計;所述重新選擇單元用于根據(jù)所述統(tǒng)計單元統(tǒng)計的各輸出端口的隊列長度重新選擇所述數(shù)據(jù)包的輸出端口。可選地,所述裝置還包括輸出端口維持單元,用于若所述數(shù)據(jù)包屬于極小流,或者,所述數(shù)據(jù)包屬于極大流且當(dāng)前所述各輸出端口負(fù)載分配均衡,維持與所述數(shù)據(jù)包對應(yīng)的輸出端口不變??梢钥闯觯景l(fā)明將網(wǎng)絡(luò)中的業(yè)務(wù)流分為極大流與極小流。對于屬于極大流的數(shù)據(jù)包,在輸出端口負(fù)載不均衡的情況下,重新為其選擇輸出端口,即可以將數(shù)據(jù)包的輸出端口調(diào)整到當(dāng)前負(fù)載最小的輸出端口上進(jìn)行發(fā)送。對于屬于極小流的數(shù)據(jù)包,或者在當(dāng)前輸出端口負(fù)載分配均衡的情況下屬于極大流的數(shù)據(jù)包,仍然通過原有的輸出端口進(jìn)行發(fā)送。從而,在保證數(shù)據(jù)包按序到達(dá)接收端的同時,更好地實(shí)現(xiàn)負(fù)載均衡。圖1為本發(fā)明方法流程圖2為本發(fā)明實(shí)施例方法流程圖;果的方法流程圖4為本發(fā)明實(shí)施例網(wǎng)絡(luò)中間節(jié)點(diǎn)確定某業(yè)務(wù)流是否為^f及大流的方法流程圖5為本發(fā)明裝置結(jié)構(gòu)框圖;圖6為本發(fā)明實(shí)施例裝置結(jié)構(gòu)框圖一;圖7為本發(fā)明實(shí)施例裝置結(jié)構(gòu)框圖二。具體實(shí)施例方式為了使本發(fā)明的上述特征、優(yōu)點(diǎn)更加明顯易懂,下面結(jié)合具體實(shí)施方式對本發(fā)明進(jìn)行詳細(xì)說明。首先,值得注意的是,本發(fā)明根據(jù)網(wǎng)絡(luò)流量呈現(xiàn)出來的統(tǒng)計特性進(jìn)行業(yè)務(wù)流區(qū)分。具體地,網(wǎng)絡(luò)中各條業(yè)務(wù)流的持續(xù)時間、包含的數(shù)據(jù)包個數(shù)等不盡相同。通常,網(wǎng)絡(luò)中的業(yè)務(wù)流大多為持續(xù)時間短、包含的數(shù)據(jù)包個數(shù)少的業(yè)務(wù)流,但是這些業(yè)務(wù)流包含的數(shù)據(jù)量只是網(wǎng)絡(luò)的數(shù)據(jù)量中^[艮小的一部分。網(wǎng)絡(luò)中的大部分?jǐn)?shù)據(jù)由持續(xù)時間長、包含的數(shù)據(jù)包個數(shù)多的業(yè)務(wù)流組成。根據(jù)業(yè)務(wù)流的突發(fā)特性和流量特性,本發(fā)明把業(yè)務(wù)流分為極小流和極大流。極小流是在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)小于預(yù)置的門限值。同時滿足以下兩個條件的業(yè)務(wù)流為極大流(1)在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于預(yù)置的門限值;(2)該業(yè)務(wù)流的持續(xù)時間大于預(yù)置的門限值。具有多個下一跳的網(wǎng)絡(luò)中間節(jié)點(diǎn)的輸出端口發(fā)生負(fù)載不均衡主要是由于極大流造成的。在沒有出現(xiàn)負(fù)載不均衡的情況下,業(yè)務(wù)流都按照預(yù)定的分配關(guān)系,緩存入網(wǎng)絡(luò)中間節(jié)點(diǎn)確定的輸出端口隊列中,屬于同一業(yè)務(wù)流的數(shù)據(jù)包將被分配至同一個輸出端口隊列中,確保業(yè)務(wù)流數(shù)據(jù)包的按序到達(dá)。在發(fā)生負(fù)載不均衡的情況下,總體上采用基于流的負(fù)載分配策略,由輸出端口觸發(fā)進(jìn)行過載輸出端口的調(diào)整,把造成過載的極大流調(diào)整到具有最小負(fù)載的輸出端口上。此時,其它業(yè)務(wù)流都不會被調(diào)整,仍然按照之前指定的輸出端口調(diào)度,被調(diào)整的極大流經(jīng)調(diào)整后,后續(xù)到達(dá)的屬于該極大流的數(shù)據(jù)包都將沿著調(diào)整后的輸出端口調(diào)度。這樣,調(diào)整之前的數(shù)據(jù)包沿著相同的路徑到達(dá)接收端,調(diào)整之后的數(shù)據(jù)包沿著調(diào)整之后的路徑到達(dá)接收端,從而不會造成數(shù)據(jù)包的亂序。同時,還可以有效的利用網(wǎng)絡(luò)的資源,提高網(wǎng)絡(luò)的整體性能。請參考圖1,為本發(fā)明方法流程圖,包括以下步驟步驟101:若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口發(fā)生了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述才及大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;步驟102:通過為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述數(shù)據(jù)包。下面結(jié)合實(shí)施例對圖1所示步驟進(jìn)行詳細(xì)說明。首先,網(wǎng)絡(luò)中間節(jié)點(diǎn)可以在初始化時進(jìn)行以下工作(1)對包含輸出端口帶寬以及時延信息的信息庫進(jìn)行維護(hù)。該信息庫維護(hù)有網(wǎng)絡(luò)中間節(jié)點(diǎn)每個輸出端口到下一跳節(jié)點(diǎn)的各鏈路的帶寬值和時延值,以便確定到目的節(jié)點(diǎn)的候選下一跳集。(2)確定候選下一跳集。根據(jù)路由協(xié)議得到的到達(dá)目的節(jié)點(diǎn)的可用下一跳節(jié)點(diǎn)有可能會比較多,最大值為路由器端口總數(shù)減1,這就意味著到目的節(jié)點(diǎn)可能會出現(xiàn)多條路徑。各路徑的情況不盡相同,有的帶寬比較寬,有的帶寬比較窄,對這些可用的下一跳節(jié)點(diǎn)進(jìn)行篩選得到候選下一跳集。下一跳節(jié)點(diǎn)的確定也就是數(shù)據(jù)包輸出端口的確定。給各個輸出端口賦予歸一化的權(quán)重^,i<n,n為可用下一跳節(jié)點(diǎn)的個數(shù),n為自然數(shù),該權(quán)重值的大小由各路徑的帶寬、時延共同決定,具體可以通過如下公式實(shí)現(xiàn)x歸一化帶寬士(l-")x歸一化時延,其中0<"<1。設(shè)定候選下一跳集可以包含的下一跳節(jié)點(diǎn)個數(shù)門限值M,M為自然數(shù)。若可用下一跳節(jié)點(diǎn)個數(shù)n大于M,從可用下一跳節(jié)點(diǎn)中挑選其權(quán)值排在前M位的下一跳節(jié)點(diǎn)構(gòu)成候選下一跳集。若可用下一跳節(jié)點(diǎn)個數(shù)n小于等于M,可用下一跳節(jié)點(diǎn)全部構(gòu)成候選下一跳集。(3)網(wǎng)絡(luò)中間節(jié)點(diǎn)實(shí)時或者周期性統(tǒng)計各輸出端口隊列長度信息。為了能自適應(yīng)的調(diào)整輸出端口的負(fù)載分配,需要把原本映射到過載輸出端口的業(yè)務(wù)流映射至負(fù)載最小的輸出端口,這就需要有各輸出端口的隊列長度信息。各輸出端口隊列長度信息可以及時進(jìn)行更新,以提供負(fù)載最小的隊列信息。需要指出的是,網(wǎng)絡(luò)中間節(jié)點(diǎn)不僅在初始化時需要統(tǒng)計各輸出端口隊列長度信息,初始化完成后,網(wǎng)絡(luò)中間節(jié)點(diǎn)還要實(shí)時或者周期性統(tǒng)計各輸出端口隊列長度信息。若周期性進(jìn)行統(tǒng)計,周期的取值較小。(4)結(jié)合候選下一跳集的信息和期望的負(fù)載分配比,確定哈希映射表中各業(yè)務(wù)流與輸出端口之間的映射。初始化完成后,當(dāng)網(wǎng)路中間節(jié)點(diǎn)接收到數(shù)據(jù)包時,需要確定其輸出端口。請參考圖2,為本發(fā)明實(shí)施例方法流程圖,可以包括以下步驟步驟201:提取接收到的數(shù)據(jù)包的相關(guān)頭部信息,根據(jù)提取的信息確定該數(shù)據(jù)包的標(biāo)識號(flow_ID);可以提取數(shù)據(jù)包的包頭的5元組信息(5元組信息包括源IP地址,目的IP地址,源端口號,目的端口號,協(xié)議類型號),并不對提取的數(shù)據(jù)包的包頭信息加以限制,可以是5元組中的部分域。對提取出的數(shù)據(jù)包的包頭信息進(jìn)行哈希運(yùn)算,可以采用CRC-16等哈希函數(shù)進(jìn)行哈希運(yùn)算,得到該數(shù)據(jù)包的flow—ID。屬于同一個業(yè)務(wù)流的數(shù)據(jù)包具有相同的flow一ID。步驟202:將flow_ID作為關(guān)鍵字,分別查找哈希映射表(hash—table)以及才及大流表(flow—table);極大流表用于維護(hù)極大流和與極大流對應(yīng)的輸出端口的映射關(guān)系。根據(jù)得到的flow—ID查找哈希映射表,得到第一查詢結(jié)果。同時,根據(jù)得到的flow—ID在極大流表中查找。若在極大流表中沒有匹配結(jié)果,說明該數(shù)據(jù)包不屬于極大流。若在極大流表中有匹配結(jié)果,說明該數(shù)據(jù)包屬于極大流。查找極大流表之后,得到第二查詢結(jié)果。在該數(shù)據(jù)包屬于極大流的情況下,當(dāng)輸出端口隊列的調(diào)整信息有效時,說明此時各輸出端口負(fù)載不均衡,需要進(jìn)行調(diào)整。此時,第二查詢結(jié)果有效。根據(jù)各輸出端口的隊列長度信息,把該數(shù)據(jù)包映射到具有最小負(fù)載的輸出端口。當(dāng)輸出端口隊列輸出的調(diào)整信息無效時,說明此時不需要對負(fù)載進(jìn)行均衡,雖然該數(shù)據(jù)包屬于極大流,但是第二查詢結(jié)果無效。在根據(jù)得到的flow一ID在極大流表中查找的同時,網(wǎng)絡(luò)中間節(jié)點(diǎn)同步進(jìn)行著極大流的統(tǒng)計確認(rèn)。具體為設(shè)置一個統(tǒng)計用第一計時器,并對第一計時器設(shè)定相應(yīng)的門限值,同時給每個業(yè)務(wù)流設(shè)置了數(shù)據(jù)包個數(shù)計數(shù)器,并分別對各計數(shù)器設(shè)定了相應(yīng)門限值。在不大于第一計時器的門限值的時間內(nèi),某個業(yè)務(wù)流的數(shù)據(jù)包個數(shù)超出了其計數(shù)器的門限值,則該業(yè)務(wù)流是一個極大流,把該業(yè)務(wù)流的flow—ID添加到極大流表中。一旦第一計時器累計的時間大于第一計時器的門限值,將當(dāng)前用于確i/^及大流的統(tǒng)計信息全部清零,進(jìn)入下一輪才及大流確認(rèn)循環(huán)過程。需要指出的是,得到第一查詢結(jié)果的方式不局限于查找哈希映射表。步驟203:根據(jù)在哈希映射表以及在極大流表中的查詢結(jié)果確定該數(shù)據(jù)包的豐餘出端口;若第一查詢結(jié)果有效,第二查詢結(jié)果無效,選擇第一查詢結(jié)果確定該數(shù)據(jù)包的輸出端口。選擇第一查詢結(jié)果確定該數(shù)據(jù)包的輸出端口時,該數(shù)據(jù)包原來應(yīng)選擇的輸出端口仍然作為其輸出端口。若第一查詢結(jié)果與第二查詢結(jié)果均有效,選擇第二查詢結(jié)果確定該數(shù)據(jù)包的輸出端口。選擇第二查詢結(jié)果確定該數(shù)據(jù)包的輸出端口時,根據(jù)各輸出端口隊列長度信息選擇負(fù)載最小的輸出端口作為該數(shù)據(jù)包的輸出端口。與輸出端口相應(yīng)的下一跳節(jié)點(diǎn)屬于候選下一跳集。步驟204:將該數(shù)據(jù)包緩存到確定的輸出端口的輸出隊列。可選地,在步驟202的過程中,還可以包括為flow—ID設(shè)定第二計時器和與第二計時器相應(yīng)的門限值,若該數(shù)據(jù)包在極大流表中有匹配結(jié)果,第二計時器清零;在不大于第二計時器的門限值的時間內(nèi),若沒有再收到該flowjD的數(shù)據(jù)包,將該flowID在極大流表中刪除。第二計時器的主要作用是確定極大流表中的flow—ID是否還有效。若某個flow—ID無效,則將無效的flow—ID刪除以減小極大流表中表項的個數(shù)。極大流表中的各flow—ID均有各自的第二計時器。在某flow—ID的第二計時器的門限值內(nèi),若網(wǎng)絡(luò)中間節(jié)點(diǎn)接收到該flowJDD對應(yīng)的數(shù)據(jù)包,第二計時器清零后重新開始計時。若第二計時器的時間大于其門限值,網(wǎng)絡(luò)中間節(jié)點(diǎn)還沒有接收到該flow—ID對應(yīng)的數(shù)據(jù)包,將該flow—ID從極大流表中刪除。請參考圖3,為本發(fā)明實(shí)施例中網(wǎng)絡(luò)中間節(jié)點(diǎn)通過查找極大流表得到第二查詢結(jié)果的方法流程圖,可以包括以下步驟步驟301:在極大流表中查找得到的flow_ID;步驟302:判斷是否有匹配結(jié)果,若有,執(zhí)行步驟303,否則,得到無效的查詢結(jié)果;步驟303:查看輸出端口隊列輸出的調(diào)整信息是否有效,若有效,得到有效的第二查詢結(jié)果,否則,得到無效的第二查詢結(jié)果。當(dāng)?shù)诙樵兘Y(jié)果有效時,更新極大流表中與得到的flow—ID匹配的極大流的映射關(guān)系,即更新與該極大流對應(yīng)的輸出端口,更新之后的輸出端口為具有最小負(fù)載的輸出端口,選擇具有最小負(fù)載的輸出端口作為該數(shù)據(jù)包的輸出端口。請參考圖4,為本發(fā)明實(shí)施例網(wǎng)絡(luò)中間節(jié)點(diǎn)確定某業(yè)務(wù)流是否為極大流的方法流程圖,可以包括以下步驟步驟401:接收到一個數(shù)據(jù)包時,判斷第一計時器累計的時間是否大于第一計時器的門限值,若大于,執(zhí)行步驟402,否則,執(zhí)行步驟403;步驟402:將所有業(yè)務(wù)流的計數(shù)器以及第一計時器清零,以進(jìn)入下一條業(yè)務(wù)流的判別,返回步驟401;步驟403:判斷當(dāng)前接收到的數(shù)據(jù)包是否是其所屬業(yè)務(wù)流中第一個到達(dá)網(wǎng)絡(luò)中間節(jié)點(diǎn)的數(shù)據(jù)包,若是,執(zhí)行步驟404,否則,執(zhí)行步驟405;步驟404:為當(dāng)前接收到的數(shù)據(jù)包所屬的業(yè)務(wù)流設(shè)置計數(shù)器,返回步驟401;此時計數(shù)器counter=l,等待對下一個數(shù)據(jù)包的判斷。步驟405:將當(dāng)前接收到的數(shù)據(jù)包所屬的業(yè)務(wù)流的計數(shù)器的值加1;步驟406:判斷當(dāng)前接收到的數(shù)據(jù)包所屬的業(yè)務(wù)流的計數(shù)器的值是否大于該計數(shù)器的門限值,若大于,執(zhí)行步驟407,否則,返回步驟401;若大于,說明當(dāng)前接收到的數(shù)據(jù)包所屬的業(yè)務(wù)流是極大流。步驟407:將當(dāng)前接收到的數(shù)據(jù)包的flow—ID添加進(jìn)極大流表;步驟408:當(dāng)前接收到的數(shù)據(jù)包所屬的業(yè)務(wù)流的計數(shù)器清零,返回步驟401??梢钥闯觯景l(fā)明將網(wǎng)絡(luò)中的業(yè)務(wù)流分為極大流與極小流。對于屬于極大流的數(shù)據(jù)包,在輸出端口負(fù)載不均衡的情況下,重新選擇其輸出端口,即可以將數(shù)據(jù)包的輸出端口調(diào)整到當(dāng)前負(fù)載最小的輸出端口上進(jìn)行發(fā)送。對于屬于極小流的數(shù)據(jù)包,或者在當(dāng)前輸出端口負(fù)載分配均衡的情況下屬于極大流的數(shù)據(jù)包,仍然通過原有的輸出端口進(jìn)行發(fā)送。從而,在保證數(shù)據(jù)包按序到達(dá)接收端的同時,更好地實(shí)現(xiàn)負(fù)載均衡。同時,還可以有效的利用網(wǎng)絡(luò)的資源,提高網(wǎng)絡(luò)的整體性能。請參考圖5,為本發(fā)明裝置結(jié)構(gòu)框圖,包括重新選擇單元501,用于若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口出現(xiàn)了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述極大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;輸出端口隊列單元502,用于通過所述重新選擇單元501為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述數(shù)據(jù)包。請參考圖6,為本發(fā)明實(shí)施例裝置結(jié)構(gòu)框圖一,在圖5所示各單元的基礎(chǔ)上,還可以包括候選下一跳集單元503,用于在初始化時,確定候選下一跳集,所述候選下一跳集是從各下一跳節(jié)點(diǎn)中選出的下一跳節(jié)點(diǎn)組成的集合,為所述數(shù)據(jù)包確定的輸出端口對應(yīng)的下一跳節(jié)點(diǎn)屬于所述候選下一跳集。統(tǒng)計單元504,用于對所述各輸出端口的隊列長度進(jìn)行統(tǒng)計;所述重新選擇單元501用于根據(jù)所述統(tǒng)計單元504統(tǒng)計的各輸出端口的隊列長度重新選擇所述數(shù)據(jù)包的輸出端口。輸出端口維持單元505,用于若所述數(shù)據(jù)包屬于極小流,或者,所述數(shù)據(jù)包屬于極大流且當(dāng)前所述各輸出端口負(fù)載分配均衡,維持與所述數(shù)據(jù)包對應(yīng)的輸出端口不變。提取單元506,用于提取所述數(shù)據(jù)包包頭中的相關(guān)信息,以確定所述數(shù)據(jù)包的標(biāo)識號,并將所述標(biāo)識號作為關(guān)鍵字輸出至重新選擇單元501以及輸出端口維持單元505。輸出單元507,用于根據(jù)所述重新選才,單元501或者所述輸出端口維持單元505確定的輸出端口將數(shù)據(jù)包輸出至相應(yīng)的輸出端口。請參考圖7,為本發(fā)明實(shí)施例裝置結(jié)構(gòu)框圖二,在圖6所示各單元的基礎(chǔ)上,重新選擇單元501可以包括極大流判別單元508,用于設(shè)置第一計時器,以判別所述數(shù)據(jù)包所屬的業(yè)務(wù)流是否為所述極大流。查找單元509,所述查找單元509包括極大流表,所述查找單元509用于根據(jù)所述數(shù)據(jù)包的標(biāo)識信息查找所述極大流表,若在所述極大流表中查找到與所述數(shù)據(jù)包的標(biāo)識信息匹配的信息,則所述數(shù)據(jù)包屬于所述極大流;所述極大流判別單元508還用于若所述業(yè)務(wù)流為極大流,則將所述業(yè)務(wù)流的標(biāo)識信息添加進(jìn)所述查找單元508的所述極大流表。極大流表維護(hù)單元510,用于為所述數(shù)據(jù)包所屬的極大流的標(biāo)識信息設(shè)定第二計時器,當(dāng)?shù)诙嫊r器累計的時間大于所述第二計時器的門限值時,若沒有接收到所述標(biāo)識信息的數(shù)據(jù)包,則將所述極大流的標(biāo)識信息從所述極大流表中刪除。下面結(jié)合圖2所示步驟對圖7各單元執(zhí)行的操作進(jìn)行詳細(xì)說明。初始化時,統(tǒng)計單元504實(shí)時或者周期性對各輸出端口的隊列長度進(jìn)行統(tǒng)計。候選下一跳集單元503確定候選下一跳集。初始化完成后,統(tǒng)計單元504還需要實(shí)時或者周期性對各輸出端口的隊列長度進(jìn)行統(tǒng)計。提取單元506提取接收到的數(shù)據(jù)包的相關(guān)頭部信息,根據(jù)提取的信息確定該數(shù)據(jù)包的標(biāo)識號flow一ID。將flow—ID作為關(guān)鍵字分別輸出至重新選擇單元501以及輸出端口維持單元505。重新選擇單元501的查找單元509在極大流表中查找該數(shù)據(jù)包所屬的業(yè)務(wù)流是否屬于極大流。同時,極大流判別單元508設(shè)置第一計時器,判斷該數(shù)據(jù)包所屬的業(yè)務(wù)流是否為極大流??蛇x地,極大流表維護(hù)單元510對極大流表進(jìn)行維護(hù),將無效的flow—ID從極大流表中刪除。輸出端口維持單元505輸出第一查詢結(jié)果,重新選擇單元501輸出第二查詢結(jié)果。若第二查詢結(jié)果有效,重新選^l奪單元5014艮據(jù)統(tǒng)計單元504的統(tǒng)計信息為該報文重新選擇輸出端口。輸出單元507根據(jù)第一查詢結(jié)果或者第二查詢結(jié)果確定的輸出端口,將該報文輸出至輸出端口隊列單元502。、可以看出,本發(fā)明將網(wǎng)絡(luò)中的業(yè)務(wù)流分為極大流與極小流。對于屬于極大流的數(shù)據(jù)包,在輸出端口負(fù)載不均衡的情況下,重新選擇其輸出端口,即可以將數(shù)據(jù)包的輸出端口調(diào)整到當(dāng)前負(fù)載最小的輸出端口上進(jìn)行發(fā)送。對于屬于極小流的數(shù)據(jù)包,或者在當(dāng)前輸出端口負(fù)載分配均衡的情況下屬于極大流的數(shù)據(jù)包,仍然通過原有的輸出端口進(jìn)行發(fā)送。從而,在保證數(shù)據(jù)包按序到達(dá)接收端的同時,更好地實(shí)現(xiàn)負(fù)載均衡。同時,還可以有效的利用網(wǎng)絡(luò)的資源,提高網(wǎng)絡(luò)的整體性能。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語"包括"、"包含"或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、在沒有更多限制的情況下,由語句"包括一個……"限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以全部通過硬件來實(shí)施,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案對
背景技術(shù):
做出貢獻(xiàn)的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例或者實(shí)施例的某些部分所述的方法。以上對本發(fā)明所提供的一種實(shí)現(xiàn)負(fù)載均衡的方法及裝置進(jìn)行了詳細(xì)介實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。權(quán)利要求1、一種實(shí)現(xiàn)負(fù)載均衡的方法,其特征在于,所述方法包括若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口發(fā)生了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述極大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;通過為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述數(shù)據(jù)包。2、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述極大流通過以下方式進(jìn)行判別設(shè)置第一計時器,在不大于所述第一計時器的門限值的時間內(nèi),若接收到的屬于同一業(yè)務(wù)流的數(shù)據(jù)包的個數(shù)大于第三門限值,則所述業(yè)務(wù)流為極大流。3、根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括為所述業(yè)務(wù)流設(shè)置計數(shù)器,所述第三門限值為所述計數(shù)器的門限值。4、根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括若所述業(yè)務(wù)流為極大流,則將所述業(yè)務(wù)流的標(biāo)識信息添加進(jìn)極大流表,所述極大流表用于維護(hù)已確定出的才及大流和與才及大流對應(yīng)的輸出端口的映射關(guān)系。5、根據(jù)權(quán)利要求4所述的方法,其特征在于,所述數(shù)據(jù)包是否屬于所述極大流通過如下方式實(shí)現(xiàn)根據(jù)所述數(shù)據(jù)包的標(biāo)識信息查找所述極大流表,若在所述極大流表中查找到與所述數(shù)據(jù)包的標(biāo)識信息匹配的信息,則所述數(shù)據(jù)包屬于所述極大流。6、根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括為所述數(shù)據(jù)包所屬的極大流的標(biāo)識信息設(shè)定第二計時器,當(dāng)?shù)诙嫊r器累計的時間大于所述第二計時器的門限值時,若沒有接收到所述標(biāo)識信息的數(shù)據(jù)包,則將所述極大流的標(biāo)識信息從所述極大流表中刪除。7、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括在初始化時,確定候選下一跳集,所述候選下一跳集是從各下一跳節(jié)點(diǎn)中選出的下一跳節(jié)點(diǎn)組成的集合,為所述數(shù)據(jù)包重新選擇的輸出端口對應(yīng)的下一跳節(jié)點(diǎn)屬于所述候選下一跳集。8、才艮據(jù)權(quán)利要求7所述的方法,其特征在于,所述確定候選下一跳集包括若可用下一跳節(jié)點(diǎn)個數(shù)大于所述候選下一跳集包含的下一跳節(jié)點(diǎn)個數(shù)門限值M,則從所述可用下一跳節(jié)點(diǎn)中選擇權(quán)值排在前M位的下一跳節(jié)點(diǎn)構(gòu)成候選下一跳集;若可用下一跳節(jié)點(diǎn)個數(shù)不大于所述M,則所述可用下一跳節(jié)點(diǎn)構(gòu)成候選下一跳集,所述M為自然數(shù);所述權(quán)值由所述各輸出端口包含的路徑的帶寬信息、時延信息確定。9、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括對所述各輸出端口的隊列長度進(jìn)行統(tǒng)計;所述重新選擇所述數(shù)據(jù)包的輸出端口包括才艮據(jù)所述各輸出端口的隊列長度重新選擇所述數(shù)據(jù)包的輸出端口。10、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括若所述數(shù)據(jù)包屬于極小流,或者,所述數(shù)據(jù)包屬于極大流且當(dāng)前所述各輸出端口負(fù)載分配均衡,維持與所述數(shù)據(jù)包對應(yīng)的輸出端口不變;所述極小流為在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)小于第四門限值的業(yè)務(wù)、、云11、一種實(shí)現(xiàn)負(fù)載均衡的裝置,其特征在于,所述裝置包括重新選擇單元,用于若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口出現(xiàn)了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述極大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;輸出端口隊列單元,用于通過所述重新選擇單元為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述數(shù)據(jù)包。12、根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述重新選擇單元包括極大流判別單元,用于設(shè)置第一計時器,以判別所述數(shù)據(jù)包所屬的業(yè)務(wù)流是否為所述一及大流。13、根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述重新選擇單元包括查找單元,所述查找單元包括極大流表,所述查找單元用于根據(jù)所述數(shù)據(jù)包的標(biāo)識信息查找所述極大流表,若在所述極大流表中查找到與所述數(shù)據(jù)包的標(biāo)識信息匹配的信息,則所述數(shù)據(jù)包屬于所述極大流;所述極大流判別單元還用于若所述業(yè)務(wù)流為極大流,則將所述業(yè)務(wù)流的標(biāo)識信息添加進(jìn)所述查找單元的所述極大流表。14、根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述重新選擇單元還包括極大流表維護(hù)單元,用于為所述數(shù)據(jù)包所屬的極大流的標(biāo)識信息設(shè)定第二計時器,當(dāng)?shù)诙嫊r器累計的時間大于所述第二計時器的門限值時,若沒有接收到所述標(biāo)識信息的數(shù)據(jù)包,則將所述極大流的標(biāo)識信息從所述極大流表中刪除。15、根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括候選下一跳集單元,用于在初始化時,確定候選下一跳集,所述候選下一跳集是從各下一跳節(jié)點(diǎn)中選出的下一跳節(jié)點(diǎn)組成的集合,為所述數(shù)據(jù)包確定的輸出端口對應(yīng)的下一跳節(jié)點(diǎn)屬于所述候選下一跳集。16、根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括統(tǒng)計單元,用于對所述各輸出端口的隊列長度進(jìn)行統(tǒng)計;所述重新選擇單元用于根據(jù)所述統(tǒng)計單元統(tǒng)計的各輸出端口的隊列長度重新選擇所述數(shù)據(jù)包的#r出端口。17、根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括輸出端口維持單元,用于若所述數(shù)據(jù)包屬于極小流,或者,所述數(shù)據(jù)包屬于極大流且當(dāng)前所述各輸出端口負(fù)載分配均衡,維持與所述數(shù)據(jù)包對應(yīng)的#"出端口不變。全文摘要本發(fā)明公開了一種實(shí)現(xiàn)負(fù)載均衡的方法及裝置。本發(fā)明公開的方法包括若接收到的數(shù)據(jù)包屬于極大流,且當(dāng)前各輸出端口發(fā)生了負(fù)載不均衡,重新選擇所述數(shù)據(jù)包的輸出端口,所述極大流為同時滿足以下兩個條件的業(yè)務(wù)流在單位時間內(nèi)到達(dá)的數(shù)據(jù)包個數(shù)大于第一門限值,持續(xù)時間大于第二門限值;通過為所述數(shù)據(jù)包重新選擇的輸出端口發(fā)送所述數(shù)據(jù)包。通過本發(fā)明,可以在保證數(shù)據(jù)包按序到達(dá)接收端的同時,更好地實(shí)現(xiàn)負(fù)載均衡。文檔編號H04L12/56GK101478480SQ200910000068公開日2009年7月8日申請日期2009年1月5日優(yōu)先權(quán)日2009年1月5日發(fā)明者婧于,卜佑軍,姜錕鵬,晶曲,朱圣平,朱宣勇,汪斌強(qiáng),超王申請人:中國人民解放軍信息工程大學(xué)