一种基于段路由的单节点故障路由保护方法与流程

文档序号:15204516发布日期:2018-08-21 07:10阅读:159来源:国知局

本发明属于互联网技术领域,具体涉及一种基于段路由的单节点故障路由保护方法。



背景技术:

在过去的几十年里,互联网已经从一个最初支持发送邮件等业务的小型网络迅速演变为支持社交网络,视频流和云计算等的大型基础设施。与此同时,互联网服务提供商(internetserviceprovider,isp)在服务质量方面面临着越来越高的要求,例如向最终用户提供优质的服务质量,包括无间断服务、低延迟、高带宽等。

在上述问题中,isp如何向用户提供无间断的服务面临严峻的挑战。在传统网络体系结构中,学术界提出利用npc,fir,not-via和mpls等技术来提供无间断服务,应对网络中的突发故障情形。虽然npc的实现方式简单,但是故障保护率较低。fir,not-via和mpls虽然可以应对网络中所有可能的单节点故障情形,但是实现过分复杂。npc,fir,not-via和mpls等技术的重路由路径的拉伸度也比较高,大大增加了网络的延迟,降低了isp的服务质量。因此,上述方案都没有很好的权衡算法实现复杂度、故障保护率和路径拉伸度之间的关系。

段路由(segmentrouting,sr)是一种新型的网络架构,旨在支持具有严格的服务等级协议(servicelevelagreement,sla)保证的服务,其核心思想是利用一系列的分段来构建特定的的端到端的路径。在段路由结构中,需要将段标签加入到数据包的头部,然后利用这些标签完成报文的转发。段路由中有两种段标签,它们分别是节点标签和邻接标签。节点标签表示一个路由器,而邻接标签代表当前路由器的一个本地接口。目前,主要的网络供应商已经支持sr,并且将会进一步大规模部署。sr是建立在现有的网络路由和连接管理协议的基础上,其重要特征之一就是当网络出现故障时可以实现自动重新路由连接。因此,本发明利用sr实现基于ip的快速重新路由机制。



技术实现要素:

本发明提供了一种基于段路由的单节点故障路由保护方法,包括以下步骤:

将网络拓扑g(v,e)中所有节点存储在链表l中,对于网络拓扑g(v,e)中的任一节点v∈v,计算以节点v为根的最短路径树spt(v),并将最短路径树spt(v)中除去节点v以外的其他节点按照深度优先的顺序存储在队列中;

设置目的地址d=v,从队列q中取出节点o,形成一个(o,d)对;

