一种报文封装方法、报文转发方法及装置与流程

文档序号:26911211发布日期:2021-10-09 15:09阅读:105来源:国知局
一种报文封装方法、报文转发方法及装置与流程

1.本说明书涉及技术领域,尤其涉及一种报文封装方法、报文转发方法及装置。


背景技术:

2.sr(segment routing,段路由)采用源节点路径选择机制,预先在源节点封装好路径所要经过段的sid(segment identifier,段标识),当报文经过sr节点时,该sr节点根据报文的sid对报文进行转发。除源节点外,其它节点无需维护路径状态。srv6是指在ipv6网络中使用sr、将ipv6地址作为sid对报文进行转发。
3.srv6以其采用原生ip地址作为数据面,天然支持跨域、等价路由、兼容非srv6节点的优势,成为未来的网络必然技术选择,而srv6

policy又以其结合控制器,实现流量工程隧道的优势,成为主流技术选择之一,但srv6

policy的实现,也存在一些问题。


技术实现要素:

4.为克服相关技术中存在的问题,本说明书提供了一种报文封装方法、报文转发方法及装置。
5.根据本说明书实施例的第一方面,提供一种报文封装方法,应用于段路接收段路由策略,所述段路由策略中携带有尾节点的地址信息;
6.接收业务报文;
7.根据业务报文查找私网路由表,确定业务报文对应的私网路由标签;
8.若根据段路由策略确定所述报文需要通过基于ipv6的段路由sr隧道模式的隧道接口进行转发,则为所述业务报文封装srh头;
9.其中,所述srh头中携带的尾节点的地址信息为所述私网路由标签。
10.可选的,所述方法还包括:
11.确定段路由策略对应的尾节点,向所述尾节点发送bfd报文。
12.可选的,所述方法还包括:
13.若根据所述bfd报文确定所述尾节点发生故障,则根据备份路径更新业务报文待封装的srh头。
14.根据本说明书实施例的第二方面,提供一种报文转发方法,应用于段路由sr节点,所述sr节点被配置为倒数第二跳弹出模式,所述方法包括:
15.接收ipv6报文;
16.若确定自身为倒数第二跳节点,则解封装srh头,并将外层ipv6头中的目的地址更改为srh头中尾节点的段标识sid,其中,所述srh头中携带的尾节点的段标识sid为ipv6内层业务报文对应的私网路由标签;
17.根据所述私网路由标签将解封装后的报文转发至与所述私网路由标签同网段的尾节点。
18.可选的,第二方面提供的方法还包括:接收目的地址为尾节点的bfd报文,其中,该
bfd报文的目的地址是根据段路由策略中的尾节点信息生成的。
19.根据本说明书实施例的第三方面,提供一种报文封装装置,应用于sr节点,所述装置所在的网络中的sr节点被配置为倒数第二跳弹出模式,所述装置包括:第一接收模块、第一封装模块、第一查找模块;
20.其中,第一接收模块,用于接收段路由策略,所述段路由策略中携带有尾节点的地址信息;
21.所述第一接收模块还用于接收业务报文;
22.第一查找模块,用于根据业务报文查找私网路由表,确定业务报文对应的私网路由标签;
23.第一封装模块,用于若第一查找模块根据段路由策略确定所述报文需要通过基于ipv6的段路由sr隧道模式的隧道接口进行转发,则第一封装模块为所述业务报文封装srh头;
24.其中,所述srh头中携带的尾节点的地址信息为所述私网路由标签。
25.可选的,所述装置还包括:bfd模块,用于确定段路由策略对应的尾节点,向所述尾节点发送bfd报文。
26.可选的,所述第一封装模块还用于若根据所述bfd报文确定所述尾节点发生故障,则根据备份路径更新业务报文待封装的srh头。
27.根据本说明书实施例的第四方面,提供一种报文转发装置,应用于sr节点,所述装置所在的网络中sr节点被配置为倒数第二跳弹出模式,所述装置包括:第二接收模块、第二封装模块、转发模块;
28.第二接收模块,接收ipv6报文;
29.第二封装模块用于若确定自身为倒数第二跳节点,则解封装srh头,并将外层ipv6头中的目的地址更改为srh头中尾节点的段标识sid,其中,所述srh头中携带的尾节点的段标识sid为ipv6内层业务报文对应的私网路由标签;
30.转发模块用于根据所述私网路由标签将解封装后的报文转发至与所述私网路由标签同网段的尾节点。
31.可选的,所述第二接收模块还用于接收目的地址为尾节点的bfd报文,其中,该bfd报文的目的地址是根据段路由策略中的尾节点信息生成的。
32.本说明书的实施例提供的技术方案可以包括以下有益效果:
33.本说明书一实施例提供了一种报文封装方法,在该方法中,可以在倒数第二跳节点被配置为倒数第二跳弹出模式(psp,penultimate segment pop of the srh)的情况下,在段路由策略中指定尾节点,并通过确定私网路由标签,将原来段路由策略的尾节点的地址信息替换为私网路由标签,从而可以在后续的bfd探测中根据段路由策略中携带的尾节点的地址,感知尾节点是否发生故障。一般来说,倒数第二条弹出模式一般是整个路径上都会获知该配置,即首节点会获知到倒数第二条节点工作于psp模式下。
34.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
35.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
36.图1是本说明书提供的在倒数第一跳弹出模式下报文转发的示意图;
37.图2是本说明书提供的在倒数第二跳弹出模式下报文转发的示意图;
38.图3是本说明书提供的报文封装方法的流程示意图;
39.图4是本说明书提供的封装srh头的报文的示意图;
40.图5是本说明书实施例提供的bfd检测方法的流程示意图;
41.图6是本说明书实施例提供的报文转发方法的流程示意图;
42.图7是本说明书实施例提供的报文封装装置的结构示意图;
43.图8是本说明书实施例提供的报文转发装置的结构示意图;
44.图9是本说明书另一实施例提供的网络架构示意图。
具体实施方式
45.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
46.在相关技术中,图1示出了一种网络架构,其中,当ce发送报文至ce2时,报文的源ip地址sa为10.1.1.1,目的ip地址da为10.2.2.2,当报文到达首节点pe1时,pe1会将报文引流至srv6

policy,封装srh(segment routing header,段路由报文头),在srh中有两个关键信息,一个是ipv6地址形式的segment list(段列表),segment list进行有序排列,就构成了srv6里的显式路径;另外一个关键字段是segment left(sl),segment left是一个指针,它指示当前活跃的segment list。segment left的最小取值是0,最大取值是segment list的个数减1。segment list是逆序压栈的。如图1所示,pe1为原始报文封装的segment list包括3个sid,分别为表示为segment list[2]=2:1::1,segment list[1]=3:1::1,segment list[0]=3:1::100,那么随着封装srh头的报文在p节点、pe2节点的转发,最下面的segment list[2]是第一个在pe1上处理的segment list,中间的segment list[1]是第二个在p设备上处理的,上面的segment list[0]是最后在pe2上被处理的。当报文到达pe2时,首先pe2更新目的ip地址da为segment list[0]指向的地址,并修改sl值,当识别到接收到的报文的sl=1并且目的ip地址da为自己,则对报文进行ipv6报文头和srh的解封装,并查找ipv4 vpn(virtual private network,虚拟专用网络)实例路由表转发至ce2。
[0047]
图1示出的,在尾节点pe2进行解封装的方式,需要同时完成目的地址的更新,sl

1的动作、查表转发等,对于pe2来说压力很大,实现也比较复杂。
[0048]
还有一种实现方式是,在倒数第二跳对ipv6报文头以及srh进行解封装,在尾节点pe2进行查表转发,这样可以降低单个节点的压力。
[0049]
但是这种方式,在某些场景下会存在一些问题。图2示出了一种网络架构的示意图,该网络架构中,在pe2和ce2之间存在多条路径,如图2所示,首结点部署路径的时候,由于是倒数第二跳弹出,因此配置srv6

