一种分段路由报文转发方法、装置及预设逻辑电路单元与流程

文档序号:25032977发布日期:2021-05-11 17:03阅读:146来源:国知局
一种分段路由报文转发方法、装置及预设逻辑电路单元与流程

本发明涉及通信技术领域,特别是涉及一种分段路由报文转发方法、装置及预设逻辑电路单元。



背景技术:

分段路由(segmentrouting)技术被广泛应用于各种应用场景,如ipv6网络。在sr技术中,源分段路由节点在发送分段路由报文之前,可以预先将该分段路由报文需要经过的每个分段路由节点的分段标识(segmentidentifier,sid)封装于分段路由报文的报文头中,当分段路由报文经过分段路由节点时,分段路由节点中的网络处理器(networkprocessor,np)根据分段路由报文中的sid对分段路由报文进行转发。

由于sid被封装于分段路由报文的报文头中,因此np为获取sid需要对分段路由报文的报文头进行解析。而分段路由报文的报文头中除np所需要获取的sid以外,还包括其他信息,如np无需获取的sid、二层头信息、ipv6头信息等信息,因此分段路由报文的报文头的长度可能较长,而np的处理性能有限,因此np需要消耗较多时间才能够从报文头中解析得到所需要的sid,导致分段路由报文转发效率较低。



技术实现要素:

本发明实施例的目的在于提供一种分段路由报文转发方法、装置及预设逻辑电路单元,以实现提高分段路由报文转发效率。具体技术方案如下:

在本发明实施例的第一方面提供了一种分段路由报文转发方法,应用于分段路由节点的预设逻辑电路单元,所述分段路由节点还包括网络处理器np,所述方法包括:

获取待处理分段路由报文;

解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid;

将所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

接收所述np发送的报文修改指令,所述报文修改指令用于表示所述报文修改操作;

根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文;

按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

在一种可能的实施例中,所述待处理分段路由报文包括多个分段路由报文头srh;

所述解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid,包括:

针对所述待处理分段路由报文的每个srh,解析该srh得到该srh中所述np执行分段路由转发操作时所需的目标sid;

所述将所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作,包括:

将从每个srh中解析到的目标sid以及每个目标sid对应的属性信息发送至所述np,以使得所述np根据每个属性信息确定对应的目标sid所属srh,并根据接收到的每个目标sid及其所属srh确定执行分段路由转发操作时所需执行的报文修改操作。

在一种可能的实施例中,所述将从每个srh中解析到的目标sid以及每个目标sid对应的属性信息发送至所述np,包括:

构建解析报文,其中,所述解析报文中携带有从每个srh中解析到的目标sid及其对应的属性信息,并且各个目标sid按照预设顺序排列,并且每个属性信息用于表示位于对应顺位的目标sid所属的srh;

向所述np发送解析报文。

在一种可能的实施例中,所述属性信息用于表示从各srh中解析得到的目标sid的数目;

所述构建解析报文,包括:

依次针对所述待处理分段路由报文中的每个srh,将从该srh中解析得到的目标sid写入解析报文中的当前偏移位置,并将所述当前偏移位置偏移n个偏移长度,其中,所述当前偏移位置初始时为预设初始位置,n为从该srh中解析得到的目标sid的数目,所述偏移长度为单个所述目标sid的长度。

在一种可能的实施例中,所述针对所述待处理分段路由报文的每个srh,解析该srh得到该srh中所述np执行分段路由转发操作时所需的目标sid,包括:

针对所述待处理分段路由报文的每个srh,确定该srh中的剩余跳数sl是否为1;

如果所述sl为1,则解析该srh的sid列表中的第一个sid和第二个sid,作为目标sid;

如果所述sl不为1,则解析该srh的sid列表中的第sl+1个sid,作为目标sid。在本发明实施例提供的第二方面,提供了一分段路由报文转发方法,应用于分段路由节点的网络处理器np,所述分段路由节点还包括预设逻辑电路单元,所述方法包括:

接收所述预设逻辑电路单元发送的目标分段标识sid,其中,所述目标sid为所述预设逻辑电路单元对接收到的分段路由报文进行解析得到所述np执行分段路由转发操作时所需sid;

根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

向所述预设逻辑电路单元发送报文修改指令,所述报文修改指令用于表示所述报文修改操作,以使得所述预设逻辑电路单元根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文,并按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

在本发明实施例的第三方面,提供了一种分段路由报文转发装置,应用于分段路由节点的预设逻辑电路单元,所述分段路由节点还包括网络处理器np,所述装置包括:

报文获取模块,用于获取待处理分段路由报文;

sid解析模块,用于解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid;

第一发送模块,用于将所有所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

第一接收模块,用于接收所述np发送的报文修改指令,所述报文修改指令用于表示所述报文修改操作;

报文修改模块,用于根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文;

报文转发模块,用于按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

在一种可能的实施例中,所述待处理分段路由报文包括多个分段路由报文头srh;

所述sid解析模块解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid,包括:

针对所述待处理分段路由报文的每个srh,解析该srh得到该srh中所述np执行分段路由转发操作时所需的目标sid;

所述第一发送模块将所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作,包括:

将从每个srh中解析到的目标sid以及每个目标sid对应的属性信息发送至所述np,以使得所述np根据所述属性信息确定对应的目标sid所属srh,并根据接收到的每个目标sid及其所属srh确定执行分段路由转发操作时所需执行的报文修改操作。

在一种可能的实施例中,所述第一发送模块将从每个srh中解析到的所述目标sid以及每个所述目标sid对应的属性信息发送至所述np,包括:

构建解析报文,其中,所述解析报文中携带有从每个srh中解析到的目标sid及其对应的属性信息,并且各个目标sid按照预设顺序排列,并且每个属性信息用于表示对应顺位的目标sid所属的srh;

向所述np发送解析报文。

在一种可能的实施例中,所述属性信息用于表示从各srh中解析得到的目标sid的数目;

所述第一发送模块构建解析报文,包括:

依次针对所述待处理分段路由报文中的每个srh,将从该srh中解析得到的目标sid写入解析报文中的当前偏移位置,并将所述当前偏移位置偏移n个偏移长度,其中,所述当前偏移位置初始时为预设初始位置,n为从该srh中解析得到的目标sid的数目,所述偏移长度为单个所述目标sid的长度;

在一种可能的实施例中,所述sid解析模块针对所述待处理分段路由报文的每个srh,解析该srh得到该srh中所述np执行分段路由转发操作时所需的目标sid,包括:

针对所述待处理分段路由报文的每个srh,确定该srh中的剩余跳数sl是否为1;

如果所述sl为1,则解析该srh的sid列表中的第一个sid和第二个sid,作为目标sid;

如果所述sl不为1,则解析该srh的sid列表中的第sl+1个sid,作为目标sid。

在本发明实施例的第四方面,提供了一种分段路由报文转发装置,应用于分段路由节点的网络处理器np,所述分段路由节点还包括预设逻辑电路单元,所述装置包括:

第二接收模块,用于接收所述预设逻辑电路单元发送的目标分段标识sid,其中,所述目标sid为所述预设逻辑电路单元对接收到的分段路由报文进行解析得到所述np执行分段路由转发操作时所需sid;

操作确定模块,用于根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

第二发送模块,用于向所述预设逻辑电路单元发送报文修改指令,所述报文修改指令用于表示所述报文修改操作,以使得所述预设逻辑电路单元根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文,并按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

在本发明实施例的第五方面,提供了一种预设逻辑电路单元,设置于分段路由节点中,所述分段路由节点还包括网络处理器np,所述预设逻辑电路单元包括:

第一存储器,用于存放计算机程序;

第一处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法步骤。

在本发明实施例的第六方面,提供了一种网络处理器,设置于分段路由节点中,所述分段路由节点还包括预设逻辑电路单元,所述网络处理器包括:

第二存储器,用于存放计算机程序;

第二处理器,用于执行存储器上所存放的程序时,实现上述第二方面所述的方法步骤。

本发明实施例有益效果:

本发明实施例提供的分段路由报文转发方法,可以通过在分段路由节点中设置预设逻辑电路单元,并由预设逻辑电路单元代替np从分段路由报文中解析目标sid,并将目标sid发送至np,因此np在分段路由报文转发过程中只需解析包含目标sid在内的较少的信息,从而可以使得np能够快速确定出转发分段路由报文时所需执行的报文修改操作,并由预设逻辑电路单元根据np确定出的报文修改操作完成对待处理分段路由报文的修改并转发,该过程中np无需消耗较长时间从较长的报文头中解析目标sid,因此可以有效提高分段路由报文的转发效率。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为本发明实施例提供的srv6网络的一种结构示意图;

图2为本发明实施例提供的分段路由节点的一种结构示意图;

图3为本发明实施例提供的应用于预设逻辑电路单元的分段路由报文转发方法的一种流程示意图;

图4为本发明实施例提供的解析报文构建方法的一种流程示意图;

图5为本发明实施例提供的解析报文的一种结构示意图;

图6为本发明实施例提供的预设逻辑电路单元的报文处理流程的一种示意图;

图7为本发明实施例提供的应用于np的分段路由报文转发方法的一种流程示意图;

图8a为本发明实施例提供的pop报文的一种报文格式示意图;

图8b为本发明实施例提供的swap报文的一种报文格式示意图;

图8c为本发明实施例提供的push报文的一种报文格式示意图;