将所有和节点bn(o,d,g)相连接的链路i(bn(o,d,g))从网络拓扑g(v,e)中删除得到g',在g'中,利用迪杰斯特拉算法计算(o,d)对之间的最短路径p(o,d,g');

如果最短路径p(o,d,g')={o,d},即bn(o,d,g')=d,则当前(o,d)对不存在段标签;否则,初始化变量o',d',n'的数值o'=o,d'=o,n'=n;其中,o'、d'为存储源节点,n'为源和目的的最短路径包含的节点的数量;

如果d'≠d,将变量d',n'的值设置为d'=d,n'=n;否则计算d',使满足条件p(o',d',g')=p(o',d',g);

如果满足条件的d'不存在,则d'=o',bn(o',d,g')≠d,则此时节点bn(o',d,g')为一个段标签,将其并入集合r(o,d)中,并且将o'的值变为bn(o',d,g');如果满足条件p(o',d',g')=p(o',d',g)的d'存在,继续判断d'是否等于d;

如果d'不等于d,此时d'为一个段标签,将其并入集合r(o,d)中,并且将o'的值变为d'。

其中,计算d',使满足条件p(o',d',g')=p(o',d',g)的步骤中,包括步骤:

在g'中,利用迪杰斯特拉算法计算出p(o',d',g'),在g中,利用迪杰斯特拉算法计算出p(o',d',g),然后比较二者是否相等,如果二者相等,则d'=d;

若不相等,d'=vn,判断p(o',d',g')=p(o',d',g)是否成立;如果成立,则d'=vn,否则d'=vn-1,判断p(o',d',g')=p(o',d',g)是否成立,如果成立,则d'=vn-1;

重复执行上述过程,直到找到p(o',d',g')=p(o',d',g)成立的d'或者判定不存在d'。

与现有技术相比,本发明具有如下优点:

本发明针对已有的路由保护方案没有很好的权衡路由保护算法的故障保护率、路径拉伸度和实现开销之间的关系,提出一种基于段路由的单节点故障路由保护方法。通过本发明,不仅应对网络中任意的单节点故障情形,并且具有较小的路径拉伸度,为isp解决域内路由可用性提供解决方案。

附图说明

图1是本发明提供的一种基于段路由的单节点故障路由保护方法的流程示意图。

具体实施方式

下面结合具体实施方式对本发明的技术方案作进一步更详细的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。

为了方便描述,我们先定义一些标记,这些标记适用于整个发明。一个网络拓扑可以表示为图g=(v,e)。在图g中v用来代表网络拓扑中所有节点的集合,e用来表示网络拓扑中所有链路的集合,即对于图g中在一个网络拓扑g=(v,e)中,源-目的节点对(o,d),o≠d之间的最短路径表示为p(o,d,g),源o到目的d的最优下一跳表示为bn(o,d,g),e=(o,bn(o,d,g))表示o与bn(o,d,g)所连接的链路。对于图g中任意节点v,用i(v)表示所有其它节点到达该节点的边。p'(o,d,r(o,d))表示为利用段标签r(o,d)计算出的节点(o,d)之间的备份路径。

参阅图1,图1是本发明提供的一种基于段路由的单节点故障路由保护方法的流程示意图。该方法的步骤包括:

s110:将网络拓扑g(v,e)中所有节点存储在链表l中,对于网络拓扑g(v,e)中的任一节点v∈v,计算以节点v为根的最短路径树spt(v),并将最短路径树spt(v)中除去节点v以外的其他节点按照深度优先的顺序存储在队列中。

s120:设置目的地址d=v,从队列q中取出节点o,形成一个(o,d)对。

s130:将所有和节点bn(o,d,g)相连接的链路i(bn(o,d,g))从网络拓扑g(v,e)中删除得到g',在g'中,利用迪杰斯特拉算法计算(o,d)对之间的最短路径p(o,d,g')。

s140:如果最短路径p(o,d,g')={o,d},即bn(o,d,g')=d,则当前(o,d)对不存在段标签;否则,初始化变量o',d',n'的数值o'=o,d'=o,n'=n;其中,o'、d'为存储源节点,n'为源和目的的最短路径包含的节点的数量。

s150:如果d'≠d,将变量d',n'的值设置为d'=d,n'=n;否则计算d',使满足条件p(o',d',g')=p(o',d',g)。

s160:如果满足条件的d'不存在,则d'=o',bn(o',d,g')≠d,则此时节点bn(o',d,g')为一个段标签,将其并入集合r(o,d)中,并且将o'的值变为bn(o',d,g');如果满足条件p(o',d',g')=p(o',d',g)的d'存在,继续判断d'是否等于d。

s170:如果d'不等于d,此时d'为一个段标签,将其并入集合r(o,d)中,并且将o'的值变为d'。

在计算d',使满足条件p(o',d',g')=p(o',d',g)的步骤中,包括步骤:

在g'中,利用迪杰斯特拉算法计算出p(o',d',g'),在g中,利用迪杰斯特拉算法计算出p(o',d',g),然后比较二者是否相等,如果二者相等,则d'=d;

若不相等,d'=vn,判断p(o',d',g')=p(o',d',g)是否成立;如果成立,则d'=vn,否则d'=vn-1,判断p(o',d',g')=p(o',d',g)是否成立,如果成立,则d'=vn-1;

重复执行上述过程,直到找到p(o',d',g')=p(o',d',g)成立的d'或者判定不存在d'。

提供本发明具体实施方式如下,详细说明了本实施例的各个步骤,因为该实施例的过程比较多,下面仅仅列出计算(b,a)中转节点的过程。

步骤1:将网络中所有节点存储在链表l中,此时l={a,b,c,e};

步骤2:链表l不为空,取出链表中第一个节点a,此时l={b,c,e}则执行步骤3;

步骤3:计算以节点a为根的最短路径树spt(a);

步骤4:此时的q中节点为{b,e,c}

步骤5:设置目的地址d=a;

步骤6:队列q不为空,执行步骤7;

步骤7:从q中取出第一个节点o=b,这样就形成一个(b,a)对;

步骤8:将链路(b,a)从拓扑g中删除得到g';

步骤9:p(b,a,g')={b,e,c,a},即o=b,v1=e,v2=c,d=a;

步骤11:初始化变量o',d',n'的数值o'=b,d'=b,n'=2;

步骤12:因为d'≠d,所以执行步骤13;

步骤13:将变量d',n'的值设置为d'=a,n'=2;

步骤14:计算d'满足条件p(o',d',g')=p(o',d',g),此时d'=e;

步骤16:因为满足条件p(o',d',g')=p(o',d',g)的d'存在,判断d'是否等于d;

步骤17:因为d'不等于d,此时d'为一个段标签,将其并入集合r(o,d)={e}中,并且将o'的值变为d',即o'=e,执行步骤13;

步骤13:将变量d',n'的值设置为d'=a,n'=2;

步骤14:计算d'满足条件p(o',d',g')=p(o',d',g),此时d'不存在

步骤15:因为满足步骤14中条件p(o',d',g')=p(o',d',g)的d'不存在,则d'=e,因为bn(o',d,g')=c,则此时节点c为一个段标签,将其并入集合r(o,d)={e,c}中,并且将o'的值变为bn(o',d,g'),即o'=c,执行步骤13;

步骤13:将变量d',n'的值设置为d'=a,n'=2;

步骤14:计算d'满足条件p(o',d',g')=p(o',d',g),此时d'=a

步骤16:因为满足条件p(o',d',g')=p(o',d',g)的d'存在,判断d'是否等于d;

步骤18:因为d'等于d,则执行步骤4。

与现有技术相比,本发明具有如下优点:

本发明针对已有的路由保护方案没有很好的权衡路由保护算法的故障保护率、路径拉伸度和实现开销之间的关系,提出一种基于段路由的单节点故障路由保护方法。通过本发明,不仅应对网络中任意的单节点故障情形,并且具有较小的路径拉伸度,为isp解决域内路由可用性提供解决方案。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1