确定rdt片上网络最短路由的方法

文档序号:7703247阅读:176来源:国知局
专利名称:确定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日
发明者鹏 刘, 册 史, 陶文质 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1