專利名稱:一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法 和系統(tǒng)。
背景技術(shù):
由于應(yīng)用的需求,計算機網(wǎng)絡(luò)的規(guī)模不斷增大。盡管單個網(wǎng)絡(luò)部件的失效概率很 低,但是整個網(wǎng)絡(luò)的失效概率已經(jīng)不能忽略。網(wǎng)絡(luò)部件的失效可能導(dǎo)致網(wǎng)絡(luò)應(yīng)用程序的運 行失敗,甚至整個網(wǎng)路的癱瘓。在大規(guī)模網(wǎng)絡(luò)中,容錯技術(shù)必須被提供以保證網(wǎng)絡(luò)的高可用 性和高性能。為了處理網(wǎng)絡(luò)失效,目前有兩類容錯手段被使用靜態(tài)容錯和動態(tài)容錯。靜態(tài)容 錯依賴于檢查點技術(shù)離線的處理網(wǎng)路部件的失效。當(dāng)網(wǎng)絡(luò)失效出現(xiàn)時,網(wǎng)絡(luò)應(yīng)用被暫停,網(wǎng) 絡(luò)根據(jù)失效情況被重配,然后應(yīng)用被重啟,從檢查點開始執(zhí)行。靜態(tài)容錯需要暫停應(yīng)用,浪 費了應(yīng)用執(zhí)行時間,同時記錄檢查點也會消耗很多資源,降低了系統(tǒng)的性能。與靜態(tài)容錯不 同,動態(tài)容錯則要高效得多。動態(tài)容錯可以在不暫停網(wǎng)絡(luò)應(yīng)用的情況下,實時動態(tài)地處理網(wǎng) 絡(luò)失效,使數(shù)據(jù)包在路由過程中能避開失效的網(wǎng)路部件。應(yīng)對網(wǎng)絡(luò)失效,目前存在多種容錯策略一種最簡單的策略是替換失效的網(wǎng)絡(luò)部 件,但考慮到龐大的網(wǎng)絡(luò)規(guī)模和高頻率的失效,該策略將付出高昂的成本和性能代價。第二 種策略是增加一層網(wǎng)絡(luò)管理層對存在失效的網(wǎng)絡(luò)的拓撲進行探測,并重新計算路由表。這 種方法也被稱為網(wǎng)絡(luò)重配,它的優(yōu)點是靈活,缺點是會降低網(wǎng)絡(luò)的性能,因為它使用一種通 用的路由算法來代替針對網(wǎng)絡(luò)拓撲優(yōu)化過的算法。而且,如果網(wǎng)絡(luò)的重配通過靜態(tài)的方式 進行,網(wǎng)絡(luò)應(yīng)用的暫停將不可避免,這將極大地影響網(wǎng)絡(luò)性能。第三種策略是定義一套容錯 的路由算法動態(tài)地處理網(wǎng)絡(luò)失效。這些算法在網(wǎng)絡(luò)失效發(fā)生時,能夠提供另一條健康的路 徑對數(shù)據(jù)進行路由以避開失效的網(wǎng)路部件。由于該方法動態(tài)地處理網(wǎng)絡(luò)失效并且不需要暫 停系統(tǒng),可以獲得很高的性能。胖樹是一種典型的多級互連網(wǎng)絡(luò)。由于具有等分帶寬、低網(wǎng)絡(luò)直徑、良好的擴展性 和豐富的路徑多樣性的特點,胖樹被廣泛應(yīng)用于超級計算機和數(shù)據(jù)中心的商用網(wǎng)絡(luò)中。目 前已經(jīng)存在一些工作對胖樹網(wǎng)絡(luò)的容錯進行研究,有人提出了一種由兩棵并行胖樹構(gòu)成并 且對應(yīng)交換機由鏈路相連的拓撲以實現(xiàn)容錯,該方法具有良好的靜態(tài)容錯性能,但在動態(tài) 容錯的情況下只能容忍一條失效鏈路,并且存在很大的硬件冗余。還有人提出在胖樹中通 過局部誤路由(misrouting)的方式實現(xiàn)動態(tài)容錯,該方法需要數(shù)據(jù)包頭增加一個特殊的 域并在容錯路由過程中對其修改。同時,與其他誤路由的容錯方法一樣,該方法會增加數(shù)據(jù) 的路由路徑長度。還有人采用包含排除區(qū)間的區(qū)間路由方法來實現(xiàn)胖樹的動態(tài)容錯,該方 法的一個缺點是在合并排除區(qū)間時健康路徑可能被犧牲。還有人提出了利用集中式的管理 織網(wǎng)來維護網(wǎng)絡(luò)配置信息,監(jiān)測鏈路狀態(tài)并傳播相關(guān)信息的方式在胖樹中實現(xiàn)動態(tài)容錯方 法,該方法具有較好的靈活性,但由于管理節(jié)點需要和網(wǎng)絡(luò)中的所有交換機相連并通訊,其 系統(tǒng)的擴展性受到很大的限制。
在胖樹網(wǎng)絡(luò)中,將一個數(shù)據(jù)包從源處理節(jié)點發(fā)送到目的處理節(jié)點的路由過程是 先將數(shù)據(jù)包向上轉(zhuǎn)發(fā)到源和目的處理節(jié)點的最近公共祖先交換機,然后向下一直轉(zhuǎn)發(fā)到目 的處理節(jié)點。在上行階段,交換機的任意一個上端口都可被選擇,存在多條路由路徑;在下 行階段,路由路徑是被唯一確定的。假設(shè)一個數(shù)據(jù)包從源處理節(jié)點P(p = PlriPn-^P1Pcl) 發(fā)送到目的處理節(jié)點P’ (P,=P’n-lP’n-2…P’1P’Q),當(dāng)前數(shù)據(jù)包所處的交換機是SW<1, Cn_2CnyClC(1>。如果數(shù)據(jù)包處于上行階段,交換機的上端口 k = m/2, m/2+l,…,m-1都可 被選擇,否則數(shù)據(jù)包必須通過交換機的端口 P1向下轉(zhuǎn)發(fā)。在沒有網(wǎng)絡(luò)鏈路失效的情況下, 這種路由方法是健康的,但當(dāng)網(wǎng)絡(luò)存在鏈路失效時,該方法會遇到問題數(shù)據(jù)包在上行和下 行階段都可能因無法通過失效鏈路而路由失敗。圖8給出了一個下行過程中遇到失效鏈路 的例子。交換機端口 SWUdD1和31<0,21>3間的鏈路失效。一個數(shù)據(jù)包要從源處理節(jié)點 P(p = 100)發(fā)送到目的處理節(jié)點P’(ρ’ =211)。如果數(shù)據(jù)包在交換機SW<0,10>選擇上端 口 3向上路由,無論之后如何路由,它在下行時都會因無法通過失效鏈路而路由失敗。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng)。其充分利用胖 樹網(wǎng)絡(luò)的拓撲特性,通過引入一套鏈路失效消息傳遞機制和容錯路由算法來實現(xiàn)胖樹網(wǎng)絡(luò) 的容錯,以保證網(wǎng)絡(luò)在存在鏈路失效情況下的高可用性與高性能。為實現(xiàn)本發(fā)明的目的而提供的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,所述方法,包 括下列步驟步驟100.配置胖樹網(wǎng)絡(luò);步驟200.所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā)現(xiàn)某端口失效 時,向其他交換機發(fā)送鏈路失效消息;步驟300.根據(jù)所述鏈路失效信息,實現(xiàn)容錯路由。所述步驟100,包括下列步驟由處理節(jié)點向其相連交換機發(fā)送位置配置消息來發(fā)起配置,接著獲得位置配置消 息的交換機通過向其鄰居交換機發(fā)送位置配置消息對它們進行配置,然后被配置的鄰居交 換機再對它們的鄰居交換機進行配置,直至網(wǎng)絡(luò)中所有交換機都被配置。所述步驟100,包括下列步驟步驟111.處理器節(jié)點ρ (ρ = 00. . 0)向其相連交換機發(fā)送配置消息LCM<n,1,c>, 其中η是胖樹高度,1是所連交換機的層號,c是交換機的坐標;步驟112.所述交換機利用收到的配置消息將自身配置為SW<1,c>。并且,如果消 息來自上端口,則向其每個下端口 k發(fā)送配置消息LCM<n,1-1,cn_2cn_3··· ClkClv CiCq>,如果 消息來自下端口,則其向其每個上端口 k’發(fā)送配置消息LCM<n,l+l,Cn_2CnfCl+1(k’ -m/2) Cl_r"ClC(1>,向其每個下端口 k 發(fā)送配置消息 LCM<n,1-1,cn_2cnV·· ClkCl_2 CiCq> ;步驟113.收到交換機發(fā)來的配置消息的其他交換機重復(fù)步驟112,直至網(wǎng)絡(luò)中所 有交換機都被配置;步驟114.配置處理節(jié)點。當(dāng)交換機成功接收配置消息并配置后,會向消息來源端口回應(yīng)一個確認信息。發(fā) 出配置消息的交換機,如果沒有收到確認消息,會超時重傳配置消息。重傳次數(shù)的上限是預(yù)設(shè)值。所述處理節(jié)點的信息P(p = PlriPnVP1Pc1)在交換機完成配置后,由處理節(jié)點主動 向與其相連的交換機請求所述步驟200,包括下列步驟步驟210.失效鏈路的偵測;步驟220.鏈路失效信息的傳播。所述步驟210,包括下列步驟步驟211.所述胖樹網(wǎng)絡(luò)中的交換機周期性地向與其相連交換機發(fā)送偵測包對其 鏈路進行偵測;步驟212.所述交換機的鄰居交換機收到偵測包后,回應(yīng)一個應(yīng)答包,表示鏈路正 常;步驟213.所述交換機判斷從某端口發(fā)出的偵測包在一定時間內(nèi)是否得到應(yīng)答 包,若是,則返回步驟211 ;否則,執(zhí)行步驟214;步驟214.判斷發(fā)送偵測包的次數(shù)是否超過一閾值,若是,則執(zhí)行步驟215 ;否則, 所述交換機重發(fā)偵測包,返回步驟213 ;步驟215.所述端口的鏈路被認為已經(jīng)失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效。所述步驟214中,如果重發(fā)次數(shù)達到固定值時,仍舊沒有收到應(yīng)答包,則該端口的 鏈路被認為已經(jīng)失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效;上端口狀態(tài)用二元組PS<1,f>表示, 其中1是與失效鏈路有關(guān)的層號,f是失效標識;下端口狀態(tài)僅用失效標識為f表示。所述步驟220,包括下列步驟步驟221.交換機偵測到其某下端口失效,則向除所述失效端口以外的所有端口 發(fā)送上行鏈路失效消息ULFM<1,cn_2cn_3-cic0, k> ;步驟222.收到ULFM的交換機判斷自己的層號是否等于1,若是,則執(zhí)行步驟224 ; 否則,執(zhí)行步驟223;步驟223.判斷所述ULFM是否來自上端口,若是,則所述交換機向其所有下端口轉(zhuǎn) 發(fā)ULFM ;否則,所述交換機向除來源端口以外的所有端口轉(zhuǎn)發(fā)ULFM ;步驟224.收到所述ULFM的交換機將ULFM信息記錄在交換機內(nèi)的鏈路失效表的 鏈路失效條目LFE<Cn2Cn," C1C0,
f"m/2-lf"m/2-2··· f"lf"o〉中;步驟225.判斷交換機的鏈路失效表中是否存在某一鏈路失效條目LFE<Cn_2Cny C1C0, f^-A/Wfif?!档膄^fm/WfA為全1,若是,則該交換機向其所有下端口發(fā)送上 行鏈路失效消息ULFM<1-1,Cn_2CnvClkCyClC(1,m/2+CH〉,其中1是交換機所在層號,k =0,1,…,m/2-l,返回步驟222 ;否則,執(zhí)行步驟226 ;步驟226.判斷交換機的鏈路失效表中是否存在某一鏈路失效條目 LFE<cn_2cn_3. · · C1C0, f^^f^a-a· · · f^f?!档?f^/Hf;/^· · · f^o 不是全 1,但 fm/2-ifm/2-2··· fif。與 交換機的所有上端口的狀態(tài)二元組中失效標志PSlrt. fPSm_2. f…PSm/2. f按位或后,為全1并 且所述交換機與條目所指示的交換機的SW<1,Cn_2CnyClC(l>的最近公共祖先所在層號大 于所有失效上端口的狀態(tài)中的層號的最大值(max{PSk. l|PSk. f為1,k = m/2, m/2+l,…, m-Ι})時,交換機向其所有下端口發(fā)送上行鏈路失效消息ULFM<1-1,cn_2cn_3··· ClkCl_2…C1Cci, m/2+CH〉,其中1是交換機所在層號,k = 0,1,…,m/2-l,返回步驟222 ;否則,不發(fā)送上行
9鏈路失效消息;所述鏈路失效條目LFE<cn_2cn_f. C1Ctl, ^-Α/^ …fj?!?,規(guī)定坐標信息 cn_2cn_3... C1C0相同的鏈路失效信息被記錄在一個鏈路失效條目中,同一交換機的所有上端口的鏈路 的失效信息被保存在同一條目中。當(dāng)一個交換機的所有上端口的狀態(tài)二元組中的失效標志為1時,交換機向其所有 下端口發(fā)送下行鏈路失效消息DLFM<1>,其中1是所有上端口狀態(tài)二元組中層號的最大值 (max {PSk. 11 PSk. f 為 1,k = m/2, m/2+l,…,m_l})。所述步驟300,包括下列步驟步驟310.源處理節(jié)點P(p = PlriPWP1Ptl)發(fā)送數(shù)據(jù)包,數(shù)據(jù)包的目標處理節(jié)點 是 P,(P,=ρ,η_ιρ,ηγ..ρ,ιρ,0);步驟320.收到所述數(shù)據(jù)包的交換機(假設(shè)其標識為SW<l,Cn_2Cn_fClC(l>)判斷該 數(shù)據(jù)包是否來自上端口或1 > Ianc(Ianc是源處理節(jié)點和目的處理節(jié)點的最近公共祖先交換 機的層號,Ianc = max {i I Pi ^ p' i,i =0,1,…,n_l}),若是,則通過 SW<1,cn_2cn_3... C1C) 的下端口 P1向下路由數(shù)據(jù)包,并完成路由;否則,執(zhí)行步驟330 ;步驟330.收到所述數(shù)據(jù)包的交換機檢查自己的每個上端口 k的狀態(tài)PSk<l,f>,如 果PSk. Klanc且PSk. f為1,則將該端口從待選擇的上端口的集合中排除;步驟340.收到所述數(shù)據(jù)包的交換機檢查自身鏈路失效表中的鏈路失效條目 LFE<c’ n_2c’ n_3…c’ lC’ 0, f’ m/2^f' m/2_2……f’ J’。>,并判斷條目所相關(guān)聯(lián)的交換機SW<1, C’n_2C’n_3"'C’lC’Q>是否為目的節(jié)點P’ (p,=PWwW0)的祖先,若是,則檢查 f’ i,i = 0,1,..,m/2-l是否為1,若f’k為1,則將上端口 k+m/2從待選擇的上端口的集合 中排除,即Vk+m/2被置為0,如果€\不為1,則什么都不做,即不排除任何上端口 ;否則,不排 除任何上端口,所有鏈路失效條目的檢查被同時執(zhí)行;步驟350.收到所述數(shù)據(jù)包的交換機檢查上端口 P’ !是否在待選擇的上端口的集 合中,即判斷Vk(其中k = ρ’ 1)是否為1 ;如果是,從上端口 p’ i對數(shù)據(jù)包進行路由;否則, 選擇下一個在待選擇的上端口的集合中的端口進行路由;如果待選擇的上端口的集合為 空,則表明不存在健康的路徑能夠路由該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。為實現(xiàn)本發(fā)明的目的還提供一種基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),所述系統(tǒng),包 括網(wǎng)絡(luò)配置模塊,用于配置胖樹網(wǎng)絡(luò);鏈路失效檢測模塊,用于所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā) 現(xiàn)某端口失效時,向其他交換機發(fā)送鏈路失效消息;容錯路由模塊,用于根據(jù)所述鏈路失效信息實現(xiàn)容錯路由。所述網(wǎng)絡(luò)配置模塊,包括處理器節(jié)點觸發(fā)模塊,用于使處理器節(jié)點ρ (ρ = 00. . 0)向其相連交換機發(fā)送配置 消息LCM<n,1,c>,其中η是胖樹高度,1是所連交換機的層號,c是交換機的坐標;配置模塊,用于使所述交換機利用收到的配置消息將自身配置為SW<l,c>,并向其 下端口 k發(fā)送配置消息LCM<h,1-1,Cn_2Cnv"ClkClvClC(1>,向其上端口 k,發(fā)送配置消息 LCM<n, 1+1, cn_2cn_3... c1+1 (k,-m/2) C^1--- C1C0);處理節(jié)點配置模塊,用于配置處理節(jié)點;
重傳模塊,用于當(dāng)交換機成功接收配置消息并配置后,向消息來源端口回應(yīng)一個 確認信息;當(dāng)發(fā)出配置消息的交換機,如果沒有收到確認消息時,超時重傳配置消息,重傳 次數(shù)的上限是預(yù)設(shè)值。所述鏈路失效檢測模塊,包括鏈路偵測模塊,用于失效鏈路的偵測;失效信息傳播模塊,用于鏈路失效信息的傳播。所述鏈路偵測模塊,包括偵測包發(fā)送模塊.用于使交換機周期性地向與其相連交換機發(fā)送偵測包對其鏈 路進行偵測;應(yīng)答包發(fā)送模塊,用于所述交換機的鄰居交換機收到偵測包后,回應(yīng)一個應(yīng)答包, 表示鏈路正常;判斷模塊,用于交換機判斷從某端口發(fā)出的偵測包在一定時間內(nèi)是否得到應(yīng)答 包,若是,則觸發(fā)偵測包發(fā)送模塊;否則,觸發(fā)超時判斷模塊;超時判斷模塊,用于判斷發(fā)送偵測包的次數(shù)是否超過一閾值,若是,則觸發(fā)失效設(shè) 置模塊;否則,所述交換機重發(fā)偵測包,觸發(fā)判斷模塊;失效設(shè)置模塊,用于在所述端口的鏈路被認為已經(jīng)失效時,將相應(yīng)的端口狀態(tài)被 設(shè)置為失效。所述超時判斷模塊,如果重發(fā)次數(shù)達到固定值時,仍舊沒有收到應(yīng)答包,則該端口 的鏈路被認為已經(jīng)失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效;上端口狀態(tài)用二元組PS<1,f>表 示,其中1是與失效鏈路有關(guān)的層號,f是失效標識;下端口狀態(tài)僅用失效標識為f表示。所述失效信息傳播模塊,包括上行鏈路失效消息發(fā)送模塊,用于交換機偵測到其某下端口失效,則向除所述失 效端口以外的所有端口發(fā)送上行鏈路失效消息ULFM<1,cn_2cn_3··· C1Ctl, k> ;層號判斷模塊,收到ULFM的交換機判斷自己的層號是否等于1,若是,則執(zhí)行步 驟;否則,觸發(fā)端口判斷模塊;端口判斷模塊.判斷所述ULFM是否來自上端口,若是,則所述交換機向其所有下 端口轉(zhuǎn)發(fā)ULFM ;否則,所述交換機向除來源端口以外的所有端口轉(zhuǎn)發(fā)ULFM ;記錄模塊,用于收到所述ULFM的交換機將ULFM信息記錄在交換機內(nèi)的鏈路失效 表的鏈路失效條目LFE<cn_2cnV·· C1Ctl, f^-A/n…位。> 中;判斷子模塊,用于判斷是否存在交換機,其鏈路失效表的某一鏈路失效條目 LFE<Cn_2Cn_3··· C1Ctl, f^fm/WfA〉的f^fm/WfA為全1,若是,則該交換機向其每個 下端口 k發(fā)送上行鏈路失效消息ULFMa-Lc^cwCikcyCiCvm/^+CH〉,其中1是交換 機所在層號,k = 0,1,…,m/2-l,觸發(fā)層號判斷模塊;否則,觸發(fā)狀態(tài)判斷模塊;狀態(tài)判斷模塊.狀態(tài)判斷模塊.用于判斷交換機的鏈路失效表中是否存在某 一鏈路失效條目 LFE<cn_2cn_3. · · C1C0,· · ^f0)的 f^-A/w · · fA 不是全 1,但 f^-A/n…fA與交換機的所有上端口的狀態(tài)二元組中失效標志PSnrl. fPSm_2. f-PSm/2. f 按位或后,為全1并且所述的交換機與條目所指示的交換機的SW<1,cn_2cn^·· ClC(1>的最近 公共祖先所在層號大于所有失效上端口的狀態(tài)中的層號的最大值(maX{PSk. l|PSk.f為1, k = m/2, m/2+l,…,m_l})時,交換機向其所有下端口發(fā)送上行鏈路失效消息ULFM<1_1,Cn_2Cn_3...ClkCl_f. C1Ctl, m/2+CH〉,其中 1 是交換機所在層號,k = 0,1,…,m/2_l,觸發(fā)層號 判斷模塊;否則,不發(fā)送上行鏈路失效消息。所述鏈路失效條目LFE<cn_2cn_3··· C1C0, ^/Η ;/” …fj?!底鴺诵畔?cn_2cny C1Ctl 相 同的鏈路失效信息被記錄在一個鏈路失效條目中,同一交換機的所有上端口的鏈路的失效 信息被保存在同一條目中。當(dāng)一個交換機的所有上端口的狀態(tài)二元組中的失效標志為1時,交換機向其所有 下端口發(fā)送下行鏈路失效消息DLFM<1>,其中1是所有上端口狀態(tài)二元組中層號的最大值 (max {PSk. 11 PSk. f 為 1,k = m/2, m/2+l,…,m_l})。所述容錯路由模塊,包括源端口判斷模塊.用于在收到所述數(shù)據(jù)包的交換機判斷該數(shù)據(jù)包是否來自上端 口或1彡1·,若是,則通過SW<l,Cn_2Cn_fClC(1>的下端口 P1向下路由數(shù)據(jù)包,并完成路由; 否則,觸發(fā)篩選模塊;篩選模塊,用于收到所述數(shù)據(jù)包的交換機檢查自己的每個上端口 k的狀態(tài)PSk<l, f>,如果PSk. f為1且PSk. 1<1·,則將該端口從待選擇的上端口的集合中排除;節(jié)點祖先判斷模塊,用于在收到所述數(shù)據(jù)包的交換機檢查自身鏈路失效表中的鏈 路失效條目LFE<c’ n_2c’ n_3…c’ lC’ Q,f’ m/2^f' m/2_2……f’ J’。>,并判斷條目所相關(guān)聯(lián)的交 換機 SW<l,c,n_2c,n_3…C,lC,Q> 是否為目的節(jié)點 P,(ρ,=ρ’η_1ρ’ηγ··ρ’1ρ’(ι)的祖先, 若是,則檢查f’ i,i = 0,1,.. ,m/2-l是否為1,若f’ k為1,則將上端口 k+m/2從待選擇的 上端口的集合中排除,即Vk+m/2被置為0,如果不為1,則什么都不做,即不排除任何上端 口 ;否則,不排除任何上端口,所有鏈路失效條目的檢查被同時執(zhí)行;路由模塊,用于收到所述數(shù)據(jù)包的交換機檢查上端口 ρ’ !是否在待選擇的上端口 的集合中,如果是,從上端口 P’i對數(shù)據(jù)包進行路由;否則,選擇下一個在待選擇的上端口的 集合中的端口進行路由;如果待選擇的上端口的集合為空,則表明不存在健康的路徑能夠 路由該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。本發(fā)明的有益效果是1.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng)采用分布式實現(xiàn),具有低復(fù) 雜度和高擴展性;2.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),能夠?qū)崿F(xiàn)動態(tài)容錯,因此 在保證網(wǎng)絡(luò)可用性的同時能夠保證網(wǎng)絡(luò)的高性能;3.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),不增加額外的鏈路和交換 機等硬件;4.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),不增加路由路徑長度;5.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),具有高容錯能力,在 m-port n-tree胖樹網(wǎng)絡(luò)中,可以容忍任意m/2-l條鏈路的失效并以高概率容忍更多條失 效鏈路的組合。
圖1是一個4-port 3-tree胖樹網(wǎng)絡(luò)的拓撲結(jié)構(gòu)示意圖;圖2是本發(fā)明的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法的步驟流程圖3是本發(fā)明中配置胖樹網(wǎng)絡(luò)得步驟流程圖;圖4是本發(fā)明中配置交換機的步驟流程圖;圖5是對4-port 3-tree胖樹網(wǎng)絡(luò)的配置過程示意圖;圖6是本發(fā)明中交換機發(fā)送鏈路失效消息的步驟流程圖;圖7是本發(fā)明中失效鏈路的偵測的步驟流程圖;圖8是一個路由失敗的實例的示意圖;圖9是本發(fā)明中鏈路失效信息的傳播的步驟流程圖;圖10是鏈路LK<0,21>3失效時,上行鏈路失效消息ULFM<0,21,3>的傳播過程圖;圖11是本發(fā)明中根據(jù)路失效信息實現(xiàn)容錯路由的步驟流程圖;圖12是本發(fā)明進行容錯路由的一個實例的示意圖;圖13是本發(fā)明的于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng)進行進一步詳細說明。應(yīng)當(dāng)理解,此處 所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),基于胖樹網(wǎng)絡(luò)提出了一種分 布式的動態(tài)容錯路由機制。該機制充分利用胖樹網(wǎng)絡(luò)的拓撲特性,可以在不增加鏈路和交 換機等硬件、不增加路由路徑長度的情況下實現(xiàn)胖樹網(wǎng)絡(luò)的動態(tài)容錯,它不僅能避免數(shù)據(jù) 包在上行階段通過失效的鏈路,而且能通過在上行階段合理地選擇上端口,以避免在下行 過程中通過失效的鏈路。在m-portn-tree胖樹網(wǎng)絡(luò)中,該機制可以容忍任意m/2-l條失效 鏈路并以高概率容忍更多條失效鏈路的組合,同時保持網(wǎng)絡(luò)的高性能。本發(fā)明是基于現(xiàn)有的m-port n-tree胖樹網(wǎng)絡(luò)實現(xiàn),為了更好的說明本發(fā)明的技 術(shù)方案,首先對m-port n-tree胖樹網(wǎng)絡(luò)的拓撲結(jié)構(gòu)進行描述,其定義如下m-port n-tree胖樹網(wǎng)絡(luò)由兩種類型的頂點組成2 X (m/2)n個處理節(jié)點和 (2n-l) X (m/2)n-1個m端口交換機,其中m為胖樹網(wǎng)絡(luò)中交換機的端口數(shù)目,η為交換機的 層數(shù),處理節(jié)點標記為P(P = PlriPnVP1Ptl) ,Pi是P的一維,其中P e {0,1,…,m-1} X {0, 1,…,(m/2)-1}η,交換機標記為SW<1,c = cn_2cn_3--C1C0), Ci是c的一維,其中1為交換 機所在層號,Ie {0,1,…,n-1} ;c的取值范圍是
f{0,l,...;(m/2)-l}"-'if I = n-1
c e<,\ Ci = Α.+ι M α ι ‘ e {0,1,.., -2}
k = P"O在m-port n-tree胖樹網(wǎng)絡(luò)中稱層號1為n_l的交換機為根交換機,層號1為0 的交換機為底層交換機,其它交換機為中間層交換機。稱與上一層交換機相連的交換機機 端口為上端口,與下一層交換機或處理節(jié)點相連的交換機端口為下端口。故,對于非根交換 機,k = 0,l,…,m/2-l端口為下端口,k = m/2,m/2+l,…,m_l端口為上端口;對于根交 換機所有端口都是下端口。圖1是一個4-port 3-tree胖樹網(wǎng)絡(luò)的拓撲結(jié)構(gòu)示意圖。以該 圖為例,交換機端口 SW<1,,c,lc,0>k,= SW<1,21>1 和 SW<1,clc0>k = SW<0,21>3 滿足 定義中兩端口相連的條件,因此它們之間存在一條鏈路。同理,交換機端口 SW<l,clcO>k = SW<0,21>1和處理節(jié)點P(p2plp0) = P(211)也滿足定義中交換機與處理節(jié)點相連的條件, 所以它們之間也存在一條鏈路。交換機SW<1,21>是非根交換機,它的端口 0和1是其下端 口,端口 2和3是其上端口。交換機SW<2,11>是根交換機,它的端口 0,1,2和3都是下端下面結(jié)合上述目標詳細介紹本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,圖2是 本發(fā)明的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法的步驟流程圖,如圖2所示,所述方法,包括下列步 驟步驟100.配置胖樹網(wǎng)絡(luò);基于現(xiàn)有的胖樹網(wǎng)絡(luò)的拓撲結(jié)構(gòu),本發(fā)明提出了一套自動配置胖樹網(wǎng)絡(luò)的機制, 以實現(xiàn)胖樹網(wǎng)絡(luò)中的交換機的自動化配置。我們將該機制稱為位置配置協(xié)議(Location Configure Protocol, LCP)。在該協(xié)議中,首先由處理節(jié)點向其相連交換機發(fā)送位置配置消息(Location Configure Message,LCM)來發(fā)起配置,接著獲得位置配置消息的交換機通過向其鄰居交換 機發(fā)送位置配置消息對它們進行配置,然后被配置的鄰居交換機再對它們的鄰居交換機進 行配置,直至網(wǎng)絡(luò)中所有交換機都被配置。所述位置配置消息LCM<h,l,c>,包括以下信息樹高h(height)胖樹高度。根據(jù)樹高信息,交換機可以確定自己是否為根交換 機。層號I(IeveI)交換機所在層號。比如交換機SW<1,c>的層號為1。坐標c (coordination)交換機的坐標。比如交換機Sff< 1, c>的坐標為c(c =圖3是本發(fā)明中配置胖樹網(wǎng)絡(luò)得步驟流程圖,如圖3所示,所述步驟100,包括下列 步驟步驟110.配置交換機;圖4是本發(fā)明中配置交換機的步驟流程圖,如圖4所示,所述步驟110,包括下列步 驟步驟111.處理器節(jié)點ρ (ρ = 00. . 0)向其相連交換機發(fā)送配置消息LCM<n,l,c>, 其中η是胖樹高度,1是所連交換機的層號,c是交換機的坐標;步驟112.所述交換機利用收到的配置消息將自身配置為SW<l,c>。并且,如果消 息來自上端口,則向其每個下端口 k發(fā)送配置消息LCM<n,1-1,cn_2cn_3··· ClkClv CiCq>,如果
14消息來自下端口,則其向其每個上端口 k’發(fā)送配置消息LCM<n,l+l,Cn_2CnfCl+1(k’ -m/2) Cl_r"ClC(1>,向其每個下端口 k 發(fā)送配置消息 LCM<n,1-1,cn_2cnV·· ClkCl_2 CiCq> ;步驟113.收到交換機發(fā)來的配置消息的其他交換機重復(fù)步驟112,直至網(wǎng)絡(luò)中所 有交換機都被配置;較佳地,為了避免配置消息傳遞循環(huán),被來自上端口的消息配置的交換機只向下 端口發(fā)送配置消息,而被來自下端口的消息配置的交換機向除來源端口以外的所有端口發(fā) 送配置消息。交換機不主動向處理器節(jié)點發(fā)送配置消息。較佳地,為了確保成功配置,確認機制被引入。當(dāng)交換機成功接收配置消息并配置 后,會向消息來源端口回應(yīng)一個確認信息。發(fā)出配置消息的交換機,如果沒有收到確認消 息,會超時重傳配置消息。重傳次數(shù)的上限是預(yù)設(shè)值。圖5是對4-port 3_tree胖樹網(wǎng)絡(luò)的配置過程示意圖,如圖5所示,為了保持簡 潔,圖中沒有顯示確認過程。首先處理節(jié)點0(p = 000)發(fā)送配置消息LCM<3,0,00>,將所 連交換機配置為SW<0,00> ;接著交換機SW<0,00>分別向其上端口 2和3發(fā)送配置消息 LCM<3,1,00>和LCM<3,1,01 >將其上層相連交換機配置為SW< 1,00>和SW< 1,01 > ;然后交換 機SW<1,00>和SW<1,01>分別向其上端口和下端口發(fā)送配置消息。配置過程在網(wǎng)絡(luò)中一直 進行,直到所有交換機都被配置。對于高度為η的胖樹,通過(2η-1)級傳遞就可完成全部 配置。在整個配置過程中,部分交換機可能被多次配置。比如,SW<1,00>和SW<1,01>都 對交換機SW<0,01>進行了配置。這種來自多條路徑的冗余配置,使存在部分鏈路失效的情 況下,交換機仍可能得到配置,增強了網(wǎng)絡(luò)的魯棒性。但在鏈路健康的情況下,重復(fù)配置消 息不需要的。通過引入計時器,記錄最近是否進行過配置,可以避免在一定時間內(nèi)收到相同 配置消息時進行重復(fù)配置。對胖樹網(wǎng)絡(luò)的配置,一般由處理節(jié)點0發(fā)起,但也可以由其他任意處理節(jié)點發(fā)起。 處理節(jié)點發(fā)送的配置消息必須攜帶其相連交換機的正確位置信息。比如,在圖2中處理節(jié) 點P(p = 211)可以通過發(fā)送配置消息LCM<3,0,21>來發(fā)起整個網(wǎng)絡(luò)的配置。步驟120.配置處理節(jié)點;處理節(jié)點的信息P(p = PlriPn^P1Ptl),可以手工設(shè)置,也可以在交換機完成配置 后,由處理節(jié)點主動向與其相連的交換機請求。當(dāng)交換機sw<0,Cn_2CnyClC(1>收到來自端 口 k的處理節(jié)點的位置請求消息后,向其回復(fù)位置信息P (p = cn_2Cny ClC(1k)。本發(fā)明提出了一套分布式的動態(tài)容錯路由機制,對胖樹網(wǎng)絡(luò)內(nèi)的鏈路(不包括處 理節(jié)點和底層交換機間的鏈路)的永久失效進行容錯(鏈路的瞬態(tài)失效可以由通信協(xié)議的 超時重發(fā)機制克服)。通過該分布式的動態(tài)容錯路由機制,數(shù)據(jù)包在路由過程中可以避開失 效鏈路,從而實現(xiàn)胖樹網(wǎng)絡(luò)的容錯。該機制包括失效鏈路的偵測,鏈路失效消息的傳播,和 容錯路由算法三部分。下面分別對它們進行闡述。步驟200.所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā)現(xiàn)某端口失效 時,向其他交換機發(fā)送鏈路失效消息;圖6是本發(fā)明中交換機發(fā)送鏈路失效消息的步驟流程圖,如圖6所示,所述步驟 200,包括下列步驟步驟210.失效鏈路的偵測;
本發(fā)明提出了一套網(wǎng)絡(luò)鏈路和端口失效的偵測機制,以實現(xiàn)網(wǎng)絡(luò)中失效部件的偵 測;圖7是本發(fā)明中失效鏈路的偵測的步驟流程圖,如圖7所示,所述步驟210,包括下 列步驟步驟211.所述胖樹網(wǎng)絡(luò)中的交換機周期性地向與其相連交換機發(fā)送偵測包對其 鏈路進行偵測;步驟212.所述交換機的鄰居交換機收到偵測包后,回應(yīng)一個應(yīng)答包,表示鏈路正 常;步驟213.所述交換機判斷從某端口發(fā)出的偵測包在一定時間內(nèi)是否得到應(yīng)答 包,若是,則返回步驟211 ;否則,執(zhí)行步驟214;步驟214.判斷發(fā)送偵測包的次數(shù)是否超過一閾值,若是,則執(zhí)行步驟215 ;否則, 所述交換機重發(fā)偵測包,返回步驟213 ;步驟215.所述端口的鏈路被認為已經(jīng)失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效。如果重發(fā)次數(shù)達到固定值時,仍舊沒有收到應(yīng)答包,則該端口的鏈路被認為已經(jīng) 失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效。上端口狀態(tài)用二元組PS<l,f>表示,其中1是與失效 鏈路有關(guān)的層號,f是失效標識。上端口 m/2,m/2+l,…,m-1的狀態(tài)可分別記為PSm/2<l, f>,PSm/2+1<l,f>…,PS1^a, f>。當(dāng)交換機上端口 SW<l,,c,n_2c,n_3…c,lC,Q>k,所連鏈路被 偵測到失效時,上端口 k’狀態(tài)被設(shè)置為PSk,<l’,1>,其中1’是交換機層號。從下面可以看 到,當(dāng)交換機上端口收到下行鏈路失效消息時,端口狀態(tài)也會被設(shè)置。下端口狀態(tài)僅用失 效標識為f表示。對于非根交換機,下端口 0,1,...,m/2-l分別對應(yīng)狀態(tài)標識&,f1 ..., fm/2-;對于根交換機,下端口 0,1,...,m-1分別對應(yīng)狀態(tài)標識fy f1; . . .,C10當(dāng)交換機下 端口 k的鏈路被偵測到失效時,標識fk被置1。根據(jù)該偵測機制,交換機的端口失效或整個 交換機的失效,最終也表現(xiàn)為鏈路失效。步驟220.鏈路失效信息的傳播;本發(fā)明提出了鏈路失效消息,鏈路失效條目,鏈路失效表等概念,并在這基礎(chǔ)上提 出了一套鏈路失效消息的傳播機制,以實現(xiàn)網(wǎng)絡(luò)失效部件信息在網(wǎng)絡(luò)中的傳播;1.鏈路的表示。胖樹網(wǎng)絡(luò)中鏈路由唯一標識LK<1,Cn_2Cn_fClC(1>k表示,其中, SKl, CV2Cn^ C1CtA是與鏈路相連的交換機上端口。比如,圖8是一個路由失敗的實例的 示意圖,如圖8所示,交換機端口 SKl^D1和SW<0,21>3之間的鏈路可唯一表示為LK<0, 21>3。2.有兩類鏈路失效消息被定義,它們分別是上行鏈路失效消息(UpwardLink Fault Message, ULFM)和下行鏈路失效消息(Downward Link FaultMessage, DLFM)。上行鏈路失效消息用ULFM<1,cn_2cn_3-cic0, k> 表示,其中 LK<1,Cn_2cn_," ClC(1>k 是失效鏈路。上行鏈路失效消息中的信息最終被存儲在交換機的鏈路失效表(Link Fault Table,LFT)的鏈路失效條目(Link Fault Entry,LFE)中。該信息為交換機的路由提供信 息,使得交換機能夠選擇合適的上端口向上路由數(shù)據(jù)包,以避免數(shù)據(jù)包在下行路由過程中 通過失效鏈路。下行鏈路失效消息用DLFM<1>表示,其中1是交換機的層號。下行鏈路失效消息 中的信息最終被存儲在接收該消息的交換機上端口的狀態(tài)二元組中。該信息為交換機路由
16提供信息,以避免數(shù)據(jù)包在向上路由過程中通過失效鏈路。圖9是本發(fā)明中鏈路失效信息的傳播的步驟流程圖,如圖9所示,所述步驟220,包 括下列步驟發(fā)送上行鏈路失效消息ULFM<1,cn_2cn_3··· C1C0, k> ;步驟221.交換機偵測到其某下端口失效,則向除所述失效端口以外的所有端口 發(fā)送上行鏈路失效消息ULFM<1,cn_2cn_3-cic0, k> ;步驟222.收到ULFM的交換機判斷自己的層號是否等于1,若是,則執(zhí)行步驟224 ; 否則,執(zhí)行步驟223;此處所述收到的所述ULFM,既包括發(fā)現(xiàn)端口失效的交換機發(fā)送的ULFM ;也包括由 其他交換機轉(zhuǎn)發(fā)過來的ULFM。步驟223.判斷所述ULFM是否來自上端口,若是,則所述交換機向其所有下端口轉(zhuǎn) 發(fā)ULFM ;否則,所述交換機向除來源端口以外的所有端口轉(zhuǎn)發(fā)ULFM ;步驟224.收到所述ULFM的交換機將ULFM信息記錄在交換機內(nèi)的鏈路失效表的 鏈路失效條目中;鏈路失效條目用LFE<cn_2cn_3. . . C1C0, f^f^. . . fj。〉表示,它指示了對應(yīng)的交 換機SW<1,cn_2cn_3... C1CtlM其中,1為保存鏈路失效條目的交換機層號,cn_2cn_3. . . C1Ctl為 條目中信息)的上端 口鏈路 LK<1,cn_2cn_3· · · C1C0V1, LK<1,cn_2cn_3· · · C1C0V2,…,LK<1, cn_2cn_3. . . Clc0>m/2 是否失效,即 & 表示鏈路 LK<1,cn_2cn_3. . . Clc0>m/2+iO 因此同一交換機的 所有上端口的鏈路的失效信息被保存在同一條目中。這有助于減小鏈路失效表的容量,從 而節(jié)約邏輯資源并加快檢索失效信息的速度。當(dāng)層1 = 1’交換機處理上行鏈路失效消息 ULFM<l’,c’ n_2c’ n_3. . . c’ lC’ Q,k’ > 時,它首先檢查是否存在坐標為 c’ n_2c’ n_3. . . c’ lC’ Q 的 條目,如果條目已經(jīng)存在,就不需要增加新的條目了,而只需將失效標識將= fk,_m/2置為
1 ;否則,新增條目 LFE<c,n_2c,n_3. · · c,lC,。,f,m/2^f' m/2_2......f,J,。>,其中 f,k,_m/2 =
1,其他置為0,即f,i = 0,i乒k,-m/2。步驟225.判斷交換機的鏈路失效表中是否存在某一鏈路失效條目LFE<Cn_2Cny C1C0, f^-if^-ffA〉的f^-A/WfA為全1,若是,則該交換機向其所有下端口發(fā)送上行 鏈路失效消息ULFM<1-1,Cn_2CnyClkCl_fClC(1,m/2+CH〉,其中1是交換機所在層號,k = 0,1, ...,m/2-l。(上行鏈路失效消息 ULFM<l-l,cn_2cnV" qkcw C1Ctl,m/2+CH〉傳達這樣 的信息鏈路LK<l-l,Cn_2Cn_3...ClkCl_2…ClC。>t(其中,t = HIZ^Ch)是不可通過的。注意,該 鏈路的不可通過是由于其他鏈路失效導(dǎo)致該鏈路不可到達引起的,該鏈路本身可能并未失 效,但其引起的效果等同于該鏈路失效。該類上行鏈路失效消息和由鏈路失效引起的上行 鏈路失效消息無論在形式上還是效果上都是一樣的。最終處理上行鏈路失效消息的交換機 都將上行鏈路失效消息所對應(yīng)的鏈路視為失效看待);返回步驟222 ;否則,執(zhí)行步驟226 ;步驟226.判斷交換機的鏈路失效表中是否存在某一鏈路失效條目 LFE<Cn_2Cn_3. · · C1C0, ^/2-^/2-2. · · f^f。〉的 4/244/2-2· · · ^f0 不是全 1,但 4/244/2-2... ^f0 與交 換機的所有上端口的狀態(tài)二元組中失效標志PSlrt. f PSm_2. f…PSm/2. f按位或后,為全1 (即 f"m/2-lf"m/2-2··· ^Ο I Ρ、—” f PSm—2· f *** PSm/2. f為全1)并且所述ULFM的交換機與條目所指示的 交換機的SW<l,Cn_2CnfClC(l>的最近公共祖先所在層號大于所有失效上端口的狀態(tài)中的層 號的最大值(max{PSk. l|PSk.f 為l,k = m/2,m/2+l,…,m_l})。此時交換機向其所有下端口發(fā)送上行鏈路失效消息^^1<1-1,(^_2(^3"^11^1_^(^(1,111/2+(31_1>,其中1是交換機所在 層號,k = 0,1,…,m/2-l,返回步驟222 ;否則,不發(fā)送上行鏈路失效消息;發(fā)送下行鏈路失效消息DLFM<1> 步驟221’ .當(dāng)一個交換機的所有上端口的狀態(tài)二元組中的失效標志為1時,交 換機向其所有下端口發(fā)送下行鏈路失效消息DLFM<1>,其中1是所有上端口狀態(tài)二元組中 層號的最大值(max{PSk. 11 PSk. f為1,k = m/2, m/2+l,…,m_l})。收到DLFM的交換機對 DLFM進行處理,將收到該消息的上端口 k的狀態(tài)設(shè)為PSk<l,1>,其中1是下行鏈路失效消 息中的層號。PSk<l,l>向交換機提供這樣的信息通過上端口 k向上路由時最高能到達層 1,因為所能到達的1層的交換機的所有上端口都已經(jīng)失效。接收到下行鏈路失效消息的交 換機,如果其所有上端口的狀態(tài)二元組中的失效標志已變?yōu)槿?,則同樣要向下端口發(fā)送下 行鏈路失效消息。由于下行鏈路失效消息只往下傳輸,因此下行鏈路失效消息的傳播不會 形成環(huán),所以是無死鎖的。在三種情況下,交換機會發(fā)送上行鏈路失效消息。第一種情況是交換機偵測到其某下端口失效,即其失效標志為1。交換機向失效端 口以外的所有端口發(fā)送上行鏈路失效消息ULFM<1,cn_2cnV·· C1Ctl, k>。收到ULFM的交換機 按以下規(guī)則對ULFM進行轉(zhuǎn)發(fā)或處理 如果當(dāng)前交換機的層號不等于1且ULFM來自上端口,則交換機向其所有下端口 轉(zhuǎn)發(fā)ULFM ; 如果當(dāng)前交換機的層號不等于1且ULFM來自下端口,則交換機向除來源端口以 外的所有端口轉(zhuǎn)發(fā)ULFM。 如果當(dāng)前交換機的層號等于1,則當(dāng)前交換機對ULFM消息進行處理。ULFM的信 息被記錄在交換機內(nèi)的鏈路失效表(Link Fault Table,LFT)的鏈路失效條目(Link Fault Entry, LFE)中。鏈路失效條目用LFE<cn_2cn_3. . . C1C0, f^f^. . . fj。〉表示,它指示了對應(yīng)的交 換機SW<1,cn_2cn_3... C1CtlM其中,1為保存鏈路失效條目的交換機層號,cn_2cn_3. . . C1Ctl為 條目中信息)的上端 口鏈路 LK<1,cn_2cn_3· · · C1C0V1, LK<1,cn_2cn_3· · · C1C0V2,…,LK<1, cn_2cn_3. . . Clc0>m/2 是否失效,即 & 表示鏈路 LK<1,cn_2cn_3. . . Clc0>m/2+iO 因此同一交換機的 所有上端口的鏈路的失效信息被保存在同一條目中。這有助于減小鏈路失效表的容量,從 而節(jié)約邏輯資源并加快檢索失效信息的速度。當(dāng)層1 = 1’交換機處理上行鏈路失效消息 ULFM<l’,c’ n_2c’ n_3. . . c’ lC’ Q,k’ > 時,它首先檢查是否存在坐標為 c’ n_2c’ n_3. . . c’ lC’ Q 的 條目,如果條目已經(jīng)存在,就不需要增加新的條目了,而只需將失效標識將= fk,_m/2置為
1 ;否則,新增條目 LFE<c,n_2c,n_3. · · c,lC,。,f,m/2^f' m/2_2......f,J,。>,其中 f,k,_m/2 =
1,其他置為0,即f,i = 0,i乒k,-m/2。由于m-port η-tree胖樹網(wǎng)絡(luò)的拓撲特點,ULFM<1,cn_2cnv· C1Cci, k>只會被記錄 在交換機SW<1,XX. ..XCl_lCl_2··· C1CtlMx為任意值)中。同時,從上面的規(guī)則可知,ULFM — 旦向下轉(zhuǎn)發(fā)就不再會被向上轉(zhuǎn)發(fā),因此ULFM的傳輸不會形成環(huán),所以ULFM的轉(zhuǎn)發(fā)是無死鎖 的。圖10是鏈路LK<0,21>3失效時,上行鏈路失效消息ULFM<0,21,3>的傳播過程圖,最終 會在底層交換機中生成鏈路失效條目LFE<21,10>。第二種情況是交換機的鏈路失效表的某一鏈路失效條目LFE<cn_2cnv·· C1Cci,
18f^-A/n…的f^-if^-ffA為全1。此時交換機向其所有下端口發(fā)送上行鏈路失效 消息ULFM<1-1,c^cwCikcwCiCvm/^+CH〉,其中1是交換機所在層號,k = 0,1,…, m/2-l。收到上行鏈路失效消息的交換機的行為與第一種情況相同。第三種情況是交換機的上端口鏈路存在失效,其鏈路失效表的某一鏈路失效條目 LFE<cn_2cn_3··· C1Ctl, Unf1^2…位。> 中f^-A/n…fA不為全1,但與對應(yīng)的上端口狀態(tài)二 元組中失效標志PSnri. f PSm_2. f-PSffl/2. f 按位或后為全 Kfm/Hfm/wfAlPSM. f PSm_2. f-PSffl72. f為全1),并且當(dāng)前交換機與條目所指示的交換機的SW<1,Cn_2Cny ClC(l>的最近公共 祖先所在層號,大于所有失效上端口的狀態(tài)中的層號的最大值(maX{PSk. l|PSk.f為l,k = m/2,m/2+l,-,m-l})時。此時交換機向其每個下端口 k發(fā)送上行鏈路失效消息ULFM<1_1, cn_2cn_3-C1^2-C1C0, m/2+CH〉,其中1是交換機所在層號,k = 0,1,…,m/2-l。收到上 行鏈路失效消息的交換機的行為與第一種情況相同。步驟300.根據(jù)所述鏈路失效信息,實現(xiàn)容錯路由?;谒鲦溌肥畔ⅲ景l(fā)明提出一種容錯路由算法,該算法是根據(jù)LFT條目 信息和上端口狀態(tài)信息PS<1,f>對胖樹網(wǎng)絡(luò)的一般路由算法的增強。它根據(jù)LFT條目信息 和上端口狀態(tài)信息PS<1,f>合理地選擇路由端口,以避開失效鏈路,從而實現(xiàn)動態(tài)的容錯 路由。圖11是本發(fā)明中根據(jù)路失效信息實現(xiàn)容錯路由的步驟流程圖,如圖11所示,所述 步驟300,包括下列步驟步驟310.源處理節(jié)點P(p = PlriPWP1P0)發(fā)送數(shù)據(jù)包;步驟320.收到所述數(shù)據(jù)包的交換機判斷該數(shù)據(jù)包是否來自上端口或1 (此處的1 是正在路由數(shù)據(jù)的交換機的層號。)>lan。(lan。是源處理節(jié)點和目的處理節(jié)點的最近公共祖 先交換機的層號,lan。= max {i I Pi 乒 P,i,i = 0,1,…,n_l}),若是,則通過 SW<1,cn_2cn_3... C1C0)的下端口 P1向下路由數(shù)據(jù)包,并完成路由。否則,執(zhí)行步驟330 ;步驟330.收到所述數(shù)據(jù)包的交換機檢查自己的每個上端口 k的狀態(tài)PSk<l,f>,如 果PSk. f為1且PSk. Klanc,則將該端口從待選擇的上端口的集合中排除。V =…Vtl被用于表示上端口是否在待選的上端口的集合中。Vm^1, Vffl/2_2,…,V。分別對應(yīng)上端口 m-l,m-2,…,m/2,它們的初始值為全1。當(dāng)上端口 k被排除 時,Vk_ffl/2被置為0。對所有上端口的檢查被同時執(zhí)行。
0175]步驟340.收到所述數(shù)據(jù)包的交換機檢查自身鏈路失效表中的鏈路失效條目 LFE<c’ n_2c’ n_3…c’ lC’ 0, f’ m/2^f' m/2_2……f’ J’。>,并判斷條目所相關(guān)聯(lián)的交換機SW<1, c’n_2c’n_3…c’ lC’。>(其中,1為當(dāng)前交換機層號,c’ n_2c’ n_3…c’ lC’ Q為條目中信息)是 否為目的節(jié)點P’ (P,=PWwP' !P'ο)的祖先,若是,則檢查f’ "i =0,1,··,m/2-l 是否為1,若f’ k為1,則將上端口 k+m/2從待選擇的上端口的集合中排除,即Vk+m/2被置為 0,如果f’ i不為1,則什么都不做,即不排除任何上端口。否則,不排除任何上端口,所有鏈 路失效條目的檢查被同時執(zhí)行。上述步驟330和步驟340在收到所述數(shù)據(jù)包的交換機的內(nèi)部可以同時進行的。步驟350.收到所述數(shù)據(jù)包的交換機檢查上端口 P’ !是否在待選擇的上端口的集 合中,即判斷Vk(其中k = ρ’ 是否為1 ;如果是,從上端口 ρ’ !對數(shù)據(jù)包進行路由;否則, 選擇下一個在待選擇的上端口的集合中的端口進行路由。如果待選擇的上端口的集合為空,則表明不存在健康的路徑能夠路由該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。下面對該算法進行描述。假設(shè)一個數(shù)據(jù)包從源處理節(jié)點P (P = PlriPn-^P1Ptl)發(fā) 送到目的處理節(jié)點P’ (P,=口, -山, -^1,山,0)。某一時刻該數(shù)據(jù)包到達交換機SW<1, Cn_2Cny ClC(l>,則按照以下步驟進行路由步驟一,如果數(shù)據(jù)包來自上端口或1彡1·(1·是源處理節(jié)點和目的處理節(jié)點的 最近公共祖先交換機的層號,Iane = HiaxUIpi^p' i,i = 0,1,…,n-1}),則通過SW<1, Cn_2Cny ClC(l>的下端口 P1向下路由數(shù)據(jù)包,并完成路由。否則,需要選擇合適的上端口對 數(shù)據(jù)包進行向上路由。步驟二,檢查每個上端口 k的狀態(tài)PSk<l,f>,如果PSk. f為1且PSk. l<lan。,則將該 端口從待選擇的上端口的集合中排除。V = Vn^1Vmy2VVtl被用于表示上端口是否在待選的 上端口的集合中。Ι/Η,ν^ι,…,V。分別對應(yīng)上端口 m-l,m-2,…,m/2,它們的初始值為 全1。當(dāng)上端口 k被排除時,Vk_m/2被置為0。對所有上端口的檢查被同時執(zhí)行。步驟三,檢查鏈路失效表中的鏈路失效條目LFE<1,,c,n_2c,n_,..c,lC,。, f' m/2-:f' m/2-2……f’ if’ 0>,并判斷條目所相關(guān)聯(lián)的交換機SW<1’,C’ n_2c’ n_3…C’ lC’ 0>是否 為P,(ρ,zpWwp^p,。)的祖先。如果是(即C,^,“..心廣’=。,』,“.. P,r+2p' ^丨,則檢查廣i,i = 0,1,. . , m/2-l是否為1,若f,k為1,則將上端口 k+m/2從 待選擇的上端口的集合中排除,即Vk+m/2被置為0。所有鏈路失效條目的檢查被同時執(zhí)行。步驟四,檢查上端口 P’ i是否在待選擇的上端口的集合中,即判斷Vk(其中k = P’ χ)是否為1。如果是,從上端口 P’ i對數(shù)據(jù)包進行路由;否則,選擇下一個在待選擇的上 端口的集合中的端口進行路由。如果待選擇的上端口的集合為空,則表明不存在健康的路 徑能夠路由該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。圖12是本發(fā)明進行容錯路由的一個實例的示意圖,如圖12所示,數(shù)據(jù)包從源處理 節(jié)點P(P = 100)發(fā)送到目的處理節(jié)點P,(ρ,= 211)。當(dāng)數(shù)據(jù)包通過交換機SW<0,10>向 上路由時,交換機通過檢查鏈路失效條目LFE<21,10>,并將上端口 3從待選擇的上端口的 集合中排除,從而避免了在路由過程中通過失效鏈路LK<0,21>3。相應(yīng)于本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,還提供一種基于胖樹結(jié)構(gòu)的 動態(tài)容錯系統(tǒng),圖13是本發(fā)明的于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng)的結(jié)構(gòu)示意圖,如圖13所示, 所述系統(tǒng),包括網(wǎng)絡(luò)配置模塊1,用于配置胖樹網(wǎng)絡(luò);鏈路失效檢測模塊2,所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā)現(xiàn)某 端口失效時,向其他交換機發(fā)送鏈路失效消息;容錯路由模塊3,根據(jù)所述鏈路失效信息,實現(xiàn)容錯路由。所述網(wǎng)絡(luò)配置模塊1,包括處理器節(jié)點觸發(fā)模塊11,用于使處理器節(jié)點ρ (ρ = 00. . 0)向其相連交換機發(fā)送配 置消息LCM<n,1,c>,其中η是胖樹高度,1是所連交換機的層號,c是交換機的坐標;配置模塊12,用于交換機利用收到的配置消息將自身配置為SW<1,c>。并且, 如果消息來自上端口,則向其每個下端口 k發(fā)送配置消息LCM<n,1-1,cn_2cn_3··· ClkCl_2… CiCq>,如果消息來自下端口,則其向其每個上端口 k’發(fā)送配置消息LCM<n,1+1,cn_2cn_3··· c1+1(k,-m/2) Cw-C1C0),向其每個下端口 k 發(fā)送配置消息 LCM<n,1-1, cn_2cn_3··· ClkCl_2…
20C1C0);處理節(jié)點配置模塊13,用于配置處理節(jié)點。所述處理節(jié)點的信息P(p = PlriPnVP1Pc1)在交換機完成配置后,由處理節(jié)點主動 向與其相連的交換機請求。重傳模塊14,用于當(dāng)交換機成功接收配置消息并配置后,向消息來源端口回應(yīng)一 個確認信息;當(dāng)發(fā)出配置消息的交換機,如果沒有收到確認消息時,超時重傳配置消息,重 傳次數(shù)的上限是預(yù)設(shè)值。所述鏈路失效檢測模塊2,包括鏈路偵測模塊21,用于失效鏈路的偵測;失效信息傳播模塊22,用于鏈路失效信息的傳播。所述鏈路偵測模塊21,包括偵測包發(fā)送模塊211.用于使交換機周期性地向與其相連交換機發(fā)送偵測包對其 鏈路進行偵測;應(yīng)答包發(fā)送模塊212,用于所述交換機的鄰居交換機收到偵測包后,回應(yīng)一個應(yīng)答 包,表示鏈路正常;判斷模塊213,用于交換機判斷從某端口發(fā)出的偵測包在一定時間內(nèi)是否得到應(yīng) 答包,若是,則觸發(fā)偵測包發(fā)送模塊211 ;否則,觸發(fā)超時判斷模塊214 ;超時判斷模塊214,用于判斷發(fā)送偵測包的次數(shù)是否超過一閾值,若是,則觸發(fā)失 效設(shè)置模塊215 ;否則,所述交換機重發(fā)偵測包,觸發(fā)判斷模塊213 ;失效設(shè)置模塊215,用于在所述端口的鏈路被認為已經(jīng)失效時,將相應(yīng)的端口狀態(tài) 被設(shè)置為失效。所述超時判斷模塊214,如果重發(fā)次數(shù)達到固定值時,仍舊沒有收到應(yīng)答包,則該 端口的鏈路被認為已經(jīng)失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效;上端口狀態(tài)用二元組PS<1, f>表示,其中1是與失效鏈路有關(guān)的層號,f是失效標識;下端口狀態(tài)僅用失效標識為f表
7J\ ο所述失效信息傳播模塊22,包括上行鏈路失效消息發(fā)送模塊221,用于交換機偵測到其某下端口失效,則向除所述 失效端口以外的所有端口發(fā)送上行鏈路失效消息ULFM<1,cn_2cn_3··· C1C0, k> ;層號判斷模塊222,收到ULFM的交換機判斷自己的層號是否等于1,若是,則執(zhí)行 步驟224 ;否則,觸發(fā)端口判斷模塊223 ;端口判斷模塊223.判斷所述ULFM是否來自上端口,若是,則所述交換機向其所有 下端口轉(zhuǎn)發(fā)ULFM ;否則,所述交換機向除來源端口以外的所有端口轉(zhuǎn)發(fā)ULFM ;記錄模塊224,用于收到所述ULFM的交換機將ULFM信息記錄在交換機內(nèi)的鏈路失 效表的鏈路失效條目LFE<cn_2cnV·· C1Ctl, f^-A/wfA〉中;判斷子模塊225,用于判斷是否存在交換機,其鏈路失效表的某一鏈路失效條目 LFE<Cn_2Cn_3··· C1Ctl, f^fm/WfA〉的f^fm/WfA為全1,若是,則該交換機向其每個 下端口 k發(fā)送上行鏈路失效消息ULFMa-Lc^cwCikcyCiCvm/^+CH〉,其中1是交換 機所在層號,k = 0,1,…,m/2-l,觸發(fā)層號判斷模塊222 ;否則,觸發(fā)狀態(tài)判斷模塊226 ;狀態(tài)判斷模塊226.用于判斷交換機的鏈路失效表中是否存在某一鏈路失效條目
21LFE<cn_2cn_3. · · C1C0, f^^f^a-a· · · f^f。〉的 f^/Hf;/^· · · f^o 不是全 1,但 fm/2-ifm/2-2··· fif。與 交換機的所有上端口的狀態(tài)二元組中失效標志PSlrt. fPSm_2. f…PSm/2. f按位或后,為全1并 且所述交換機與條目所指示的交換機的SW<1,Cn_2CnyClC(l>的最近公共祖先所在層號大 于所有失效上端口的狀態(tài)中的層號的最大值(max{PSk. l|PSk. f為1,k = m/2, m/2+l,…, m-Ι})時,交換機向其所有下端口發(fā)送上行鏈路失效消息ULFM<1-1,cn_2cn_3··· ClkCl_2…C1Cci, m/2+CH〉,其中1是交換機所在層號,k = 0,1,…,m/2-l,觸發(fā)層號判斷模塊222 ;否則,不 發(fā)送上行鏈路失效消息;所述鏈路失效條目LFE<cn_2cnV.. C1Ctl, f.A/M…fj?!担?guī)定坐標信息 cn_2cn_3... C1C0相同的鏈路失效信息被記錄在一個鏈路失效條目中,同一交換機的所有上端口的鏈路 的失效信息被保存在同一條目中。當(dāng)一個交換機的所有上端口的狀態(tài)二元組中的失效標志為1時,交換機向其所有 下端口發(fā)送下行鏈路失效消息DLFM<1>,其中1是所有上端口狀態(tài)二元組中層號的最大值 (max {PSk. 11 PSk. f 為 1,k = m/2, m/2+l,…,m_l})。所述容錯路由模塊3,包括源端口判斷模塊31.用于在收到所述數(shù)據(jù)包的交換機判斷該數(shù)據(jù)包是否來自上 端口或1彡lan。,若是,則通過SW<1,cn_2cn_3-cic0>的下端口 P1向下路由數(shù)據(jù)包,并完成路 由;否則,觸發(fā)篩選模塊32;篩選模塊32,用于收到所述數(shù)據(jù)包的交換機檢查自己的每個上端口 k的狀態(tài) PSk<l,f>,如果PSk. 1<1·且PSk. f為1,則將該端口從待選擇的上端口的集合中排除;節(jié)點祖先判斷模塊33,用于在收到所述數(shù)據(jù)包的交換機檢查自身鏈路失效表中的 鏈路失效條目LFE<c’ n_2c’ n_3…c’ lC’ Q,f’ m/2^f' m/2_2……f’ J’。>,并判斷條目所相關(guān)聯(lián)的 交換機 SW<l,c,n_2c,n_3…c’ lC,Q> 是否為目的節(jié)點 P,(ρ,= ρ,n_lP,n_2…ρ,lP,ο)的祖先, 若是,則檢查f’ i,i = 0,1,.. ,m/2-l是否為1,若f’ k為1,則將上端口 k+m/2從待選擇的 上端口的集合中排除,即Vk+m/2被置為0,如果不為1,則什么都不做,即不排除任何上端 口 ;否則,不排除任何上端口,所有鏈路失效條目的檢查被同時執(zhí)行;路由模塊34,用于收到所述數(shù)據(jù)包的交換機檢查上端口 ρ’ x是否在待選擇的上端 口的集合中,如果是,從上端口 P’i對數(shù)據(jù)包進行路由;否則,選擇下一個在待選擇的上端口 的集合中的端口進行路由;如果待選擇的上端口的集合為空,則表明不存在健康的路徑能 夠路由該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。本發(fā)明的有益效果在于1.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng)采用分布式實現(xiàn),具有低復(fù) 雜度和高擴展性;2.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),能夠?qū)崿F(xiàn)動態(tài)容錯,因此 在保證網(wǎng)絡(luò)可用性的同時能夠保證網(wǎng)絡(luò)的高性能;3.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),不增加額外的鏈路和交換 機等硬件;4.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),不增加路由路徑長度;5.本發(fā)明的一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng),具有高容錯能力,在 m-port n-tree胖樹網(wǎng)絡(luò)中,可以容忍任意m/2-l條鏈路的失效并以高概率容忍更多條失效鏈路的組合。通過結(jié)合附圖對本發(fā)明具體實施例的描述,本發(fā)明的其它方面及特征對本領(lǐng)域的 技術(shù)人員而言是顯而易見的。以上對本發(fā)明的具體實施例進行了描述和說明,這些實施例應(yīng)被認為其只是示例 性的,并不用于對本發(fā)明進行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進行解釋。
權(quán)利要求
一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述方法,包括下列步驟步驟100.配置胖樹網(wǎng)絡(luò);步驟200.所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā)現(xiàn)某端口失效時,向其他交換機發(fā)送鏈路失效消息;步驟300.根據(jù)所述鏈路失效信息,實現(xiàn)容錯路由。
2.根據(jù)權(quán)利要求1所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟100, 包括下列步驟由處理節(jié)點向其相連交換機發(fā)送位置配置消息來發(fā)起配置,接著獲得位置配置消息的 交換機通過向其鄰居交換機發(fā)送位置配置消息對它們進行配置,然后被配置的鄰居交換機 再對它們的鄰居交換機進行配置,直至網(wǎng)絡(luò)中所有交換機都被配置。
3.根據(jù)權(quán)利要求1所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟100, 包括下列步驟步驟111.處理器節(jié)點ρ (P = OO.. 0)向其相連交換機發(fā)送配置消息LCM<n,l,c>,其中 η是胖樹高度,1是所連交換機的層號,c是交換機的坐標;步驟112.所述交換機利用收到的配置消息將自身配置為SW<1,c>,并且,如果消息來 自上端口,則向其下端口 k發(fā)送配置消息LCM<n,1-1,Cn_2CnfClkCyClC(1>,如果消息來自 下端口,則向其上端口 k,發(fā)送配置消息LCM<n,l+l,Cn_2Cnv"Cl+1(k,-m/2)CyClC(1>,向其 下端口 k 發(fā)送配置消息 LCM<n,1-1,Cn_2Cny ClkCl_2 ClC(1> ;步驟113.收到交換機發(fā)來的配置消息的其他交換機重復(fù)步驟112,直至網(wǎng)絡(luò)中所有交 換機都被配置;步驟114.配置處理節(jié)點。
4.根據(jù)權(quán)利要求2或3所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,當(dāng)交換機成 功接收配置消息并配置后,會向消息來源端口回應(yīng)一個確認信息。發(fā)出配置消息的交換機, 如果沒有收到確認消息,會超時重傳配置消息。重傳次數(shù)的上限是預(yù)設(shè)值。
5.根據(jù)權(quán)利要求3所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述處理節(jié)點 的信息P(p = PlriPn^P1Pcl)在交換機完成配置后,由處理節(jié)點主動向與其相連的交換機請 求。
6.根據(jù)權(quán)利要求1所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟200, 包括下列步驟步驟210.失效鏈路的偵測; 步驟220.鏈路失效信息的傳播。
7.根據(jù)權(quán)利要求6所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟210, 包括下列步驟步驟211.所述胖樹網(wǎng)絡(luò)中的交換機周期性地向與其相連交換機發(fā)送偵測包對其鏈路 進行偵測;步驟212.所述交換機的鄰居交換機收到偵測包后,回應(yīng)一個應(yīng)答包,表示鏈路正常; 步驟213.所述交換機判斷從某端口發(fā)出的偵測包在一定時間內(nèi)是否得到應(yīng)答包,若 是,則返回步驟211 ;否則,執(zhí)行步驟214;步驟214.判斷發(fā)送偵測包的次數(shù)是否超過一閾值,若是,則執(zhí)行步驟215 ;否則,所述交換機重發(fā)偵測包,返回步驟213 ;步驟215.所述端口的鏈路被認為已經(jīng)失效,相應(yīng)的端口狀態(tài)被設(shè)置為失效。
8.根據(jù)權(quán)利要求7所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟214 中,如果重發(fā)次數(shù)達到固定值時,仍舊沒有收到應(yīng)答包,則該端口的鏈路被認為已經(jīng)失效, 相應(yīng)的端口狀態(tài)被設(shè)置為失效;上端口狀態(tài)用二元組PS<l,f>表示,其中1是與失效鏈路有 關(guān)的層號,f是失效標識;下端口狀態(tài)僅用失效標識為f表示。
9.根據(jù)權(quán)利要求6所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟220, 包括下列步驟步驟221.交換機偵測到其某下端口失效,則向除所述失效端口以外的所有端口發(fā)送 上行鏈路失效消息ULFM<1,cn_2cn_3-cic0, k> ;步驟222.收到ULFM的交換機判斷自己的層號是否等于1,若是,則執(zhí)行步驟224 ;否 則,執(zhí)行步驟223;步驟223.判斷所述ULFM是否來自上端口,若是,則所述交換機向其所有下端口轉(zhuǎn)發(fā) ULFM ;否則,所述交換機向除來源端口以外的所有端口轉(zhuǎn)發(fā)ULFM ;步驟224.收到所述ULFM的交換機將ULFM信息記錄在交換機內(nèi)的鏈路失效表的鏈路 失效條目 LFE<cn_2cn_3... cic。,f^-if^-a—fif0> 中;步驟225.判斷交換機的鏈路失效表中是否存在某一鏈路失效條目LFE<Cn_2Cn_fClC(1, UhUW f^?!档膄^-A/WfA為全1,若是,則該交換機向其所有下端口發(fā)送上行鏈 路失效消息ULFM<1-1,Cn_2CnvClkCl_fClC(1,m/2+CH〉,其中1是交換機所在層號,k = 0, 1,…,m/2-l,返回步驟222 ;否則,執(zhí)行步驟226 ;步驟226.判斷交換機的鏈路失效表中是否存在某一鏈路失效條目LFE<cn_2cn_3. . . C1C0, fffl/2-lfm/2-2· · · flf0> 的 f^-ifn^· · · flfo 不是全 1,但 f^-A/WfA 與交換機的所有上端口 的狀態(tài)二元組中失效標志PSnri. fPSm_2. f-PSffl/2. f按位或后,為全1并且所述交換機與條目 所指示的交換機的SW<l,Cn_2CnyClC(l>的最近公共祖先所在層號大于所有失效上端口的狀 態(tài)中的層號的最大值(max{PSk.l|PSk.f*l,k = m/2,m/2+l,…,m_l})時,交換機向其所 有下端口發(fā)送上行鏈路失效消息ULFM<1-1,cn_2cn_3··· C1^2-C1C0, m/2+CH〉,其中1是交 換機所在層號,k = 0,1,…,m/2-l,返回步驟222 ;否則,不發(fā)送上行鏈路失效消息。
10.根據(jù)權(quán)利要求9所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述鏈路失效 條目LFE<cn_2cn_3··· C1C0, f^f^-^f0),同一交換機的所有上端口的鏈路的失效信息被保 存在同一條目中。
11.根據(jù)權(quán)利要求8所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,當(dāng)一個交換機 的所有上端口的狀態(tài)二元組中的失效標志為1時,交換機向其所有下端口發(fā)送下行鏈路失 效消息DLFM<1>,其中1是所有上端口狀態(tài)二元組中層號的最大值(max{PSk. 1 |PSk. f為1, k = m/2, m/2+1, ...,m-l})。
12.根據(jù)權(quán)利要求1所述的基于胖樹結(jié)構(gòu)的動態(tài)容錯方法,其特征在于,所述步驟300, 包括下列步驟步驟310.源處理節(jié)點P(P = PlriPnVP1Ptl)發(fā)送數(shù)據(jù)包,數(shù)據(jù)包的目標處理節(jié)點是 P,(P,= P,n-iP' n-2...P,iP' ο);步驟320.收到所述數(shù)據(jù)包的交換機判斷該數(shù)據(jù)包是否來自上端口或1 ≥ lan。(lan。是源處理節(jié)點和目的處理節(jié)點的最近公共祖先交換機的層號,Iane = HiaxUIpi^p' i,i =0, 1,…,n-1}),若是,則通過SW<l,Cn_2Cn_fClC(1>的下端口 P1向下路由數(shù)據(jù)包,并完成路由; 否則,執(zhí)行步驟330;步驟330.收到所述數(shù)據(jù)包的交換機檢查自己的每個上端口 k的狀態(tài)PSk<l,f>,如果 PSk. f為1且PSk. l<lan。,則將該端口從待選擇的上端口的集合中排除;步驟340.收到所述數(shù)據(jù)包的交換機檢查自身鏈路失效表中的鏈路失效條目 LFE<c’ n_2c’ n_3…c’ lC’ 0, f’ m/2^f' m/2_2……f’ J’。>,并判斷條目所相關(guān)聯(lián)的交換機SW<1, C’n_2C’n_3"'C’lC’Q>是否為目的節(jié)點P’ (p,=PWwW0)的祖先,若是,則檢查 f’ i,i = 0,1,..,m/2-l是否為1,若f’k為1,則將上端口 k+m/2從待選擇的上端口的集合 中排除,即Vk+m/2被置為0,如果€\不為1,則什么都不做,即不排除對應(yīng)上端口 ;否則,不排 除任何上端口,所有鏈路失效條目的檢查被同時執(zhí)行;步驟350.收到所述數(shù)據(jù)包的交換機檢查上端口 是否在待選擇的上端口的集合中, 即判斷Vk(其中k = ρ’》是否為1 ;如果是,從上端口 P’ i對數(shù)據(jù)包進行路由;否則,選擇 下一個在待選擇的上端口的集合中的端口進行路由;如果待選擇的上端口的集合為空,則 表明不存在健康的路徑能夠路由該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。
13.一種基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述系統(tǒng),包括 網(wǎng)絡(luò)配置模塊,用于配置胖樹網(wǎng)絡(luò);鏈路失效檢測模塊,用于所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā)現(xiàn)某 端口失效時,向其他交換機發(fā)送鏈路失效消息;容錯路由模塊,用于根據(jù)所述鏈路失效信息實現(xiàn)容錯路由。
14.根據(jù)權(quán)利要求13所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述網(wǎng)絡(luò)配置 模塊,包括處理器節(jié)點觸發(fā)模塊,用于使處理器節(jié)點P (P = 00.. 0)向其相連交換機發(fā)送配置消息 LCM<n, 1,c>,其中η是胖樹高度,1是所連交換機的層號,c是交換機的坐標;配置模塊,用于使交換機利用收到的配置消息將自身配置為SW<l,c>。并且,如果消息 來自上端口,則向其每個下端口 k發(fā)送配置消息LCM<n,1-1,Cn_2CnyClkCl_fClC(1>,如果 消息來自下端口,則其向其每個上端口 k’發(fā)送配置消息LCM<n,l+l,Cn_2CnfCl+1(k’ -m/2) Cl_r"ClC(1>,向其每個下端口 k 發(fā)送配置消息 LCM<n,1-1,cn_2cnV·· ClkCl_2 CiCq> ; 處理節(jié)點配置模塊,用于配置處理節(jié)點;重傳模塊,用于當(dāng)交換機成功接收配置消息并配置后,向消息來源端口回應(yīng)一個確認 信息;當(dāng)發(fā)出配置消息的交換機,如果沒有收到確認消息時,超時重傳配置消息,重傳次數(shù) 的上限是預(yù)設(shè)值。
15.根據(jù)權(quán)利要求13所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述鏈路失效 檢測模塊,包括鏈路偵測模塊,用于失效鏈路的偵測; 失效信息傳播模塊,用于鏈路失效信息的傳播。
16.根據(jù)權(quán)利要求15所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述鏈路偵測 模塊,包括偵測包發(fā)送模塊.用于使交換機周期性地向與其相連交換機發(fā)送偵測包對其鏈路進行偵測;應(yīng)答包發(fā)送模塊,用于所述交換機的鄰居交換機收到偵測包后,回應(yīng)一個應(yīng)答包,表示 鏈路正常;判斷模塊,用于交換機判斷從某端口發(fā)出的偵測包在一定時間內(nèi)是否得到應(yīng)答包,若 是,則觸發(fā)偵測包發(fā)送模塊;否則,觸發(fā)超時判斷模塊;超時判斷模塊,用于判斷發(fā)送偵測包的次數(shù)是否超過一閾值,若是,則觸發(fā)失效設(shè)置模 塊;否則,所述交換機重發(fā)偵測包,觸發(fā)判斷模塊;失效設(shè)置模塊,用于在所述端口的鏈路被認為已經(jīng)失效時,將相應(yīng)的端口狀態(tài)被設(shè)置 為失效。
17.根據(jù)權(quán)利要求16所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述超時判斷 模塊,如果重發(fā)次數(shù)達到固定值時,仍舊沒有收到應(yīng)答包,則該端口的鏈路被認為已經(jīng)失 效,相應(yīng)的端口狀態(tài)被設(shè)置為失效;上端口狀態(tài)用二元組PS<1,f>表示,其中1是與失效鏈 路有關(guān)的層號,f是失效標識;下端口狀態(tài)僅用失效標識為f表示。
18.根據(jù)權(quán)利要求15所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述失效信息 傳播模塊,包括上行鏈路失效消息發(fā)送模塊,用于交換機偵測到其某下端口失效,則向除所述失效端 口以外的所有端口發(fā)送上行鏈路失效消息ULFM<1,cn_2cn_3··· C1C0, k> ;層號判斷模塊,收到ULFM的交換機判斷自己的層號是否等于1,若是,則執(zhí)行步驟;否 則,觸發(fā)端口判斷模塊;端口判斷模塊.判斷所述ULFM是否來自上端口,若是,則所述交換機向其所有下端口 轉(zhuǎn)發(fā)ULFM ;否則,所述交換機向除來源端口以外的所有端口轉(zhuǎn)發(fā)ULFM ;記錄模塊,用于收到所述ULFM的交換機將ULFM信息記錄在交換機內(nèi)的鏈路失效表的 鏈路失效條目 LFE<cn_2cnv·· C1Ctl, f^-A/n…位。> 中;判斷子模塊,用于判斷是否存在交換機,其鏈路失效表的某一鏈路失效條目 LFE<Cn_2Cn_3··· C1Ctl, f^fm/WfA〉的f^fm/WfA為全1,若是,則該交換機向其每個 下端口 k發(fā)送上行鏈路失效消息ULFMa-Lc^cwCikcyCiCvm/^+CH〉,其中1是交換 機所在層號,k = 0,1,…,m/2-l,觸發(fā)層號判斷模塊;否則,觸發(fā)狀態(tài)判斷模塊;狀態(tài)判斷模塊.用于判斷交換機的鏈路失效表中是否存在某一鏈路失效條目 LFE<Cn_2Cn_3. · · C1C0,· · f^f?!档?4/244/2-2· · · fifo 不是全 1,但 fm/Hfm/2-2... ^f0 與交換機的所有上端口的狀態(tài)二元組中失效標志PSlrt. fPSm_2. f…PSm/2. f按位或后,為全1并且 所述的交換機與條目所指示的交換機的SW<1,CV2Cn^ C1C(I>的最近公共祖先所在層號大 于所有失效上端口的狀態(tài)中的層號的最大值(max{PSk. l|PSk. f為1,k = m/2, m/2+l,…, m-Ι})時,交換機向其所有下端口發(fā)送上行鏈路失效消息ULFM<1-1,cn_2cn_3··· ClkCl_2…C1Cci, m/2+CH〉,其中1是交換機所在層號,k = 0,1,…,m/2-l,觸發(fā)層號判斷模塊;否則,不發(fā)送 上行鏈路失效消息。
19.根據(jù)權(quán)利要求18所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述鏈路失效 條目LFE<cn_2cn_3··· C1C0, f^f^-^f0),同一交換機的所有上端口的鏈路的失效信息被保 存在同一條目中。
20.根據(jù)權(quán)利要求18所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,當(dāng)一個交換機的所有上端口的狀態(tài)二元組中的失效標志為1時,交換機向其所有下端口發(fā)送下行鏈路失 效消息DLFM<1>,其中1是所有上端口狀態(tài)二元組中層號的最大值(max{PSk. 11 PSk. f為1, k = m/2, m/2+1, ...,m-l})。
21.根據(jù)權(quán)利要求13所述基于胖樹結(jié)構(gòu)的動態(tài)容錯系統(tǒng),其特征在于,所述容錯路由 模塊,包括源端口判斷模塊.用于在收到所述數(shù)據(jù)包的交換機判斷該數(shù)據(jù)包是否來自上端口或 1彡1·,若是,則通過SW<l,Cn_2CnfClC(1>的下端口 P1向下路由數(shù)據(jù)包,并完成路由;否則, 觸發(fā)篩選模塊;篩選模塊,用于收到所述數(shù)據(jù)包的交換機檢查自己的每個上端口 k的狀態(tài)PSk<l,f>,如 果PSk. f為1且PSk. 1 < Ian。,則將該端口從待選擇的上端口的集合中排除;節(jié)點祖先判斷模塊,用于在收到所述數(shù)據(jù)包的交換機檢查自身鏈路失效表中的鏈路失 效條目LFE<c’ n_2c’ n_3…C’ lC’ Q,f’ m/2^f' m/2_2……f’ if’。>,并判斷條目所相關(guān)聯(lián)的交換機 SW<1,c,n_2c,n_3…c,lC,Q>是否為目的節(jié)點P,(ρ,=PWwW0)的祖先,若是, 則檢查f’ i = 0,1,..,m/2-l是否為1,若f’ k為1,則將上端口 k+m/2從待選擇的上端 口的集合中排除,即Vk+m/2被置為0,如果f’,不為1,則什么都不做,即不排除對應(yīng)上端口 ; 否則,不排除任何上端口,所有鏈路失效條目的檢查被同時執(zhí)行;路由模塊,用于收到所述數(shù)據(jù)包的交換機檢查上端口 P’ i是否在待選擇的上端口的集 合中,如果是,從上端口 P’i對數(shù)據(jù)包進行路由;否則,選擇下一個在待選擇的上端口的集合 中的端口進行路由;如果待選擇的上端口的集合為空,則表明不存在健康的路徑能夠路由 該數(shù)據(jù)包,該數(shù)據(jù)包被丟棄。
全文摘要
本發(fā)明公開了一種基于胖樹結(jié)構(gòu)的動態(tài)容錯方法和系統(tǒng)。所述方法,包括下列步驟配置胖樹網(wǎng)絡(luò);所述胖樹網(wǎng)絡(luò)中的交換機周期性地查看端口狀態(tài),當(dāng)發(fā)現(xiàn)某端口失效時,向其他交換機發(fā)送鏈路失效消息;根據(jù)所述鏈路失效信息,實現(xiàn)動態(tài)容錯路由。
文檔編號H04L12/24GK101945050SQ20101029054
公開日2011年1月12日 申請日期2010年9月25日 優(yōu)先權(quán)日2010年9月25日
發(fā)明者孫凝暉, 安學(xué)軍, 王達偉, 胡農(nóng)達 申請人:中國科學(xué)院計算技術(shù)研究所