基于生成樹的域內(nèi)多路徑生成方法
【專利摘要】本發(fā)明公開了一種基于生成樹的域內(nèi)多路徑生成方法,包括:按照優(yōu)先級結構將結點加入到創(chuàng)建的優(yōu)先級隊列中;判斷優(yōu)先級隊列是否為空,若不空,則選取優(yōu)先級隊列的隊首元素,并將其刪除;訪問隊首元素的所有鄰居結點,判斷各結點是否被訪問過,若未被訪問過,則更新該結點信息,并將更新后的信息添加到優(yōu)先級隊列中,否則,根據(jù)設定規(guī)則計算根結點到隊首元素的下一跳以及根結點到當前鄰居結點的下一跳;若訪問完所有鄰居結點,則返回判斷優(yōu)先級隊列是否為空的步驟。本發(fā)明方法可以為運行算法的某一結點到目的結點計算出多條無環(huán)的路徑,并且運行算法的結點只需要維護一個多路徑樹即可,降低了復雜度。
【專利說明】基于生成樹的域內(nèi)多路徑生成方法
【技術領域】
[0001]本發(fā)明屬于互聯(lián)網(wǎng)【技術領域】,涉及域內(nèi)路由生成方法,具體涉及一種基于生成樹的域內(nèi)多路徑生成方法。
【背景技術】
[0002]互聯(lián)網(wǎng)由上萬個獨自運維的自治系統(tǒng)AS (Autonomous System)構成。
[0003]域內(nèi)鏈路狀態(tài)路由協(xié)議(OSPF和ISIS)控制著AS內(nèi)部的報文轉發(fā)路徑,但是OSPF和ISIS沒有很好的利用網(wǎng)絡中固有的路徑多樣性,從源結點到目的結點只能計算出一條最短路徑,因此網(wǎng)絡的可靠性和安全性都比較差。而多路徑路由算法則很好的利用了網(wǎng)絡中固有的路徑多樣性,可以為源結點到目的結點計算出多條路徑,因此極大的提高了網(wǎng)絡的可靠性和安全性,并且很容易實現(xiàn)負載均衡。
[0004]目前已經(jīng)提出了很多種多路徑路由的解決方案。例如,等值多路徑路由協(xié)議(Equal Cost Multipath Routing, ECMP), ECMP可以為源結點到目的結點計算出多條等值的最短路徑,網(wǎng)絡管理員可以通過調(diào)節(jié)邊的權值來構造多條最短路徑,然而這個問題被證明是NP-Hard問題。
[0005]多路徑算法(Multiple Path Algorithm,MPA)的核心思想是當運行算法的結點的鄰居結點到目的結點的最小代價小于該結點到目的結點的最小代價時,該結點可以選擇此鄰居結點作為其到目的結點的下一跳。如果要實現(xiàn)MPA,運行算法的結點必須得到其所有鄰居結點到目的結點的最小代價。可以通過兩種方法得到該節(jié)點的所有鄰居結點到目的結點的最小代價,第一種方法是在該結點上構造以鄰居結點為根的SPT,但是這種方法增加了算法的復雜度,另外一種方法是鄰居結點將其計算的到目的結點的最小代價傳遞給該結點,而這種方法則增加了通信開銷。最近IETF提出了多拓撲路由(Mult1-topology routing),該方法的特點是預先假設某些鏈路失效,在去除失效鏈路的網(wǎng)絡拓撲圖中計算最短路徑,該方法同樣需要在一個結點上計算多個SPT,因此算法的時間復雜度比較高。
[0006]因此,需要本領域研究人員迫切解決的一個問題就是如何計算出從運行算法的結點到目的結點的多條無環(huán)路徑的同時降低算法復雜度。
【發(fā)明內(nèi)容】
[0007]本發(fā)明所要解決的技術問題之一是需要提供一種基于生成樹的域內(nèi)多路徑生成方法,該方法能夠在計算出某一結點到目的結點的多條無環(huán)路徑的同時降低算法復雜度。
[0008]為了解決上述技術問題,本發(fā)明提供了一種基于生成樹的域內(nèi)多路徑生成方法,包括:步驟1,初始化一網(wǎng)絡的所有結點的結點信息;步驟2,創(chuàng)建優(yōu)先級隊列,按照優(yōu)先級結構將根結點加入到所述優(yōu)先級隊列中,所述優(yōu)先級結構包括結點的路由ID、結點的當前代價和結點的當前父結點;步驟3,判斷所述優(yōu)先級隊列是否為空,若判斷結果為否,則執(zhí)行步驟4,否則結束操作;步驟4,根據(jù)出隊列規(guī)則選取所述優(yōu)先級隊列中的隊首元素,并將其從所述優(yōu)先級隊列中刪除,其中,所述出隊列規(guī)則為:[0009](I)選取當前代價中最小的結點作為隊首元素;
[0010](2)當有多個結點具有相同的最小當前代價時,選取當前父節(jié)點的跳數(shù)最小的節(jié)
占.[0011](3)當有多個結點具有相同的最小當前代價,且當前父節(jié)點的跳數(shù)相同,則選取路由ID最小的結點;
[0012]步驟5,判斷所述隊首元素是否為根結點,若不是且其未被訪問過,則更新該隊首元素的結點信息,并計算根結點到該隊首元素的最優(yōu)下一跳;
[0013]步驟6,訪問所述隊首元素的鄰居結點,判斷當前鄰居結點是否被訪問過,
[0014]其中,若當前鄰居結點未被訪問過,則更新關于當前鄰居結點的結點信息,并將更新后的信息按照優(yōu)先級結構添加到所述優(yōu)先級隊列中,否則,根據(jù)設定規(guī)則計算所述根結點到所述隊首元素的下一跳以及所述根結點到當前鄰居結點的下一跳;
[0015]步驟7,判斷當前鄰居結點是否是該隊首元素的最后一個鄰居結點,若是,則返回步驟3,否則獲取下一個鄰居結點并返回步驟6。
[0016]在一個實施例中,通過以下表達式來計算最優(yōu)下一跳Be(V):
【權利要求】
1.一種基于生成樹的域內(nèi)多路徑生成方法,其特征在于,包括: 步驟1,初始化一網(wǎng)絡的所有結點的結點信息; 步驟2,創(chuàng)建優(yōu)先級隊列,按照優(yōu)先級結構將根結點加入到所述優(yōu)先級隊列中,所述優(yōu)先級結構包括結點的路由ID、結點的當前代價和結點的當前父結點; 步驟3,判斷所述優(yōu)先級隊列是否為空,若判斷結果為否,則執(zhí)行步驟4,否則結束操作; 步驟4,根據(jù)出隊列規(guī)則選取所述優(yōu)先級隊列中的隊首元素,并將其從所述優(yōu)先級隊列中刪除,其中,所述出隊列規(guī)則為: (1)選取當前代價中最小的結點作為隊首元素; (2)當有多個結點具有相同的最小當前代價時,選取當前父節(jié)點的跳數(shù)最小的節(jié)點; (3)當有多個結點具有相同的最小當前代價,且當前父節(jié)點的跳數(shù)相同,則選取路由ID最小的結點; 步驟5,判斷所述隊首元素是否為根結點,若不是且其未被訪問過,則更新該隊首元素的結點信息,并計算根結點到該隊首元素的最優(yōu)下一跳; 步驟6,訪問所述隊首元素的鄰居結點,判斷當前鄰居結點是否被訪問過, 其中,若當前鄰居結點未被訪問過,則更新關于當前鄰居結點的結點信息,并將更新后的信息按照優(yōu)先級結構添加到所述優(yōu)先級隊列中,否則,根據(jù)設定規(guī)則計算所述根結點到所述隊首元素的下一跳以及所述根結點到當前鄰居結點的下一跳; 步驟7,判斷當前鄰居結點是否是該隊首元素的最后一個鄰居結點,若是,則返回步驟3,否則獲取下一個鄰居結點并返回步驟6。
2.根據(jù)權利要求1所述的域內(nèi)多路徑生成方法,其特征在于,通過以下表達式來計算最優(yōu)下一跳B。(V):
3.根據(jù)權利要求1所述的域內(nèi)多路徑生成方法,其特征在于,所述設定規(guī)則為: 假設多路徑樹中的兩個互為鄰居關系的結點u和V,如果下面三個條件中的任何一個成立時,則可以將B。(V)加入到N。(U),
(1)Dc(u, V) < Cc(U)
(2)Dc (u, v) =Cc(u), Hc(v) < Hc (u)
(3)Dc (u, v) =Cc(u), Hc(u) = Hc (v), R (Bc (v)) < R(c) 其中,Bjv)表示根結點c到結點V的最優(yōu)下一跳,Nc(u)表示根結點c到結點u的下一跳的集合,De(u, V) = C。(V)-C。(B。(V))+LC (u, v), Cc (v)表示根結點c到結點v的代價,Cc(Bc (v))表示根結點c到結點Be(V)的代價,LC(u, V)表示結點u和結點v的直連代價,Cc (u)表示根結點c到結點u的代價,H。(U)表示根結點c到結點u的跳數(shù),H。(V)表示根結點c到結點V的跳數(shù),R(C)表示根結點c的路由ID, R(Bc(v)表示結點Bjv)的路由ID。
4.根據(jù)權利要求1至3中任一項所述的域內(nèi)多路徑生成方法,其特征在于,在所述步驟I中,進一步, 設置根結點的最小代價為O,將除所述根結點以外的結點的最小代價設置為無窮大; 將所有結點的父結點設置為空; 將所有結點的訪問標記屬性設置為未訪問。
5.根據(jù)權利要求1所述的域內(nèi)多路徑生成方法,其特征在于,在所述步驟6中, 若隊首元素V的當前鄰居結點U未被訪問,則計算結點U的臨時代價為tcju)=C。(V)+L(v, u),其中,Ce(V)表示根結點c到隊首元素V的最小代價,L(V, u)表示結點u和結點V的直連代價;臨時父結點pcju)為V,將結點U、它的臨時父結點和臨時代價按照下面的規(guī)則存入優(yōu)先級隊列中: 如果隊列中沒有該結點的信息,則直接將該結點、該結點的臨時代價和臨時父結點存入優(yōu)先級隊列中; 如果隊列中已經(jīng)有該結點的信息,則比較該結點的臨時代價和當前在隊列中該結點的代價,如果臨時代價較小,則利用該結點的臨時代價和臨時父結點更新隊列中該結點的當前代價和當前父結點 ; 如果隊列中已經(jīng)有該結點的信息,且該結點的臨時代價和當前在隊列中該結點的代價相等,則比較該結點的臨時父結點和當前父結點的跳數(shù),如果臨時父結點的跳數(shù)較小,則利用該結點的臨時父結點更新隊列中該結點的當前父結點; 如果隊列中已經(jīng)有該結點的信息,且該結點的臨時代價和當前在隊列中該結點的代價相等,以及該結點的臨時父結點和當前父結點的跳數(shù)也相等,則比較臨時父結點和當前父結點的路由ID,如果臨時父結點的路由ID較小,則利用該結點的臨時父結點更新隊列中該結點的當前父結點。
6.根據(jù)權利要求1所述的域內(nèi)多路徑生成方法,其特征在于,在所述步驟5中,更新該隊首元素的訪問屬性、當前代價、當前父節(jié)點以及根結點到其的跳數(shù)。
【文檔編號】H04L12/753GK103763191SQ201410031195
【公開日】2014年4月30日 申請日期:2014年1月23日 優(yōu)先權日:2014年1月23日
【發(fā)明者】尹霞, 施新剛, 耿海軍, 王之梁 申請人:清華大學