图9为本发明实施例提供的应用于预设逻辑电路单元的分段路由报文转发装置的一种结构示意图;

图10为本发明实施例提供的应用于np的分段路由报文转发装置的一种结构示意图;

图11为本发明实施例提供的预设逻辑电路单元的一种结构示意图;

图12为本发明实施例提供的网络处理器的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

为了更清楚的对本发明实施例提供的分段路由报文转发方法进行说明,下面将对本发明实施例提供的分段路由报文转发方法的应用场景进行示例性的说明。可以理解的是,以下示例仅是本发明实施例提供的分段路由报文转发方法的一种可能的应用场景,在其他可能的实施例中,本发明实施例提供的分段路由报文转发方法也可以应用场景中,以下示例对此不做任何限制。

随着5g带来的业务大发展,多种不同类型的业务融合承载的需求对承载网提出了不同的要求,因此sr技术成为实现为不同业务规划不同路径这一目的的关键技术。再加上ipv4地址的耗尽这一客观现实,业务和网络设备进行ipv6化成为必然的发展趋势,因此在ipv6网络中使用sr技术,将ipv6地址作为sid对报文进行转发成为未来业务的基础承载技术,下文中为描述方便,将使用sr技术的ipv6网络称为srv6网络,并将srv6网络中的分段路由报文称为srv6报文。

在srv6报文的报文封装格式中,原始三层数据报文的前面还包括ipv6基本头和srh(sigmentidentifierheader,分段路由报文头)。srh中包括以下参数:

nextheader:长度为8bits,用于标识下一个报文头的类型。

hdrextlen:长度为8bits,表示以8个字节为单位的srh头的长度。

routingtype:长度为8bits,用于表示路由类型,当其取值为4时表示路由类型为分段路由。

segmentsleft(剩余跳数,下文简称sl):长度为8bits,标识需要查看的下一个sid的编号,初始取值为m-1,m表示路由扩展头中sid的数目,每经过一个分段路由节点节点sl自减1。

lastentry:长度为8bits,srh头中报文实际转发路径的第一个sid的编号。

flags:长度为8bits,标志位信息。

tag:长度为16bits,用来标记具有相同特性的一组报文。

segmentlist:sid列表。按照报文转发路径上节点从远到近的顺序进行排列,即segmentlist[0]表示路径的最后一个sid,segmentlist[1]表示路径的倒数第二个sid,以此类推。

参见图1,图1所示为本发明实施例提供的srv6网络的一种结构示意图,其中包括网络设备a、网络设备b、网络设备c、网络设备d,为描述方便,下文中假设网络设备a的sid为a,网络设备b的sid为b,网络设备c的sid为c,网络设备d的sid为d,由于srv6网络中网络设备的sid为该网络设备的ipv6地址,因此a为网络设备a的ipv6地址,b为网络设备b的ipv6地址,c为网络设备c的ipv6地址,d为网络设备d的ipv6地址。下面将以网络设备a向网络设备d发送分段路由报文为例,对srv6报文的转发流程进行说明:

对于作为源分段路由节点的网络设备a,在收到原始的ipv6报文后,通过查找路由表判定该原始的ipv6报文需要以srv6报文的方式通过隧道进行转发,因此网络设备a可以为该原始的ipv6报文封装srh和ipv6头,得到第一srv6报文。

由于从作为源分段路由节点的网络设备a到作为目的分段路由节点的网络设备d的跳数为3,因此,第一srv6报文的srh中sl=2。封装的sid列表信息为segmentlist[0]=d、segmentlist[1]=c、segmentlist[2]=b,其中d为网络设备d的sid、c为网络设备c的sid、b为网络设备b的sid。

第一srv6报文的ipv6头中的源地址为网络设备a的地址,目的地址为sl指示的地址,由于此时sl=2,而segmentlist[2]对应的地址为网络设备b的地址,因此目的地址为网络设备b的地址。

在完成对ipv6报文的封装得到第一srv6报文后,网络设备a根据第一srv6报文的ipv6头中的目的地址查找路由表,根据查找得到的路由将第一srv6报文转发给网络设备b。

网络设备b在收到第一srv6报文后,确认第一srv6报文的ipv6头中的目的地址是否为自身地址,如果是自身的地址则需要执行srv6操作,对于需要执行srv6操作的网络设备,将检查srv6报文的srh中的sl值,并将sl值减1,同时查找segmentlist[sl]对应的地址。对于网络设备b,由于此时sl=1,因此查找到的地址为网络设备c的地址,因此网络设备b并使用网络设备c的地址替换第一srv6报文的ipv6头中的目的地址,得到第二srv6报文。网络设备b根据第二srv6报文的ipv6头中的目的地址查找路由表,根据查找得到的路由将第二srv6报文转发至网络设备c。