policy的路径只能指定到倒数第二跳的p节点,不能
指定到pe2节点,首节点pe1配置的srv6

policy只能指定了pe1至p两跳节点构成的转发路径,pe1设备再根据bgp协议分别再将尾节点pe2和pe3的vpn sid迭代到srh中进行封装。
[0050]
sbfd(seamless bidirectional forwarding detection,无缝双向转发检测)配合srv6

policy是检测的srv6

polcy的隧道可达性,也就是只能检测到pe1到p节点是否虽然可达,sbfd感知不到pe2和pe3的故障,也就是说,如果pe2节点故障,那么首节点pe1是无法感到其故障的,依然还会继续同时封装pe2和pe3的vpn sid信息,导致封装pe2的vpn sid的报文均丢包。
[0051]
本说明书一实施例提供了一种报文封装方法,在该方法中,可以在倒数第二跳节点被配置为倒数第二跳弹出模式(psp,penultimate segment pop of the srh)的情况下,在段路由策略中指定尾节点,并通过确定私网路由标签,将原来段路由策略的尾节点的地址信息替换为私网路由标签,从而可以在后续的bfd探测中根据段路由策略中携带的尾节点的地址,感知尾节点是否发生故障。一般来说,倒数第二条弹出模式一般是整个路径上都会获知该配置,即首节点会获知到倒数第二条节点工作于psp模式下。
[0052]
图3示出了本实施例提供的报文封装方法的流程示意图,本实施例提供的方法可以应用srv6组网内的首节点,当然也可以应用于任意的sr节点。如图3所示,本实施例提供的报文封装方法,包括:
[0053]
步骤101,接收段路由策略,所述段路由策略中携带有尾节点的地址信息。
[0054]
其中,段路由策略sr

policy中指定了进入sr隧道之后经过的网络设备。在段路由流量工程中,段路由策略指定的路径首个经过的节点,本实施例中称为首节点,经过的最后一个节点本实施例中称为尾节点。
[0055]
以图4所示的网络架构为例,以pe1为首节点,pe2为段路由策略对应的尾节点为例进行说明。段路由策略可以通过命令行的方式手工创建,也可以通过控制器下发、或者也可以通过路由学习自动计算得到。
[0056]
步骤103,接收业务报文。
[0057]
步骤105,根据业务报文查找私网路由表,确定业务报文对应的私网路由标签。
[0058]
pe1接收到报文之后,根据报文到达pe1的接口以及目的地址查找对应的vpn实例的路由表项,找到对应的私网路由标签。
[0059]
该私网路由标签可以作为sid在步骤107中封装至srh头中。
[0060]
步骤107,若根据段路由策略确定所述报文需要通过基于ipv6的段路由sr隧道模式的隧道接口进行转发,则为所述业务报文封装srh头,其中,该srh头中携带的尾节点的地址信息为所述私网路由标签。
[0061]
其中,如果业务报文的特征与段路由策略匹配,则该业务报文被引流至ipv6 sr隧道转发。具体的采用业务报文的何种特征进行引流,可以采用现有技术的任意方式,本实施例中不再详细赘述。
[0062]
pe1在为业务报文封装外层ipv6报文头之后,将封装后的报文转发至下一跳节点。
[0063]
图4示出了本实施例中提供的封装了srh头的报文示意图。srh中封装了pe2的私网路由标签,vpn sid 3:1::100。
[0064]
此外,需要说明的是,本实施例提供的方法中,步骤101、步骤102、步骤103的执行顺序并不加以限定,只要保证步骤101

