[发明专利]一种基于增量最短路径优先的域内路由保护方法有效
申请号: | 201710270583.3 | 申请日: | 2017-04-24 |
公开(公告)号: | CN107426097B | 公开(公告)日: | 2020-06-12 |
发明(设计)人: | 耿海军 | 申请(专利权)人: | 山西大学 |
主分类号: | H04L12/703 | 分类号: | H04L12/703;H04L12/721;H04L12/751;H04L12/865 |
代理公司: | 山西五维专利事务所(有限公司) 14105 | 代理人: | 陈昉 |
地址: | 030006*** | 国省代码: | 山西;14 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于增量最短路径优先的域内路由保护方法,属于互联网技术领域,解决了现有DC方法无法在提高故障保护率的同时又不增加网络额外负担的技术问题。该方案包括:节点c计算以自身为根的最短路径树spt(c);将与其直接相连的链路的代价设置为0;根据增量最短路径优先计算新的最短路径树spt'(c);根据spt(c)和spt'(c)计算节点c到所有目的的备份下一跳。本发明可以为运行算法的节点计算出符合DC规则的所有备份下一跳,不仅降低了DC方案的实现复杂度,并且与DC具有同样的故障保护率。 | ||
搜索关键词: | 一种 基于 增量 路径 优先 域内 路由 保护 方法 | ||
【主权项】:
一种基于增量最短路径优先的域内路由保护方法,包括以下步骤:步骤S101:计算以节点c为根节点的最短路径树spt(c),包括以下步骤:步骤11,网络中所有路由器根据开放最短路径优先(OSPF)协议获取域内拓扑结构;步骤12,创建一个优先级队列,优先级队列中节点对应的结构体由路由器标识、节点代价、父亲节点和访问标识组成;将网络中所有节点的结构体进行初始化;节点结构体包括,该节点的路由器标识、节点代价、父亲节点和访问标识;将根节点c的节点代价设置为0,将其余节点的节点代价设为无穷大,设置所有节点的父亲节点为空,设置所有节点的访问标记为未访问,路由器ID为回环接口地址;将根节点c加入到该队列中;步骤13,检查优先级队列中是否为空;如果不为空,则执行步骤14;如果为空,则执行步骤S102;步骤14,根据节点出队列规则选取一个节点出队列,将出队列的节点存储在变量v中,并且将其访问标识属性设置为已访问;步骤15,如果出队列的节点不是根节点c,计算出根节点c到该节点的默认下一跳;当一个节点出队列后,将该节点的节点代价t(c,v)的数值赋给节点c到该节点的最小代价cost(c,v)即cost(c,v)=t(c,v),其中t(c,v)表示节点v的节点代价;通过下面的方法计算根节点c到v的默认下一跳dn(c,v):dn(c,v)=vp(c,v)=vdn(c,p(c,v))p(c,v)≠v]]>其中,p(c,v)表示节点v的父亲节点;步骤16,遍历节点v的未被访问过的邻居节点,根据更新邻居节点的节点代价和父亲节点的方法,更新邻居节点的节点代价和父亲节点,并且将更新后的节点存储在优先级队列中;步骤17,如果节点u是节点v的最后一个未被访问的邻居或者节点u的所有邻居都被访问过,则执行步骤13,否则继续遍历其下一个邻居节点,并且执行步骤16;步骤S102:改变与根节点c直连节点的权值,如果x∈N(c),则将链路(c,x)和链路(x,c)的权值调整为0,即w(c,x)=w(x,c)=0,并且将该链路权值变化量存储在变量weight中,N(c)表示根节点c的邻居节点;步骤S103:计算新的最短路径树,包括以下步骤:步骤31,将除去根节点c的所有节点的访问标识设置为未访问,找出节点x的所有子孙节点D(spt(c),x),如果y∈D(spt(c),x),则将cost(c,x)=cost(c,x)‑weight,将D(spt(c),x)中所有节点的访问标记设置为已访问,对于如果该节点未被访问并且与D(spt(c),x)中的节点直接相连,根据t(c,m)=cost(c,x)+w(x,m)计算该节点的节点代价;如果t(c,m)<cost(c,m),则将节点m的节点代价修改为t(c,m),父亲节点修改为节点x;将节点m加入到优先级队列中;步骤32,检查优先级队列中是否为空,如果不为空,则执行步骤33;如果为空,则执行步骤S104;步骤33,根据节点出队列规则选取一个节点出队列,将出队列的节点存储在变量v中,并且将其访问标识属性设置为已访问;当一个节点出队列后,将该节点的节点代价t(c,v)的数值赋给节点c到该节点的最小代价cost(c,v)即cost(c,v)=t(c,v),其中t(c,v)表示节点v的节点代价;步骤34,遍历节点v的未被访问过的邻居节点,根据更新邻居节点的节点代价和父亲节点方法,更新邻居节点的节点代价和父亲节点,并且将更新后的节点存储在优先级队列中;步骤35,如果节点u是节点v的最后一个未被访问的邻居或者节点u的所有邻居都被访问过,则执行步骤32;否则继续遍历其下一个邻居节点,并且执行步骤34;步骤S104:根据spt(c)和spt'(c)计算根节点c到到网络中其他所有节点的备份下一跳,具体方法如下:对于网络中除去根节点c的任意一个节点,将该节点存储在变量u中,如果在spt(c)中,根节点c到节点u的默认下一跳为y;对于链路(c,x)(x≠y),将其权值调整为0;在新的spt'(c)中,如果节点u为节点x的子孙节点u∈D(spt'(c),x),则cost(x,u)<cost(c,u),则节点x可以作为根节点c到节点u的备份下一跳,即bn(c,u)=bn(c,u)∪{x};然后,将链路(c,x)和链路(x,c)的权值调整为变更为0之前的数值;如果与其直接相连的链路的代价没有被调整过,则执行步骤S102;否则方法结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山西大学,未经山西大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710270583.3/,转载请声明来源钻瓜专利网。
- 上一篇:一种数据处理的方法及其系统
- 下一篇:一种故障确定方法及装置