网络设备c在接收到第二srv6报文后的,确认第二srv6报文的ipv6头中目的地址是否为自身地址,如果是自身的地址则需要执行srv6操作。对于网络设备c,由于此时sl=0,因此查找到的地址为网络设备d的地址,因此网络设备c并使用网络设备d的地址替换第二srv6报文的ipv6头中的目的地址,得到第三srv6报文。网络设备c根据第三srv6报文的ipv6头中的目的地址查找路由表,根据查找得到的路由将第三srv6报文转发至网络设备d。

在网络设备d接收到网络设备c发送的第三srv6报文后,检查srh头中的sl值,此时sl=0,因此网络设备d对第三srv6报文进行解封装,删除第三srv6报文的报文头得到原始的ipv6报文,根据原始的ipv6报文的目的地址对原始的ipv6报文转发。

可见,在srv6报文的转发过程中网络设备需要从报文头中解析对应的sid,并根据解析得到的sid对报文进行修改,而srv6报文的报文头的长度往往较长,示例性的,假设sid列表中包括10个sid,每个sid的长度为16bits,并且假设报文头中二层头信息的长度为14bits,srh头中的其他信息的长度为8bits,ipv6头的长度为40bits。则srv6报文的报文头的长度为222bits。

由于网络设备中srv6报文的转发是由np完成的,受限制于np的性能,完成对该222bits的报文头的解析需要消耗较长时间,导致分段路由报文的转发效率较低。

基于此,本发明实施例提供的一种分段路由转发方法,应用于分段路由节点的预设逻辑电路单元,分段路由节点的结构可以如图2所示,包括预设逻辑电路单元201以及网络处理器202。

本发明实施例提供分段路由报文转发方法可以如图3所示,包括:

s301,获取待处理分段路由报文;

s302,解析待处理分段路由报文,得到np执行分段路由转发操作时所需的目标分段标识sid;

s303,将所有目标sid发送至np,以使得np根据目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

s304,接收np发送的报文修改指令,报文修改指令用于表示报文修改操作;

s305,根据报文修改指令所表示的报文修改操作,对待处理分段路由报文进行修改,得到修改后分段路由报文;

s306,按照修改后分段路由报文的目的地址,转发修改后分段路由报文。

选用该实施例,可以通过在分段路由节点中设置预设逻辑电路单元,并由预设逻辑电路单元代替np从分段路由报文中解析目标sid,并将目标sid发送至np,因此np在分段路由报文转发过程中只需解析包含目标sid在内的较少的信息,从而可以使得np能够快速确定出转发分段路由报文时所需执行的报文修改操作,并由预设逻辑电路单元根据np确定出的报文修改操作完成对待处理分段路由报文的修改并转发,该过程中np无需消耗较长时间从较长的报文头中解析目标sid,因此可以有效提高分段路由报文的转发效率。

其中,在s301中,分段路由节点接收到的报文可以是首先下发至预设逻辑电路单元,预设电路逻辑单元判断该报文是否为分段路由报文,如果该报文为分段路由报文,则将该报文作为待处理分段路由报文,并按照本发明实施例提供的分段路由报文转发方法对该报文进行转发。

如果该报文不为分段路由报文,则可以将该报文直接发送至np,由np进行处理。

在s302中,参见前述关于srv6网络以及srv6报文的相关说明,可以理解的是np在执行分段路由转发操作时并不会利用到srh中的所有sid,示例性的,对于前述示例中的网络设备b,在执行分段路由转发操作时需要确定sl所指示的sid是否表示自身,因此对于网络设备b,目标sid为b,而c、d并非目标sid。

可以理解的是,待处理分段路由报文中可能包括一个srh,也可能包括多个srh。对于只包括一个srh的场景,则可以是从该一个srh中解析目标sid,对于包括多个srh的场景,则可以是针对每个srh,解析该srh得到该srh中np执行分段路由转发操作时所需的目标sid。

在s303中,参见前述关于srv6网络以及srv6报文的相关说明,可以理解的是np在执行分段路由转发操作时可能需要对分段路由报文进行修改,示例性的,对于前述示例中的网络设备b,其需要将ipv6头中的目的地址修改为网络设备c的地址。

由于np并没有获取到待处理分段路由报文,因此np无法直接对待处理分段路由报文进行修改,而预设逻辑电路单元中没有预存路由表项,因此预设逻辑电路单元无法确定需要对待处理分段路由报文进行哪些修改。

因此,本发明实施例中由np确定需要执行的修改操作,而由接收到待处理分段路由报文的预设逻辑电路单元对待处理分段路由报文进行修改,从而实现对待处理分段路由报文进行准确的修改。

修改操作根据应用场景的不同可以不同,示例性的,在一种可能的实施例中修改操作可以包括swap操作、push操作以及pop操作,在其他可能的实施例中,也可以包括其他类型的修改操作,本实施例对此不做任何限制。其中,swap操作用于修改ipv6头中的目的地址,push操作用于为待处理分段路由报文添加新的srh,pop操作用于删除待处理分段路由报文的srh。

关于np如何确定需要对待处理分段路由报文进行何种修改操作,并非本申请的主要改进点,因此在此不再赘述。

在s305中,预设逻辑电路单元可以是通过对报文修改指令进行解析,从而确定报文修改指令所表示的修改操作,并对待处理分段路由报文执行这些修改操作。可以理解的是,在一些应用场景中也可能无需对待处理分段路由报文进行修改,在这些应用场景中,报文修改指令可以不表示任何修改操作,预设逻辑电路单元在接收到不表示任何修改操作的报文修改指令后,可以在不对待处理分段路由报文进行修改的情况下直接转发待处理分段路由报文。

报文修改指令的格式根据应用场景的不同可以不同,并且下文将对报文修改指令进行示例性的说明,因此在此不再赘述。

可以理解的是,对于前述待处理分段路由报文包括多个srh的场景,由于不同srh表示不同的分段路由,因此在对属于不同的srh中的sid进行处理时,np需要查询不同的路由表项。而在这些应用场景中,由于目标sid属于不同的srh,因此预设逻辑电路单元需要标识各目标sid所属的srh。

基于此,在一种可能的实施例中,可以是将目标sid以及目标sid对应的属性信息发送至np,从而使得np可以根据属性信息确定接收到的目标sid所属srh,并根据接收到的目标sid以及目标sid所属srh确定执行分段路由转发操作时所需执行的报文修改操作。其中,属性信息用于表示对应的目标sid所属srh。

示例性的,假设待处理分段路由报文中包含两个srh,分别记为srh1与srh2。并且假设目标sid包括第一sid、第二sid以及第三sid,则第一sid对应的属性信息可以用于表示第一sid属于srh1,第二sid对应的属性信息可以用于表示第二sid属于srh1,第三sid对应的属性信息可以用于表示第三sid属于srh2。

属性信息的表示形式根据应用场景的不同可以不同,示例性的,在一种可能的实施例中,属性信息中可以是以sid标识-srh标识对的形式表示的,其中,sid标识-srh标识对中包括一个用于标识sid的sid标识以及一个用于标识srh的srh标识,该sid标识-srh标识对用于表示该sid标识所标识的sid属于该srh标识所标识的srh。示例性的,假设第一sid的sid标识为0b01,srh1的srh标识为0c01,则第一sid对应的属性信息可以是以标识对0b01-0c01的形式表示的,该标识对表示第一sid属于srh1。

但是,该方案中需要需要使用两个标识才能够表示一个sid所属的srh,可能导致np需要处理的信息的长度过长,进而导致报文转发效率下降,以前述示例为例,假设每个标识的长度为8bits,则需要48bits才能够表示第一sid、第二sid以及第三sid所属的srh。

基于此,在另一种可能的实施例中,向np报文发送目标sid以及目标sid对应的属性信息的方式可以是构建解析报文,解析报文中携带有从每个srh中解析到的目标sid及其对应的属性信息,并且各个目标sid按照预设顺序排列,并且每个属性信息用于表示位于对应顺位的目标sid所属的srh。并向np发送解析报文。

在该实施例中,由于各目标sid按照预设顺序排列,因此可以通过顺位来对目标sid标识,因此属性信息中无需携带用于标识sid的标识,可以有效降低属性信息的长度,从而提高报文转发效率。

示例性的,每个sid对应的属性信息可以是以一个srh标识的形式表示的,该srh标识用于表示与该属性子信息顺位相同的目标sid所属的srh。例如,假设解析报文中包括3个目标sid,并且包含3个属性信息,其中位于第一顺位的属性信息是以srh标识0c01的形式表示的,其中,0c01为srh1的srh标识,则该属性信息表示3个目标sid中位于第一顺位的目标sid属于srh1。

按照该方式,属性信息中只需包括3个srh标识,如果每个标识的长度为8bits,则属性信息的长度为24bits,相比于前述的48bits有明显的缩短。

并且在一种可能的实施例中,为进一步缩短属性信息,属性信息可以用于表示从各srh中解析得到的目标sid的数目,示例性的,属性信息可以用于表示从srh1中解析得到2个目标sid,从srh2中解析得到1个目标sid。

在该实施例中,构建解析报文时可以依次针对待处理分段路由报文中的每个srh按照如图4所示的方式进行处理,处理的方法可以包括:

s401,将从该srh中解析得到的目标sid写入解析报文中的当前偏移位置。

s402,将当前偏移位置偏移n个偏移长度。