步骤103在步骤104之前即可。
[0065]
本实施例提供的报文封装方法中,将原本段路由策略中指定的尾节点的地址信息更换为尾节点的私网路由标签,做到了既可以在段路由策略中指定尾节点的地址信息,又可以使得封装的srh头在倒数第二跳节点被弹出,减轻了尾节点的压力。同时,私网路由标签与尾节点的网段地址属于同一网段,因此倒数第二跳节点根据私网路由标签完全可以将报文转发至尾节点。
[0066]
实施例二
[0067]
在上述实施例提供的报文封装方法的基础上,本实施例还提供一种bfd检测方法,图5示出了该方法的流程示意图,如图5所示,该方法包括:
[0068]
步骤101,接收段路由策略,所述段路由策略中携带有尾节点的地址信息;
[0069]
步骤103,接收业务报文;
[0070]
步骤105,根据业务报文查找私网路由表,确定业务报文对应的私网路由标签;
[0071]
步骤107,若根据段路由策略确定所述报文需要通过基于ipv6的段路由sr隧道模式的隧道接口进行转发,则为所述业务报文封装srh头;
[0072]
其中,所述srh头中携带的尾节点的地址信息为所述私网路由标签。
[0073]
步骤109,确定段路由策略对应的尾节点,向所述尾节点发送bfd报文。
[0074]
其中步骤101

步骤107与上述实施例一种类似,本实施例中不再赘述。
[0075]
由于本实施例提供的方法中,在倒数第二跳节点被配置为倒数第二跳弹出模式的基础上,由于在段路由策略中携带了尾节点的地址信息(现有技术在倒数第二跳弹出的模式下,在sr policy中不指定尾节点的地址信息),因此,在进行bfd检测时,可以根据段路由策略中的尾节点信息,向尾节点发送bfd报文,从而实现了在倒数第二跳弹出模式的场景下,依然可以检测到尾节点是否故障。
[0076]
在上述实施例的基础上,本实施例提供的方法中,若当前节点确定尾节点发生故障,则根据备份路径更新业务报文待封装的srh头。
[0077]
备份路径对应的网络设备的地址信息可以根据bgp(border gateway protocol,边界网关协议)获取到,因此当检测到主路径故障时,例如若首节点检测到图4中的pe1故障,那么可以通过bgp协议获取到的备份路径对应的网络设备pe3的地址信息,从而首节点根据pe3的地址信息更新为业务报文封装的srh头。具体的,即将原来封装srh头中的pe2的地址信息替换为pe3的地址。
[0078]
当然,本实施例中的主路径仅仅以p与ce2之间存在pe2一台设备为例进行说明,但是在实际的组网环境中,p与ce2之间可能存在多台网络设备。
[0079]
实施例三
[0080]
在上述实施例的基础上,本实施例还提供一种报文转发方法,该方法可以应用于段路由sr节点,sr节点被配置为倒数第二跳弹出模式,图6为本实施例提供的报文转发方法的流程示意图,如图6所示,该报文转发方法包括:
[0081]
步骤601,接收ipv6报文;
[0082]
这里的ipv6报文封装有srh头以及ipv6外层头。
[0083]
步骤603,若确定自身为倒数第二跳节点,则解封装srh头,将外层ipv6头中的目的地址更改为srh头中尾节点的段标识sid,其中,所述srh头中携带的尾节点的段标识sid为ipv6内层业务报文对应的私网路由标签;
[0084]
在倒数第二跳弹出模式的情况下,如果接收ipv6报文的sr节点为倒数第二跳节点,则解封装srh头。
[0085]
在将外层ipv6头中的目的地址更改为srh头中尾节点的段标识sid的过程中,需要将外层ipv6头的目的地址更改为srh头中尾节点的sid,该sid具体的就是ipv6报文中内层业务报文对应的私网路由标签。具体的,私网路由标签可以是首节点根据内层业务报文到达首节点的接口和目的地址查找对应的vpn实例的路由表项确定的私网路由标签。例如该私网路由标签可以为图4中示出的vpn sid 3:1::100。
[0086]
步骤607,根据私网路由标签将解封装后的报文转发至与私网路由标签同网段的尾节点。
[0087]
私网路由标签一般与尾节点的网段相同,因此报文可以被转发至尾节点。
[0088]
在上述实施例的基础上,该方法还包括:sr节点还可以接收目的地址为尾节点的bfd报文。其中,该bfd报文的目的地址是根据段路由策略中的尾节点信息生成的。
[0089]
本实施例提供的方法中,在进行bfd检测时,可以根据段路由策略中的尾节点信息,向尾节点发送bfd报文,从而实现了在倒数第二跳弹出模式的场景下,依然可以检测到尾节点是否故障。
[0090]
实施例四
[0091]
在上述实施例一或二的基础上,本实施例还提供一种报文封装装置,该装置可以应用于sr节点,所述装置所在的网络中的sr节点被配置为倒数第二跳弹出模式,该装置可以用于执行上述实施例一或二所提供的报文封装方法。
[0092]
图7示出了一种报文检测装置的结构示意图,如图7所示,该报文封装装置,所述装置包括:
[0093]
第一接收模块701、第一封装模块702、第一查找模块703;
[0094]
其中,第一接收模块701,用于接收段路由策略,所述段路由策略中携带有尾节点的地址信息;
[0095]
所述第一接收模块701还用于接收业务报文;
[0096]
第一查找模块703,用于根据业务报文查找私网路由表,确定业务报文对应的私网路由标签;
[0097]
第一封装模块702,用于若第一查找模块703根据段路由策略确定所述报文需要通过基于ipv6的段路由sr隧道模式的隧道接口进行转发,则第一封装模块702为所述业务报文封装srh头;其中,所述srh头中携带的尾节点的地址信息为所述私网路由标签。
[0098]
可选的,所述装置还包括:bfd模块(图中未示出),用于确定段路由策略对应的尾节点,向所述尾节点发送bfd报文。
[0099]
可选的,所述第一封装模块702还用于若根据所述bfd报文确定所述尾节点发生故障,则根据备份路径更新业务报文待封装的srh头。
[0100]
在上述实施例三的基础上,本实施例还提供一种报文转发装置,该装置可以应用于sr节点,该装置所在的网络中的sr节点被配置为倒数第二跳弹出模式,图8示出了本实施例提供的报文转发装置的结构示意图,如图8所示,该装置包括:第二接收模块801、第二封装模块802、转发模块803;
[0101]
第二接收模块801,接收ipv6报文;
[0102]
第二封装模块802用于若确定自身为倒数第二跳节点,则解封装srh头,并将外层ipv6头中的目的地址更改为srh头中尾节点的段标识sid,其中,所述srh头中携带的尾节点的段标识sid为ipv6内层业务报文对应的私网路由标签;
[0103]
转发模块803用于根据所述私网路由标签将解封装后的报文转发至与所述私网路由标签同网段的尾节点。
[0104]
所述第二接收模块801还用于接收目的地址为尾节点的bfd报文,其中,该bfd报文的目的地址是根据段路由策略中的尾节点信息生成的。
[0105]
实施例五
[0106]
本实施例中还提供一种报文封装方法,图9示出了一种网络架构,在倒数第二跳节点p与倒数第一跳节点pe2之间还存在的路径,图9中以p设备与pe2设备之间还存在一个sr节点为例,其中,p设备与pe2之间的直连链路的end.x sid为2:1::10。end.x sid用于标识网络中的某条链路。
[0107]
那么可以在段路由策略中配置路径包括倒数第二跳节点与倒数第一跳节点之间的链路,例如段路由策略配置的路径为:pe1

>p

>pe2

>end.x,首节点在进行bfd检测时,通过判断倒数第二跳节点与倒数第一跳节点之间的end.x是否生效来判断尾节点pe2是否故障。
[0108]
但是这种方式中,只要end.x这条链路故障了,首节点pe1就会认为是尾节点pe2故障,但是实际上还有另外的sr节点可以到达pe2,检测方式可能不准确。并且这种bfd检测方式中end.x必须固定配置,而不能动态分配了。这种实现方式比较复杂。
[0109]
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0110]
在本公开所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0111]
另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0112]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前
述的可读存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1