專利名稱:確定rdt片上網絡最短路由的方法
技術領域:
本發明屬于計算機技術領域,涉及基于RDT的片上網絡 (Network-on-Chip, NoC),具體是一種面向RDT(n, R, l)片上網絡的最短路 由尋找方法以及應對網絡鏈路(Link)、節點(Tile)錯誤的容錯機制的實現方 法。
背景技術:
RDT的全稱是Recursive Diagonal Torus,是面向大規模并行處理器的 一類片上互連網絡拓撲結構的總稱。該拓撲結構的目的在于減小基于二維網 格(2D-Mesh)的大規模并行處理器的網絡半徑,以便減小不同處理器之間的 通信延遲,目前己經應用在大規模并行機JUMP-1中。RDT的思想是在二維網 格的基礎上構建不同層次(rank)、不同大小的Torus網絡。Torus網絡的層次越高,鏈路跨度也就越大,因此可以減小整個片上網絡的半徑。目前針對RDT網絡的路由方法主要有以下兩種矢量路由(VR, Vector Routing)方法和環路編碼矢量路由(CCVR, Circular Coded Vector Routing) 方法。VR和CCVR的基本思想都是尋找一種合適的矢量分解方法,將RDT 網絡中通信發起節點(源節點)和通信接收節點(目的節點)之間的相對矢 量分解為不同層次的Torus網絡路由,以便減少這兩個通信節點之間的路由 長度。VR的分解方法是根據經驗推導確定矢量分解等式中系數間的關系以及 最終路由結果。該方法較為簡單,只需要一次運算即可得到最終結果。但是 由于沒有考慮通信節點在網絡中的絕對位置,所以往往無法利用Torus環路 找到最短路由。CCVR的方法是首先對網絡中每個節點進行格雷編碼(Gray Code),然后把源節點作為當前考慮節點,根據當前考慮節點和目的節點之 間的碼值關系確定路由第一條鏈路的走向,然后將當前考慮節點更新為剛剛 確定的鏈路終端節點。依次類推,不斷更新當前考慮節點及對應的路由信息,直到當前考慮節點與目的節點重合為止。這種方法可以得到最短路由,但是 需要經過多次循環計算,時間開銷較大。
此外在實際的片上網絡中,鏈路和節點在通信過程中出錯的情況是有可 能出現的。這會極大影響通信的成功率和效率。因此需要在基本路由方法的 基礎上添加容錯機制以避開出錯的鏈路或者節點,嘗試尋找其它路由以順利 到達目的地。目前的容錯機制主要包括提供備用鏈路和使用容錯路由兩種方 法。前者的缺陷在于備用鏈路的存在導致硬件成本較高。后者則是目前面向
RDT網絡容錯機制所使用的方法,主要有FVRSF (Floating Vector Routing under Single Failure)禾口 FVRMF (Floating Vector Routing under Multiple Failure)兩種。FVRSF只考慮一條鏈路或者一個節點出錯,忽略了實際傳輸 過程中多鏈路、多節點同時出錯的情況。FVRMF可以處理多條鏈路或多個節 點出錯的情況,但備選路由與錯誤鏈路必須處于同一To:rus網絡層,這往往 導致總的路由長度的增加。此外它只考慮當前節點在當前Torus網絡層內連 接的四條鏈路,并沒有考慮到全局鏈路的出錯狀況。而局部決策往往無法產 生全局最優結果。
有關RDT網絡的基本定義以及VR方法的實現細節相關介紹請參考文獻 Yulu Yang,Akira Funahashi,"Recursive Diagonal Torus: An Interconnection Network for Massively Parallel Computers", IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, 2001)。有關CCVR, FVRSF以及FVRMF的實現細節請參考文獻Shankar Narayanan Neelakrishnan, 〃DESIGN AND IMPLEMENTATION OF N0C ROUTERS AND THEIR APPLICATION TO PRDT-BASED N0C' S", Thesis for Master of Science Degree in Electrical Engineering Department of Electrical and Computer Engineering Howard R. Hughes College of Engineering, University of Nevada, Las Vegas, 2007。
發明內容
本發明的目的是針對上述VR和CCVR路由確定方法的缺陷,提出一種高性能、低復雜度的面向RDT(n, R, l)片上網絡的最短路由確定方法。該方法 既可以解決VR無法確保總能找到最短路由的問題,而且時間復雜度與CCVR 相比降低很多。此外,本方法可以解決FVRSF和FVRMF容錯路由方法無法產 生全局優化結果的低性能問題,可以根據整個RDT網絡內鏈路的出錯狀況, 在盡可能減少路由長度的條件下綜合考慮網絡中不同層次的鏈路,并最終找 出 一條避開所有出錯鏈路的可用路由。 本發明針對的容錯模型定義如下
① RDT片上網絡中的任何節點和鏈路發生錯誤時,數據無法在一條錯誤 鏈路上傳輸也無法通過一個錯誤節點進行轉發;
② 錯誤模型為靜態,就是當前節點對數據包進行轉發的過程中與該節點 相連的鏈路不會出現新錯誤;
③ 產生通信的源節點和目標節點均是正常工作;
④ 錯誤的發生是相互獨立的;
⑤ 如果一個節點發生錯誤,則認為所有與該節點直接相連的鏈路均產生 錯誤,即如果節點發生錯誤則該節點與整個網絡隔絕,將節點錯誤歸并到鏈 路錯誤;
(D同一層Torus網絡內的鏈路錯誤信息對網絡中的所有正常節點均是可 知的。
基于以上容錯模型的最短路由方法的具體歩驟是
步驟(l)為RDT網絡建立坐標系,并確定節點編號以及通信節點的位置
首先確定目標RDT(n, l)網絡的規模,表示為NXN;以網絡中的左上角 節點為原點,以水平向右為x軸正方向,豎直向下為y軸正方向,建立X0-Y0 直角坐標系,其中相鄰兩個節點之間的長度定為X0-Y0坐標系的單位長度;
然后按照自上而下的順序對每行的N個節點自左到右依次編號,RDT中 每個節點的編號與其在X0-Y0坐標系中的坐標滿足下面的關系
V節點Ke目標NXN RDT(n, 1),其坐標為(Xk, yk),且滿足xke
, yw[O, N - l], K的編號Nimi(k) = N'yk + xk,該網絡中節點編號的取
9值范圍是[O, N2 - l];
確定需要進行通信的兩個節點S和D在坐標系XO-Y0內的位置S(Sx, Sy), D(DX, Dy),其中S為通信源節點,D為通信目標節點;
RDT(n, l)的完整表述形式為RDT(n, R, 1),其中1表示該RDT網絡中 只包含兩層Torus: rank-0和rank-l; R表示該RDT網絡形成的Torus層數 從0開始的最大值;設定RDT網絡為兩層Torus網絡,那么R》l,將RDT(n, R, 1)簡寫為RDT(n, 1); n禾爾為基數(cardinal number), 表示rank-1 Torus 內部相鄰兩節點在rank-O內的跨度,n》2;
給定一個NXN的Torus網絡結構,滿足N二nk, k為正整數,且N》4; 該網絡為rank-0 Torus網絡,為其建立X0-Y0坐標系;為rank_0中的每一 個節點P(x, y)添加四條鏈路這四條鏈路分別將節點P和節點Pl((x + n) mod N, (y + n) mod N) 、 P2 ((x + n) mod N, (y - n) mod N) 、 P3 ((x - n) mod N, (y + n) mod N)禾口 P4((x - n) mod N, (y - n) mod N)連接起來。 rank-0 Torus網絡中的各條鏈路為rank-0鏈路,新增加的鏈路為rank-1 鏈路;所有能夠直接或間接與點P相連的mnk-1鏈路構成一個Torus網絡 ——rank-1 Torus;通過上述方式建立起來的片上網絡結構為RDT(n, R, 1), 簡寫為RDT(n, 1);
步驟(2)確定目標節點D的鏡像超集M' (D)
M' (D)為D與其在X0-Y0坐標系內四個鏡像點D, n。rth, D, east, D, s。uth, D, est
的集合,即M, (D) 二 {D, D,nDrth, D' efist j U south j U west j"o U northj U east j south j
D'^t分別位于點D的豎直向上、水平向右、豎直向下和水平向左,而且與D 的距離均為N;這四個鏡像點的坐標分別為D,』(Dx, Dy - N) , D, east(Dx + N, Dy), D,S0Uth(Dx, Dy + N), D, cst (Dx - N, Dy),鏡像超集中的每一個元素為超 鏡像點;
步驟(3)確定最佳超鏡像點
計算M, (D)中各個超鏡像點與源節點S之間的曼哈頓距離(Manhattan distance),選擇與S的曼哈頓距離最短的超鏡像點作為最佳超鏡像點,并記為M,具體步驟是
a. 確定源節點S指向目的節點D的相對矢量V = (V』x, V」y),其中V』x = Dx - Sx,表示V在XO-YO坐標系中水平方向的分量;V』y = Dy - Sy,表示V 在X0-Y0坐標系中豎直方向的分量;
b. 初始化最佳超鏡像點M: M (M My) = D(DX, Dy)。
c. 如果l V」x |與| V」y l中大者大于RDT維度的一半,則轉入步驟d;如 果小于等于RDT維度的一半,則轉入步驟e;
d. 如果l V」x |與| V」y l中大者是l V』x |,則V」x大于0時,將M更新 為D' rest, U、于等于0時,將M更新為D' 。ast;
如果l l與i V」y l中大者是l V」y i,則V」y大于0時,將M更新為 D'nOTth, V」y小于等于0時,將M更新為D'^;
e. 返回最佳超鏡像點M; 步驟(4)建立X1-Yl坐標系
以S為原點,右下方為x軸正方向、左下方為y軸正方向,建立Xl-Yl 坐標系,其單位長度為rank-1中的鏈路長度。可以認為X1-Y1坐標系是將 XO-YO坐標系的原點平移至源節點S,然后順時針旋轉45。,再將坐標軸度 量擴大為原來的n 21/2形成的。任給XO-YO坐標系中的一點T(TX, Ty),其 在以S為原點建立起來的Xl-Yl坐標系中的坐標為
T, (((Ty-Sy)+ (Tx - Sx))/2n, ((Ty - Sy) - (Tx - Sx))/2n) (1) 如果T'的XI、 Yl坐標值均為整數,那么T'通過rank-1鏈路直接或間 接與S相連接。按上述方法建立的Xl-Yl坐標系并不包括所有的mnk-l鏈 路,只包括了能夠與S直接或間接相連的rank-1鏈路。因為rank-1構建時, 需要對XO-YO中的所有節點增加rank-1鏈路。而基于不同rank_0節點建立 起來的rank-1網絡要么完全重疊,要么互不相交。因此一個X1_Y1坐標系 只能表示與其原點直接或間接相連的rank-1鏈路,無法表示與當前mnk-l 網絡不相交的其它rank-1鏈路。
歩驟(5)使用VR方法確定S和M之間的矢量分解結果首先確定S指向M的相對矢量A 二 a0*x0 + b0*y0,其中x0, y0分別
表示XO-YO坐標系內的x方向和y方向的單位矢量,a0和b0分別表示S指 向M的相對矢量在XO方向和YO方向的分量,aO =MX - Sx, bO = My - Sy; 然后將相對矢量A分解XO-YO坐標系單位矢量與xl-yl坐標系單位矢量之和 的形式,表示為A = vecxl*xl + vecyl*yl + vecxO*xO + vecyO*yO, 其 中xl, yl分別表示X1-Yl坐標系內的x方向和y方向的單位矢量;| vecxl | 和ivecyll分別表示rank-l內經過X1方向和Yl方向的鏈路個數,若vecxl、 vecyl為正數則表示鏈路方向為XI和Yl的正方向,為負數則為負方向; I vecxO I和I vecyO |分別表示rank-O內經過XO方向禾口 YO方向的鏈路個數, 若vecxO、 vecyO為正數則表示鏈路方向為XO和YO的正方向,為負數則為 負方向;vecxO、 vecyO、 vecxl和vecyl統稱為矢量系數,表示數據包從S 到M轉發過程中在各鏈路層各方向的轉發次數;分解之后從S到M所要經過 的鏈路總數表示為各矢量系數的絕對值之和,即1 vecxl I + I vecyl 1 + IvecxOi + |vecyO|,這也是從S到D所要經過的鏈路總數;矢量A的分解 使用VR方法
vecxl = (aO + bO) / (2Xn)(除法按照五舍六入取整)
vecyl = - (aO - bO) / (2Xn)(除法按照五舍六入取整)
vecxO = aO - (vecxl _ vecyl) Xn (2)
vecyO = bO - (vecxl + vecyl) Xn
步驟(6)保存S和D之間的路由方案
根據步驟(5)的分解結果,將S到M的路由視為rank-1鏈路和rank-0鏈 路的組合,根據S到M的矢量系數確定S到D的路由方案,具體方法是矢 量系數向0逼近,把逼近過程中對應的數據包轉發方向應用在對應的RDT網 絡即可得到S到D的最短路由;數據包每經過一個節點轉發,矢量系數都應 做相應的更新。具體而言,rank-1內XI方向的鏈路個數為| vecxl | ,若vecxl 〉0,則通信過程中數據經過對應鏈路的方向為XI的正方向,傳遞完成后 vecxl自減l;若vecxl《0,則為X1的負方向,傳遞完成后vecxl自加1;vecyl和vecxO、vecy0分別指示了數據包在rank-1鏈路層的Yl方向的傳遞 次數和數據包在rank-O鏈路層的XO、 YO方向的傳遞次數;數據包在鏈路層 對應方向轉發之后,相應的矢量系數在正負號不變的情況下絕對值自減1。 值得注意的是路由信息只包含了各鏈路層各方向數據包轉發的次數,并沒有 對不同轉發方向之間的順序做出限制。所以路由信息依據不同的轉發順序可 以有多種具體實現方案,具體數量用下述公式計算
(|vecxl| + I vecyl I + |vecxO| + |vecyO|)! / (|vecxl|! | vecyl |! |vecxO|! |vecyO|!) (3) 符號"!"表示階乘;
這些不同的路由方案在長度上是一致的,但是數據包轉發順序的不同對 應于不同的傳輸鏈路排列方案,也就導致了不同的傳輸路徑。為了盡可能地 避免數據包傳遞過程中遇到錯誤鏈路或節點,需要將矢量系數(vecxl, vecyl, vecxO, vecyO)對應的具體實現方案用一個先進先出的隊列保存起來——RI, 路由消息隊列。路由消息隊列RI中任一元素r的取值范圍是P4, -3, -2, -1, 1, 2, 3, 4},其中4表示數據包通過rank-l鏈路向Xl正方向轉發,3表示 數據包通過rank-1鏈路向Yl正方向轉發,2表示數據包通過rank_0鏈路向 XO正方向轉發,l表示數據包通過rank-0鏈路向Y0正方向轉發;-4, -3, _2, -1則分別表示對應的負方向;設RI = {rl, r2, r3,…,rn},那么數據 包將依次按照rl, r2, r3, , rn的順序在RDT中進行傳遞,數據包的轉 發方向由對應的ri(i = 1, 2,…,n)決定,每轉發一次,隊列RI的首個 元素就被彈出并拋棄;當RI為空時,該數據包的傳遞過程結束;RI與路由 信息(vecxl, vecyl, vecxO, vecyO)—起傳輸,并在轉發過程中同步更新。 RI可以視為(vecxl, vecyl, vecxO, vecy0)的一種具體實現方案。不同的路 由實現方案對應著RI中元素的不同排列順序,但是路由的起點和終點是一 致的。初始情況下,RI內元素按照下面的原則進行排列先考慮通過rank-l 內的鏈路,再考慮通過rank-0內的鏈路。在同一rank內,先考慮通過x方 向的鏈路,再考慮通過y方向的鏈路。RI和路由矢量在每到達一個新節點時 進行更新。當(vecxl, vecyl, vecxO, vecy0)等于(0, 0, 0, O)時,表示數據包已經從S傳遞至D,通信過程完成。步驟(7)啟動容錯處理機制
根據步驟(6)中RI隊列的內容得到一個初始的S到D的路由實現方案,本步驟用于檢測該方案是否能夠避開當前網絡中的所有錯誤鏈路。如果步驟(6)確定的路由方案能夠避開當前網絡中的所有錯誤鏈路,就按照RI隊列決定的路由方案實現源節點S到目的節點D的通信過程;如果不能避開當前網絡中的所有錯誤鏈路,就對RI隊列進行修改以便避開所有的錯誤鏈路。本步驟提出的方法可以考慮多節點、多鏈路出錯狀況,通過全局分析選擇可用的路由方案以盡可能地減少為了規避錯誤鏈路而額外增加的路由長度。其基本原理是統籌規劃rank-1和rank-0內的鏈路排列順序以便盡可能地減少總鏈路長度。當無法根據給定矢量系數找到一種最短路由方案來規避所有的錯誤鏈路時,考慮增加額外鏈路。本步驟包括以下步驟
f. 設定當前考慮節點P,令P 二 S,如果矢量系數vecx0, vecy0, vecxl,vecyl均為0,則轉到步驟n,否則轉入步驟g;
g. 以P為原點建立XI-Yl坐標系收集rank-0以及P所在的rank-1范圍內的鏈路損壞信息,并分別保存在4和A(P)中。Z。是一個N2X2的二維矩陣。Vie[O, N2 - l], i表示目標NXNRDT(n, l)中的節點編號,Z。(/,0),Z。(U)分別表示與節點i緊密相連的東方(X0正方向)和南方(Y0正方向)rank-0鏈路(包括回路)。£。中各個元素的取值范圍是{0, 1}。其中0表示該鏈路已經損壞,l表示該鏈路工作正常。A與f。類似也是一個N2X2的二維矩陣。Vie[O, N2 - l], i表示目標NXNRDT(n, l)中的節點編號,£々,0),£,(/,1)分別表示與節點i緊密相連的東南方(X1正方向)和西南方(Y1正方向)rank-l鏈路(包括回路)。A(。表示能夠與節點P直接或間接相連的各條rank-1鏈路損壞信息的集合,根據公式(l)可得
(尸)=力I z' 'x mod 2" = 0, z'; mod 2w = 0, 7 e
}其中(i' x i' y)表示編號為i的節點在以P為原點建立的XI-Yl坐標系中的坐標。A中各元素的取值范圍及含義與Z。相同。f。和《(P)更新之后,如果vecxl、vecyl均為0,則轉入步驟h,否則轉入步驟i;
h. 根據RI確定以P為起點即將經過的rank-0鏈路,如果rank-0鏈路是有損壞的情況出現,則轉入步驟j,否則轉入步驟k;
i. 根據RI確定以P為起點即將經過的rank-1鏈路如果rank-1鏈路是有損壞的情況出現,則轉入步驟j,否則轉入步驟k;
j.首先確定指定rank內規避所有錯誤鏈路的路由方案,同時保證路由長度最短,具體是
所得到的路由方案由臨時的路由消息隊列RI—temp保存,定義r表示需要進行處理的rank;如果該步驟是由步驟h或j轉入,則r 二 0;如果由步驟i轉入,則r = 1。定義Search—path作為該步驟實現方法的名稱,其目的是根據P的位置以及待處理的網絡層次r確定規避所有錯誤路徑的路由方案并保存在RI_temp—r中,即令RI—temp—r 二 Search—path(P, r)。具體實現細節如下所示以P為起點在規避所有錯誤鏈路的條件下根據RI中rank-r的路由信息采用二叉搜索樹方法確定對應rank內的鏈路排列順序,如果這樣的路由存在,那么返回一個表示該路由的信息隊列并保存在RI—temp一r中,如果這樣的路由不存在或者RI中不包含rank-r的路由信息,則返回一個空隊列。在Torus網絡內部,數據轉發方向必然是X正、負方向(二者必居其一),或Y正、負方向(二者必居其一)。二叉搜索樹方法首先從RI中提取所有屬于rank-r的元素,并按照固有的順序保存在新的路由信息隊列RI—r中,用Q表示在無錯網絡中按照RI一r中定義的路由P將會到達的目的節點,二叉樹有三類節點根節點、中間節點和葉子節點,每個節點包含RI—r中元素的個數size (RI—r),取值范圍是{0, 1} , rH和rV表示rank-r的數據包轉發方向,兩者相互正交;RI—r中的元素表示數據包在rank-r內的轉發方向,當RI—r中某個元素表示的轉發方向為rH時,該元素在二叉搜索樹節點中的對應值為l,當RI—r中某個元素表示的轉發方向為rV時,該元素在二叉搜索樹節點中的對應值為O。 二叉搜索樹中,根節點不包含任何元素的數值信息,中間節點確定了部分元素的數值,葉子節點則包含所有元
15素的數值信息。所以葉子節點可以視為RI一r的一個可用解,對應了一種rank-r內的可用路由方案。得到葉子節點后,根據其內容對RI一r中的元素重新排序并保存在RI—temp—r中。為了降低計算復雜度,在二叉搜索樹的建立過程中采用深度優先的方式,只要找到一個葉子節點就結束整個搜索過程。
然后根據得到的路由方案決定后續步驟,具體是
如果得到的RI—temp—r為空,同時r為l,則令r二O,重復步驟j;如果r二O,則轉入步驟k;如果若RI—temp—r非空,則轉入l;
k.整個處理過程進入到該步驟,表示不可能在rank-1和rank-O內找到總路由長度不增加而且可以規避所有錯誤鏈路的路由方案,只能嘗試增加額外鏈路。按照路由信息隊列的取值原則,搜集點P在不同rank內的所有可用鏈路并保存在集合L頂K中,若LINK存在一個元素r—sel與RI中的任一元素正交,則將r—sel和-r—sel添加至RI隊列首部,并轉入步驟m;如果LINK中的所有元素均不與RI中的任何一個元素正交,且LINK中存在一個元素r—sel與RI中任一元素處于不同rank,則將r—sel和-r_sel添加至RI隊列首部,并轉入步驟m;如果上述條件均不滿足,且LINK存在一個元素r_sel與RI中任一元素處于同一 rank且方向相反,那么將r—sel禾卩-r—sel添加到RI隊列首部,轉入步驟m;
1.本步驟根據Rl一temp—r的內容更新RI。首先確定RI—temp—r保存的路由信息所在的網絡層,即r的值。然后在RI中尋找處于rank-r內的各個元素,并將這些元素按照順序依次替換為RIJemp—r中的元素。轉入步驟m。
m.根據RI中位于隊首的元素,選擇對應的鏈路對數據包進行轉發,并將RI隊首元素彈出。然后根據轉發的鏈路對矢量系數(vecxl, vecyl, vecxO,vecy01)進行更新。將P更新為數據包轉發到的新節點。如果更新后的RI為空,轉入步驟n,如果更新后的RI非空,轉入步驟g;
n.整個通信過程結束。
本發明有效地結合了 VR和CCVR兩種路由方法的優勢,同時克服了各自
16的缺點。能夠以較小的計算開銷獲得RDT(n, l)類片上網絡中任意兩點的最短路由。此外,本發明提出的容錯機制能夠較好地解決目前解決方法中存在的性能較低的問題。
圖l為本發明方法的流程圖2為本發明方法提出的容錯機制流程圖3為16X16 RDT(2, l)網絡示意圖;
圖4為二叉搜索樹示意圖。
具體實施例方式
下面結合附圖和實施方法對本發明作進一步的詳細說明
圖1是本發明所提出的面向RDT(n, l)片上網絡具有全局優化容錯能力的最短路由確定方法的流程圖。該圖共包括七個流程分別與之前介紹的七個步驟相對應,其中步驟(7)有關容錯處理機制的流程圖在圖2中有詳細描述。圖2中的虛線框表示容錯處理機制當中的子步驟。下面以16X16的RDT(2, l)片上網絡為例逐一說明圖1所示各個流程的實現方式。
步驟(l)為RDT rank-0網絡建立坐標系,確定節點編號以及通信節點的位置
首先確定目標RDT(n, l)網絡的規模。如圖3所示,該網絡的維度N二16,是16X16的RDT(2, l)網絡,其中n二2。以該網絡的左上角節點為原點,水平向右為x軸正方向,豎直向下為y軸正方向建立XO-YO坐標系。然后為網絡中的各個節點編號。給定X0-Y0中的一個節點k(Xk, yk) , k的編號Num(k)二16yk+Xk。然后確定待通信的兩個節點的位置,圖3中通信源節點為S,其坐標為S(SX, Sy)=S(4, 4),編號為68;通信目的節點為D,其坐標為D(DX,Dy)二D(13, 4),編號為77。
步驟(2)確定目標節點D的鏡像超集M' (D):
然后根據鏡像點的定義確定通信目標節點D的四個鏡像點以及鏡像超集M, (D) 。 M, (D) = {D, D, 。rth, D' east, D, south, D'組} , M, (D)中的每一個元素均為超鏡像點。D, nOTth, D, rast, D' s。uth, D' ,t是D的鏡像點,分別位于點D的豎直上方、水平右方、豎直下方和水平左方,其坐標為D'n。rth(D"Dy-N),D,east(Dx+N,Dy),D, s加th (Dx, Dy+N),D, rest(D「N, Dy)
如圖3所示:M, (D) = {D(13, 4), D,瞎th(13, —12), D,east(29, 4), D,south(13,20), D' est(-3, 4)}。這些鏡像點并不是真實的RDT網絡節點,只用于表示可進行VR分解的候選節點。鏡像點和通信源節點之間的相對矢量才具有真實的物理意義,即在考慮RDT網絡中不同Torus環路的條件下,S和D之間的相對位置。
步驟(3)確定最佳超鏡像點
最佳超鏡像點用M表示,是M' (D)中與源節點S之間的曼哈頓距離(Manhattan distance)最短的超鏡像點。確定M的基本步驟如下
a. 確定源節點S指向目的節點D的相對矢量V=(V」X, V」y),其中V」X=DX-SX,表示V在X0-Y0坐標系中水平方向的分量;V』y=Dy - Sy,表示V在X0-Y0坐標系中豎直方向的分量;如圖3所示,S指向D的相對矢量V(V』X, V」y)=V(Dx-Sx,Dy-Sy)=V(13-4,4-4)=V(9, 0);
b. 初始化最佳超鏡像點M: M(Mx, My) =D(Dx, Dy) 二D (13, 4);
c. 如果IVj與IVJ中大者大于RDT維度的一半,則轉入步驟d;如果小于等于RDT維度的一半,則轉入步驟e;圖3所示例子中IVj與IVj中大者為IV」」二9,大于RDT維度的一半8,因此轉入歩驟d;
d. 如果lvJ與IV」yl中大者是IV』xl,則Lx大于0時,將M更新為D,Mst,U、于等于0時,將M更新為D'^t;如果IVj與IV勿l中大者是IVj,則V勿大于O時,將M更新為D' h, U、于等于0時,將M更新為D's。uth;圖3所示例子中,ivJ與IVj中大者是IVj,且V」x大于0,將M更新為D'^t,所以M坐標為(-3, 4)
e. 返回最佳超鏡像點M;
步驟(4)為RDT rank-l網絡建立坐標系
以S為原點,右下方為x軸正方向、左下方為y軸正方向,建立X1-Y1坐標系,其單位長度為rank-1的鏈路長度;在圖3所示例子中,X1-Y1坐標系原點為X0-Y0坐標系中的S(4, 4),與XO-YO相比順時針旋轉了 45° ,并且單位長度擴大為2 21/2。 X0-Y0坐標系中的一點T(TX, Ty),其在以S為原點建立起來的XI-Yl坐標系中的坐標為
T, (((Ty-Sy) + (Tx — Sx)) /2n, ((Ty — Sy) — (Tx — Sx)) /2n) (1)比如S在XO-YO坐標系中的坐標為(4, 4),按照公式(l)其在XI-Yl坐標
系中的坐標為S, (0, 0);
步驟(5)使用VR(Vector Routing)方法確定S和M之間的矢量分解結果首先確定S指向M的相對矢量A=a0*x0+b0*y0,其中x0、 y0分別表示XO-YO坐標系內的x方向和y方向的單位矢量,a0、 b0分別表示相對矢量A在XO方向和YO方向的分量,aO二M,-Sx, bO=My_Sy;然后使用VR方法將相對矢量A分解為XO-YO單位矢量與Xl-Yl單位矢量之和的形式,表示為A=vecxl xl+vecyl*yl+vecxO*xO+vecyO*yO;分解方法如下所示vecxl= (aO+bO) / (2 X n) (除法按照五舍六入取整)vecy 1=- (aO-bO) / (2 X n) (除法按照五舍六入取整)vecxO=aO-(vecxl-vecyl) Xn (2)vecyO二bO-(vecxl+vecyl) Xn其中xl、 yl分別表示X1-Y1坐標系內的x方向、y方向的單位矢量;lvecxll和lvecyll分別表示Xl和Yl方向內rank-1鏈路的個數,若vecxl、vecyl為正數則表示鏈路方向為XI和Yl的正方向,為負數則為負方向;I vecxO I和I vecyO |分別表示XO和YO方向內rank-0鏈路的個數,若vecxO、vecyO為正數則表示鏈路方向為XO、YO的正方向,為負數則為負方向;vecxO、vecyO、 vecxl禾口 vecyl統稱為矢量系數;
圖3所示例子中,S指向M的相對矢量A二-7'xO + OyO,其中a。二-7,b。二0。根據公式(2)可以得到矢量系數(vecxl, vecyl, vecx0, vecyO) = (-2,2, 1, 0);其含義為S到M的通信過程,需要經過2次Xl負方向的rank-l鏈路轉發,2次Y1正方向的rank-l鏈路轉發,1次X0正方向的mnk-0鏈路轉發。
步驟(6)確定S和D之間的初始路由方案
根據步驟(5)的分解結果對S到M的矢量系數進行處理,確定S到D的路由方案,基本方法是S到M的矢量系數向O逼近,把逼近過程中對應的數據包轉發方向應用在對應的RDT網絡即可得到S到D的最短路由。具體而言,rank-1內Xl方向的鏈路個數為lvecxll,若vecx1〉0,則數據包傳遞方向為 Xl的正方向,傳遞完成后vecxl自減l;若vecx1《0,則為X1的負方向, 傳遞完成后vecxl自加1;與vecxl的處理方式類似,vecyl和vecxO、 vecyO 在數據包完成所在鏈路層對應方向轉發之后,在正負號不變的情況下絕對值 自減l; rank層次、轉發方向選擇順序的不同會導致不同的路由方案,本步 驟使用路由消息隊列RI記錄一種初始的路由方案;RI中任一元素r的取值 范圍是{-4, -3, -2, -1, 1, 2, 3, 4},其中4表示數據包通過rank-l鏈路向XI 正方向轉發,3表示數據包通過rank-l鏈路向Yl正方向轉發,2表示數據 包通過rank-0鏈路向XO正方向轉發,1表示數據包通過rank-0鏈路向YO 正方向轉發;-4, -3, -2, -1則分別表示對應的負方向;設 RI={rl,r2,r3,…,rn},其元素按照下面的原則由步驟(5)得到的矢量系數生 成先選擇rank-l鏈路,再考慮通過rank-O鏈路,在同一rank內,先選 擇x方向的鏈路,再選擇y方向的鏈路;然后數據包將依次按照 rl,r2,r3,…,rn的順序在RDT中進行傳遞,數據包的轉發方向由對應的 ri (i=l, 2,…,n)決定,每轉發一次,隊列RI的首個元素就被彈出并拋棄;RI 與路由矢量系數(vecxl, vecyl, vecx0, vecyO)—起傳輸,并在轉發過程中同 步更新;當(vecxl,vecyl,vecxO,vecyO)為(O,O,O,O), RI為空時,數據包己 經從S傳遞至D,通信過程完成。
圖3中所示例子經過步驟(5)得到的矢量系數為(vecxl, vecyl, vecx0, vecy0) = (-2, 2, 1, 0);依據RI的定義,初始化之后的結果為RI 二 {_4, -4, 3, 3, 2}。該隊列內容表述的意思是,從S點出發向XI負方向走兩條 mnk-l鏈路,然后沿著Yl正方向走兩條rank-l鏈路,最后沿著XO正方向 走一條rank-O鏈路。其對應的路徑如圖3中的虛線所示S(4, 4)—化(2, 2) —N2(0,0)—N5(14, 2)—N8(12, 4)—D(13, 4),所需要經過的鏈路個數共有 5條。
步驟(7)啟動容錯處理機制
如果歩驟(6)確定的初始路由方案不能避開當前網絡中的所有錯誤鏈路, 就需要對RI隊列進行修改。修改原則是統籌規劃rank-l和rank_0內的鏈 路排列順序以盡可能地減少總鏈路長度,當無法根據給定矢量系數找到一種 最短路由方案來規避所有的錯誤鏈路時,考慮增加額外鏈路。下面結合圖3 示例詳細介紹本步驟的實現過程f. 設定P為數據包所在節點,初始情況下P即通信源節點s,如果矢量系
數vecx0, vecy0, vecxl, vecyl均為0,則轉到步驟n,否則轉入步驟g;本例 中令當前考慮節點p = S(4, 4),由于(vecxl, vecyl, vecx0, vecy0) = (-2, 2, 1, O)并非全為O,因此轉入步驟g;
g. 以P為原點建立XI-Yl坐標系;收集rank-0以及P所在的rank-1范 圍內的鏈路損壞信息,并分別保存在4和A(尸)中;如果vecxl、vecyl均為0, 則轉入步驟h,否則轉入步驟i;本例中Z。中各條rank-0鏈路對應的元素值 均為1,即正常工作。在&(P)中,如圖4所示P(S)—N"N一N2,N7—N8的rank-1 鏈路損壞,其余皆正常工作。由于(vecxl, vecyl)二(-2, 2)棉,0),轉入 步驟i;
h. 根據RI確定以P為起點即將經過的各條rank-0鏈路,如果有rank-0 鏈路損壞,則轉入步驟j,否則轉入步驟k;本例中該步驟不會被執行;
i. 根據RI確定以P為起點即將經過的各條rank-l鏈路,如果有rank-l 鏈路損壞,則轉入步驟j,否則轉入步驟k;如圖4所示,本例中RI確定的 以P為起點即將經過的rank-1鏈路為N2—N5—N8,其中鏈路A—N2已 損壞,因此轉入步驟j;
j.首先確定指定rank內規避所有錯誤鏈路的路由方案,同時保證路由 長度最短,具體是
定義r表示存在錯誤鏈路需要處理的rank;如果本步驟由步驟h或j 轉入,貝l」r二0;如果由步驟i轉入,則r二l;圖4所示例子中^1;以P 為起點采用二叉搜索樹方法確定對應rank r內規避所有錯誤鏈路的路由方 案,如果這樣的路由存在,那么返回一個表示該路由的信息隊列并保存在 RI—temp—r中,圖4所示例子中則將路由信息隊列保存在RI—temp—1中;如 果這樣的路由不存在或者RI中不包含rank-r的路由信息,則返回一個空隊 列;二叉搜索樹方法的具體步驟為首先從RI中提取所有屬于rank-r的元 素,并按固有順序保存在路由信息隊列RI—r中;用size(RI—r)表示RI—r 中元素個數,用Q表示在無錯網絡中按照RI一r中定義的路由P將會到達的 目的節點,用rH和rV表示RI一r所定義的數據包在rank-r內的轉發方向, 兩者相互正交;二叉樹每個節點包含size (RI—r)個元素并按照從左到右的順 序排列,每個元素的取值范圍是(0,l,xL 0表示數據包沿rV方向轉發,1 表示數據包沿rH方向轉發,x表示數據包轉發方向尚不確定;圖4所示例子中,首先將RI中表示rank-1的轉向的元素提取出來并保存在RI一1中,可 知RI—1 二 {-4, -4, 3, 3}; RI—1中的元素個數size(RI—1)=4, RI—1所確 定的數據包轉發方向有兩個,Xl負方向用rH表示,Yl正方向用rV表示。 RI—1描述的路由可以視為一個3X3的二維網格,如圖4(a)所示。
然后建立根節點,其內部各元素值均為x;按照從左到右的順序確定節 點內各元素的值,每確定一個元素,就為當前節點產生一個子節點,并將所 有元素數值保存在該子節點中;如果P點在rH方向的鏈路正常,則確定新 元素的值為1并保存在子節點中,如果P點在rV方向的鏈路正常,則確定 新元素的值為O并保存在子節點中,如果P點在rH、 rV方向的鏈路均損壞, 則不產生子結點;按照上述方法遞歸確定節點中所有元素值后所得到的節點 稱為葉子節點,根據葉子節點對RI—r中的元素重新排序并保存在RI—temp—r 中;在二叉搜索樹的建立過程中采用深度優先的方式,只要找到一個葉子節 點就結束整個搜索過程;在本例中令該網格左上角節點為P(S),那么根據以 P為原點的rank-l鏈路布局可以將圖3中Ni (i=l, 2,…,8)間的連接關系轉化 為圖4(a)所示的情況。RI—1保存的路由方案用于實現P和N8(Q)之間的通信。 在二叉搜索樹中rH方向的鏈路轉向值為1, rV方向則為0,如圖4(b)所示。 首先決定根節點第一個元素的值。由于P—N3鏈路已經損壞,所以在P點只 能進行rH轉向,因此產生一個子節點1XXX (X表示值未定)。1XXX表示數據 包從P轉發至Ni, R的rH方向鏈路出錯,所以只能產生子節點IOXX,表示 數據包從仏轉發至N4。 N4在rH和rV方向的鏈路均正常,因此可以產生兩個 子節點101X和100X。 100X表示數據包從凡轉發至N7, 101X表示數據從N4 轉發至Ns。 N7只能向rH方向轉發數據包,但是鏈路N7—N8已經損壞,因此 100X沒有子結點。N5只能向rV方向轉發數據包,而且鏈路Ns—Ns是正常的, 因此可以產生子節點1010,即葉子節點,可以作為最終結果返回。RI—1根 據該葉子節點的內容進行更新并保存在RI一temp一l中,有RI—temp—l二 {-4, 3, -4, 3};
然后根據得到的路由方案決定后續步驟,具體是 如果得到的RI—temp—r為空,同時r為l,則令r二0,重復歩驟j;如果 r=0,則轉入步驟k;如果RI—temp_r非空,則轉入1;本例中r二l,且RI—temp—1
非空,所以轉入步驟l;
k.按照路由信息隊列的取值原則,搜集點P在不同rank內的所有可用鏈路并保存在集合LINK中,若LINK存在元素r_sel與RI中的任一元素正 交,則將r—sel和-r—sel添加至RI隊列首部,并轉入步驟m;如果LINK 中的所有元素均不與RI中的任何一個元素正交,則如果LINK中存在一個元 素r—sel與RI中任一元素處于不同rank,則將r—sel和-r—sel添加至RI 隊列首部,并轉入步驟m;如果L頂K存在一個元素r—sel與RI中任一元素 處于同一 rank且方向相反,那么將r—sel和-r—sel添加到RI隊列首部, 轉入步驟m;本例中該步驟不會被執行;
1.首先確定RI—temp—r保存的路由信息所在的網絡層,即r的值;然后 將RI中處于rank-r內的各個元素按照順序依次替換為RI—te即—r中的元素。 轉入步驟m;本例中r=l,將RI中rank-l元素按照RI—temp—1內容重新排 列,得RI二(-4,3,-4,3,2},轉入步驟m;
m.根據RI中位于隊首的元素,選擇對應的鏈路對數據包進行轉發,即 將數據包從P發送到并將RI隊首元素彈出,RI更新為{3, -4, 3, 2};然 后根據轉發的鏈路對矢量系數(vecxl, vecy 1, vecx0, vecy0)進行更新, (vecxl, vecyl, vecxO, vecyO)更新為(-1, 2, 1, 0);將P更新為數據包轉發到 的新節點,即將P更新為N,;如果更新后的RI為空,轉入步驟n,如果更新 后的RI非空,轉入步驟g;由于RI為(3,-4,3,2},非空,所以轉入步驟g, 循環執行上述操作;
n.整個通信過程結束。
本例假設在通信過程中并沒有新的錯誤節點產生,容錯處理機制的運行 與上述過程類似。S到D的最終路由為S—N:—N,—N5—N8—D。如圖3中黑色 實線所示。
權利要求
1、確定RDT片上網絡最短路由的方法,其特征在于本方法針對的容錯模型定義如下①RDT片上網絡中的任何節點或鏈路發生錯誤時,數據無法在錯誤鏈路上傳輸也無法通過一個錯誤節點進行轉發;②錯誤模型為靜態,就是當前節點對數據包轉發的過程中與該節點相連的鏈路不會出現新錯誤;③產生通信的源節點和目標節點均正常工作;④錯誤的發生是相互獨立的;⑤如果一個節點發生錯誤,則認為所有與該節點直接相連的鏈路均產生錯誤,即如果節點發生錯誤則該節點與整個網絡隔絕,將節點錯誤歸并到鏈路錯誤;⑥同一層Torus網絡內的鏈路錯誤信息對網絡中的所有正常節點均是可知的;基于以上容錯模型的最短路由方法的具體步驟是步驟(1)為RDT rank-0網絡建立坐標系,確定節點編號以及通信節點的位置首先確定目標RDT(n,1)網絡的規模N×N;以網絡左上角節點為原點,水平向右為x軸正方向,豎直向下為y軸正方向,為RDT的rank-0網絡建立X0-Y0直角坐標系,其中相鄰兩節點間的長度定為X0-Y0坐標系的單位長度;然后按照自上而下的順序對每行的N個節點自左到右依次編號 id="icf0001" file="A2009100969820002C1.tif" wi="3" he="3" top= "185" left = "175" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>節點K∈目標N×N RDT(n,1),其坐標為(xk,yk),且滿足xk∈
,yk∈
,K的編號Num(k)=N·yk+xk;按上述編號原則確定需要進行通信的兩個節點S和D在坐標系X0-Y0內的位置S(Sx,Sy),D(Dx,Dy),其中S為通信源節點,D為通信目標節點;步驟(2)確定目標節點D的鏡像超集M’(D)M’(D)為D與其在X0-Y0坐標系內四個鏡像點D’north,D’cast,D’south,D’west的集合,即M’(D)={D,D’north,D’east,D’south,D’west};D’north,D’east,D’south,D’west分別位于點D的豎直上方、水平右方、豎直下方和水平左方;這四個鏡像點的坐標分別為D’north(Dx,Dy-N),D’east(Dx+N,Dy),D’south(Dx,Dy+N),D’west(Dx-N,Dy),鏡像超集中的每一個元素為超鏡像點;步驟(3)確定最佳超鏡像點計算M’(D)中各超鏡像點與源節點S之間的曼哈頓距離(Manhattandistance),選擇與S的曼哈頓距離最短的超鏡像點作為最佳超鏡像點,并記為M,具體步驟是a.確定源節點S指向目的節點D的相對矢量V=(VΔx,VΔy),其中VΔx=Dx-Sx,表示V在X0-Y0坐標系中水平方向的分量;VΔy=Dy-Sy,表示V在X0-Y0坐標系中豎直方向的分量;b.初始化最佳超鏡像點MM(Mx,My)=D(Dx,Dy);c.如果|VΔx|與|VΔy|中大者大于RDT維度的一半,則轉入步驟d;如果小于等于RDT維度的一半,則轉入步驟e;d.如果|VΔx|與|VΔy|中大者是|VΔx|,則VΔx大于0時,將M更新為D’west,VΔx小于等于0時,將M更新為D’east;如果|VΔx|與|VΔy|中大者是|VΔy|,則VΔy大于0時,將M更新為D’north,VΔy小于等于0時,將M更新為D’south;e.返回最佳超鏡像點M;步驟(4)為RDT rank-1網絡建立坐標系以S為原點,右下方為x軸正方向、左下方為y軸正方向,建立X1-Y1坐標系,其單位長度為RDT rank-1網絡中的鏈路長度;任給X0-Y0坐標系中的一點T(Tx,Ty),其在以S為原點建立起來的X1-Y1坐標系中的坐標為T’(((Ty-Sy)+(Tx-Sx))/2n,((Ty-Sy)-(Tx-Sx))/2n)(1)步驟(5)使用VR(Vector Routing)方法確定S和M之間的矢量分解結果首先確定S指向M的相對矢量A=a0·x0+b0·y0,其中x0、y0分別表示X0-Y0坐標系內的x方向和y方向的單位矢量,a0、b0分別表示相對矢量A在X0方向和Y0方向的分量,a0=Mx-Sx,b0=My-Sy;然后使用VR方法將相對矢量A分解為X0-Y0單位矢量與X1-Y1單位矢量之和的形式,表示為A=vecx1·x1+vecy1·y1+vecx0·x0+vecy0·y0;分解方法如下所示vecx1=(a0+b0)/(2×n) (除法按照五舍六入取整)vecy1=-(a0-b0)/(2×n)(除法按照五舍六入取整)vecx0=a0-(vecx1-vecy1)×n (2)vecy0=b0-(vecx1+vecy1)×n其中x1、y1分別表示X1-Y1坐標系內的x方向、y方向的單位矢量;|vecx1|和|vecy1|分別表示X1和Y1方向內rank-1鏈路的個數,若vecx1、vecy1為正數則表示鏈路方向為X1和Y1的正方向,為負數則為負方向;|vecx0|和|vecy0|分別表示X0和Y0方向內rank-0鏈路的個數,若vecx0、vecy0為正數則表示鏈路方向為X0、Y0的正方向,為負數則為負方向;vecx0、vecy0、vecx1和vecy1統稱為矢量系數;步驟(6)確定S和D之間的初始路由方案根據步驟(5)的分解結果對S到M的矢量系數進行處理,確定S到D的路由方案,基本方法是S到M的矢量系數向0逼近,把逼近過程中對應的數據包轉發方向應用在對應的RDT網絡即可得到S到D的最短路由;具體而言,rank-1內X1方向的鏈路個數為|vecx1|,若vecx1>0,則數據包傳遞方向為X1的正方向,傳遞完成后vecx1自減1;若vecx1≤0,則為X1的負方向,傳遞完成后vecx1自加1;vecy1和vecx0、vecy0在數據包完成所在鏈路層對應方向轉發之后,在正負號不變的情況下絕對值自減1;rank層次、轉發方向選擇順序的不同會導致不同的路由方案,本步驟使用路由消息隊列RI記錄一種初始的路由方案;RI中任一元素r的取值范圍是{-4,-3,-2,-1,1,2,3,4},其中4表示數據包通過rank-1鏈路向X1正方向轉發,3表示數據包通過rank-1鏈路向Y1正方向轉發,2表示數據包通過rank-0鏈路向X0正方向轉發,1表示數據包通過rank-0鏈路向Y0正方向轉發;-4,-3,-2,-1則分別表示對應的負方向;設RI={r1,r2,r3,…,rn},其元素按照下面的原則由步驟(5)得到的矢量系數生成先選擇rank-1鏈路,再考慮通過rank-0鏈路,在同一rank內,先選擇x方向的鏈路,再選擇y方向的鏈路;然后數據包將依次按照r1,r2,r3,…,rn的順序在RDT中進行傳遞,數據包的轉發方向由對應的ri(i=1,2,…,n)決定,每轉發一次,隊列RI的首個元素就被彈出并拋棄;RI與路由矢量系數(vecx1,vecy1,vecx0,vecy0)一起傳輸,并在轉發過程中同步更新;當(vecx1,vecy1,vecx0,vecy0)為(0,0,0,0),RI為空時,數據包已經從S傳遞至D,通信過程完成;步驟(7)啟動容錯處理機制如果步驟(6)確定的初始路由方案不能避開當前網絡中的所有錯誤鏈路,就需要對RI隊列進行修改;修改原則是統籌規劃rank-1和rank-0內的鏈路排列順序以盡可能地減少總鏈路長度,當無法根據給定矢量系數找到一種最短路由方案來規避所有的錯誤鏈路時,考慮增加額外鏈路;本步驟包括以下步驟f.設定P為數據包所在節點,初始情況下P即通信源節點S,如果矢量系數vecx0,vecy0,vecx1,vecy1均為0,則轉到步驟n,否則轉入步驟g;g.以P為原點建立X1-Y1坐標系;收集rank-0以及P所在的rank-1范圍內的鏈路損壞信息,并分別保存在 id="icf0002" file="A2009100969820005C1.tif" wi="3" he="4" top= "69" left = "100" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>和 id="icf0003" file="A2009100969820005C2.tif" wi="3" he="4" top= "69" left = "110" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>(P)中;如果vecx1、vecy1均為0,則轉入步驟h,否則轉入步驟i;h.根據RI確定以P為起點即將經過的各條rank-0鏈路,如果有rank-0鏈路損壞,則轉入步驟j,否則轉入步驟k;i.根據RI確定以P為起點即將經過的各條rank-1鏈路,如果有rank-1鏈路損壞,則轉入步驟j,否則轉入步驟k;j.首先確定指定rank內規避所有錯誤鏈路的路由方案,同時保證路由長度最短,具體是定義r表示存在錯誤鏈路需要處理的rank;如果本步驟由步驟h或j轉入,則r=0;如果由步驟i轉入,則r=1;以P為起點采用二叉搜索樹方法確定對應rank r內規避所有錯誤鏈路的路由方案,如果這樣的路由存在,那么返回一個表示該路由的信息隊列并保存在RI_temp_r中,如果這樣的路由不存在或者RI中不包含rank-r的路由信息,則返回一個空隊列;二叉搜索樹方法的具體步驟為首先從RI中提取所有屬于rank-r的元素,并按固有順序保存在路由信息隊列RI_r中;用size(RI_r)表示RI_r中元素個數,用Q表示在無錯網絡中按照RI_r中定義的路由P將會到達的目的節點,用rH和rV表示RI_r所定義的數據包在rank-r內的轉發方向,兩者相互正交;二叉樹每個節點包含size(RI_r)個元素并按照從左到右的順序排列,每個元素的取值范圍是{0,1,x},0表示數據包沿rV方向轉發,1表示數據包沿rH方向轉發,x表示數據包轉發方向尚不確定;然后建立根節點,其內部各元素值均為x;按照從左到右的順序確定節點內各元素的值,每確定一個元素,就為當前節點產生一個子節點,并將所有元素數值保存在該子節點中;如果P點在rH方向的鏈路正常,則確定新元素的值為1并保存在子節點中,如果P點在rV方向的鏈路正常,則確定新元素的值為0并保存在子節點中,如果P點在rH、rV方向的鏈路均損壞,則不產生子結點;按照上述方法遞歸確定節點中所有元素值后所得到的節點稱為葉子節點,根據葉子節點對RI_r中的元素重新排序并保存在RI_temp_r中;在二叉搜索樹的建立過程中采用深度優先的方式,只要找到一個葉子節點就結束整個搜索過程;然后根據得到的路由方案決定后續步驟,具體是如果得到的RI_temp_r為空,同時r為1,則令r=0,重復步驟j;如果r=0,則轉入步驟k;如果RI_temp_r非空,則轉入l;k.按照路由信息隊列的取值原則,搜集點P在不同rank內的所有可用鏈路并保存在集合LINK中,若LINK存在元素r_sel與RI中的任一元素正交,則將r_sel和-r_sel添加至RI隊列首部,并轉入步驟m;如果LINK中的所有元素均不與RI中的任何一個元素正交,則如果LINK中存在一個元素r_sel與RI中任一元素處于不同rank,則將r_sel和-r_sel添加至RI隊列首部,并轉入步驟m;如果LINK存在一個元素r_sel與RI中任一元素處于同一rank且方向相反,那么將r_sel和-r_sel添加到RI隊列首部,轉入步驟m;l.首先確定RI_temp_r保存的路由信息所在的網絡層,即r的值;然后將RI中處于rank-r內的各個元素按照順序依次替換為RI_temp_r中的元素,轉入步驟m;m.根據RI中位于隊首的元素,選擇對應的鏈路對數據包進行轉發,并將RI隊首元素彈出,然后根據轉發的鏈路對矢量系數(vecx1,vecy1,vecx0,vecy0)進行更新;將P更新為數據包轉發到的新節點;如果更新后的RI為空,轉入步驟n,如果更新后的RI非空,轉入步驟g;n.整個通信過程結束。
全文摘要
本發明涉及確定RDT片上網絡最短路由的方法。現有方法需要經過多次循環計算,時間開銷較大。本發明方法首先為RDT網絡建立坐標系,并確定節點編號以及通信節點的位置,然后確定目標節點D的鏡像超集M’(D)、確定最佳超鏡像點、建立X1-Y1坐標系,使用VR方法確定S和M之間的矢量分解結果,保存S和D之間的路由方案,啟動容錯處理機制。本發明有效地結合了VR和CCVR兩種路由方法的優勢,同時克服了各自的缺點,能夠以較小的計算開銷獲得RDT(n,1)類片上網絡中任意兩點的最短路由。本發明提出的容錯機制能夠較好地解決目前解決方法中存在的性能較低的問題。
文檔編號H04L12/56GK101515893SQ20091009698
公開日2009年8月26日 申請日期2009年3月26日 優先權日2009年3月26日
發明者鵬 劉, 冊 史, 陶文質 申請人:浙江大學