其中,当前偏移位置初始时为预设初始位置,预设初始位置可以是解析报文中的任一位置,将目标sid写入当前偏移位置是指将目标sid写入解析报文中以当前偏移位置起始的连续空间中。

n为从该srh中解析得到的目标sid的数目,从一个srh解析得到的目标sid的数目为1或2,因此n的取值为1或2。偏度长度为单个目标sid的长度,以srv6网络的应用场景为例,每个目标sid为一个ipv6地址,因此单个目标sid的长度为16bits,即偏移长度为16bits。

假设待处理分段路由报文中包括2个srh,分别记为srh1以及srh2,并且假设从srh1中解析得到两个目标sid分别记为第一sid和第二sid,从srh中解析得到一个目标sid记为第三sid。

则可以首先针对srh1执行图4所示的步骤,即将第一sid和第二sid写入当前偏移位置,此时当前偏移位置为预设初始位置。并将当前偏移位置偏移2个偏移长度。由于偏移长度等于单个sid的长度,因此在偏移当前偏移位置后,新的当前偏移位置位于解析报文中的第二sid的后一位。

再针对srh2执行图4所示的步骤,即将第三sid写入当前偏移位置,由于此时当前偏移位置位于解析报文中的第二sid的后一位,因此即是将第三sid写入第二sid之后。

在该实施例中,各目标sid按照所属的srh顺序排列,并且在该实施例中,属性信息用于表示从各srh中解析得到的目标sid的数目,因此可以根据属性信息所表示的数目,确定出各目标sid所属的srh。

示例性的,仍以前述示例为例,并且对于np,可以根据偏移长度从解析报文中获取位于各顺位的目标sid,示例性的,np报文读取解析报文中从预设初始位置开始的偏移长度位,则可以得到位于第一位的目标sid,即第一sid,并且np可以根据属性信息确定从srh1解析得到2个目标sid,而从srh2中解析得到1个目标sid,因此位于前两位的目标sid属于srh1,因此np可以确定第一sid属于srh1,同理np可以从解析报文中读取第二sid、第三sid,并确定第二sid属于srh1,第三sid属于srh2。

可以理解的是,表示从一个srh中解析得到的目标sid的数目只需要使用一个标识,示例性的,可以是以标识0x01表示从srh中解析得到一个目标sid,以标识0x10表示从srh中解析得到两个目标sid。因此选用该实施例,属性信息中包括的标识的数目只需与待处理分段路由报文中的srh的数目相同,仍以前述示例的场景为例,属性信息中只需包括用于表示从srh1中解析得到的目标sid的数目的标识,以及用于表示从srh2中解析得到的目标sid的数目的标识,共计2个标识,仍假设每个标识的长度为8bits,则属性信息的长度为16bits,相比于与前24bits,可见选用该实施例可以进一步缩短属性信息的长度,从而提高分段路由报文的转发效率。

下面将对解析报文的格式进行示例性的说明,本发明实施例中的解析报文也可以是该示例以外的其他格式的,可以参见图5,图5所示为本发明实施例提供的解析报文的一种结构示意图,可以包括:

报文长度字段、偏移长度字段、属性信息字段、目标sid字段、尾部偏移字段。

其中,报文长度字段:长度为2个字节,用于表示解析报文的长度;

偏移长度字段:长度为1字节,用于表示偏移长度;

属性信息:长度为1字节,用于表示从每个srh中解析得到的目标sid的数目,按照2bit为单位且分出四个子字段,分别为srh1~4cmd,定义为:00表示无,01表示1层,10表示2层,11为保留字段;

目标sid字段:用于存储从待处理分段路由报文中解析到的目标sid,关于各目标sid在目标sid字段中的存储顺序可以参见前述相关描述在此不再赘述,目标sid字段的起始位置即为前述预设初始位置;

尾部偏移字段:长度为2字节,在该实施例中,预设逻辑电路单元可以将待处理分段路由报文中的srh搬移到尾部偏移字段之后。

在其他可能的实施例中,解析报文中还可以包括其他信息,示例性的,在一种可能的实施例中,为区别解析报文与其他报文,解析报文中可以包括内部控制报文头,内部控制报文头用于表示报文为解析报文。

以图5所示的解析报文为例,下面将结合对待处理带路由报文的解析以及解析报文的构建进行说明,可以参见图6,图6所示为本发明实施例提供的预设逻辑电路单元的报文处理流程的一种示意图,可以包括:

s601,判断接收到的报文是否包含srh,如果包含srh则执行s602,如果不包含srh则执行s610。

如果接收到的报文中包含srh,则该报文为待处理分段路由报文,因此需要按照本发明实施例提供的分段路由报文转发方法进行转发,如果接收到的报文中不包含srh,则该报文并非待处理分段路由报文,因此可以直接将该报文发送至np,由np进行处理。

s602,初始化当前偏移位置以及计数nsrh。

在该实施例中,初始化后的当前偏移位置位于预设初始位置,初始化后的nsrh=0,nsrh用于标识报文中的srh,nsrh=0时用于标识报文中的第一个srh,nsrh=1时用于标识报文中的第二个srh,依次类推。

s603,读取nsrh所标识的srh中的sl。

s604,判断sl是否为1,如果sl为1,则执行s605,如果sl不为1则执行s606。

s605,解析nsrh所标识的srh中的第一个sid和第二个sid,作为目标sid写入解析报文中的当前偏移位置,并将当前偏移位置偏移2个偏移长度,并在解析报文的属性字段中记录从nsrh所标识的srh中解析得到的目标sid的数目为2。

s606,解析nsrh所标识的srh中的第sl+1个sid,作为目标sid写入解析报文中的当前偏移位置,并将当前偏移位置偏移1个偏移长度,并在解析报文的属性字段中记录从nsrh所标识的srh中解析得到的目标sid的数目为1。

s607,判断在nsrh所标识的srh之后是否还存在srh,如果还存在srh则将nsrh自加一后返回执行s603,如果不存在srh则执行s608。

s608,将报文中的所有srh搬移至解析报文的尾部偏移字段后。

s609,将解析报文发送至np。

s610,将接收到的报文发送至np。

参见图7,图7所示为本发明实施例提供的应用于np的分段路由报文转发方法的一种流程示意图,可以包括:

s701,接收预设逻辑电路单元发送的目标分段标识sid,其中,目标sid为预设逻辑电路单元对接收到的分段路由报文进行解析得到np执行分段路由转发操作时所需sid;

s702,根据目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

s703,向预设逻辑电路单元发送报文修改指令,以使得预设逻辑电路单元根据报文修改指令所表示的报文修改操作,对待处理分段路由报文进行修改,得到修改后分段路由报文,并按照修改后分段路由报文的目的地址,转发修改后分段路由报文。

选用该实施例,可以通过在分段路由节点中设置预设逻辑电路单元,并由预设逻辑电路单元代替np从分段路由报文中解析目标sid,并将目标sid发送至np,因此np在分段路由报文转发过程中只需解析包含目标sid在内的较少的信息,从而可以使得np能够快速确定出转发分段路由报文时所需执行的报文修改操作,并由预设逻辑电路单元根据np确定出的报文修改操作完成对待处理分段路由报文的修改并转发,该过程中np无需消耗较长时间从较长的报文头中解析目标sid,因此可以有效提高分段路由报文的转发效率。

为了更清楚的对本发明实施例提供的分段路由报文转发方法进行说明,下面将对np发送的报文修改指令进行示例性的说明,可以参见图8a、8b、8c,其中图8a为本发明实施例提供的pop报文的一种报文格式示意图,图8b所示为本发明实施例提供的swap报文的一种报文格式示意图,图8c所示为本发明实施例提供的push报文的一种报文格式示意图。

pop报文用于表示pop操作,并且包括长度字段、popcmd-1字段、popcmd-2字段、nextcmd字段以及尾部偏移字段。

其中,长度字段:长度为2个字节,用以标识pop报文的长度;

popcmd-1字段:长度为4bits,用于表示针对第一层srh是否执行pop操作,0x01标识需要执行,0x00标识不需要执行;

popcmd-2字段:长度为4bits,用于表示针对第二层srh的是否执行pop操作,0x01标识需要执行,0x00标识不需要执行;

nextcmd字段:长度为1个字节,用于表示下一个执行的修改操作,取值可以为pop、swap和push,取值为pop时表示下一个执行的修改操作为pop操作,取值为swap时表示下一个执行的修改操作为swap操作,取值为push时表示下一个执行的修改操作为push操作;

endsrhoffset字段:长度为字节,逻辑搬移srh头到报文尾部后的偏移,来自于解析报文的取值。

swap报文用于表示swap操作,并且包括长度字段、swapcmd字段、endsrhoffset字段。

其中,长度字段:长度为2个字节,用于表示swap报文的长度;

swapcmd字段:长度为4bits,用于表示是否执行swap动作,0x01标识需要执行,0x00标识不需要执行;

endsrhoffset字段:长度为2字节,逻辑搬移srh头到报文尾部后的偏移,来自于解析报文的取值。

push报文用于表示push操作,并且包括长度字段、tunnel-index字段、endsrhoffset字段。

其中,长度字段:长度为2字节,用以表示push报文的长度;

tunnel-index字段:长度为4字节,用于标识push报文所表示的push操作所针对的srh;

endsrhoffset字段:长度为2字节,逻辑搬移srh头到报文尾部后的偏移,来自于解析报文的取值,或者针对srv6报文的源分段路由节点,由于需要逻辑首次封装srh头,这里会设置为0,标识报文尾部无srh头

参见图9,图9所示为本发明实施例提供的分段路由报文转发装置的一种结构示意图,可以包括:

报文获取模块901,用于获取待处理分段路由报文;

sid解析模块902,用于解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid;

第一发送模块903,用于将所有所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

第一接收模块904,用于接收所述np发送的报文修改指令,所述报文修改指令用于表示所述报文修改操作;

报文修改模块905,用于根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文;

报文转发模块906,用于按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

在一种可能的实施例中,所述待处理分段路由报文包括多个分段路由报文头srh;

所述sid解析模块902解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid,包括:

针对所述待处理分段路由报文的每个srh,解析该srh得到该srh中所述np执行分段路由转发操作时所需的目标sid;

所述第一发送模块903将所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作,包括:

将从每个srh中解析到的目标sid以及每个目标sid对应的属性信息发送至所述np,以使得所述np根据每个属性信息确定对应的目标sid所属srh,并根据接收到的每个目标sid及其所属srh确定执行分段路由转发操作时所需执行的报文修改操作。

在一种可能的实施例中,所述第一发送模块903将从每个srh中解析到的目标sid以及每个目标sid对应的属性信息发送至所述np,包括:

构建解析报文,其中,所述解析报文中携带有从每个srh中解析到的目标sid及其对应的属性信息,并且各个目标sid按照预设顺序排列,并且每个属性信息用于表示位于对应顺位的目标sid所属的srh;

向所述np发送解析报文。

在一种可能的实施例中,所述属性信息用于表示从各srh中解析得到的目标sid的数目;

所述第一发送模块903构建解析报文,包括:

依次针对所述待处理分段路由报文中的每个srh,将从该srh中解析得到的目标sid写入解析报文中的当前偏移位置,并将所述当前偏移位置偏移n个偏移长度,其中,所述当前偏移位置初始时为预设初始位置,n为从该srh中解析得到的目标sid的数目,所述偏移长度为单个所述目标sid的长度。

在一种可能的实施例中,所述sid解析模块902针对所述待处理分段路由报文的每个srh,解析该srh得到该srh中所述np执行分段路由转发操作时所需的目标sid,包括:

针对所述待处理分段路由报文的每个srh,确定该srh中的剩余跳数sl是否为1;

如果所述sl为1,则解析该srh的sid列表中的第一个sid和第二sid,作为目标sid;

如果所述sl不为1,则解析该srh的sid列表中的第sl+1个sid,作为目标sid。

参见图10,图10所示为本发明实施例提供的分段路由报文转发装置的另一种结构示意图,可以包括:

第二接收模块1001,用于接收所述预设逻辑电路单元发送的目标分段标识sid,其中,所述目标sid为所述预设逻辑电路单元对接收到的分段路由报文进行解析得到所述np执行分段路由转发操作时所需sid;

操作确定模块1002,用于根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

第二发送模块1003,用于向所述预设逻辑电路单元发送报文修改指令,所述报文修改指令用于表示所述报文修改操作,以使得所述预设逻辑电路单元根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文,并按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

本发明实施例还提供了一种预设逻辑电路单元,设置于分段路由节点中,所述分段路由节点还包括np,如图11所示,包括:

第一存储器1101,用于存放计算机程序;

第一处理器1102,用于执行存储器1101上所存放的程序时,实现如下步骤:

获取待处理分段路由报文;

解析所述待处理分段路由报文,得到所述np执行分段路由转发操作时所需的目标分段标识sid;

将所有所述目标sid发送至所述np,以使得所述np根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

接收所述np发送的报文修改指令,所述报文修改指令用于表示所述报文修改操作;

根据所述报文修改指令所表示的报文修改操作,对所述待处理分段路由报文进行修改,得到修改后分段路由报文;

按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

本发明实施例还提供了一种网络处理器,设置于分段路由节点中,所述分段路由节点还包括预设逻辑电路单元,如图12所示,包括:

第二存储器1201,用于存放计算机程序;

第二处理器1202,用于执行存储器1201上所存放的程序时,实现如下步骤:

接收所述预设逻辑电路单元发送的目标分段标识sid,其中,所述目标sid为所述预设逻辑电路单元对接收到的分段路由报文进行解析得到所述np执行分段路由转发操作时所需sid;

根据所述目标sid确定执行分段路由转发操作时所需执行的报文修改操作;

向所述预设逻辑电路单元发送报文修改指令,所述报文修改指令用于表示所述报文修改操作,以使得所述预设逻辑电路单元根据所述报文修改指令所表示的报文修改操作,对所述待处理路由报文进行修改,得到修改后分段路由报文,并按照所述修改后分段路由报文的目的地址,转发所述修改后分段路由报文。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、预设逻辑电路单元以及网络处理器而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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