CN112702263B - 转发报文的方法及装置 - Google Patents
转发报文的方法及装置 Download PDFInfo
- Publication number
- CN112702263B CN112702263B CN201911005235.9A CN201911005235A CN112702263B CN 112702263 B CN112702263 B CN 112702263B CN 201911005235 A CN201911005235 A CN 201911005235A CN 112702263 B CN112702263 B CN 112702263B
- Authority
- CN
- China
- Prior art keywords
- neighbor
- node
- tlv
- domain
- virtual
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000005516 engineering process Methods 0.000 claims description 58
- 241000465502 Tobacco latent virus Species 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 48
- 238000004891 communication Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 238000010327 methods by industry Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 18
- 101150013608 asg-1 gene Proteins 0.000 description 15
- 101100436066 Arabidopsis thaliana ASG2 gene Proteins 0.000 description 14
- 230000002457 bidirectional effect Effects 0.000 description 9
- 102100026329 Ciliogenesis and planar polarity effector 2 Human genes 0.000 description 8
- 101000855378 Homo sapiens Ciliogenesis and planar polarity effector 2 Proteins 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 101100057871 Caenorhabditis elegans asg-1 gene Proteins 0.000 description 6
- 101100329534 Haloarcula marismortui (strain ATCC 43049 / DSM 3752 / JCM 8966 / VKM B-1809) csg1 gene Proteins 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 101100057875 Caenorhabditis elegans asg-2 gene Proteins 0.000 description 3
- 101100385368 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CSG2 gene Proteins 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 101100422777 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SUR1 gene Proteins 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- 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
- H04L45/04—Interdomain routing, e.g. hierarchical 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/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
Abstract
本申请公开了一种转发报文的方法、装置及存储介质,属于分段路由技术领域。在该方法中,为了实现某个域内的节点能够跨域确定转发路径,第一节点获取的第一域内的边界节点的邻居关系包括边界节点在第二域内的邻居关系,该第二域为除第一域之外的域,如此,第一节点便可结合边界节点在第二域内的邻居关系来确定转发路径,也即是,第一节点在确定转发路径时可以利用除了第一域内的链路资源之外的其他域内的链路资源,从而避免了在当前所在域内没有备份路径时报文无法转发的问题,提高了报文转发的成功率。
Description
技术领域
本申请涉及分段路由(segment routing,SR)技术领域,特别涉及一种确转发报文的方法、装置及存储介质。
背景技术
目前,为了便于对大型网络进行管理,通常将网络划分为多个域,每个域包括一组主机和一组路由器,一个域内的主机和路由器由一个控制器统一进行管理。此时,如何将报文转发至网络中的目的节点已经成为当前的研究热点。
相关技术中,对于任一域,可以通过SR技术实现报文在该域内的转发。也即是,在该域的入口节点处在报文中插入报文在该域内的转发路径,入口节点按照该转发路径将报文转发至下一跳节点,下一跳节点在接收到该报文后,继续按照转发路径转发报文,直至报文转发至该域的出口节点。出口节点根据控制器的指示将报文转发至另一个域的入口节点,报文在另一个域的转发过程和报文在前述域内的转发过程基本相同。通过上述过程,即可实现将报文转发至网络内的目的节点。
在上述转发报文的过程中,对于任一域,当该域内的某个节点接收到报文,且该节点和该域内的下一跳节点之间的链路出现故障时,该节点确定在该域内到下一跳节点之间是否有备份路径,如果该域内该节点到下一跳节点之间没有备份路径,将导致将报文无法成功转发至目的节点。
发明内容
本申请提供了一种转发报文的方法、装置及存储介质,可以在当前节点到下一跳节点之间的链路发生故障的情况下建立跨域的备份路径,从而提高报文的转发成功率。所述技术方案如下:
第一方面,提供了一种转发报文的方法。在该方法中,第一节点接收报文,该第一节点为第一域内的任一节点,该第一域为网络中的多个域中的任一域。该第一节点获取第一域内各个节点的一个或多个邻居关系,该第一域内的边界节点的一个或多个邻居关系包括该边界节点在第二域内的邻居关系,该第二域为除该第一域之外的域;该第一节点根据该第一域内各个节点的一个或多个邻居关系,确定到达该报文的目的节点的转发路径;该第一节点按照确定的转发路径转发该报文。
在本申请实施例中,为了实现某个域内的节点能够跨域确定转发路径,第一节点获取的第一域内的边界节点的邻居关系包括边界节点在第二域内的邻居关系,该第二域为除第一域之外的域,如此,第一节点便可结合边界节点在第二域内的邻居关系来确定转发路径,也即是,第一节点在确定转发路径时可以利用除了第一域内的链路资源之外的其他域内的链路资源,从而避免了在当前所在域内没有备份路径时报文无法转发的问题,也就提高了报文转发的成功率。
可选地,该第一节点获取该第一域内各个节点的一个或多个邻居关系,具体为:对于该各个节点中的第二节点,从该第二节点的一个或多个邻居关系类型-长度-值TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居标识,该第二节点为该各个节点中的任一节点;在该选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从该选择的邻居关系TLV中获取虚拟邻居子TLV,该虚拟邻居子TLV携带邻居标识和路径标签,该虚拟邻居子TLV携带的邻居标识用于指示该第二节点对应的虚拟邻居的标识,该虚拟邻居子TLV携带的路径标签用于指示该第二节点到达该虚拟邻居的路径,该第二节点达到该虚拟邻居的路径是通过该第二域内的链路资源构建的;根据该虚拟邻居子TLV携带的邻居标识和路径标签确定该第二节点的一个邻居关系。
在本申请实施例中,可以通过虚拟邻居的方式来指示第一域内的边界节点在第二域内的邻居关系,如此当第一节点与下一跳节点之间的链路出现故障时,便可根据该虚拟邻居确定其他可行的备份路径。
可选地,第一节点获取选择的邻居关系TLV中的邻居标识之后,第一节点还可以在该选择的邻居关系TLV中携带的邻居标识指示一个正常邻居的情况下,根据该选择的邻居关系TLV确定该第二节点的一个邻居关系,该正常邻居是指通过该第一域内的链路资源与该第二节点构建路径的节点。
本申请实施例是对原有的邻居关系TLV进行了扩展,而原有的邻居关系TLV仍然可以指示所在域内的一个正常邻居。
可选地,在该选择的邻居关系TLV中携带的邻居标识与该第二节点的标识相同的情况下,该选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居。在该选择的邻居关系TLV中携带的邻居标识与该第二节点的标识不相同的情况下,该选择的邻居关系TLV中携带的邻居标识指示一个正常邻居。
具体地,在本申请实施例中,可以通过节点发布的邻居关系TLV中的邻居标识是否是该节点自身来确定邻居关系TLV中指示的邻居是虚拟邻居还是所在域内的正常邻居。
可选地,第一节点从该选择的邻居关系TLV中获取虚拟邻居子TLV之后,第一节点还可以从该虚拟邻居子TLV中获取虚拟邻居功能指示信息;在该虚拟邻居功能指示信息指示该虚拟邻居用于基于分段路由最优路径SR-BE技术转发报文的场景中,且当前处于基于SR-BE技术转发报文的场景的情况下,执行根据该虚拟邻居子TLV携带的邻居标识和路径标签确定该第二节点的一个邻居关系的步骤。
可选地,第一节点从该选择的邻居关系TLV中获取虚拟邻居子TLV之后,第一节点还可以从该虚拟邻居子TLV中获取虚拟邻居功能指示信息;在该虚拟邻居功能指示信息指示该虚拟邻居用于基于分段路由流程工程SR-TE技术转发报文的场景中,且当前处于基于SR-TE技术转发报文的场景的情况下,执行根据该虚拟邻居子TLV携带的邻居标识和路径标签确定该第二节点的一个邻居关系的步骤。
由于本申请实施例提供的转发报文的方法可以应用于通过SR-BE技术确定转发报文的场景中,也可以应用于通过SR-TE技术转发报文的场景中,而不同的场景中第一节点通过第二域达到虚拟邻居的路径的方式不同。因此,为了便于第一节点后续能够快速确定该虚拟邻居子TLV携带的路径标签能够用于确定转发路径,还可以在虚拟邻居子TLV中配置虚拟邻居功能指示信息,通过该虚拟邻居功能指示信息来指示该虚拟邻居子TLV携带的路径标签适用于哪种场景。
可选地,该虚拟邻居功能指示信息携带在该虚拟邻居子TLV的控制位字段中。具体地,可以在虚拟邻居子TLV的控制位字段中携带该虚拟邻居功能指示信息。
可选地,该第一节点获取该第一域内各个节点的一个或多个邻居关系,具体为:对于该各个节点中第二节点,从该第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居子TLV,该邻居子TLV用于指示该第二节点到第三节点的邻居关系,该第三节点为该第一域或该第二域中的节点,该第二节点为该各个节点中的任一节点。
在基于SR-TE技术转发报文的场景中,各个节点还可以通过邻居关系TLV中的邻居子TLV(Adj-SID Sub TLV)发布邻居关系。也即是,在基于SR-TE技术转发报文的场景中,邻居关系TLV中原本就携带一个邻居子TLV,该邻居子TLV用于指示所在域内的邻居关系。因此,在本申请实施例中,在基于SR-TE技术转发报文的场景中,还可以直接对邻居关系TLV中的邻居子TLV进行重新配置,以使邻居子TLV能够携带跨域的邻居关系(在本申请实施例中,具体是指第三节点为第二域内的节点的情况),以便于第一域内的节点能够建立到第二域内的节点之间的隧道,也即是建立跨域的隧道
可选地,该第一节点根据该第一域内各个节点的一个或多个邻居关系,确定该报文的转发路径,具体为:从该第一节点开始,该第一节点依次执行根据当前节点的一个或多个邻居关系,确定该当前节点的下一跳节点的步骤,直至确定出的下一跳节点为该报文的目的节点时,得到该报文的转发路径。
为了确定到达报文的目的地的转发路径,需要逐跳确定下一跳节点。
可选地,该根据当前节点的一个或多个邻居关系,确定该当前节点的下一跳节点,具体为:从该当前节点的一个或多个邻居关系中确定到达该目的节点的最优邻居关系;在该当前节点为边界节点、该最优邻居关系为该当前节点在该第二域内的邻居关系、且该当前节点到该最优邻居关系所指示的节点之间的路径具有单向可达性的情况下,将该最优邻居关系所指示的节点确定为该当前节点的下一跳节点。
由于本申请实施例提供的报文转发方法通常是在当前链路出现故障时才重新确定转发路径,此时并不需要其具有双向可达性,可以仅仅在具有单向可达性之后可便可基于该邻居关系确定转发路径,从而提高了重新确定转发路径的效率。
可选地,该第一节点获取该第一域内各个节点的一个或多个邻居关系,具体为:在该第一节点与该报文中指示的下一跳节点之间的链路有故障的情况下,获取该第一域内各个节点的一个或多个邻居关系。
具体地,本申请实施例提供的报文转发方法可以应用于在该第一节点与该报文中指示的下一跳节点之间的链路有故障的情况下,从而避免了在当前所在域内没有备份路径时报文无法转发的问题,从而提高了报文转发的成功率。
第二方面,提供了一种转发报文的方法,在该方法中:第一域和第二域之间的边界节点确定邻居关系TLV,所述邻居关系TLV用于指示所述边界节点在第二域内的邻居关系;所述边界节点在所述第一域内发布所述邻居关系TLV。
在本申请实施例中,为了实现某个域内的节点能够跨域确定转发路径,第一域和第二域之间的边界节点可以确定用于指示边界节点在第二域内的邻居关系的邻居关系TLV,并在第一域内发布该邻居关系TLV。如此,第一域内的第一节点便可接收该邻居关系TLV,以便于后续第一节点可以结合边界节点在第二域内的邻居关系来确定转发路径,也即是,第一节点在确定转发路径时可以利用除了第一域内的链路资源之外的其他域内的链路资源,从而避免了在当前所在域内没有备份路径时报文无法转发的问题,从而提高了报文转发的成功率。
可选地,在所述邻居关系TLV携带的的邻居标识指示一个虚拟邻居的情况下,所述邻居关系TLV包括虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述边界节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述边界节点到达所述虚拟邻居的路径,所述边界节点达到所述虚拟邻居的路径是通过所述第二域内的链路资源构建的。
可选地,在所述邻居关系TLV中携带的邻居标识与所述边界节点的标识相同的情况下,所述邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,所述邻居关系TLV包括邻居子TLV,所述邻居子TLV用于指示所述边界节点到第三节点的邻居关系,所述第三节点为所述第一域或所述第二域中的节点。
上述通过不同的方式来指示边界节点在第二域内的邻居关系的有益效果已在第一方面提供的报文转发方法中进行了详细说明,在此就不再赘述。
第三方面,提供了一种第一节点,该第一节点包括:
接收模块,用于接收报文,所述第一节点为第一域内的任一节点,所述第一域为网络中的多个域中的任一域;
获取模块,用于获取所述第一域内各个节点的一个或多个邻居关系,所述第一域内的边界节点的一个或多个邻居关系包括所述边界节点在第二域内的邻居关系,所述第二域为除所述第一域之外的域;
确定模块,用于根据所述第一域内各个节点的一个或多个邻居关系,确定到达所述报文的目的节点的转发路径;
转发模块,用于按照确定的转发路径转发所述报文。
可选地,前述获取模块,具体用于:
对于所述各个节点中的第二节点,从所述第二节点的一个或多个邻居关系类型-长度-值TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居标识,所述第二节点为所述各个节点中的任一节点;
在所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从所述选择的邻居关系TLV中获取虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述第二节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述第二节点到达所述虚拟邻居的路径,所述第二节点达到所述虚拟邻居的路径是通过所述第二域内的链路资源构建的;
根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系。
可选地,在所述选择的邻居关系TLV中携带的邻居标识与所述第二节点的标识相同的情况下,所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,前述获取模块,还具体用于:在所述选择的邻居关系TLV中携带的邻居标识指示一个正常邻居的情况下,根据所述选择的邻居关系TLV确定所述第二节点的一个邻居关系,所述正常邻居是指通过所述第一域内的链路资源与所述第二节点构建路径的节点。
可选地,在所述选择的邻居关系TLV中携带的邻居标识与所述第二节点的标识不相同的情况下,所述选择的邻居关系TLV中携带的邻居标识指示一个正常邻居。
可选地,前述获取模块,还具体用于:
从所述虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在所述虚拟邻居功能指示信息指示所述虚拟邻居用于基于分段路由最优路径SR-BE技术转发报文的场景中,且当前处于基于SR-BE技术转发报文的场景的情况下,执行根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系的步骤。
可选地,前述获取模块,还具体用于:
从所述虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在所述虚拟邻居功能指示信息指示所述虚拟邻居用于基于分段路由流程工程SR-TE技术转发报文的场景中,且当前处于基于SR-TE技术转发报文的场景的情况下,执行根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系的步骤。
可选地,所述虚拟邻居功能指示信息携带在所述虚拟邻居子TLV的控制位字段中。
可选地,前述获取模块,还具体用于:
对于所述各个节点中第二节点,从所述第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居子TLV,所述邻居子TLV用于指示所述第二节点到第三节点的邻居关系,所述第三节点为所述第一域或所述第二域中的节点,所述第二节点为所述各个节点中的任一节点。
可选地,前述确定模块,还具体用于:
从所述第一节点开始,所述第一节点依次执行根据当前节点的一个或多个邻居关系,确定所述当前节点的下一跳节点的步骤,直至确定出的下一跳节点为所述报文的目的节点时,得到所述报文的转发路径。
可选地,前述获取模块,还具体用于:
从所述当前节点的一个或多个邻居关系中确定到达所述目的节点的最优邻居关系;
在所述当前节点为边界节点、所述最优邻居关系为所述当前节点在所述第二域内的邻居关系、且所述当前节点到所述最优邻居关系所指示的节点之间的路径具有单向可达性的情况下,将所述最优邻居关系所指示的节点确定为所述当前节点的下一跳节点。
可选地,前述获取模块,还具体用于:
在所述第一节点与所述报文中指示的下一跳节点之间的链路有故障的情况下,获取所述第一域内各个节点的一个或多个邻居关系。
上述第三方面提供的第一节点包括的各个模块的功能已在第一方面提供的报文转发方法中进行了详细说明,在此就不再赘述。
第四方面、提供一种第一域和第二域之间的边界节点,该边界节点包括:
确定模块,用于确定邻居关系TLV,所述邻居关系TLV用于指示所述边界节点在第二域内的邻居关系;
发布模块,用于在所述第一域内发布所述邻居关系TLV。
可选地,在所述邻居关系TLV携带的的邻居标识指示一个虚拟邻居的情况下,所述邻居关系TLV包括虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述边界节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述边界节点到达所述虚拟邻居的路径,所述边界节点达到所述虚拟邻居的路径是通过所述第二域内的链路资源构建的。
可选地,在所述邻居关系TLV中携带的邻居标识与所述边界节点的标识相同的情况下,所述邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,所述邻居关系TLV包括邻居子TLV,所述邻居子TLV用于指示所述边界节点到第三节点的邻居关系,所述第三节点为所述第一域或所述第二域中的节点。
上述第四方面提供的边界节点包括的各个模块的功能已在第二方面提供的报文转发方法中进行了详细说明,在此就不再赘述。
第五方面,提供一种通信网络中的第一节点,所述第一节点为第一域内的任一节点,所述第一域为网络中的多个域中的任一域,所述第一节点包括存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器中存储的计算机程序以执行下述转发报文的方法:
接收报文;
获取所述第一域内各个节点的一个或多个邻居关系,所述第一域内的边界节点的一个或多个邻居关系包括所述边界节点在第二域内的邻居关系,所述第二域为除所述第一域之外的域;
根据所述第一域内各个节点的一个或多个邻居关系,确定到达所述报文的目的节点的转发路径;
按照确定的转发路径转发所述报文;
可选地,所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,包括:
对于所述各个节点中的第二节点,从所述第二节点的一个或多个邻居关系类型-长度-值TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居标识,所述第二节点为所述各个节点中的任一节点;
在所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从所述选择的邻居关系TLV中获取虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述第二节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述第二节点到达所述虚拟邻居的路径,所述第二节点达到所述虚拟邻居的路径是通过所述第二域内的链路资源构建的;
根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系。
可选地,在所述选择的邻居关系TLV中携带的邻居标识与所述第二节点的标识相同的情况下,所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,所述获取选择的邻居关系TLV中的邻居标识之后,还包括:在所述选择的邻居关系TLV中携带的邻居标识指示一个正常邻居的情况下,根据所述选择的邻居关系TLV确定所述第二节点的一个邻居关系,所述正常邻居是指通过所述第一域内的链路资源与所述第二节点构建路径的节点。
可选地,在所述选择的邻居关系TLV中携带的邻居标识与所述第二节点的标识不相同的情况下,所述选择的邻居关系TLV中携带的邻居标识指示一个正常邻居。
可选地,所述从所述选择的邻居关系TLV中获取虚拟邻居子TLV之后,还包括:
从所述虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在所述虚拟邻居功能指示信息指示所述虚拟邻居用于基于分段路由最优路径SR-BE技术转发报文的场景中,且当前处于基于SR-BE技术转发报文的场景的情况下,执行根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系的步骤。
可选地,所述从所述选择的邻居关系TLV中获取虚拟邻居子TLV之后,还包括:
从所述虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在所述虚拟邻居功能指示信息指示所述虚拟邻居用于基于分段路由流程工程SR-TE技术转发报文的场景中,且当前处于基于SR-TE技术转发报文的场景的情况下,执行根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系的步骤。
可选地,所述虚拟邻居功能指示信息携带在所述虚拟邻居子TLV的控制位字段中。
可选地,所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,包括:
对于所述各个节点中第二节点,从所述第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居子TLV,所述邻居子TLV用于指示所述第二节点到第三节点的邻居关系,所述第三节点为所述第一域或所述第二域中的节点,所述第二节点为所述各个节点中的任一节点。
可选地,所述第一节点根据所述第一域内各个节点的一个或多个邻居关系,确定所述报文的转发路径,包括:
从所述第一节点开始,所述第一节点依次执行根据当前节点的一个或多个邻居关系,确定所述当前节点的下一跳节点的步骤,直至确定出的下一跳节点为所述报文的目的节点时,得到所述报文的转发路径。
可选地,所述根据当前节点的一个或多个邻居关系,确定所述当前节点的下一跳节点,包括:
从所述当前节点的一个或多个邻居关系中确定到达所述目的节点的最优邻居关系;
在所述当前节点为边界节点、所述最优邻居关系为所述当前节点在所述第二域内的邻居关系、且所述当前节点到所述最优邻居关系所指示的节点之间的路径具有单向可达性的情况下,将所述最优邻居关系所指示的节点确定为所述当前节点的下一跳节点。
可选地,所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,包括:
在所述第一节点与所述报文中指示的下一跳节点之间的链路有故障的情况下,获取所述第一域内各个节点的一个或多个邻居关系。
第六方面,提供了一种通信网络中的边界节点,其特征在于,所述边界节点为第一域和第二域之间的边界节点,所述边界节点包括存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器中存储的计算机程序以执行下述转发报文的方法:
确定邻居关系TLV,所述邻居关系TLV用于指示所述边界节点在第二域内的邻居关系;
在所述第一域内发布所述邻居关系TLV。
可选地,在所述邻居关系TLV携带的的邻居标识指示一个虚拟邻居的情况下,所述邻居关系TLV包括虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述边界节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述边界节点到达所述虚拟邻居的路径,所述边界节点达到所述虚拟邻居的路径是通过所述第二域内的链路资源构建的。
可选地,在所述邻居关系TLV中携带的邻居标识与所述边界节点的标识相同的情况下,所述邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,所述邻居关系TLV包括邻居子TLV,所述邻居子TLV用于指示所述边界节点到第三节点的邻居关系,所述第三节点为所述第一域或所述第二域中的节点。
第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面任一所述的转发报文的方法。
第八方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面任一所述的转发报文的方法。
第九方面,提供了一种转发报文的系统,所述系统包括第一节点和第二节点,所述第一节点为第一域内的任一节点,所述第二节点为所述第一域和第二域之间的边界节点;
所述第二节点用于确定邻居关系TLV,所述邻居关系TLV用于指示所述边界节点在第二域内的邻居关系,在所述第一域内发布所述邻居关系TLV;
所述第一节点用于接收所述邻居关系TLV。
可选地,在所述邻居关系TLV携带的的邻居标识指示一个虚拟邻居的情况下,所述邻居关系TLV包括虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述边界节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述边界节点到达所述虚拟邻居的路径,所述边界节点达到所述虚拟邻居的路径是通过所述第二域内的链路资源构建的。
可选地,在所述邻居关系TLV中携带的邻居标识与所述边界节点的标识相同的情况下,所述邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,所述邻居关系TLV包括邻居子TLV,所述邻居子TLV用于指示所述边界节点到第三节点的邻居关系,所述第三节点为所述第一域或所述第二域中的节点。
附图说明
图1是本申请实施例提供的一种网络系统示意图;
图2是本申请实施例提供的另一种网络系统示意图;
图3是本申请实施例提供的另一种网络系统的示意图;
图4是本申请实施例提供的一种转发报文的方法流程图;
图5是本申请实施例提供的另一种转发报文的方法流程图;
图6是本申请实施例提供的一种TLV22的格式示意图;
图7是本申请实施例提供的一种虚拟邻居子TLV的格式示意图;
图8是本申请实施例提供的另一种转发报文的方法流程图;
图9是本申请实施例提供的一种邻居子TLV的格式示意图;
图10是本申请实施例提供的一种第一节点的装置示意图;
图11是本申请实施例提供的一种边界节点的装置示意图;
图12是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解的是,本文提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在对本申请实施例提供的转发报文的方法进行解释说明之前,先对本申请实施例的应用场景进行解释说明。
图1是本申请实施例提供的一种网络系统示意图。如图1所示,该网络系统包括三个小区站点网关(cell site gateway,CSG),图1中分别标记为CSG1、CSG2、CSG3。其中,CSG也可以称为接入业务网关,是移动承载网络中的一种角色,该角色处于接入层,用于负责基站的接入。
该网络系统100还包括两个汇聚侧网关(aggregation site gateway,ASG),图1中分别标记为ASG1和ASG2。ASG也是移动承载网络中的一种角色,该角色位于汇聚层,用于负责对移动承载网络接入层的海量CSG业务流进行汇聚。
该网络系统100还包括两个运营商设备(provider),图1中分别标记为P1和P2。该网络系统100还包括两个无线业务侧网关(radio service gateway,RSG),图1中分别标记为RSG1和RSG2。RSG也是移动承载网络中的一种角色,该角色处在汇聚层,用于连接无线控制器。
如图1所示,CSG1分别与CSG2和CSG3之间通过有线或无线方式连接以进行通信。CSG2与ASG1之间通过有线或无线方式连接以进行通信。ASG1与P1之间通过有线或无线方式连接以进行通信。P1与RSG1之间通过有线或无线方式连接以进行通信。CSG3与ASG2之间通过有线或无线方式连接以进行通信。ASG2与P2之间通过有线或无线方式连接以进行通信。P2与RSG2之间通过有线或无线方式连接以进行通信。ASG1与ASG2之间通过有线或无线方式连接以进行通信。
另外,如图1所示,三个CSG和两个ASG位于一个域,在图1中标记为域1。两个ASG、两个P1和两个RSG位于另一个域,在图1中标记为域2。在本申请实施例中,域可以为基于内部网关协议(Interior Gateway Protocol,IGP)划分的域,也即是,同一域内的节点基于同一IGP进行通信,不同的域内的节点基于不同的IGP进行通信。
图1所示的网络系统应用于通过尽力而为的分段路由(Segment Routing-BestEffort,SR-BE)技术来确定路径的场景中。在这种场景下,假设ASG1和ASG2之间的链路发生故障,P1到RSG1之间的链路也发生了故障,此时,当P1接收到报文时,如果报文的目的节点为RSG1,由于P1只能基于域2内的节点来确定备份路径,但是显然在域2内没有可选的备份路径来传输该报文,此时将导致该报文传输失败。本申请实施例提供的转发报文的方法就可以在这种场景下获取一条可选的路径用于转发报文。
需要说明的是,图1所示的网络系统中的各个节点之间的布局仅仅用于举例说明,图1中的CSG、ASG以及RSG的数量也仅仅用于举例说明,并不构成对本申请的限定。
图2是本申请实施例提供的另一种网络系统示意图。如图2所示,该网络系统包括一个CSG、一个ASG以及一个RSG。其中,CSG与ASG位于同一域内,图2中标记为域1。ASG和RSG位于另一域内,图2中标记为域2。
当图2所示的网络系统通过分段路由流程工程(Segment Routing TrafficEngineering,SR-TE)技术转发报文时,此时,CSG可以建立到ASG之间的TE隧道,用于将报文从CSG转发至ASG。ASG也可以建立到RSG之间的TE隧道,用于将报文从ASG转发至RSG。但是由于CSG和RSG没有位于同一域内,因此,CSG不能直接建立到RSG的TE隧道,需要通过粘连标签的方式将CSG到ASG的隧道以及ASG到RSG之间的隧道粘连起来,以建立跨域的TE隧道,用于转发报文。
图3是本申请实施例提供的另一种网络系统的示意图。如图3所示,该网络系统包括节点R1、节点R2、节点R3、节点R4、节点R5。点R1、节点R2、节点R3位于一个域内,图3中标记为域1。节点R2、节点R3、节点R4、节点R5位于另一个域内,图3中标记为域2。各个节点之间的网络连接关系如图3所示,在此不再一一解释说明。
如图3所示,预先在每个域内建立各个节点之间的TE隧道,并将建立的TE隧道与隧道标签绑定起来。如图3所示,在节点R1与节点R2之间建立SR-TE隧道,绑定的隧道标签为1,在节点R2与节点R4之间建立SR-TE隧道,绑定的隧道标签为2。
当需要创建跨域的TE隧道时,可以通过指定显示路径的方式创建跨域的TE隧道。显式路径是指在每个域的入口节点处指明报文沿途经过该域内的各个单段隧道的隧道标签,并在显示路径中添加一个与该域内的出口节点对应的粘连标签,在出口节点处预先配置有该粘连标签与其他域内的一个或多个隧道标签的对应关系,用于指示该出口节点在接收到报文时,将报文中的粘连标签替换为对应的一个或多个隧道标签,以实现报文在其他域内的继续转发。比如,在R1节点处部署的显示路径为隧道标签1和粘连标签,其中,预先配置粘连标签与隧道标签2之间的映射关系,如此,当R2接收到报文之后,可直接将粘连标签替换为隧道标签2,从而实现通过隧道标签2所指示的隧道继续在域2内转发该报文。
但是,这种方式需要一开始就在网络入口,比如图3中的R1处,配置包括粘连标签的显示路径,用于指示报文的转发路径。这种路径的配置方式属于静态方式,对于网络中的节点,如果该节点与下一跳节点之间出现故障,由于无法动态临时确定备份路径,此时仍然无法保证报文的转发成功。另外,在图3所示的网络系统中,如果节点R4故障,R1无法感知到R2与R4之间的TE隧道已经下线(down)了,但是R1与R2之间的TE隧道仍然正常运行,此时后续报文会继续转发到节点R2并被丢弃,这样就形成了转发黑洞。而本申请实施例提供的转发报文的方法就可以动态建立跨域的TE隧道。
需要说明的是,图2或图3所示的网络系统中的各个节点之间的布局仅仅用于举例说明,图2中的CSG、ASG以及RSG的数量也仅仅用于举例说明,并不构成对本申请的限定。
图4是本申请实施例提供的一种转发报文的方法流程图,应用于图1至图3所示的网路系统中的任一节点,如图4所示,该方法包括如下步骤:
步骤401:第一节点接收报文,第一节点为第一域内的任一节点,第一域为网络中的多个域中的任一域。
其中,第一域为图1至图3所示的网络系统中的任一域,第一节点可以为第一域内的任一节点。
在图1至图3所示的网络系统中,为了提高节点转发报文的效率,可以预先通过SR技术在网络入口处部署报文的转发路径,以便于后续各个节点在接收到报文之后,直接按照预先部署的转发路径转发给报文。因此,第一节点在接收到待转发的报文时,可以按照预先部署的转发路径确定报文的下一跳节点,然后将该报文转发给确定的下一跳节点。
第一节点在将该报文转发给确定的下一跳节点之后,如果第一节点与下一跳节点之间的链路发生故障,第一节点将无法将该报文成功转发至下一跳节点。此时,为了能够继续实现报文的转发,在本申请实施例中,第一节点可以通过下述步骤402和503重新确定该报文的转发路径。
步骤402:第一节点获取第一域内各个节点的一个或多个邻居关系,第一域内的边界节点的一个或多个邻居关系包括边界节点在第二域内的邻居关系,第二域为除第一域之外的域。
在图1至图3任一所示的网络系统中,任意两个节点之间具有邻居关系时,这两个节点之间才可转发报文,因此,为了重新确定报文的转发路径,第一节点需要获取第一域内每个节点的邻居关系,以便于通过下述步骤402重新确定转发路径。
在本申请实施例中,为了能够实现某个域内的节点能够跨域确定转发路径,第一节点获取的第一域内的边界节点的一个或多个邻居关系中包括边界节点在第二域内的邻居关系,第二域为除第一域之外的域,如此,第一节点便可结合第二域内的节点来确定转发路径,避免了在当前所在域内没有备份路径时报文无法转发的问题。
其中,第一域内的边界节点可以预先获取自身在第二域内的邻居关系,然后将自身在第二域内的邻居关系通过邻居关系TLV在第一域内发布,如此,第一域内的节点便可获悉到第一域内的边界节点在第二域内的邻居关系。第一域内的边界节点在第一域内发布自身在第二域内的邻居关系将在下述实施例中详细说明,在此先不展开阐述。
步骤403:第一节点根据第一域内各个节点的一个或多个邻居关系,确定报文的转发路径,按照确定的转发路径转发报文。
第一节点在确定出第一域内的各个节点的邻居关系之后,便可根据第一域内每个节点的邻居关系,确定报文的转发路径。后续将根据不同的场景对步骤403展开详细解释,在此就先不阐述。
在本申请实施例中,为了能够实现某个域内的节点能够跨域确定转发路径,第一节点获取的第一域内的边界节点的邻居关系包括边界节点在第二域内的邻居关系,第二域为除第一域之外的域,如此,第一节点便可结合第二域内的节点来确定转发路径,避免了在当前所在域内没有备份路径时报文无法转发的问题。
图4所示的实施例可以应用于在第一节点与下一跳节点之间的链路发生故障,第一节点无法将该报文成功转发至下一跳节点的场景中,还可以应用到第一节点建立跨域的TE隧道的场景中,下述图5和图8所示的实施例分别用于对这两个场景下的报文转发过程进行详细解释说明。
另外,本申请实施例提供的转发报文的方法可以应用于SR-BE技术,也可以应用于SR-TE技术,当然,还可以应用通过其他技术转发报文的场景中,对此不做具体限定。下述实施例分别以SR-BE场景和SR-TE场景为例来说明本申请实施例提供的转发报文的方法。当本申请实施例提供的报文转发方法应用于通过其他技术转发报文的场景时,同样可以参考下述实施例实现本申请实施例提供的报文转发方法。
图5是本申请实施例提供的另一种转发报文的方法流程图,应用于图1至图3所示的网络系统中的任一节点,也即是,可以以应用于SR-BE技术,也可以应用于SR-TE技术,当然,还可以应用通过其他技术转发报文的场景中。在本申请实施例中,可以通过虚拟邻居的方式来指示第一域内的边界节点在第二域内的邻居关系,虚拟邻居是指第一节点通过第二域内的邻居关系建立的邻居,如此当第一节点与下一跳节点之间的链路出现故障时,便可根据该虚拟邻居确定其他可行的备份路径。下面对该实现方式进行详细解释说明。如图5所示,该方法包括如下步骤:
步骤501:第一节点接收报文,第一节点为第一域内的任一节点,第一域为网络中的多个域中的任一域。
步骤501的实现方式可以参考图4所示的实施例中的步骤401的实现方式,在此就不再赘述。
对于网络系统中的任一节点,该节点可以预先通过邻居关系TLV在当前所在域内发布自身的邻居关系。该邻居关系TLV可以为类型-长度-值(tag-length-value,TLV)TLV22。在本申请实施例中,为了能够实现通过虚拟邻居的方式来指示第一域内的边界节点在第二域内的邻居关系,对邻居关系TLV进行了修改,下面以TLV22为例解释说明对邻居关系TLV进行了哪些修改,其他类型的邻居关系TLV均可以参考TLV22进行修改,以实现本申请实施例提供的报文转发方法。
图6是本申请实施例提供的一种TLV22的格式示意图。如图6所示,该TLV22包括TLV类型(TLV Type)、TLV长度(TLV Length)、邻居标识(Neighbour ID)、代价值(Metric)、子TLV长度(SubTLV Length)以及预留的可选子TLV(Optional SubTLV)等字段。
邻居标识用于指示与该节点存在邻居关系的节点。在本申请实施例中,可以通过邻居标识来指示邻居是虚拟邻居还是当前所在域内的正常邻居。在一种可能的实现方式中,对于任一节点,如果该节点发布的TLV22中的邻居关系为虚拟邻居关系,可以将邻居标识设置为自身的标识,并从预留的可选子TLV中选择一个子TLV来携带虚拟邻居的相关信息。为了后续便于说明,将用于携带虚拟邻居的相关信息的子TLV称为虚拟邻居子TLV,或者SR虚拟邻居子TLV(SR Virtual-Adj SID sub TLV)。
如果该节点发布的TLV22中的邻居关系为正常的邻居关系,则可以直接将邻居标识设置为与该节点存在邻居关系的其他节点的标识,并通过代价值字段来指示该邻居关系的路由开销。
也即是,在本申请实施例中,可以通过节点发布的TLV22中的邻居标识是否是该节点自身来确定TLV22中指示的邻居是虚拟邻居还是所在域内的正常邻居。
需要说明的是,还可以通过其它方式指示当前的邻居是虚拟邻居还是所在域内的正常邻居。比如,可以将邻居标识设置为特定数值假设为0时用于指示当前的邻居为虚拟邻居。或者,通过TLV22中的其他字段来指示当前的邻居是虚拟邻居还是所在域内的正常邻居,本申请实施例对此不做具体限定。
图7是本申请实施例提供的一种虚拟邻居子TLV的格式示意图。如图7所示,该虚拟邻居子TLV包括类型(Type)、长度(Length)、控制位(Flags)、权重(Weight)、绑定的路径标签的段标识(Binding SID)以及邻居标识(Neighbor SID)等字段。
其中,对于任一节点,该节点发布的TLV22中的虚拟邻居子TLV中的邻居标识用于指示任一节点对应的虚拟邻居的标识,虚拟邻居子TLV中的绑定的路径标签的段标识用于指示任一节点通过第二域到达虚拟邻居的路径。
由于本申请实施例提供的转发报文的方法可以应用于通过SR-BE技术确定转发报文的场景中,也可以应用于通过SR-TE技术转发报文的场景中,而不同的场景中第一节点通过第二域达到虚拟邻居的路径的方式不同。因此,为了便于第一节点后续能够快速确定该虚拟邻居子TLV携带的路径标签能够用于确定转发路径,还可以在虚拟邻居子TLV中配置虚拟邻居功能指示信息,通过该虚拟邻居功能指示信息来指示该虚拟邻居子TLV携带的路径标签适用于哪种场景。
在一种可能的实现方式中,该虚拟邻居功能指示信息携带在虚拟邻居子TLV的控制位字段中。如图7所示,可以将虚拟邻居子TLV中的控制位的第一个比特位(0比特位)和第二个比特位(1比特位)标记为R比特位和T比特位,通过这两个比特位来配置虚拟邻居功能指示信息。具体地,如果R比特位置位,则表明虚拟邻居子TLV携带的路径标签用于基于SR-BE技术转发报文的场景中。如果T比特位置位,则表明虚拟邻居子TLV携带的路径标签用于基于SR-TE技术转发报文的场景中。因此,第一节点在发布TLV22时,可以根据上述配置设置R比特位和T比特位上的比特值,以实现通过控制位来指示该虚拟邻居子TLV携带的路径标签适用于哪种场景。
需要说明的是,也可以通过控制位的其他比特位来配置虚拟邻居功能指示信息。或者,也可以通过虚拟邻居子TLV中的其他字段来配置虚拟邻居功能指示信息。本申请实施例对此不做具体限定。
在对邻居关系TLV进行上述扩展之后,对于任一的第一域,第一域内的边界节点便可预先确定自身在第二域内的邻居关系,然后通过邻居关系TLV在第一域内的发布该邻居关系,以实现第一域的其他节点能够获知边界节点在第二域内的邻居关系。
比如,对于图1所示的网络系统,假设步骤501中的第一域为图1中的域2,第二域为图1中的域1。第二域(也即是域1)内的边界节点ASG1,该边界节点ASG1可以先通过第二域内的相关资源,比如链路状态数据库(Link State Database,LSDB),确定到ASG2的路径为ASG1→CSG2→CSG1→CSG3→ASG2,然后根据确定的路径生成TLV22。并在第一域(也即是域2)内发布该TLV22。其中,发布的TLV22中的邻居标识即为节点ASG1的标识,此时,表明TLV22用于发布ASG1的一个虚拟邻居。其中,TLV22中的虚拟邻居子TLV中携带的邻居标识为ASG2,虚拟邻居子TLV中携带的路径标签用于指示的路径为:ASG1→CSG2→CSG1→CSG3→ASG2。显然,节点ASG1和节点ASG2之间的邻居关系是通过第二域内的节点构建的,因此,第一域内的节点P1可以将节点ASG2作为节点ASG1的虚拟邻居。
又比如,对于图2所示的网络系统,假设步骤501中的第一域为图1中的域1,第二域为图1中的域2。对于第二域(也即是域2)内的节点ASG,可以先通过第二域(也即是域2)内的相关资源,比如LSDB,确定到RSG的路径为ASG→RSG,此时确定的路径为一条TE隧道。然后根据确定的路径生成TLV22。并在第一域(也即是域1)内发布该TLV22。其中,发布的TLV22中的邻居标识即为节点ASG的标识,此时,表明TLV22用于发布ASG的一个虚拟邻居。其中,TLV22中的虚拟邻居子TLV中携带的邻居标识为RSG,虚拟邻居子TLV中携带的路径标签用于指示的路径为:ASG→RSG。显然,节点ASG和节点RSG之间的邻居关系是通过第二域(也即是域2)内的TE隧道构建的,因此,第一域内的节点CSG可以将节点RSG作为节点ASG的虚拟邻居。
基于上述对邻居关系TLV的修改,第一节点便可通过下述步骤502至步骤504来获取第一域内的各个节点的邻居关系。
另外,如图7所示,当虚拟邻居子TLV中的控制位中的T比特位置位时,也即是,当虚拟邻居子TLV携带的路径标签用于基于SR-TE技术转发报文的场景时,虚拟邻居子TLV中还可以包括邻居的标签交换路由器的标识(Neighbor Label Switched RouterIdentification,Neighbor LSR-ID)字段。该邻居的标签交换路由器的标识字段用于标识该虚拟邻居的IP,在基于SR-TE技术转发报文的场景中,需要确定该虚邻居的NeighborLSR-ID,然后判断该虚拟邻居的Neighbor LSR-ID是否是隧道的目的IP,如果是,表明该虚拟邻居即为报文的目的节点,此时便可则停止执行继定该虚拟邻居的下一跳节点的操作,也即是停止确定路径。
步骤502:在第一节点与该报文中指示的下一跳节点之间的链路出现故障的情况下,对于第一域内的各个节点中的第二节点,从第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居标识,第二节点为各个节点中的任一节点。
在SRv6技术中,报文的报文头已经部署有路由策略,用于指示报文经过的各个节点。因此,当第一节点接收到该报文时,便可从该报文的报文头中确定下一跳节点,然后将该报文转发至该报文中指示的下一跳节点。在第一节点与该报文中指示的下一跳节点之间的链路出现故障的情况下,第一节点便可通过步骤502至步骤505确定一条备份路径,以保证该报文能够成功转发至目的节点。
基于步骤501可知,由于邻居关系TLV中的邻居标识可以用于指示当前的邻居是虚拟邻居还是所在域内的正常节点,因此,对于第一域内的任一节点,当第一节点需要获取该节点的邻居关系时,第一节点需先获取该节点发布的邻居关系TLV中的邻居标识。
此外,由于同一节点预先可能发布有多个邻居关系TLV,也即是,对于第二节点,可能存在多个邻居关系TLV,因此,需要从第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,然后获取选择的邻居关系TLV中的邻居标识,以便于通过下述步骤503和步骤504确定当前选择的邻居关系TLV中指示的邻居关系。对于第二节点的其他邻居关系TLV均可参考前述方式确定邻居关系。
步骤503:在选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从选择的邻居关系TLV中获取虚拟邻居子TLV,根据虚拟邻居子TLV携带的邻居标识和路径标签确定第二节点的一个邻居关系。
其中,虚拟邻居子TLV携带邻居标识和路径标签,虚拟邻居子TLV携带的邻居标识用于指示第二节点对应的虚拟邻居的标识,虚拟邻居子TLV携带的路径标签用于指示第二节点到达虚拟邻居的路径,第二节点达到虚拟邻居的路径是通过第二域内的链路资源构建的。
在一种可能的实现方式中,如果通过节点发布的邻居关系TLV中的邻居标识是否是该节点自身来确定邻居关系TLV中指示的邻居是虚拟邻居还是所在域内的正常节点。此时,步骤503的实现过程可以为:如果邻居关系TLV中携带的邻居标识与任一节点的标识相同,则确定邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,如果预先设置通过邻居关系TLV中的其他字段来确定邻居关系TLV中指示的邻居是虚拟邻居还是所在域内的正常邻居,同样可以参考上述方式来确定在什么情况下需要获取虚拟邻居子TLV。
另外,当通过虚拟邻居子TLV中的虚拟邻居功能指示信息来指示该虚拟邻居子TLV携带的路径标签适用于哪种场景时,第一节点从邻居关系TLV中获取虚拟邻居子TLV后,从虚拟邻居子TLV中获取虚拟邻居功能指示信息。假设当前处于基于SR-BE技术转发报文的场景中,如果虚拟邻居功能指示信息指示虚拟邻居用于基于SR-BE技术转发报文的场景中,则执行根据虚拟邻居子TLV携带的邻居标识和路径标签确定任一节点的邻居关系的步骤。如果虚拟邻居功能指示信息指示虚拟邻居不是用于基于SR-BE技术转发报文的场景中,则不能基于该邻居关系确定转发路径,因此,第一节点将舍弃该节点的这个邻居关系。
或者,假设当前处于基于SR-TE技术转发报文的场景中,如果虚拟邻居功能指示信息指示虚拟邻居用于基于SR-TE技术转发报文的场景中,则执行根据虚拟邻居子TLV携带的邻居标识和路径标签确定任一节点的邻居关系的步骤。相应地,如果虚拟邻居功能指示信息指示虚拟邻居不是用于基于SR-TE技术转发报文的场景中,则不能基于该邻居关系确定转发路径,因此,第一节点将舍弃该节点的这个邻居关系。
比如,如果虚拟邻居子TLV的控制位中的R比特位置位,则确定该虚拟邻居用于基于SR-BE技术转发报文的场景中,如果当前恰好处于基于SR-BE技术转发报文的场景中,则将该节点的这个邻居关系用于下一步确定转发路径中。否则,则不能将该节点的这个邻居关系用于下一步确定转发路径中。
又比如,如果虚拟邻居子TLV的控制位中的T比特位置位,则确定该虚拟邻居用于基于SR-TE技术转发报文的场景中,如果当前恰好处于基于SR-TE技术转发报文的场景中,则将该节点的这个邻居关系用于下一步确定转发路径中。否则,则不能将该节点的这个邻居关系用于下一步确定转发路径中。
步骤504:在选择的邻居关系TLV中携带的邻居标识指示一个正常邻居的情况下,根据选择的邻居关系TLV确定第二节点的一个邻居关系。
其中,正常邻居是指通过第一域内的链路资源与第二节点构建路径的节点。
在一种可能的实现方式中,如果通过节点发布的邻居关系TLV中的邻居标识是否是该节点自身来确定邻居关系TLV中指示的邻居是虚拟邻居还是所在域内的正常节点。此时,步骤504的实现过程可以为:如果邻居关系TLV中携带的邻居标识与发布该邻居关系TLV的节点的标识不相同,则确定邻居关系TLV中携带的邻居标识指示一个正常邻居。
可选地,如果预先设置通过邻居关系TLV中的其他字段来确定邻居关系TLV中指示的邻居是虚拟邻居还是所在域内的正常邻居,同样可以参考上述方式来确定邻居关系。
比如,对于图1所示的网络系统,假设第一节点为P1,当P1与接收到的报文中指示的下一跳节点RSG1之间的链路出现故障时,P1可以获取第一域(也即是域2)中的各个节点的邻居关系。下面以获取第一域内ASG1、P2、RSG2以及RSG1的邻居关系为例说明P1如何确定第一域内的各个节点的邻居关系。
基于步骤501可知,节点ASG1预先发布有两个TLV22。一个TLV22中的邻居标识即为节点ASG1的标识,此时,表明该TLV22用于发布ASG1的一个虚拟邻居。其中,该TLV22中的虚拟邻居子TLV中携带的邻居标识为ASG2,虚拟邻居子TLV中携带的路径标签用于指示的路径为:ASG1→CSG2→CSG1→CSG3→ASG2。显然,节点ASG1和节点ASG2之间的邻居关系是通过第二域内的节点构建的,因此,节点P1根据该TLV22可以将节点ASG2作为节点ASG1的虚拟邻居。
节点ASG1发布的另一个TLV22中的邻居标识即为节点P1,表明该TLV22用于发布ASG2的一个正常邻居P1。因此,节点P1可以根据该TLV22可以将节点P1作为节点ASG1的一个正常邻居。
此外,节点P2可以预先发布两个TLV22,一个TLV22中的邻居标识为节点ASG2,另一个TLV22中的邻居标识为节点RSG2。节点RSG2可以预先发布两个TLV22,一个TLV22中的邻居标识为节点P2,另一个TLV22中的邻居标识为节点RSG1。节点RSG1可以预先发布两个TLV22,一个TLV22中的邻居标识为节点P1,另一个TLV22中的邻居标识为节点RSG2。节点P1同样可以按照上述各个TLV22确定出第一域(也即图1中的域2)内的各个节点的邻居关系。
又比如,对于图2所示的网络系统,假设第一节点为CSG,CSG可以获取第一域(也即是域1)中的各个节点的邻居关系。图2所示的网络系统中第一域中除了CSG之外只有一个ASG。该节点ASG预先发布的一个TLV22中的邻居标识即为节点ASG的标识,此时,表明TLV22用于发布ASG的一个虚拟邻居。其中,TLV22中的虚拟邻居子TLV中携带的邻居标识为RSG,虚拟邻居子TLV中携带的路径标签用于指示的路径为:ASG→RSG。显然,节点ASG和节点RSG之间的邻居关系是通过第二域内的隧道构建的,因此,第一域内的节点CSG可以将节点RSG作为节点ASG的虚拟邻居。
步骤505:第一节点根据第一域内各个节点的一个或多个邻居关系,确定报文的转发路径,按照确定的转发路径转发报文。
在一种可能的实现方式中,步骤505的实现过程可以为:从第一节点开始,第一节点依次执行根据当前节点的邻居关系,确定转发路径中的下一跳节点的步骤,直至确定出的下一跳节点为报文的目的节点。第一节点、以及确定的各个下一跳节点构成的路径即为该报文的转发路径。
上述第一节点从当前节点的一个或多个邻居关系中确定到达目的节点的最优邻居关系的实现方式可以为;在当前节点为边界节点、最优邻居关系为当前节点在第二域内的邻居关系、且当前节点到最优邻居关系所指示的节点之间的路径具有单向可达性的情况下,将最优邻居关系所指示的节点确定为当前节点的下一跳节点。
在本申请实施例中,对于第一域的任意两个节点,通常需要这两个节点之间具有双向可达性之后,方可建立一个节点到另一个节点的路径。节点A和节点B之间具有双向可达性是指,节点A发布有到节点B的邻居关系,节点B也发布有到节点A的邻居关系。但是对于基于虚拟邻居的邻居关系,通常是在当前链路出现故障时才重新确定转发路径,此时并不需要其具有双向可达性,可以仅仅在具有单向可达性之后可便可基于该邻居关系确定转发路径,从而提高了重新确定转发路径的效率。
另外,对于第一节点、以及确定的各个下一跳节点中除边界节点之外的其他节点,确定其他节点与其他节点的邻居关系中指示的节点之间的双向可达性,如果其他节点与其他节点的邻居关系中指示的节点之间具有双向可达性,则将其他节点的邻居关系中指示的节点确定为其他节点的下一跳节点。
当然,对于第一节点、以及确定的各个下一跳节点中除边界节点之外的其他节点,也可以在仅仅具有单向可达性之后可便可基于该邻居关系确定转发路径,从而提高了重新确定转发路径的效率。本申请实施例对此不做具体限定。
可选地,对于第一节点、以及确定的各个下一跳节点中的任一节点,也可以在该节点与该节点的邻居关系中指示的节点之间具有双向可达性时,将该节点的邻居关系中指示的节点确定为该节点的下一跳节点。也即是,不管该节点的邻居为正常的邻居还是虚拟邻居,均在检查该节点与该节点的邻居之间具有双向可达性之后将该该节点的邻居确定为该节点的下一跳节点。
此外,第一节点从当前节点的一个或多个邻居关系中确定到达目的节点的最优邻居关系的实现方式可以为:确定这一个或多个邻居关系中每个邻居关系的代价值,从这一个或多个邻居关系中选择代价值最小的邻居关系。关于代价值已经在前述介绍TLV22的相关内容中进行了解释说明,在此不再重复说明。
此外,在步骤505中,由于第一节点与该报文中指示的下一跳节点之间的链路发生了故障,因此,第一节点在确定自身的下一跳节点时需要排除该报文中指示的下一跳节点,以保证最终确定的路径能够成功用于转发该报文。
上述图5所示的实施例是通过虚拟邻居子TLV的方式来指示第一域内的边界节点在第二域内的邻居关系,以便于第一节点能够结合第二域内的链路资源来确定转发路径,避免了在当前所在域内没有备份路径时报文无法转发的问题。而在基于SR-TE技术转发报文的场景中,各个节点还可以通过邻居关系TLV中的邻居子TLV(Adj-SID Sub TLV)发布邻居关系。对于图6所示的邻居关系TLV,该邻居子TLV可以通过一个或多个可选子TLV中的一个来实现(图6中未示出)。也即是,在基于SR-TE技术转发报文的场景中,邻居关系TLV中原本就携带一个邻居子TLV,该邻居子TLV用于指示所在域内的邻居关系。因此,在本申请实施例中,在基于SR-TE技术转发报文的场景中,还可以直接对邻居关系TLV中的邻居子TLV进行重新配置,以使邻居子TLV在能够携带本域内的邻居关系的功能上,还能够携带跨域的邻居关系,以便于第一域内的节点能够建立到第二域内的节点之间的隧道,也即是建立跨域的隧道。下面对该实现方式进行详细解释说明。
图8是本申请实施例提供的另一种转发报文的方法流程图,应用于图2所示的网络系统中的任一节点。如图8所示,该方法包括如下步骤:
步骤801:第一节点接收报文,第一节点为第一域内的任一节点,第一域为网络中的多个域中的任一域。
步骤801的实现方式可以参考图4实施例中的步骤401的实现方式,在此不再详细阐述。
在本申请实施例中,在基于SR-TE技术转发报文的场景中,为了能够建立跨域的隧道,对于第二域内的任一节点,首先允许该节点在第一域内发布的邻居关系TLV中的邻居标识可以指示第二域内的邻居,并对邻居关系TLV中的邻居子TLV进行了扩展,以使邻居子TLV能够携带该节点与该邻居之间的邻居关系。
也即是,对于图8所示的实施例,对于第二节点在第一域内发布的邻居关系TLV,该邻居关系TLV中的邻居标可以直接指示第二节点的一个邻居,该邻居可以为与第一节点处于同一域内的邻居,也可以为与第一节点没有处于同一域内的邻居。而不是像图4所示的实施例那样,通过邻居关系TLV中的邻居标识来指示邻居是否是跨域的邻居。
比如,对于图2所示的网络系统,对于节点ASG,ASG可以创建到RSG的SR-TE隧道,该SR-TE隧道可以通过第二域内的LSDB确定。然后ASG针对该SR-TE隧道配置邻居关系(Forwarding Adjacency,FA)。其中,配置邻居关系是指生成包括邻居子TLV的邻居关系TLV,并将邻居关系TLV中的邻居标识设置为RSG,然后发布该邻居关系TLV,以便于第一域内的CSG可以通过下述步骤802至步骤803基于该邻居关系确定到达RSG的转发路径。
另外,由于该邻居关系通常是用于链路出现故障时确定备份路径时所需,因此,在确定转发路径时通常无需两个节点之间具有双向可达性才能建立路径,因此,还可以对邻居关系TLV中的邻居子TLV进行修改,以使第一节点在基于邻居子TLV确定转发路径时只需检查单向可达性满足之后即可确认路径。
比如,对于图2所示的网络系统,ASG在生成用于指示到达RSG的TE隧道的邻居子TLV之后,如果当前是在域1内发布携带该邻居子TLV的邻居关系TLV,ASG可以将邻居子TLV中的控制位中的O比特位置位,以便于后续域1内的节点CSG在获取到该邻居关系时,只需检查单向可达性满足之后即可确认路径。
另外,邻居关系子TLV中会根据跨域的邻居关系的配置按需携带其他一个或多个子TLV,这一个或多个子TLV用于描述该跨域的邻居关系的一些属性。比如,最大链路带宽、最大预留带宽、未预留带宽以及TE隧道代价值等属性。其中,这其他的一个或多个子TLV可以通过TLV22中的子TLV9/10/11/18来实现。
比如,当邻居关系TLV为图6所示的TLV22时,该TLV22中的邻居标识用于指示发布该TLV22的节点的一个邻居,该TLV22还包括邻居子TLV,该邻居子TLV可以图6所示的可选的子TLV中的一个(图6中未示出)。图9是本申请实施例提供的一种邻居子TLV的格式示意图。如图9所示,该邻居子TLV包括类型、长度、控制位、权重以及SID/标签(Label)/索引(Index)等字段。SID/标签/索引字段用于指示建立的跨域的隧道的标签,也即是,该SID/标签/索引字段用于指示发布邻居关系TLV的节点与该邻居关系TLV中的邻居标识所指示的节点之间的隧道。控制位中的O比特位用于指示建立隧道时只需检查单向可达性。
另外,图9所示的控制位中的F、B、V、L、S、P为协议中已经定义的比特位。其中,F比特位是地址族标志,如果F比特位未置位,代表IPv4;如果F比特位置位,代表IPv6。B比特位是备份标志,如果B比特位置位,Adj-SID(在本实施例中是指TLV22中的邻居标识)用于保护其他节点。V比特位是Value标志,如果V比特位置位,则Adj-SID携带标签值Value,缺省置位。L:Local标志。如果置位,表示Adj-SID携带的Value/Index具有本地意义,缺省置位。S比特位是序列标志,如果S比特位置位,表示Adj-SID是一个Adjacency序列。P比特位是指永久标志。如果P比特位置位,表示Adj-SID是一个永久分配的SID,无论设备重启或接口震荡该SID都不变化。关于控制位中这几个比特位的详细功能说明,可以参考相关协议,在此不再一一解释说明。
另外,步骤802:对于第一域内的各个节点中第二节点,从第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居子TLV,邻居子TLV用于指示第二节点到第三节点的邻居关系,第三节点为第一域或第二域中的节点,第二节点为第一域内的各个节点中的任一节点。
基于上述对邻居关系TLV的修改可知,在基于SR-TE技术转发报文的场景中,可以通过邻居关系TLV中邻居标识确定一个邻居,通过邻居关系TLV中的邻居子TLV确定达到邻居的转发路径。因此,对于任一的第二节点的一个或多个邻居关系TLV中的每个邻居关系TLV,第一节点需先从该邻居关系TLV中获取邻居子TLV。
对于图2所示的网络系统,假设第一节点为CSG,当前CSG需要创建到RSG的路径,此时,CSG需先获取ASG发布的邻居关系TLV。ASG发布的邻居关系TLV中邻居标识用于指示RSG,也即是,此时第三节点为RSG。该邻居关系TLV中的邻居子TLV包括的SID/标签/索引字段用于指示ASG到RSG的隧道。
步骤803:第一节点根据第一域内各个节点的一个或多个邻居关系,确定报文的转发路径,按照确定的转发路径转发报文。
比如,对于图2所示的网络系统,假设第一节点为CSG,当前CSG需要创建到RSG的路径,此时,CSG先基于和ASG之间的邻居关系,创建到ASG的TE隧道,然后通过ASG和RSG之间的邻居关系,创建ASG到RSG的TE隧道。
并且CSG在创建ASG到RSG的TE隧道时,由于ASG发布的邻居关系TLV中的邻居子TLV中的控制位的O比特位置位了,因此只需检查ASG到RSG的单向可达性即可。
图10是本申请实施例提供的一种第一节点的装置示意图,如图10所示,第一节点1000包括:
接收模块1001,用于接收报文,第一节点为第一域内的任一节点,第一域为网络中的多个域中的任一域;
获取模块1002,用于获取第一域内各个节点的一个或多个邻居关系,第一域内的边界节点的一个或多个邻居关系包括边界节点在第二域内的邻居关系,第二域为除第一域之外的域;
确定模块1003,用于根据第一域内各个节点的一个或多个邻居关系,确定到达报文的目的节点的转发路径;
转发模块1004,用于按照确定的转发路径转发报文。
可选地,前述获取模块,具体用于:
对于各个节点中的第二节点,从第二节点的一个或多个邻居关系类型-长度-值TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居标识,第二节点为各个节点中的任一节点;
在选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从选择的邻居关系TLV中获取虚拟邻居子TLV,虚拟邻居子TLV携带邻居标识和路径标签,虚拟邻居子TLV携带的邻居标识用于指示第二节点对应的虚拟邻居的标识,虚拟邻居子TLV携带的路径标签用于指示第二节点到达虚拟邻居的路径,第二节点达到虚拟邻居的路径是通过第二域内的链路资源构建的;
根据虚拟邻居子TLV携带的邻居标识和路径标签确定第二节点的一个邻居关系。
可选地,在选择的邻居关系TLV中携带的邻居标识与第二节点的标识相同的情况下,选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,前述获取模块,还具体用于:在选择的邻居关系TLV中携带的邻居标识指示一个正常邻居的情况下,根据选择的邻居关系TLV确定第二节点的一个邻居关系,正常邻居是指通过第一域内的链路资源与第二节点构建路径的节点。
可选地,在选择的邻居关系TLV中携带的邻居标识与第二节点的标识不相同的情况下,选择的邻居关系TLV中携带的邻居标识指示一个正常邻居。
可选地,前述获取模块,还具体用于:
从虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在虚拟邻居功能指示信息指示虚拟邻居用于基于分段路由最优路径SR-BE技术转发报文的场景中,且当前处于基于SR-BE技术转发报文的场景的情况下,执行根据虚拟邻居子TLV携带的邻居标识和路径标签确定第二节点的一个邻居关系的步骤。
可选地,前述获取模块,还具体用于:
从虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在虚拟邻居功能指示信息指示虚拟邻居用于基于分段路由流程工程SR-TE技术转发报文的场景中,且当前处于基于SR-TE技术转发报文的场景的情况下,执行根据虚拟邻居子TLV携带的邻居标识和路径标签确定第二节点的一个邻居关系的步骤。
可选地,虚拟邻居功能指示信息携带在虚拟邻居子TLV的控制位字段中。
可选地,前述获取模块,还具体用于:
对于各个节点中第二节点,从第二节点的一个或多个邻居关系TLV中选择一个邻居关系TLV,获取选择的邻居关系TLV中的邻居子TLV,邻居子TLV用于指示第二节点到第三节点的邻居关系,第三节点为第一域或第二域中的节点,第二节点为各个节点中的任一节点。
可选地,前述确定模块,还具体用于:
从第一节点开始,第一节点依次执行根据当前节点的一个或多个邻居关系,确定当前节点的下一跳节点的步骤,直至确定出的下一跳节点为报文的目的节点时,得到报文的转发路径。
可选地,前述获取模块,还具体用于:
从当前节点的一个或多个邻居关系中确定到达目的节点的最优邻居关系;
在当前节点为边界节点、最优邻居关系为当前节点在第二域内的邻居关系、且当前节点到最优邻居关系所指示的节点之间的路径具有单向可达性的情况下,将最优邻居关系所指示的节点确定为当前节点的下一跳节点。
可选地,前述获取模块,还具体用于:
在第一节点与报文中指示的下一跳节点之间的链路有故障的情况下,获取第一域内各个节点的一个或多个邻居关系。
在本申请实施例中,为了实现某个域内的节点能够跨域确定转发路径,第一节点获取的第一域内的边界节点的邻居关系包括边界节点在第二域内的邻居关系,该第二域为除第一域之外的域,如此,第一节点便可结合边界节点在第二域内的邻居关系来确定转发路径,也即是,第一节点在确定转发路径时可以利用除了第一域内的链路资源之外的其他域内的链路资源,从而避免了在当前所在域内没有备份路径时报文无法转发的问题,从而提高了报文转发的成功率。
需要说明的是:上述实施例提供的第一节点在转发报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的第一节点与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11是本申请实施例提供的一种边界节点的装置示意图,该边界节点为第一域和第二域之间的边界节点,如图11所示,该边界节1100点包括:
确定模块1101,用于确定邻居关系TLV,邻居关系TLV用于指示边界节点在第二域内的邻居关系;
发布模块1102,用于在第一域内发布邻居关系TLV。
可选地,在邻居关系TLV携带的的邻居标识指示一个虚拟邻居的情况下,邻居关系TLV包括虚拟邻居子TLV,虚拟邻居子TLV携带邻居标识和路径标签,虚拟邻居子TLV携带的邻居标识用于指示边界节点对应的虚拟邻居的标识,虚拟邻居子TLV携带的路径标签用于指示边界节点到达虚拟邻居的路径,边界节点达到虚拟邻居的路径是通过第二域内的链路资源构建的。
可选地,在邻居关系TLV中携带的邻居标识与边界节点的标识相同的情况下,邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
可选地,邻居关系TLV包括邻居子TLV,邻居子TLV用于指示边界节点到第三节点的邻居关系,第三节点为第一域或第二域中的节点。
在本申请实施例中,为了实现某个域内的节点能够跨域确定转发路径,第一域和第二域之间的边界节点可以确定用于指示边界节点在第二域内的邻居关系的邻居关系TLV,并在第一域内发布该邻居关系TLV。如此,第一域内的第一节点便可接收该邻居关系TLV,以便于后续第一节点可以结合边界节点在第二域内的邻居关系来确定转发路径,也即是,第一节点在确定转发路径时可以利用除了第一域内的链路资源之外的其他域内的链路资源,从而避免了在当前所在域内没有备份路径时报文无法转发的问题,从而提高了报文转发的成功率。
需要说明的是:上述实施例提供的边界节点在转发报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的边界节点与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图12是本发明实施例提供的一种计算机设备的结构示意图。上述实施例的网络系统中的任一节点均可以通过图12所示的计算机设备来实现。参见图12,该计算机设备包括至少一个处理器1201,通信总线1202、存储器1203以及至少一个通信接口1204。
处理器1201可以是一个通用中央处理器(central processing unit,CPU)、特定应用集成电路(application-specific integrated circuit,ASIC)或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线1202可包括一通路,在上述组件之间传送信息。
存储器1203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1203可以是独立存在,通过通信总线1202与处理器1201相连接。存储器1203也可以和处理器1201集成在一起。
其中,存储器1203用于存储执行本申请方案的程序代码,并由处理器1201来控制执行。处理器1201用于执行存储器1203中存储的程序代码。程序代码中可以包括一个或多个软件模块,前述实施例中任一节点可以通过处理器1201以及存储器1203中的程序代码中的一个或多个软件模块,来确定用于开发应用的数据。
通信接口1204,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radio access networkRAN),无线局域网(wireless local areanetworks,WLAN)等。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器,例如图12中所示的处理器1201和处理器1205。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digitalsubscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如:固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种转发报文的方法,其特征在于,所述方法包括:
第一节点接收报文,所述第一节点为第一域内的任一节点,所述第一域为网络中的多个域中的任一域;
所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,所述第一域内的边界节点的一个或多个邻居关系包括所述边界节点在第二域内的邻居关系,所述第二域为除所述第一域之外的域;
所述第一节点根据所述第一域内各个节点的一个或多个邻居关系,确定到达所述报文的目的节点的转发路径;
所述第一节点按照确定的转发路径转发所述报文;
其中,所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,包括:
对于所述各个节点中的第二节点,从所述第二节点的一个或多个邻居关系类型-长度-值TLV中选择一个邻居关系TLV,所述第二节点为所述各个节点中的边界节点;
从选择的邻居关系TLV中的虚拟邻居子TLV或邻居子Adj-SID Sub TLV中确定所述第二节点在所述第二域内的邻居关系;
其中,所述从选择的邻居关系TLV中的虚拟邻居子TLV或邻居子Adj-SID Sub TLV中确定所述第二节点在所述第二域内的邻居关系,包括:
获取选择的邻居关系TLV中的邻居标识;
在所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从所述选择的邻居关系TLV中获取虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述第二节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述第二节点到达所述虚拟邻居的路径,所述第二节点到达所述虚拟邻居的路径是通过所述第二域内的链路资源构建的;
根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系;或者
其中,所述从选择的邻居关系TLV中的虚拟邻居子TLV或邻居子Adj-SID Sub TLV中确定所述第二节点在所述第二域内的邻居关系,包括:
获取选择的邻居关系TLV中的邻居子Adj-SID Sub TLV,所述邻居子Adj-SID Sub TLV用于指示所述第二节点到第三节点的邻居关系,所述第三节点为所述第二域中的节点。
2.如权利要求1所述的方法,其特征在于,在所述选择的邻居关系TLV中携带的邻居标识与所述第二节点的标识相同的情况下,所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居。
3.如权利要求1所述的方法,其特征在于,所述获取选择的邻居关系TLV中的邻居标识之后,还包括:在所述选择的邻居关系TLV中携带的邻居标识指示一个正常邻居的情况下,根据所述选择的邻居关系TLV确定所述第二节点的一个邻居关系,所述正常邻居是指通过所述第一域内的链路资源与所述第二节点构建路径的节点。
4.如权利要求3所述的方法,其特征在于,在所述选择的邻居关系TLV中携带的邻居标识与所述第二节点的标识不相同的情况下,所述选择的邻居关系TLV中携带的邻居标识指示一个正常邻居。
5.如权利要求1所述的方法,其特征在于,所述从所述选择的邻居关系TLV中获取虚拟邻居子TLV之后,还包括:
从所述虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在所述虚拟邻居功能指示信息指示所述虚拟邻居用于基于分段路由最优路径SR-BE技术转发报文的场景中,且当前处于基于SR-BE技术转发报文的场景的情况下,执行根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系的步骤。
6.如权利要求1所述的方法,其特征在于,所述从所述选择的邻居关系TLV中获取虚拟邻居子TLV之后,还包括:
从所述虚拟邻居子TLV中获取虚拟邻居功能指示信息;
在所述虚拟邻居功能指示信息指示所述虚拟邻居用于基于分段路由流程工程SR-TE技术转发报文的场景中,且当前处于基于SR-TE技术转发报文的场景的情况下,执行根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系的步骤。
7.如权利要求5或6所述的方法,其特征在于,所述虚拟邻居功能指示信息携带在所述虚拟邻居子TLV的控制位字段中。
8.如权利要求1至6任一所述的方法,其特征在于,所述第一节点根据所述第一域内各个节点的一个或多个邻居关系,确定所述报文的转发路径,包括:
从所述第一节点开始,所述第一节点依次执行根据当前节点的一个或多个邻居关系,确定所述当前节点的下一跳节点的步骤,直至确定出的下一跳节点为所述报文的目的节点时,得到所述报文的转发路径。
9.如权利要求8所述的方法,其特征在于,所述根据当前节点的一个或多个邻居关系,确定所述当前节点的下一跳节点,包括:
从所述当前节点的一个或多个邻居关系中确定到达所述目的节点的最优邻居关系;
在所述当前节点为边界节点、所述最优邻居关系为所述当前节点在所述第二域内的邻居关系、且所述当前节点到所述最优邻居关系所指示的节点之间的路径具有单向可达性的情况下,将所述最优邻居关系所指示的节点确定为所述当前节点的下一跳节点。
10.如权利要求1至6任一所述的方法,其特征在于,所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,包括:
在所述第一节点与所述报文中指示的下一跳节点之间的链路有故障的情况下,获取所述第一域内各个节点的一个或多个邻居关系。
11.一种通信网络中的第一节点,其特征在于,所述第一节点为第一域内的任一节点,所述第一域为网络中的多个域中的任一域,所述第一节点包括存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器中存储的计算机程序以执行下述转发报文的方法:
接收报文;
获取所述第一域内各个节点的一个或多个邻居关系,所述第一域内的边界节点的一个或多个邻居关系包括所述边界节点在第二域内的邻居关系,所述第二域为除所述第一域之外的域;
根据所述第一域内各个节点的一个或多个邻居关系,确定到达所述报文的目的节点的转发路径;
按照确定的转发路径转发所述报文;
其中,所述第一节点获取所述第一域内各个节点的一个或多个邻居关系,包括:
对于所述各个节点中的第二节点,从所述第二节点的一个或多个邻居关系类型-长度-值TLV中选择一个邻居关系TLV,所述第二节点为所述各个节点中的任一节点;
从选择的邻居关系TLV中的虚拟邻居子TLV或邻居子Adj-SID Sub TLV中确定所述第二节点在所述第二域内的邻居关系;
其中,所述从选择的邻居关系TLV中的虚拟邻居子TLV或邻居子Adj-SID Sub TLV中确定所述第二节点在所述第二域内的邻居关系,包括:
获取选择的邻居关系TLV中的邻居标识;
在所述选择的邻居关系TLV中携带的邻居标识指示一个虚拟邻居的情况下,从所述选择的邻居关系TLV中获取虚拟邻居子TLV,所述虚拟邻居子TLV携带邻居标识和路径标签,所述虚拟邻居子TLV携带的邻居标识用于指示所述第二节点对应的虚拟邻居的标识,所述虚拟邻居子TLV携带的路径标签用于指示所述第二节点到达所述虚拟邻居的路径,所述第二节点到达所述虚拟邻居的路径是通过所述第二域内的链路资源构建的;
根据所述虚拟邻居子TLV携带的邻居标识和路径标签确定所述第二节点的一个邻居关系;或者
其中,所述从选择的邻居关系TLV中的虚拟邻居子TLV或邻居子Adj-SID Sub TLV中确定所述第二节点在所述第二域内的邻居关系,包括:
获取选择的邻居关系TLV中的邻居子Adj-SID Sub TLV,所述邻居子Adj-SID Sub TLV用于指示所述第二节点到第三节点的邻居关系,所述第三节点为所述第二域中的节点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911005235.9A CN112702263B (zh) | 2019-10-22 | 2019-10-22 | 转发报文的方法及装置 |
PCT/CN2020/117228 WO2021077972A1 (zh) | 2019-10-22 | 2020-09-23 | 转发报文的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911005235.9A CN112702263B (zh) | 2019-10-22 | 2019-10-22 | 转发报文的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112702263A CN112702263A (zh) | 2021-04-23 |
CN112702263B true CN112702263B (zh) | 2023-12-19 |
Family
ID=75504749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911005235.9A Active CN112702263B (zh) | 2019-10-22 | 2019-10-22 | 转发报文的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112702263B (zh) |
WO (1) | WO2021077972A1 (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101517998A (zh) * | 2006-11-09 | 2009-08-26 | 华为技术有限公司 | 一种通告自治系统边界连接信息的方法和边界节点 |
CN102264009A (zh) * | 2010-05-28 | 2011-11-30 | 华为技术有限公司 | 虚拟路径获取方法、相关装置及网络系统 |
CN103023774A (zh) * | 2012-11-30 | 2013-04-03 | 中兴通讯股份有限公司 | 多域路由计算方法及装置、路径计算单元及路由网络 |
CN105791457A (zh) * | 2016-02-26 | 2016-07-20 | 杭州华三通信技术有限公司 | 一种数据处理方法及装置 |
CN107689915A (zh) * | 2016-08-04 | 2018-02-13 | 中兴通讯股份有限公司 | 报文转发方法及装置 |
CN108574628A (zh) * | 2017-03-13 | 2018-09-25 | 中兴通讯股份有限公司 | 域级拓扑的建立方法及装置、系统 |
CN108768856A (zh) * | 2018-05-31 | 2018-11-06 | 新华三技术有限公司 | 一种路由处理方法和装置 |
CN109802888A (zh) * | 2017-11-16 | 2019-05-24 | 中兴通讯股份有限公司 | 一种基于任播地址保护的方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404216A (zh) * | 2011-11-23 | 2012-04-04 | 华为技术有限公司 | 一种trill网络保护的方法、路由桥和系统 |
US10080205B2 (en) * | 2015-07-06 | 2018-09-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for determining synchronisation references |
US9942145B2 (en) * | 2015-07-20 | 2018-04-10 | Cisco Technology, Inc. | Attribute SET_ID in border gateway protocol |
CN109525423B (zh) * | 2018-11-06 | 2021-06-15 | 深圳市风云实业有限公司 | 自动组网方法、装置和计算机设备 |
-
2019
- 2019-10-22 CN CN201911005235.9A patent/CN112702263B/zh active Active
-
2020
- 2020-09-23 WO PCT/CN2020/117228 patent/WO2021077972A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101517998A (zh) * | 2006-11-09 | 2009-08-26 | 华为技术有限公司 | 一种通告自治系统边界连接信息的方法和边界节点 |
CN102264009A (zh) * | 2010-05-28 | 2011-11-30 | 华为技术有限公司 | 虚拟路径获取方法、相关装置及网络系统 |
CN103023774A (zh) * | 2012-11-30 | 2013-04-03 | 中兴通讯股份有限公司 | 多域路由计算方法及装置、路径计算单元及路由网络 |
CN105791457A (zh) * | 2016-02-26 | 2016-07-20 | 杭州华三通信技术有限公司 | 一种数据处理方法及装置 |
CN107689915A (zh) * | 2016-08-04 | 2018-02-13 | 中兴通讯股份有限公司 | 报文转发方法及装置 |
CN108574628A (zh) * | 2017-03-13 | 2018-09-25 | 中兴通讯股份有限公司 | 域级拓扑的建立方法及装置、系统 |
CN109802888A (zh) * | 2017-11-16 | 2019-05-24 | 中兴通讯股份有限公司 | 一种基于任播地址保护的方法及装置 |
CN108768856A (zh) * | 2018-05-31 | 2018-11-06 | 新华三技术有限公司 | 一种路由处理方法和装置 |
Non-Patent Citations (3)
Title |
---|
S. Previdi ; Huawei Technologies ; K. Talaulikar, Ed. ; C. Filsfils ; Cisco Systems, Inc. ; H. Gredler ; RtBrick Inc. ; M. Chen ; Huawei Technologies ; .BGP Link-State extensions for Segment Routingdraft-ietf-idr-bgp-ls-segment-routing-ext-12.IETF .2019, * |
S. Previdi ; Huawei Technologies ; K. Talaulikar, Ed. ; C. Filsfils ; Cisco Systems, Inc. ; H. Gredler ; RtBrick Inc. ; M. Chen ; Huawei Technologies ; .BGP Link-State extensions for Segment Routingdraft-ietf-idr-bgp-ls-segment-routing-ext-12.IETF .2019,参见第1页,以及第2.1、2.2、2.3、3.1节. * |
S. Previdi ; Huawei Technologies ; K. Talaulikar, Ed. ; C. Filsfils ; Cisco Systems, Inc. ; H. Gredler ; RtBrick Inc. ; M. Chen ; Huawei Technologies ; .BGP Link-State extensions for Segment Routingdraft-ietf-idr-bgp-ls-segment-routing-ext-12.IETF .2019,第1页,以及第2.1、2.2、2.3、3.1节. * |
Also Published As
Publication number | Publication date |
---|---|
WO2021077972A1 (zh) | 2021-04-29 |
CN112702263A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10432427B2 (en) | Border gateway protocol for communication among software defined network controllers | |
CN108574616B (zh) | 一种处理路由的方法、设备及系统 | |
CN105991437B (zh) | 报文转发处理方法、装置、控制器及路由转发设备 | |
EP3629530B9 (en) | Method and device for achieving bidirectional segment routing tunnel and storage medium | |
CN113259238B (zh) | 分段标识的处理方法及设备 | |
CN102724117A (zh) | 多协议标签交换流量工程隧道建立方法及设备 | |
US20230300070A1 (en) | Packet Sending Method, Device, and System | |
CN113839870B (zh) | 路径创建方法、装置及系统 | |
CN110324225B (zh) | 一种处理报文的方法及装置 | |
EP4167506A1 (en) | In-situ flow detection method and related device | |
EP4099648A1 (en) | Method for processing segment id, and apparatus | |
WO2022110535A1 (zh) | 一种报文发送方法、设备及系统 | |
CN113328936A (zh) | 路由控制方法、系统、装置及计算机可读存储介质 | |
CN116827855A (zh) | 一种通告网络设备处理能力的方法、设备和系统 | |
CN113765800B (zh) | 传输报文的方法、装置、系统、设备及可读存储介质 | |
US11489768B2 (en) | Method for creating inter-domain bidirectional tunnel, communication method and device, and storage medium | |
CN111277426B (zh) | 一种ioam信息的处理方法和装置 | |
CN112702263B (zh) | 转发报文的方法及装置 | |
CN114726780A (zh) | 一种云上到云下的通信方法、设备及存储介质 | |
CN111435948B (zh) | 一种在网络中传输报文的方法及网络设备 | |
CN114629834B (zh) | 通信方法及装置 | |
CN113872843B (zh) | 一种路由生成方法、路由处理方法及装置 | |
US20240056392A1 (en) | Communication method and apparatus | |
CN117014357A (zh) | 发送路由的方法、装置及存储介质 | |
CN116170250A (zh) | 路由通告方法、spe、网络设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |