CN106161246A - 备用路由的实现方法及装置 - Google Patents
备用路由的实现方法及装置 Download PDFInfo
- Publication number
- CN106161246A CN106161246A CN201610428255.7A CN201610428255A CN106161246A CN 106161246 A CN106161246 A CN 106161246A CN 201610428255 A CN201610428255 A CN 201610428255A CN 106161246 A CN106161246 A CN 106161246A
- Authority
- CN
- China
- Prior art keywords
- node
- label
- route
- nodal point
- primary
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/20—Hop count for routing purposes, e.g. TTL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/825—Involving tunnels, e.g. MPLS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种备用路由的实现方法及装置,其中,该方法包括:第一节点在计算出本节点到第二节点的主用路由之后,使用Remote LFA技术计算PQ节点;若计算出了PQ节点,则第一节点在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;在检测到本节点与主用下一跳节点之间的链路断开时,第一节点根据备用路由对应的路由表项,在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文,通过该路由表项中的出端口转发封装报文。
Description
技术领域
本申请涉及网络通信技术领域,特别涉及一种备用路由的实现方法及装置。
背景技术
LFA(Loop Free Alternates,无环备用下一跳)技术是链路状态路由协议中的一种常用技术。LFA技术的核心思想是借助SPF(Shortest Path First,最短路径优先)算法为源节点到第二节点的主用路由以及该主用路由上的主用下一跳节点,计算出不会形成环路的备用路由以及该备用路由上的备用下一跳节点。这样,在源节点与主用下一跳节点之间的链路断开之后,源节点可以将发往第二节点的数据流转发给备用下一跳节点,从而通过备用路由转发到第二节点。
但是,LFA技术在多数情况下无法计算出备用路由以及备用下一跳节点,保护率较低。
发明内容
有鉴于此,本申请提供一种备用路由的实现方法及装置。
具体地,本申请是通过如下技术方案实现的:
一方面,提供了一种备用路由的实现方法,该方法包括:
第一节点在计算出本节点到第二节点的主用路由之后,使用Remote LFA技术计算PQ节点;
若计算出了PQ节点,则第一节点在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;
在检测到本节点与主用下一跳节点之间的链路断开时,第一节点根据备用路由对应的路由表项,在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文,通过该路由表项中的出端口转发封装报文。
另一方面,还提供了一种备用路由的实现装置,该装置包括:
主用路由计算模块,用于计算本节点到第二节点的主用路由;
节点计算模块,用于在主用路由计算模块计算出本节点到第二节点的主用路由之后,使用Remote LFA技术计算PQ节点;
表项添加模块,用于若节点计算模块计算出了PQ节点,则在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;
检测模块,用于检测本节点与主用下一跳节点之间的链路的状态;
压入模块,用于在检测模块检测到本节点与主用下一跳节点之间的链路断开时,根据备用路由对应的路由表项,在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文;
发送模块,用于通过备用路由对应的路由表项中的出端口转发压入模块得到的封装报文。
通过本申请的以上技术方案,第一节点在计算出从本节点到第二节点的主用路由之后,使用Remote LFA技术计算PQ节点,在计算出了PQ节点的情况下,在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;这样,在检测到本节点与主用下一跳节点之间的链路断开时,可以在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文,通过该路由表项中的出端口转发封装报文,从而将用户数据流切换到备用路由转发给第二节点。在第一节点与主用下一跳节点之间的链路断开时,第一节点直接在用户报文中压入PQ节点的节点段标签和第二节点的节点段标签,即可先将报文转发给PQ节点,再由PQ节点转发给第二节点,从而实现了将用户数据流切换到备用路由转发,采用上述方法可以计算出备用路由,增加了备用路由的计算概率,提高了保护率。
附图说明
图1是本申请一示例性实施例示出的一种环形网络的示意图;
图2是本申请一示例性实施例示出的计算备用路由的流程图;
图3是本申请一示例性实施例示出的对接收到的封装报文进行处理的流程图;
图4是使用DFS算法计算出的以图3中的节点S为根节点的分发树的结构示意图;
图5是本申请一示例性实施例示出的网络设备的硬件结构示意图;
图6是本申请一示例性实施例示出的备用路由的实现装置的一种结构示意图;
图7是本申请一示例性实施例示出的备用路由的实现装置的另一种结构示意图;
图8是本申请一示例性实施例示出的备用路由的实现装置的又一种结构示意图;
图9是本申请一示例性实施例示出的备用路由的实现装置的又一种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了解决LFA技术在多数情况下无法计算出备用路由以及备用下一跳节点,保护率较低的问题,本申请以下实施例中提供了一种备用路由的实现方法,以及一种可以应用该方法的备用路由的实现装置。
本申请实施例可以应用于任何存在局部双连通拓扑或全双连通拓扑的网络中,如图1所示。本申请实施例采用了Segment-Routing(分段路由)技术,在该技术中,网络中的节点具有该节点的节点段标签、以及该节点与直连的邻居节点之间的链路的邻接段标签,其中,节点段标签具有全局意义,全网唯一,而邻接段标签只具有局部意义。上述节点可以是路由设备等网络设备,本申请实施例对此不做限定。
在实际实施过程中,节点段标签和邻接段标签可以由网络中的SDN(SoftwareDefined Network,软件定义网络)控制器分配,也可以由节点之间进行协商,本申请实施例对此不做限定。
任一节点(为了描述方便,称为第一节点)通过链路状态路由协议报文发布本节点的节点段标签,从而,可以将该节点段标签同步给网络中的所有其它节点进行学习。
第一节点接收到其它节点通过链路状态路由协议报文发布的该其它节点的节点段标签之后,会计算出从本节点到该其它节点的最短路径,作为本节点到该其它节点的主用路由,在路由转发表中添加主用路由对应的路由表项,该路由表项中包括:该其它节点的节点段标签和出端口,其中,该出端口为本节点上连接主用下一跳节点的端口。
另外,第一节点还会通过链路状态路由协议报文发布本节点与直连的邻居节点之间的链路的邻接段标签,从而,可以将该邻接段标签同步给网络中的所有其它节点,但是,只有该邻居节点才会在接收到该邻接段标签之后,在路由转发表中添加对应的路由表项。
同样,第一节点在接收到邻居节点通过链路状态路由协议报文发布的邻接段标签之后,会在路由转发表中添加对应的路由表项,该路由表项中包括:该邻接段标签和出端口,其中,该出端口为本节点上连接该邻接段标签所指示的链路的端口。在实际实施过程中,通常是下游节点发布本节点与上游的邻居节点之间的链路的邻接段标签。
其中,上述的链路状态路由协议可以是IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)和OSPF(Open Shortest Path First,开放最短路径优先)等协议,本申请实施例对此不做限定。
基于上述节点段标签和邻接段标签的同步过程,第一节点执行的备用路由计算方法如图2所示,包括以下步骤:
步骤S101,在计算出本节点到任一其它节点(为了描述方便,称为第二节点)的主用路由之后,使用Remote LFA(Remote Loop Free Alternates,远端无环备用下一跳)技术计算PQ节点;
Remote LFA技术是IETF(The Internet Engineering Task Force,国际互联网工程任务组)在LFA技术的基础上推出的一种新技术,Remote LFA技术的标准规范为RFC7490。在Remote LFA技术中,在计算出主用路由之后,可以计算出Extended P-space(扩展P节点)和Q-space(Q节点),并进一步计算出PQ节点,PQ节点为Extended P-space和Q-space的交集。
其中,Extended P-space为在不经过受保护链路时,第一节点直连的邻居节点可以通过最短路径到达的节点的并集;Q-space为在不经过受保护链路时,可以通过最短路径到达第二节点的节点;其中的受保护链路为第一节点与主用下一跳节点之间的链路。
如图1所示,假设,第一节点为S,第二节点为D,每条链路的开销(cost)均为1。S→D的主用路由为S→E→D,主用下一跳节点为E,则备用下一跳节点为A。使用Remote LFA技术可以计算出Extended P-space为在不经过受保护链路S—E时,节点S的邻居节点A可以通过最短路径到达的节点的并集{A,B,C};Q-space为在不经过受保护链路S—E时,可以通过最短路径到达节点D的节点{B,C},则计算出PQ节点为{A,B,C}和{B,C}的交集{B,C}。由于计算出的PQ节点存在2个,因此,可以从{B,C}中任意选择一个。
步骤S102,判断是否计算出了PQ节点,若是,则执行步骤S103,否则,执行步骤S104;
步骤S103,在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;
其中,备用下一跳节点是与第一节点直连的除主用下一跳节点以外的邻居节点。
在步骤S103中添加的路由表项可以参见表1所示:
表1
步骤S104,当未计算出PQ节点时,在将本节点与主用下一跳节点之间的链路去除后,使用DFS(Depth First Search,深度优先搜索)算法,计算以本节点为根节点的分发树;
步骤S105,在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:分发树上从备用下一跳节点到第二节点所经过的各个链路的邻接段标签、以及第二节点的节点段标签。
在步骤S105中添加的路由表项可以参见表2所示:
表2
在本节点与主用下一跳节点之间的链路正常的情况下,主用路由对应的路由表项生效,而备用路由对应的路由表项不生效,第一节点会根据主用路由对应的路由表项,在需要发往第二节点的用户报文中压入第二节点的节点段标签得到封装报文后,将该封装报文通过该路由表项中的出端口转发出去,从而,通过主用路由转发给第二节点。但是,当检测到本节点与主用下一跳节点之间的链路断开时,备用路由对应的路由表项生效,而主用路由对应的路由表项不生效,第一节点会根据如表1或表2所示的备用路由对应的路由表项,在发往第二节点的用户报文中压入对应的标签栈得到封装报文,通过该路由表项中的出端口将该封装报文转发出去,从而切换到备用路由转发给第二节点。具体的,在用户报文中压入标签栈的方法可以是:依次将协议栈中包含的各个节点段标签和/或邻接段标签压入到用户报文的报头中,其中,在协议栈中的位置越接近栈顶的标签,压入后在报头中的位置越接近外层。例如,标签栈为{标签1,标签2,标签3,标签4},标签4位于栈底,标签1位于栈顶,则,先将标签4(节点段标签或邻接段标签)压入报头中,再将标签3压入报头中的标签4的外层,依次类推,最后,将标签1压入报头的最外层。
途径的中间节点和第二节点在接收到封装报文之后,会执行如图3所示的步骤:
步骤S201,判断该封装报文的最外层标签是否为本节点的节点段标签或者本节点发出的邻接段标签,若是本节点的节点段标签或者本节点发出的邻接段标签,则执行步骤S203,否则,执行步骤S202;
步骤S202,根据最外层标签在路由转发表中查找对应的出端口,通过查找到的出端口转发该封装报文;
步骤S203,弹出最外层标签;
步骤S204,判断该封装报文中是否还携带有标签,若是,返回步骤S201,否则,执行步骤S205;
步骤S205,得到用户报文。
在实际实施过程中,上述的用户报文可以是IP(Internet Protocol,因特网协议)报文,上述的封装报文可以是MPLS(Multiprotocol Label Switching,多协议标签交换)报文,本申请实施例对此不做限定。
本申请上述实施例的方法中,第一节点在计算出从本节点到第二节点的主用路由之后,使用Remote LFA技术计算PQ节点,在计算出了PQ节点的情况下,在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;这样,在检测到本节点与主用下一跳节点之间的链路断开时,可以在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文,通过该路由表项中的出端口转发封装报文,从而将用户数据流切换到备用路由转发给第二节点。在第一节点与主用下一跳节点之间的链路断开时,第一节点直接在用户报文中压入PQ节点的节点段标签和第二节点的节点段标签,即可先将报文转发给PQ节点,再由PQ节点转发给第二节点,从而实现了将用户数据流切换到备用路由转发,采用上述方法可以计算出备用路由,增加了备用路由的计算概率,提高了保护率。
另外,在没有计算出PQ节点的情况下,第一节点会在将本节点与主用下一跳节点之间的链路去除后,使用DFS算法,计算以本节点为根节点的分发树,然后,在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该标签栈中包括:分发树上从备用下一跳节点到第二节点所经过的各个链路的邻接段标签、以及第二节点的节点段标签;这样,在检测到本节点与主用下一跳节点之间的链路断开时,可以在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文,通过该路由表项中的出端口转发封装报文,从而将用户数据流切换到备用路由转发给第二节点。在第一节点与主用下一跳节点之间的链路断开时,第一节点直接在用户报文中压入分发树上从备用下一跳节点到第二节点所经过的各个链路的邻接段标签以及第二节点的节点段标签,即可将报文通过上述链路转发该报文,从而最终转发给第二节点,实现了将用户数据流切换到备用路由转发,采用上述方法可以计算出备用路由,增加了备用路由的计算概率,提高了保护率。并且,采用DFS算法计算备份路由,该算法的复杂度仅为线性,简单易实现,从而降低了设备资源占用率,提高了设备性能。
由于在可以计算出PQ节点和没有计算出PQ节点的情况下,都能够计算出备用路由,从而能够提供100%备份路由,适用于所有基于链路状态路由协议的备份路由计算。
以图1所示的实际网络为例,说明上述实施例的方法。图1中,节点D的节点段标签为70,节点C的节点段标签为60,链路A—B的邻接段标签为10002,链路B—C的邻接段标签为10003,链路C—D的邻接段标签为10004。
节点C和节点D分别发布本节点的节点段标签,其它节点接收到之后,会计算从本节点到节点C的最短路径作为主用路由,计算从本节点到节点D的最短路径作为主用路由;其中,节点A计算出的到节点C的主用路由对应的路由表项如表3第2行所示,节点A计算出的到节点D的主用路由对应的路由表项如表3第3行所示,节点B计算出的到节点C的主用路由对应的路由表项如表4第2行所示,节点B计算出的到节点D的主用路由对应的路由表项如表4第3行所示,节点C计算出的到节点D的主用路由对应的路由表项如表5第2行所示。
节点B发布链路A—B的邻接段标签10002,节点A接收到之后,将对应的路由表项添加到路由转发表中,该路由表项如表3第4行所示;节点C发布链路B—C的邻接段标签10003,节点B接收到之后,将对应的路由表项添加到路由转发表中,该路由表项如表4第4行所示;节点D发布链路C—D的邻接段标签10004,节点C接收到之后,将对应的路由表项添加到路由转发表中,该路由表项如表5第3行所示。
表3
节点段标签 | 出端口 |
60 | 节点A上连接节点B的端口P2 |
70 | P2 |
10002 | P2 |
表4
节点段标签 | 出端口 |
60 | 节点B上连接节点C的端口P3 |
70 | P3 |
10003 | P3 |
表5
节点段标签 | 出端口 |
70 | 节点C上连接节点D的端口P4 |
10004 | P4 |
以节点S为第一节点,节点D为第二节点为例,节点S在计算出到节点D的主用路由为S→E→D之后,计算PQ节点,若计算出了PQ节点,PQ节点为节点B和节点C,选择节点C,此时的备用路由的实现方法参见方法一:
方法一、
节点S将备用路由对应的路由表项添加到路由转发表中,该路由表项如表6第2行所示。当节点S检测到本节点与节点E之间的链路断开时,根据如表6第2行所示的路由表项,在发往节点D的用户报文的报头中先后压入70和60,然后,将得到的封装报文通过出端口P1转发出去。
表6
节点A接收到该封装报文之后,判断出该封装报文的最外层标签60不是本节点的节点段标签,也不是本节点发布的邻接段标签,则根据该最外层标签60在如表3所示的路由转发表中查找到对应的出端口为P2,将该封装报文通过P2转发出去。同样,节点B也会执行与节点A类似的操作,在如表4所示的路由转发表中查找到对应的出端口为P3,将该封装报文通过P3转发出去。
节点C接收到该封装报文之后,判断出该封装报文的最外层标签60是本节点的节点段标签,则弹出该最外层标签60,露出标签70,此时的标签70为最外层标签,由于弹出后的封装报文中还携带有标签70,并且,标签70不是本节点的节点段标签,也不是本节点发布的邻接段标签,因此,根据最外层标签70在如表5所示的路由转发表中查找到对应的出端口为P4,将该封装报文通过P4转发出去。
节点D接收到该封装报文之后,判断出该封装报文的最外层标签70是本节点的节点段标签,则弹出该最外层标签70,从而得到了用户报文。
若没有计算出PQ节点,即PQ节点不存在,则此时的备用路由的实现方法参见方法二:
方法二、
节点S在将链路S—E去除之后,使用DFS算法,计算出一棵以本节点为根节点的分发树,该分发树的结构如图4所示,将备用路由对应的路由表项添加到路由转发表中,该路由表项如表7第2行所示。当节点S检测到本节点与节点E之间的链路断开时,根据如表7第2行所示的路由表项,在发往节点D的用户报文的报头中先后压入70、10004、10003、10002,然后,将得到的封装报文通过出端口P1转发出去。
表7
节点A接收到该封装报文之后,判断出该封装报文的最外层标签10002不是本节点发布的节点段标签,也不是本节点发布的邻接段标签,则根据该最外层标签10002在如表3所示的路由转发表中查找到对应的出端口为P2,将该封装报文通过P2转发出去。
节点B接收到该封装报文之后,判断出该封装报文的最外层标签10002是本节点发布的邻接段标签,则弹出该最外层标签10002,露出标签10003,此时的标签10003为最外层标签,由于弹出后的封装报文中还携带有标签,并且,最外层标签10003不是本节点的节点段标签,也不是本节点发布的邻接段标签,因此,根据最外层标签10003在如表4所示的路由转发表中查找到对应的出端口为P3,将该封装报文通过P3转发出去。
节点C接收到该封装报文之后,判断出该封装报文的最外层标签10003是本节点发布的邻接段标签,则弹出该最外层标签10003,露出标签10004,此时的标签10004为最外层标签,由于弹出后的封装报文中还携带有标签,并且,最外层标签10004不是本节点的节点段标签,也不是本节点发布的邻接段标签,因此,根据最外层标签10004在如表5所示的路由转发表中查找到对应的出端口为P4,将该封装报文通过P4转发出去。
节点D接收到该封装报文之后,判断出该封装报文的最外层标签10004是本节点发布的邻接段标签,则弹出该最外层标签10004,露出标签70,此时的标签70是最外层标签,由于弹出后的封装报文中还携带有标签,并且,最外层标签70是本节点的节点段标签,则弹出该最外层标签70,从而得到了用户报文。
与前述备用路由的实现方法的实施例相对应,本申请还提供了备用路由的实现装置的实施例。
本申请备用路由的实现装置60的实施例可以应用在路由设备等网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器10将非易失性存储器50中对应的计算机程序指令读取到内存40中运行形成的。从硬件层面而言,如图5所示,为本申请备用路由的实现装置所在网络设备的一种硬件结构图,除了图5所示的处理器10、内部总线20、网络接口30、内存40、以及非易失性存储器50之外,实施例中装置所在的网络设备通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,本申请实施例的备用路由的实现装置60中包括以下模块:主用路由计算模块601、节点计算模块602、表项添加模块603、检测模块604、压入模块605和发送模块606,其中:
主用路由计算模块601,用于计算本节点到第二节点的主用路由;
节点计算模块602,用于在主用路由计算模块601计算出本节点到第二节点的主用路由之后,使用Remote LFA技术计算PQ节点;
表项添加模块603,用于若节点计算模块602计算出了PQ节点,则在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:PQ节点的节点段标签和第二节点的节点段标签;
检测模块604,用于检测本节点与主用下一跳节点之间的链路的状态;
压入模块605,用于在检测模块604检测到本节点与主用下一跳节点之间的链路断开时,根据备用路由对应的路由表项,在需要发往第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文;
发送模块606,用于通过备用路由对应的路由表项中的出端口转发压入模块605得到的封装报文。
另外,如图7所示,上述备用路由的实现装置60中还包括:树计算模块607,其中:
树计算模块607,用于若节点计算模块602没有计算出PQ节点,则在将本节点与主用下一跳节点之间的链路去除后,使用DFS算法,计算以本节点为根节点的分发树;
表项添加模块603,还用于在树计算模块607计算出以本节点为根节点的分发树之后,在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签、出端口、以及对应的标签栈,其中,该标签栈中包括:分发树上从备用下一跳节点到第二节点所经过的各个链路的邻接段标签、以及第二节点的节点段标签。
其中,压入模块605具体用于:依次将协议栈中包含的各个节点段标签和/或邻接段标签压入到用户报文的报头中,其中,在协议栈中的位置越接近栈顶,压入后在报头中的位置越接近外层。
另外,如图8所示,上述备用路由的实现装置60中还包括:接收模块608,其中:
发送模块606,还用于通过链路状态路由协议报文发布本节点的节点段标签;
接收模块608,用于接收第二节点通过链路状态路由协议报文发布的节点段标签;
主用路由计算模块601中包括:计算单元和添加单元,其中:
计算单元,用于在接收模块608接收到第二节点通过链路状态路由协议报文发布的节点段标签之后,计算从本节点到第二节点的最短路径作为主用路由;添加单元,用于在路由转发表中添加计算单元计算出的主用路由对应的路由表项,该路由表项中包括:第二节点的节点段标签和出端口,其中,该出端口为本节点上连接主用下一跳节点的端口。
另外,发送模块606,还用于通过链路状态路由协议报文发布本节点与直连的邻居节点之间的链路的邻接段标签;
接收模块608,用于在接收邻居节点通过链路状态路由协议报文发布的邻接段标签;
表项添加模块603,还用于在接收模块608接收到邻居节点通过链路状态路由协议报文发布的邻接段标签之后,在路由转发表中添加对应的路由表项,该路由表项中包括:该邻接段标签和出端口,其中,该出端口为本节点上连接该邻接段标签所标识的链路的端口。
另外,如图9所示,上述备用路由的实现装置60中还包括:接收模块608、第一判断模块609、弹出模块610和第二判断模块611,其中:
接收模块608,用于接收封装报文;
第一判断模块609,用于在接收模块608接收到封装报文之后,判断该封装报文的最外层标签是否为本节点的节点段标签或者本节点发布的邻接段标签;
弹出模块610,用于若第一判断模块609判断出该封装报文的最外层标签是本节点的节点段标签或者本节点发出的邻接段标签,则弹出最外层标签;
第二判断模块611,用于在弹出模块610弹出最外层标签之后,判断该封装报文中是否还携带有标签,并在判断出该封装报文中还携带有标签时,触发第一判断模块610,在该封装报文中已经没有携带标签时,得到用户报文;
发送模块606,还用于若第一判断模块609判断出该封装报文的最外层标签不是本节点的节点段标签和本节点发出的邻接段标签,则根据该最外层标签在路由转发表中查找对应的出端口,通过查找到的出端口转发该封装报文。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (12)
1.一种备用路由的实现方法,其特征在于,所述方法包括:
第一节点在计算出本节点到第二节点的主用路由之后,使用远端无环备用下一跳Remote LFA技术计算PQ节点;
若计算出了PQ节点,则所述第一节点在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:所述第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:所述PQ节点的节点段标签和所述第二节点的节点段标签;
在检测到本节点与所述主用下一跳节点之间的链路断开时,所述第一节点根据所述备用路由对应的路由表项,在需要发往所述第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文,通过该路由表项中的出端口转发所述封装报文。
2.根据权利要求1所述的方法,其特征在于,在使用Remote LFA技术计算PQ节点之后,还包括:
若没有计算出PQ节点,则所述第一节点在将本节点与所述主用下一跳节点之间的链路去除后,使用深度优先搜索DFS算法,计算以本节点为根节点的分发树;
所述第一节点在所述路由转发表中添加备用路由对应的路由表项,该路由表项中包括:所述第二节点的节点段标签、所述出端口、以及对应的标签栈,其中,该标签栈中包括:所述分发树上从所述备用下一跳节点到所述第二节点所经过的各个链路的邻接段标签、以及所述第二节点的节点段标签。
3.根据权利要求1或2所述的方法,其特征在于,在用户报文中压入标签栈的方法包括:
依次将协议栈中包含的各个节点段标签和/或邻接段标签压入到用户报文的报头中,其中,在协议栈中的位置越接近栈顶,压入后在报头中的位置越接近外层。
4.根据权利要求1或2所述的方法,其特征在于,在计算出本节点到第二节点的主用路由之前,还包括:所述第一节点通过链路状态路由协议报文发布本节点的节点段标签;
计算本节点到第二节点的主用路由的方法包括:在接收到所述第二节点通过链路状态路由协议报文发布的节点段标签之后,计算从本节点到所述第二节点的最短路径作为所述主用路由,在所述路由转发表中添加所述主用路由对应的路由表项,该路由表项中包括:所述第二节点的节点段标签和出端口,其中,该出端口为本节点上连接所述主用下一跳节点的端口。
5.根据权利要求1或2所述的方法,其特征在于,还包括:
第一节点通过链路状态路由协议报文发布本节点与直连的邻居节点之间的链路的邻接段标签;
在接收到邻居节点通过链路状态路由协议报文发布的邻接段标签之后,在所述路由转发表中添加对应的路由表项,该路由表项中包括:该邻接段标签和出端口,其中,该出端口为本节点上连接该邻接段标签所标识的链路的端口。
6.根据权利要求1或2所述的方法,其特征在于,还包括:
在接收到封装报文之后,判断该封装报文的最外层标签是否为本节点的节点段标签或者本节点发布的邻接段标签;
若是本节点的节点段标签或者本节点发出的邻接段标签,则弹出最外层标签之后,在该封装报文中还携带有标签时,返回所述判断该封装报文的最外层标签是否为本节点的节点段标签或者本节点发布的邻接段标签的步骤,在该封装报文中已经没有携带标签时,得到用户报文;
若不是本节点的节点段标签和本节点发出的邻接段标签,则根据该最外层标签在所述路由转发表中查找对应的出端口,通过查找到的出端口转发该封装报文。
7.一种备用路由的实现装置,其特征在于,所述装置包括:
主用路由计算模块,用于计算本节点到第二节点的主用路由;
节点计算模块,用于在所述主用路由计算模块计算出本节点到所述第二节点的主用路由之后,使用远端无环备用下一跳Remote LFA技术计算PQ节点;
表项添加模块,用于若所述节点计算模块计算出了PQ节点,则在路由转发表中添加备用路由对应的路由表项,该路由表项中包括:所述第二节点的节点段标签、出端口、以及对应的标签栈,其中,该出端口为本节点上连接备用下一跳节点的端口,该标签栈中包括:所述PQ节点的节点段标签和所述第二节点的节点段标签;
检测模块,用于检测本节点与所述主用下一跳节点之间的链路的状态;
压入模块,用于在所述检测模块检测到本节点与所述主用下一跳节点之间的链路断开时,根据所述备用路由对应的路由表项,在需要发往所述第二节点的用户报文中,压入该路由表项中的标签栈得到封装报文;
发送模块,用于通过所述备用路由对应的路由表项中的出端口转发所述压入模块得到的封装报文。
8.根据权利要求7所述的装置,其特征在于,还包括:树计算模块,其中:
所述树计算模块,用于若所述节点计算模块没有计算出PQ节点,则在将本节点与所述主用下一跳节点之间的链路去除后,使用深度优先搜索DFS算法,计算以本节点为根节点的分发树;
所述表项添加模块,还用于在所述树计算模块计算出以本节点为根节点的分发树之后,在所述路由转发表中添加备用路由对应的路由表项,该路由表项中包括:所述第二节点的节点段标签、所述出端口、以及对应的标签栈,其中,该标签栈中包括:所述分发树上从所述备用下一跳节点到所述第二节点所经过的各个链路的邻接段标签、以及所述第二节点的节点段标签。
9.根据权利要求7或8所述的装置,其特征在于,所述压入模块具体用于:
依次将协议栈中包含的各个节点段标签和/或邻接段标签压入到用户报文的报头中,其中,在协议栈中的位置越接近栈顶,压入后在报头中的位置越接近外层。
10.根据权利要求7或8所述的装置,其特征在于,还包括:接收模块,其中:
所述发送模块,还用于通过链路状态路由协议报文发布本节点的节点段标签;
所述接收模块,用于接收所述第二节点通过链路状态路由协议报文发布的节点段标签;
所述主用路由计算模块包括:计算单元,用于在所述接收模块接收到所述第二节点通过链路状态路由协议报文发布的节点段标签之后,计算从本节点到所述第二节点的最短路径作为所述主用路由;添加单元,用于在所述路由转发表中添加所述计算单元计算出的所述主用路由对应的路由表项,该路由表项中包括:所述第二节点的节点段标签和出端口,其中,该出端口为本节点上连接所述主用下一跳节点的端口。
11.根据权利要求7或8所述的装置,其特征在于,还包括:接收模块,其中:
所述发送模块,还用于通过链路状态路由协议报文发布本节点与直连的邻居节点之间的链路的邻接段标签;
所述接收模块,用于在接收邻居节点通过链路状态路由协议报文发布的邻接段标签;
所述表项添加模块,还用于在所述接收模块接收到邻居节点通过链路状态路由协议报文发布的邻接段标签之后,在所述路由转发表中添加对应的路由表项,该路由表项中包括:该邻接段标签和出端口,其中,该出端口为本节点上连接该邻接段标签所标识的链路的端口。
12.根据权利要求7或8所述的装置,其特征在于,还包括:接收模块、第一判断模块、弹出模块和第二判断模块,其中:
所述接收模块,用于接收封装报文;
所述第一判断模块,用于在所述接收模块接收到封装报文之后,判断该封装报文的最外层标签是否为本节点的节点段标签或者本节点发布的邻接段标签;
所述弹出模块,用于若所述第一判断模块判断出该封装报文的最外层标签是本节点的节点段标签或者本节点发出的邻接段标签,则弹出最外层标签;
所述第二判断模块,用于在所述弹出模块弹出最外层标签之后,判断该封装报文中是否还携带有标签,并在判断出该封装报文中还携带有标签时,触发所述第一判断模块,在该封装报文中已经没有携带标签时,得到用户报文;
所述发送模块,还用于若所述第一判断模块判断出该封装报文的最外层标签不是本节点的节点段标签和本节点发出的邻接段标签,则根据该最外层标签在所述路由转发表中查找对应的出端口,通过查找到的出端口转发该封装报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610428255.7A CN106161246B (zh) | 2016-06-15 | 2016-06-15 | 备用路由的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610428255.7A CN106161246B (zh) | 2016-06-15 | 2016-06-15 | 备用路由的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106161246A true CN106161246A (zh) | 2016-11-23 |
CN106161246B CN106161246B (zh) | 2019-09-06 |
Family
ID=57353394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610428255.7A Active CN106161246B (zh) | 2016-06-15 | 2016-06-15 | 备用路由的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106161246B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768796A (zh) * | 2018-08-28 | 2018-11-06 | 新华三技术有限公司合肥分公司 | 链路故障检测方法及装置 |
WO2019001101A1 (zh) * | 2017-06-28 | 2019-01-03 | 华为技术有限公司 | 路由路径分析方法及设备 |
CN109889441A (zh) * | 2019-03-21 | 2019-06-14 | 新华三技术有限公司 | 一种数据转发方法及装置 |
CN110493129A (zh) * | 2019-07-25 | 2019-11-22 | 新华三大数据技术有限公司 | 备份标签路径的更新方法、报文转发方法及装置 |
CN110855531A (zh) * | 2019-12-02 | 2020-02-28 | 锐捷网络股份有限公司 | 一种转发路径检测方法及装置 |
WO2020119644A1 (zh) * | 2018-12-10 | 2020-06-18 | 华为技术有限公司 | 一种转发表项生成方法、装置及设备 |
WO2021233168A1 (zh) * | 2020-05-19 | 2021-11-25 | 华为技术有限公司 | 一种报文发送的方法和装置 |
CN113965506A (zh) * | 2021-11-01 | 2022-01-21 | 南京熊猫汉达科技有限公司 | 一种网关备份方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1738288A (zh) * | 2004-08-17 | 2006-02-22 | 华为技术有限公司 | 一种多协议标签交换网络中重新路由的方法 |
US20070038767A1 (en) * | 2003-01-09 | 2007-02-15 | Miles Kevin G | Method and apparatus for constructing a backup route in a data communications network |
CN101355486A (zh) * | 2007-07-23 | 2009-01-28 | 中国移动通信集团公司 | 一种路由切换的方法、设备及系统 |
CN101599898A (zh) * | 2009-07-01 | 2009-12-09 | 北京邮电大学 | 多链路故障环境下采用lfa方式的路由器避免环路的方法 |
CN101610203A (zh) * | 2008-06-16 | 2009-12-23 | 华为技术有限公司 | 实现组播重路由的方法、装置及系统 |
US8165121B1 (en) * | 2009-06-22 | 2012-04-24 | Juniper Networks, Inc. | Fast computation of loop free alternate next hops |
US20120275298A1 (en) * | 2003-05-20 | 2012-11-01 | Stewart Frederick Bryant | Constructing A Transition Route In A Data Communications Network |
US20130051217A1 (en) * | 2011-08-30 | 2013-02-28 | Verizon Patent And Licensing Inc. | System and method for enhancing loop free alternative coverage |
CN103259721A (zh) * | 2013-04-16 | 2013-08-21 | 杭州华三通信技术有限公司 | Spbm网络中的报文转发方法及装置 |
CN103391247A (zh) * | 2012-05-09 | 2013-11-13 | 丛林网络公司 | 多点标签交换路径的使用无环备用下一跳的快速重路由 |
-
2016
- 2016-06-15 CN CN201610428255.7A patent/CN106161246B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070038767A1 (en) * | 2003-01-09 | 2007-02-15 | Miles Kevin G | Method and apparatus for constructing a backup route in a data communications network |
US20120275298A1 (en) * | 2003-05-20 | 2012-11-01 | Stewart Frederick Bryant | Constructing A Transition Route In A Data Communications Network |
CN1738288A (zh) * | 2004-08-17 | 2006-02-22 | 华为技术有限公司 | 一种多协议标签交换网络中重新路由的方法 |
CN101355486A (zh) * | 2007-07-23 | 2009-01-28 | 中国移动通信集团公司 | 一种路由切换的方法、设备及系统 |
CN101610203A (zh) * | 2008-06-16 | 2009-12-23 | 华为技术有限公司 | 实现组播重路由的方法、装置及系统 |
US8165121B1 (en) * | 2009-06-22 | 2012-04-24 | Juniper Networks, Inc. | Fast computation of loop free alternate next hops |
CN101599898A (zh) * | 2009-07-01 | 2009-12-09 | 北京邮电大学 | 多链路故障环境下采用lfa方式的路由器避免环路的方法 |
US20130051217A1 (en) * | 2011-08-30 | 2013-02-28 | Verizon Patent And Licensing Inc. | System and method for enhancing loop free alternative coverage |
CN103391247A (zh) * | 2012-05-09 | 2013-11-13 | 丛林网络公司 | 多点标签交换路径的使用无环备用下一跳的快速重路由 |
CN103259721A (zh) * | 2013-04-16 | 2013-08-21 | 杭州华三通信技术有限公司 | Spbm网络中的报文转发方法及装置 |
Non-Patent Citations (1)
Title |
---|
S. BRYANT,ETAL.: "Remote Loop-Free Alternate(LFA) Fast Reroute(FRR)", 《INTERNET ENGINEERING TASK FORCE(IETF) REQUEST FOR COMMENTS:7490》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019001101A1 (zh) * | 2017-06-28 | 2019-01-03 | 华为技术有限公司 | 路由路径分析方法及设备 |
CN109150707A (zh) * | 2017-06-28 | 2019-01-04 | 华为技术有限公司 | 路由路径分析方法及设备 |
US11258702B2 (en) | 2017-06-28 | 2022-02-22 | Huawei Technologies Co., Ltd. | Routing path analysis method and device |
CN108768796A (zh) * | 2018-08-28 | 2018-11-06 | 新华三技术有限公司合肥分公司 | 链路故障检测方法及装置 |
CN108768796B (zh) * | 2018-08-28 | 2020-08-14 | 新华三技术有限公司合肥分公司 | 链路故障检测方法及装置 |
WO2020119644A1 (zh) * | 2018-12-10 | 2020-06-18 | 华为技术有限公司 | 一种转发表项生成方法、装置及设备 |
CN109889441A (zh) * | 2019-03-21 | 2019-06-14 | 新华三技术有限公司 | 一种数据转发方法及装置 |
CN109889441B (zh) * | 2019-03-21 | 2021-05-14 | 新华三技术有限公司 | 一种数据转发方法及装置 |
CN110493129B (zh) * | 2019-07-25 | 2021-11-09 | 新华三大数据技术有限公司 | 备份标签路径的更新方法、报文转发方法及装置 |
CN110493129A (zh) * | 2019-07-25 | 2019-11-22 | 新华三大数据技术有限公司 | 备份标签路径的更新方法、报文转发方法及装置 |
CN110855531A (zh) * | 2019-12-02 | 2020-02-28 | 锐捷网络股份有限公司 | 一种转发路径检测方法及装置 |
CN110855531B (zh) * | 2019-12-02 | 2021-09-14 | 锐捷网络股份有限公司 | 一种转发路径检测方法及装置 |
WO2021233168A1 (zh) * | 2020-05-19 | 2021-11-25 | 华为技术有限公司 | 一种报文发送的方法和装置 |
CN113965506A (zh) * | 2021-11-01 | 2022-01-21 | 南京熊猫汉达科技有限公司 | 一种网关备份方法和系统 |
CN113965506B (zh) * | 2021-11-01 | 2023-02-28 | 南京熊猫汉达科技有限公司 | 一种网关备份方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106161246B (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106161246B (zh) | 备用路由的实现方法及装置 | |
CN101523354B (zh) | 用于多段伪线的保护的装置和方法 | |
CN101164265B (zh) | 用于备份pe选择的算法 | |
CN105634940B (zh) | Sr信息获取方法及建立段路由网络的方法 | |
CN103731288B (zh) | 报文转发方法及设备 | |
CN100450039C (zh) | 快速收敛端到端业务的方法和装置 | |
CN101651630A (zh) | 一种基于链路故障的切换方法及装置 | |
CN102123088B (zh) | 建立te隧道的方法及设备 | |
Kini et al. | Fast recovery from dual-link or single-node failures in IP networks using tunneling | |
US7969898B1 (en) | Technique for breaking loops in a communications network | |
CN102075419B (zh) | 三层虚拟专用网等价路由的生成及转发方法和边缘路由器 | |
CN109787839A (zh) | 一种报文转发方法及装置 | |
CN101771577A (zh) | 一种为双向lsp建立双向转发检测的方法、系统及设备 | |
CN107770063A (zh) | 报文转发方法及装置 | |
CN103891220A (zh) | 使用ldp的mpls快速重新路由(ldp-frr) | |
CN101355486A (zh) | 一种路由切换的方法、设备及系统 | |
CN102201993B (zh) | 一种跨域工作路径及其保护路径的计算方法 | |
CN101662426A (zh) | 一种t-mpls隧道保护处理的方法和系统 | |
CN109617803A (zh) | 一种转发表项生成方法、装置及设备 | |
CN108768796A (zh) | 链路故障检测方法及装置 | |
CN107689915A (zh) | 报文转发方法及装置 | |
CN106572012A (zh) | 一种vpn frr的实现方法和pe设备 | |
CN103368844B (zh) | Mpls网络中的报文处理方法及标签交换路由器 | |
CN110535697A (zh) | 一种均衡区块链跨域广播网络负载的方法 | |
CN103297338B (zh) | 一种vpn路由通告方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant before: Huasan Communication Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |