[发明专利]确定RDT片上网络最短路由的方法无效
申请号: | 200910096982.8 | 申请日: | 2009-03-26 |
公开(公告)号: | CN101515893A | 公开(公告)日: | 2009-08-26 |
发明(设计)人: | 史册;陶文质;刘鹏 | 申请(专利权)人: | 浙江大学 |
主分类号: | H04L12/56 | 分类号: | H04L12/56 |
代理公司: | 杭州求是专利事务所有限公司 | 代理人: | 杜 军 |
地址: | 310027浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 确定 rdt 网络 路由 方法 | ||
1.确定RDT片上网络最短路由的方法,其特征在于:
本方法针对的容错模型定义如下:
①RDT片上网络中的任何节点或链路发生错误时,数据无法在错误链路上传输也无法通过一个错误节点进行转发;
②错误模型为静态,就是当前节点对数据包转发的过程中与该节点相连的链路不会出现新错误;
③产生通信的源节点和目标节点均正常工作;
④错误的发生是相互独立的;
⑤如果一个节点发生错误,则认为所有与该节点直接相连的链路均产生错误,即如果节点发生错误则该节点与整个网络隔绝,将节点错误归并到链路错误;
⑥同一层Torus网络内的链路错误信息对网络中的所有正常节点均是可知的;
基于以上容错模型的最短路由方法的具体步骤是:
步骤(1)为RDT rank-0网络建立坐标系,确定节点编号以及通信节点的位置:
首先确定目标RDT(n,1)网络的规模:N×N;以网络左上角节点为原点,水平向右为x轴正方向,竖直向下为y轴正方向,为RDT的rank-0网络建立X0-Y0直角坐标系,其中相邻两节点间的长度定为X0-Y0坐标系的单位长度;
然后按照自上而下的顺序对每行的N个节点自左到右依次编号: 节点K∈目标N×N RDT(n,1),其坐标为(xk,yk),且满足xk∈[0,N-1],yk∈[0,N-1],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’east,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之间的曼哈顿距离,选择与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.初始化最佳超镜像点M:M(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范围内的链路损坏信息,并分别保存在 和 中;如果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非空,则转入1;
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;
e.首先确定RI_temp_r保存的路由信息所在的网络层,即r的值;然后将RI中处于rank-r内的各个元素按照顺序依次替换为RI_temp_r中的元素,转入步骤m;
m.根据RI中位于队首的元素,选择对应的链路对数据包进行转发,并将RI队首元素弹出,然后根据转发的链路对矢量系数(vecx1,vecy1,vecx0,vecy0)进行更新;将P更新为数据包转发到的新节点;如果更新后的RI为空,转入步骤n,如果更新后的RI非空,转入步骤g;
n.整个通信过程结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910096982.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种乳清营养酒的制备方法
- 下一篇:一种还原型辅酶Q10的制备方法