掌桥专利:专业的专利平台
掌桥专利
首页

报文转发系统、方法、装置、网络设备、控制器和介质

文献发布时间:2024-01-17 01:15:20


报文转发系统、方法、装置、网络设备、控制器和介质

技术领域

本公开涉及网络通信技术领域,尤其涉及一种报文转发系统、报文转发方法、报文转发装置、网络设备和计算机可读存储介质。

背景技术

目前,主流的源路由方案是通过将定制的路径上的各个节点的IP地址(标签)按先后顺序携带在报文头中,报文经过路由设备时使用堆栈的栈底地址(标签)直接作为下一跳地址(标签),实现根据显式路径节点标识的报文转发,这种无状态的报文转发方式虽然省却了路由设备存储并更新全局路由表以及查路由表获取下一跳地址(标签)的步骤,为路由设备节省了大量的存储和计算资源,但是在节省路由设备资源的同时,由于报文头堆栈中压入多个地址,也极大的增加了对链路带宽的占用,从整体上来说并未减少资源的消耗。

相关技术中,虽然通过对显式路径信息进行编码压缩,使其可以压缩至较短长度的一个数值携带入报文头,至中间路由设备再进行解码得到有序的显式路径节点信息,但是对于中间路由设备则增加了编解码的过程或者需要增加额外的指针定位下一跳节点信息,也未达到减少整体资源的消耗的目的。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开的目的在于提供一种报文转发方法、报文转发方法、报文转发装置、网络设备和计算机可读存储介质,至少在一定程度上克服由于相关技术中的报文转发方式对路由设备整体资源的消耗较大的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的第一个方面,提供一种报文转发系统,包括:源路由设备和转发设备,所述源路由设备将报文转发至所述转发设备,其中,所述源路由设备用于:基于路径值计算参数对获取到的报文的路径值执行预设运算,基于运算结果确定源出接口;所述源路由设备还用于:基于所述运算结果更新所述路径值,并基于更新后的所述路径值封装所述报文的报文头,以基于所述源出接口将所述报文转发至对应的所述转发设备;所述转发设备用于:接收所述报文,并基于对所述报文头的解析结果,处理所述报文。

在一个实施例中,在所述转发设备的数量大于或等于2个时,所述转发设备包括中间路由设备和尾端路由设备,所述中间路由设备用于:提取所述报文头中更新的所述路径值,基于路径值计算参数对更新的所述路径值执行预设运算,基于运算结果确定中间出接口,以基于所述中间出接口将所述报文转发至下一中间路由设备或所述尾端路由设备;所述中间路由设备用于:基于所述运算结果再次更新所述路径值,并基于更新结果重新封装所述报文头;在基于对所述报文头的解析结果确定所述转发设备为所述尾端设备时,所述尾端路由设备用于:基于所述报文携带的内容处理所述报文。

在一个实施例中,所述预设运算包括取模运算,所述路径值计算参数包括可转发接口数,所述源路由设备具体用于:基于所述源路由设备对应的所述可转发接口数对所述路径值执行所述取模运算,基于所述取模运算的结果确定所述源出接口;所述中间路由设备具体用于:基于所述中间路由设备对应的所述可转发接口数对更新后的所述路径值执行所述取模运算,基于所述取模运算的结果确定所述中间出接口。

在一个实施例中,所述源路由设备具体用于:将对所述路径值执行所述取模运算的商作为更新后的所述路径值封装所述报文的报文头;所述中间路由设备具体用于:对更新的所述路径值执行所述取模运算,基于所述取模运算的商再次更新所述路径值,并基于更新结果重新封装所述报文头。

在一个实施例中,所述取模运算的结果包括余数或商数,所述源路由设备和所述中间路由设备存储有余数接口映射表或商数接口映射表,所述源路由设备具体还用于:查询所述余数接口映射表中与所述余数对应的所述源出接口,或查询所述商数接口映射表中与所述商数对应的所述源出接口;所述中间路由设备具体还用于:查询所述余数接口映射表中与所述余数对应的所述中间出接口,或查询所述商数接口映射表中与所述商数对应的所述中间出接口。

在一个实施例中,所述源路由设备具体还用于:在检测到多个所述报文的所述源出接口被确定为同一个时,对多个所述报文中的部分报文迭代执行所述取模运算,以基于迭代结果重新确定所述部分报文的所述源出接口;所述中间路由设备具体还用于:在同一所述中间路由设备上,在检测到多个所述报文的所述中间出接口被确定为同一个时,对多个所述报文中的部分报文迭代执行所述取模运算,以基于迭代结果重新确定所述部分报文的所述中间出接口。

在一个实施例中,所述源路由设备还用于:基于所述路径值和获取到的路径TTL值封装所述报文头;所述中间路由设备还用于:提取所述报文头中的所述路径TTL值,基于所述报文的转发顺序对所述路径TTL值进行计数更新,并基于所述计数更新更新所述报文头;所述尾端路由设备还用于:在检测到更新的所述路径TTL值与预设尾端TTL值匹配时,确定所述报文达到路由尾端。

在一个实施例中,所述计数更新为所述TTL值逐一递减更新。

在一个实施例中,还包括:控制器,与所述源路由设备通信连接,用于向所述源路由设备下发所述路径值和所述路径TTL值。

根据本公开的第二个方面,提供一种报文转发方法,应用于源路由设备,包括:基于路径值计算参数对获取到的报文的路径值执行预设运算,基于运算结果确定源出接口;基于所述运算结果更新所述路径值,并基于更新后的所述路径值封装报文的报文头;基于所述源出接口将所述报文转发至对应的转发设备。

在一个实施例中,所述预设运算包括取模运算,所述路径值计算参数包括可转发接口数,所述基于路径值计算参数对所述路径值执行预设运算,基于运算结果确定源出接口,具体包括:基于所述源路由设备对应的所述可转发接口数对所述路径值执行所述取模运算;基于所述取模运算的结果确定所述源出接口。

在一个实施例中,所述基于所述运算结果更新所述路径值,并基于更新后的所述路径值封装报文的报文头,具体包括:将所述取模运算的商作为更新后的所述路径值封装在所述报文的报文头中。

在一个实施例中,所述取模运算的结果包括余数或商数,所述源路由设备存储有余数接口映射表,所述基于所述取模运算的结果确定所述源出接口,具体包括:查询所述余数接口映射表中与所述余数对应的所述源出接口;或查询所述商数接口映射表中与所述商数对应的所述源出接口。

在一个实施例中,还包括:在检测到多个所述报文的所述源出接口被确定为同一个时,对多个所述报文中的部分报文迭代执行所述取模运算;基于迭代结果重新确定所述部分报文的所述源出接口。

在一个实施例中,所述基于获取到的报文的路径值封装所述报文的报文头,具体包括:基于所述路径值和获取到的路径TTL值封装所述报文头,其中,所述路径TTL值用于在每经过一个所述转发设备时进行计数更新。

根据本公开的第三个方面,提供一种报文转发方法,应用于转发设备,包括:接收报文;基于对所述报文的报文头的解析结果,处理所述报文。

在一个实施例中,所述转发设备为中间路由设备,所述基于对所述报文的报文头的解析结果,处理所述报文,具体包括:提取所述报报文头中更新的路径值;基于路径值计算参数对更新的所述路径值执行预设运算,基于运算结果确定中间出接口;基于所述中间出接口将所述报文转发至下一中间路由设备或尾端路由设备。

在一个实施例中,所述转发设备为尾端路由设备,所述基于对所述报文的报文头的解析结果,处理所述报文,具体包括:在基于对所述报文头的解析结果确定所述路由设备为所述尾端路由设备时,基于所述报文携带的内容处理所述报文。

在一个实施例中,所述预设运算包括取模运算,所述路径值计算参数包括可转发接口数,所述基于路径值计算参数对所述路径值执行预设运算,基于运算结果确定中间出接口,具体包括:基于所述中间路由设备对应的可转发接口数对更新后的所述路径值执行所述取模运算;基于所述取模运算的结果确定所述中间出接口。

在一个实施例中,还包括:对更新的所述路径值执行所述取模运算;基于所述取模运算的商再次更新所述路径值,并基于更新结果重新封装所述报文头。

在一个实施例中,所述取模运算的结果包括余数或商数,所述中间路由设备存储有余数接口映射表,所述基于所述取模运算的结果确定所述中间出接口,具体包括:查询所述余数接口映射表中与所述余数对应的所述中间出接口;或查询所述商数接口映射表中与所述商数对应的所述中间出接口。

在一个实施例中,还包括:在检测到多个所述报文的所述中间出接口被确定为同一个时,对多个所述报文中的部分报文迭代执行所述取模运算;基于迭代结果重新确定所述部分报文的所述中间出接口。

在一个实施例中,还包括:提取所述报文头中的路径TTL值;基于所述报文的转发顺序对所述路径TTL值进行计数更新,并基于所述计数更新更新所述报文头,其中,在检测到更新的所述路径TTL值与预设尾端TTL值匹配时,确定所述转发设备为尾端路由设备。

根据本公开的第四个方面,提供一种报文转发方法,应用于控制器,包括:向源路由设备下发路径值和路径TTL值。

根据本公开的第五个方面,提供一种报文转发装置,应用于源路由设备,包括:运算模块,用于基于路径值计算参数对获取到的报文的路径值执行预设运算,基于运算结果确定源出接口;封装模块,用于基于所述运算结果更新所述路径值,并基于更新后的所述路径值封装报文的报文头;转发模块,用于基于所述源出接口将所述报文转发至对应的转发设备。

根据本公开的第六个方面,提供一种报文转发装置,应用于转发设备,包括:接收模块,用于接收报文;处理模块,用于基于对所述报文的报文头的解析结果,处理所述报文。

根据本公开的第七个方面,提供一种报文转发装置,应用于控制器,包括:下发模块,用于向源路由设备下发路径值和路径TTL值。

根据本公开的第八个方面,提供一种网络设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述第二方面技术方案或第三方面技术方案或第四方面技术方案中任意一项的所述的报文转发方法。

根据本公开的第九个方面,提供一种控制器,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述第五方面技术方案中所述的报文转发方法。

根据本公开的第十个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的报文转发方法。

本公开的实施例所提供的报文转发系统和方法,源路由设备在获取到报文的路径值时,通过基于自身的路径值计算参数对路径值进行指定的运算处理,从而能够基于运算结果确定转发报文的下一跳对应的出接口,并将运算结果封装在报文的报文头中,作为下一个转发设备的路径值,并基于上面确定的出接口进行报文转发,以使接收到报文的转发设备基于对报文头的解析结果,处理报文,一方面,与相关技术中携带显式路径信息的方式相比,通过获取到路径值,并基于路径值结合源路由设备自身的路径值计算参数确定下一跳地址,能够减少报文头对带宽的占用,另一方面,与相关技术中对显式路径进行编解码的方式相比,采用预设运算确定出接口的方式能够简化处理过程,进而减少对路由设备计算资源的占用,从而能够减少路由设备整体资源的消耗。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本公开实施例中一种报文转发系统的示意图;

图2示出本公开实施例中一种报文转发方法的流程图;

图3示出本公开实施例中另一种报文转发方法的流程图;

图4示出本公开实施例中再一种报文转发方法的流程图;

图5示出本公开实施例中又一种报文转发方法的流程图;

图6示出本公开实施例中又一种报文转发方法的流程图;

图7示出本公开实施例中又一种报文转发方法的流程图;

图8示出本公开实施例中又一种报文转发方法的流程图;

图9示出本公开实施例中一种报文转发装置的示意图;

图10示出本公开实施例中一种报文转发装置的示意图;

图11示出本公开实施例中一种报文转发装置的示意图;

图12示出本公开实施例中一种计算机设备的结构框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

本申请提供的方案,与相关技术中携带显式路径信息的方式相比,源路由设备在获取到报文的路径值时,通过基于自身的路径值计算参数对路径值进行指定的运算处理,从而能够基于运算结果确定转发报文的下一跳对应的出接口,并将运算结果封装在报文的报文头中,作为下一个转发设备的路径值,并基于上面确定的出接口进行报文转发,以使接收到报文的转发设备基于对报文头的解析结果,处理报文,一方面,与相关技术中携带显式路径信息的方式相比,通过获取到路径值,并基于路径值结合源路由设备自身的路径值计算参数确定下一跳地址,能够减少报文头对带宽的占用,另一方面,与相关技术中对显式路径进行编解码的方式相比,采用预设运算确定出接口的方式能够简化处理过程,进而减少对路由设备计算资源的占用,从而能够减少路由设备整体资源的消耗。

为了便于理解,下面首先对本申请涉及到的名词(缩写词)进行解释。

源路由设备:源路由设备的用户可以指定他所发送的数据包沿途经过的部分或者全部路由设备。它区别于由主机或者路由设备的互联层(IP)软件自行选择路由设备后得出的路径。

TTL(Time To Live),生存时间值,该字段指定IP包被路由设备丢弃之前允许通过的最大网段数量,TTL是IPv4报头的一个8bit字段。

下面,将结合附图及实施例对本示例实施方式中的报文转发方法的各个步骤进行更详细的说明。

如图1所示,根据本公开的一个实施例的报文转发系统,包括:源路由设备102和转发设备104,源路由设备将报文转发至转发设备。

源路由设备用于:基于路径值计算参数对获取到的报文的路径值执行预设运算,基于运算结果确定源出接口。

其中,路径值为基于该报文的传输路径生成的值,传输路径则可以基于全局网络的拓扑信息确定,采用路径值代替显式路径信息,有利于降低对链路带宽的占用。针对具有相同传输路径的不同报文,可以配置不同的路径值。

预设运算包括但不限于取模运算和位运算等,通过预设运算的方式确定下一跳,能够简化确定报文的下一跳的处理方式,并有利于降低对路由设备内存的占用

路径值计算参数根据源路由设备自身的特征进行设定,具体可以是源路由设备对应的可转发接口数,也可以是为源路由设备配置的属性参数,还可以是基于源路径在路由设备路径中所处的位置生成的参数,还可以是基于源路由设备的路由协议生成的参数。

源路由设备还用于:基于运算结果更新路径值,并基于更新后的路径值封装报文的报文头,以基于源出接口将报文转发至对应的转发设备;转发设备用于:接收报文,并基于对报文头的解析结果,处理报文。

转发设备用于:基于对报文头的解析结果,处理报文。

其中,若转发设备的数量为一个,则转发设备即为源端路由设备,对于源端设备,如果报文是在内网传输,则源端路由设备为最后处理报文的设备,报文可以被解析或抛弃,如果报文是在外网传输,源端路由设备可以基于携带的目的IP地址将报文转发至外网。

若转发设备的数量为多个,则转发设备包括源端路由设备和中间路由设备,在中间路由设备,需要基于报文头中更新的路径值继续进行预设运算,以基于运算结果确定该中间路由设备的出接口,并基于运算结果重新封装报文头,直至达到尾端路由设备。

在该实施例中,源路由设备在获取到报文的路径值时,通过基于自身的路径值计算参数对路径值进行指定的运算处理,从而能够基于运算结果确定转发报文的下一跳对应的出接口,并将运算结果封装在报文的报文头中,作为下一个转发设备的路径值,并基于上面确定的出接口进行报文转发,以使接收到报文的转发设备基于对报文头的解析结果,处理报文,一方面,与相关技术中携带显式路径信息的方式相比,通过获取到路径值,并基于路径值结合源路由设备自身的路径值计算参数确定下一跳地址,能够减少报文头对带宽的占用,另一方面,与相关技术中对显式路径进行编解码的方式相比,采用预设运算确定出接口的方式能够简化处理过程,进而减少对路由设备计算资源的占用,从而能够减少路由设备整体资源的消耗。

如图1所示,在一个实施例中,在转发设备的数量大于或等于2个时,转发设备104包括中间路由设备1042和尾端路由设备1044,中间路由设备用于:提取报文头中更新的路径值,基于路径值计算参数对更新的路径值执行预设运算,基于运算结果确定中间出接口,以基于中间出接口将报文转发至下一中间路由设备或尾端路由设备;中间路由设备用于:基于运算结果再次更新路径值,并基于更新结果重新封装报文头;在基于对报文头的解析结果确定转发设备为尾端设备时,尾端路由设备用于:基于报文携带的内容处理报文。

其中,路径值计算参数根据中间路由设备自身的特征进行设定,具体可以是中间路由设备对应的可转发接口数,也可以是为中间路由设备配置的属性参数,还可以是基于中间路径在路由设备路径中所处的位置生成的参数,还可以是基于中间路由设备的路由协议生成的参数。

在该实施例中,在中间路由设备中,通过获取到更新的路径值,并基于更新的路径值结合中间路由设备自身的路径值计算参数确定下一跳地址,能够进一步减少报文头对带宽的占用,另一方面,与相关技术中对显式路径进行编解码的方式相比,采用预设运算确定出接口的方式能够简化处理过程,进而减少对路由设备计算资源的占用,从而能够减少路由设备整体资源的消耗。

在一个实施例中,预设运算包括取模运算,路径值计算参数包括可转发接口数,源路由设备具体用于:基于源路由设备对应的可转发接口数对路径值执行取模运算,基于取模运算的结果确定源出接口;中间路由设备具体用于:基于中间路由设备对应的可转发接口数对更新后的路径值执行取模运算,基于取模运算的结果确定中间出接口。

其中,可转发接口数,具体为源路由设备或中间路由设备中能够发送报文的出口,接收报文的入口不在该范围内。

另外,根据具体的设置方式,可以采用取模结果中的余数确定出接口,也可以采用取模结果中的商数确定出接口。

在该实施例中,作为预设运算的一种具体实现方式,采用取模运算进行预设运算,基于路由设备的可转发接口数对路径值进行取模运算,在不同报文的路径值不同时,则取模运算的结果也不相同,基于不同的取模结果确定对应的出接口,能够为不同的报文选择不同的出接口转发。

在一个实施例中,源路由设备具体用于:将对路径值执行取模运算的商作为更新后的路径值封装报文的报文头;中间路由设备具体用于:对更新的路径值执行取模运算,基于取模运算的商再次更新路径值,并基于更新结果重新封装报文头。

在该实施例中,在源路由设备和中间路由设备,通过将每次取模运算得到的商作为更新的路径值封装在报文头中,实现了路径值的动态更新,采用动态更新的路径值,一方面,能够基于更新后的路径值反映当前报文在路径中所处的位置,另一方面,通过动态的路径值结合路由设备本身的路径值计算参数,例如可转发接口数,确定报文的出接口,在保证报文可靠传输的基础上,节省对链路带宽的占用,再一方面,通过生成动态更新的路径值,也有利于保证报文传输的安全性。

在一个实施例中,取模运算的结果包括余数或商数,源路由设备和中间路由设备存储有余数接口映射表或商数接口映射表,源路由设备具体还用于:查询余数接口映射表中与余数对应的源出接口,或查询商数接口映射表中与商数对应的源出接口;中间路由设备具体还用于:查询余数接口映射表中与余数对应的中间出接口,或查询商数接口映射表中与商数对应的中间出接口。

其中,路由设备事先对所有接口都进行编号,接口映射表保存对应的该编号以及不同取模运算的结果。

在该实施例中,通过在源路由设备和中间路由设备中存储预先配置的余数接口映射表或商数接口映射表,在基于取模结果中的余数确定出接口时,通过在余数接口映射表中查询与得到的余数对应的出接口,或在基于取模结果中的商数确定出接口时,通过在商数接口映射表中查询与得到的商数对应的出接口,以基于查询出的出接口确定下一跳,以将报文转发至下一跳,该方案只需要基于预设的映射关系执行查询操作,因此有利于简化指定下一跳的报文转发方式的处理过程。

具体地,以余数为例,余数在路由设备中占用的比特数为对路由设备进行编码的数量,比如路由设备包括128个接口,则可以采用6bit存储单位进行余数存储,并且报文的信息量(比特数)等于信号刺激量以2为底数的对数值,即log2(M),其中,M为当前路由设备对应的路径可转发接口数。

在一个实施例中,源路由设备具体还用于:在检测到多个报文的源出接口被确定为同一个时,对多个报文中的部分报文迭代执行取模运算,以基于迭代结果重新确定部分报文的源出接口;中间路由设备具体还用于:在同一中间路由设备上,在检测到多个报文的中间出接口被确定为同一个时,对多个报文中的部分报文迭代执行取模运算,以基于迭代结果重新确定部分报文的中间出接口。

其中,迭代执行取模运算,可以为对余数相同的报文,取商数再进行取模操作,或对商数相同的报文,取余数再进行取模操作,以确定出不同的出接口。

在该实施例中,在检测到对于多个报文路径值的取模结果相同时,如果不进行进一步处理,则会导致多个报文由同一出接口转发,继而导致该出接口过载,而其它出接口可能空载的情况,通过对相同的取模运算结果重复执行取模运算,直至得到不同的取模结果,以实现在同一时间段内,为不同的报文配置不同的出接口,从而防止由于多个报文采用同一个出接口转发导致该出接口出现过载的情况。

在一个实施例中,源路由设备还用于:基于路径值和获取到的路径TTL值封装报文头;中间路由设备还用于:提取报文头中的路径TTL值,基于报文的转发顺序对路径TTL值进行计数更新,并基于计数更新更新报文头;尾端路由设备还用于:在检测到更新的路径TTL值与预设尾端TTL值匹配时,确定报文达到路由尾端。

具体地,基于报文的转发顺序对路径TTL值进行计数更新,可以在报文每达到一个路由设备时,在当前的路径TTL值的基础上增加定值,或减去定值,直至达到尾端路由设备。

在该实施例中,通过进一步在报文头中封装路径TTL值,以采用路径TTL值对报文经过的路段进行计数,已检测是否已到达尾端路由设备,从而在检测达到尾端路由设备时,删除路径值和路径TTL值,并基于目的IP地址发送报文,以在降低网络资源占用的同时,保证了报文的可靠发送。

在一个实施例中,计数更新为TTL值逐一递减更新,中间路由设备具体还用于:对路径TTL值执行减1处理,以基于定值对路径TTL值进行更新处理;尾端路由设备还用于:在检测到上一中间路由设备减1后得到更新的路径TTL值为1时,删除路径值和路径TTL值。

如图1所示,在一个实施例中,还包括:控制器106,与源路由设备通信连接,用于向源路由设备下发路径值和路径TTL值。

在该实施例中,控制器可以基于全局网络设备的拓扑信息和报文特征确定报文的路径值和路径TTL值。

具体地,源设备在获取报文之前,通过获取网络设备的拓扑信息,例如网络设备的设备标识、端口号和IP地址等,结合待传输的报文特征,得到路径值和路径TTL值,将上述特征下发至源路由设备,以已于上述特征实现报文转发,从而减少报文携带的习性你,降低中间路由设备的处理步骤,达到减少路由设备资源的消耗与对链路宽带的占用

具体的,如图1所示,控制器106使用全局网络拓扑参数为报文计算路径数值,即路径值(多个路径对应多个路径值),并将路径对应的数值以及路径TTL值(该值=路径节点个数)下发给源端路由设备102。

源路由设备102将初始的路径值执行取模运算得到的结果作为新的路径值以及路径TTL值封装到报文头中,并通过计算结果值选择出接口,基于出接口将报文转发给中间路由设备1042,同时路径TTL值减1。

当前中间路由设备1042对报文中携带的路径值使用单次取模运算或者迭代取模运算,通过结果值选择出接口,将报文转发给下一中间路由设备1042,同时路径TTL值减1。

在路径TTL值递减至1时,转发设备为尾端路由设备1044,在尾端路由设备1044中,删除报文头中路径值相关部分的封装内容,并通过目的IP地址使用传统的路由设备转发方式转发报文,以实现报文的转发。

下面分别以报文转发系统中的源路由设备、中间路由设备、尾端路由设备和控制器为执行主体,对执行的报文转发方法进行具体描述。

如图2所示,根据本公开的一个实施例的报文转发方法,应用于源路由设备,包括:

步骤S202,基于路径值计算参数对获取到的报文的路径值执行预设运算,基于运算结果确定源出接口。

步骤S204,基于运算结果更新路径值,并基于更新后的路径值封装报文的报文头。

步骤S206,基于源出接口将报文转发至对应的转发设备。

在一个实施例中,预设运算包括取模运算,路径值计算参数包括可转发接口数,基于路径值计算参数对路径值执行预设运算,基于运算结果确定源出接口,具体包括:基于源路由设备对应的可转发接口数对路径值执行取模运算;基于取模运算的结果确定源出接口。

在一个实施例中,基于运算结果更新路径值,并基于更新后的路径值封装报文的报文头,具体包括:将取模运算的商作为更新后的路径值封装在报文的报文头中。

在一个实施例中,取模运算的结果包括余数或商数,源路由设备存储有余数接口映射表,基于取模运算的结果确定源出接口,具体包括:查询余数接口映射表中与余数对应的源出接口;或查询商数接口映射表中与商数对应的源出接口。

在一个实施例中,还包括:在检测到多个报文的源出接口被确定为同一个时,对多个报文中的部分报文迭代执行取模运算;基于迭代结果重新确定部分报文的源出接口。

在该实施例中,在源路由设备端,源路由设备在获取到报文的路径值时,通过基于自身的路径值计算参数对路径值进行指定的运算处理,从而能够基于运算结果确定转发报文的下一跳对应的出接口,并将运算结果封装在报文的报文头中,作为下一个转发设备的路径值,并基于上面确定的出接口进行报文转发,以使接收到报文的转发设备基于对报文头的解析结果,处理报文,一方面,与相关技术中携带显式路径信息的方式相比,通过获取到路径值,并基于路径值结合源路由设备自身的路径值计算参数确定下一跳地址,能够减少报文头对带宽的占用,另一方面,与相关技术中对显式路径进行编解码的方式相比,采用预设运算确定出接口的方式能够简化处理过程,进而减少对路由设备计算资源的占用,从而能够减少路由设备整体资源的消耗。

如图3所示,在一个实施例中,基于获取到的报文的路径值封装报文的报文头,具体包括:

步骤S302,获取报文的路径值和路径TTL值。

路径TTL值用于在每经过一个转发设备时进行计数更新。

步骤S304,基于源路由设备对应的可转发接口数对路径值执行取模运算。

步骤S306,基于取模运算得到余数或商数。

步骤S308,查询余数接口映射表中与余数对应的源出接口,或查询商数接口映射表中与商数对应的源出接口。

步骤S310,将商数作为更新后的路径值和路径TTL值封装在报文的报文头中,并基于源出接口转发报文。

如图4所示,根据本公开的另一个实施例的报文转发方法,应用于中间路由设备,包括:

步骤S402,接收报文。

基于对报文的报文头的解析结果,处理报文,具体包括:

步骤S404,提取报文的报文头中更新的路径值。

步骤S406,基于路径值计算参数对更新的路径值执行预设运算,基于运算结果确定中间出接口。

步骤S408,基于中间出接口将报文转发至下一中间路由设备或尾端路由设备。

在一个实施例中,预设运算包括取模运算,路径值计算参数包括可转发接口数,基于路径值计算参数对路径值执行预设运算,基于运算结果确定中间出接口,具体包括:基于中间路由设备对应的可转发接口数对更新后的路径值执行取模运算;基于取模运算的结果确定中间出接口。

在一个实施例中,还包括:对更新的路径值执行取模运算;基于取模运算的商再次更新路径值,并基于更新结果重新封装报文头。

在一个实施例中,取模运算的结果包括余数或商数,中间路由设备存储有余数接口映射表,基于取模运算的结果确定中间出接口,具体包括:查询余数接口映射表中与余数对应的中间出接口;或查询商数接口映射表中与商数对应的中间出接口。

在一个实施例中,还包括:在检测到多个报文的中间出接口被确定为同一个时,对多个报文中的部分报文迭代执行取模运算;基于迭代结果重新确定部分报文的中间出接口。

在一个实施例中,还包括:提取报文头中的路径TTL值;基于报文的转发顺序对路径TTL值进行计数更新,并基于计数更新更新报文头。

如图5所示,根据本公开的另一个实施例的报文转发方法,应用于中间路由设备,包括:

步骤S502,接收报文。

步骤S504,提取报文的报文头中更新的路径值和路径TTL值。

步骤S506,基于中间路由设备对应的可转发接口数对路径值执行取模运算。

步骤S508,基于取模运算的余数,查询余数接口映射表中与余数对应的中间出接口,或基于取模运算的商数,查询商数接口映射表中与商数对应的中间出接口。

步骤S510,基于报文的转发顺序对路径TTL值进行计数更新。

步骤S512,基于计数更新和取模运算的商数更新报文头。

步骤S514,基于中间出接口将报文转发至下一中间路由设备或尾端路由设备。

在一个实施例中,计数更新为TTL值逐一递减更新。

在该实施例中,在中间路由设备端,在接收到源路由设备或上一中间路由设备转发的报文时,通过提取报文头中的路径值和路径TTL值,路径值为上一源路由设备或中间路由设备的计算结果,以基于对路径值的取模操作得到出接口,以将报文转发至出接口对应的中间路由设备,并对路径TTL值减一,该出接口的确定方式,一方面,不需要再报文头中堆栈多个地址,降低了内存的占用,另一方面,基于取模操作确定下一跳的方式,方式简单,可靠性高,也能够节省计算资源。

如图6所示,根据本公开的再一个实施例的报文转发方法,应用于尾端路由设备,包括:

步骤S602,接收报文。

步骤S604,在基于对报文头的解析结果确定转发设备为尾端路由设备时,基于报文携带的内容处理报文。

具体地,在检测到更新的路径TTL值与预设尾端TTL值匹配时,确定转发设备为尾端路由设备。

步骤S606,基于报文内容,处理或丢弃或转发报文。

如图7所示,根据本公开的又一个实施例的报文转发方法,应用于控制器,包括:

步骤S702,基于全局网络设备的拓扑信息和报文特征确定从源路由设备至尾端路由设备的传输路径。

步骤S704,基于传输路径确定路径值和路径TTL值。

步骤S706,向源路由设备下发路径值和路径TTL值。

在该实施例中,通过向源路由设备下发基于全局网络设备的拓扑信息和报文特征生成的路径值和路径TTL值,源路由设备和中间路由设备在接收到报文后针对路径值进行1次或者多次取模操作,便可使用结果值(商数或者余数)确定出接口,从而完成基于某有序路径的报文转发动作,该方式与现有的SR技术及其改进方案相比,无需携带显式路径信息,中间路由设备无需编解码便可实现无状态报文转发,降低了对链路带宽的占用以及减少了路由设备计算资源的耗费。

如图8所示,基于源路由设备、中间路由设备、尾端路由设备和控制器之间的交互,执行报文转发方法,具体包括:

步骤S802,控制器为不同的报文赋予不同的路径值以及路径TTL值,并下发至源路由设备。

具体地,路径值由网络拓扑和特定路径信息计算得出。

步骤S804,源路由设备以及中间路由设备收到报文后,针对报文头中的路径值进行取模运算,得到运算结果,运算方式如下式所示。

V mod N=X余M

其中,模N=源路由设备或中间路由设备的可转发接口数计算得出,X是取模运算的商数,M是取模运算的余数。

步骤S806,根据运算结果查询接口映射表,以在接口映射表中查询对应的出接口标识。

步骤S808,对路径TTL值减1,基于更新的TTL结果和根据运算结果重新封装报文头,基于出接口对报文进行转发。

其中,运算结果可以为余数或者商数,不同的结果数值对应不同的出接口,按照不同的结果数对报文进行转发。

步骤S810,在检测到进入路由设备的多个报文取模运算的一个结果相同时,通过迭代取模运算的方式,对取模运算结果中的另一个结果再次进行取模运算,直到得到不同结果,以确定不同的匹配的出接口。

具体地,迭代取模操作如下式所示:

X(商数)mod N=X1余M1

或者M(余数)mod N=X2余M2

步骤S812,在检测到报文头中的路径TTL值为1时,确定达到尾端路由设备。

步骤S814,去掉报文头中路径值相关部分的封装内容,通过目的IP地址使用传统的路由设备转发方式转发报文。

综上,本公开的方案在极大的减少路由设备资源消耗的同时,又极大的减少了对链路带宽的占用,从根本上实现了对节点和传输资源的双重节省。

需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

下面参照图9来描述根据本发明的这种实施方式的一种报文转发装置900,应用于源路由设备。图9所示的报文转发装置900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

报文转发装置900以硬件模块的形式表现。报文转发装置900的组件可以包括但不限于:运算模块902,用于基于路径值计算参数对获取到的报文的路径值执行预设运算,基于运算结果确定源出接口;封装模块904,用于基于运算结果更新路径值,并基于更新后的路径值封装报文的报文头;转发模块906,用于基于源出接口将报文转发至对应的转发设备。

下面参照图10来描述根据本发明的这种实施方式的一种报文转发装置1000,应用于中间路由设备。图10所示的报文转发装置1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

报文转发装置1000以硬件模块的形式表现。报文转发装置1000的组件可以包括但不限于:接收模块1002,用于接收报文;处理模块1004,用于基于对报文的报文头的解析结果,处理报文。

下面参照图11来描述根据本发明的这种实施方式的一种报文转发装置1100,应用于尾端路由设备。图11所示的报文转发装置1100仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

报文转发装置1100以硬件模块的形式表现。报文转发装置1100的组件可以包括但不限于:下发模块1102,用于向源路由设备下发路径值和路径TTL值。

如图12所示,网络设备和控制器均由电子设备构成,电子设备1200以通用计算设备的形式表现。电子设备1200的组件可以包括但不限于:上述至少一个处理单元1210、上述至少一个存储单元1220、连接不同系统组件(包括存储单元1220和处理单元1210)的总线1230。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1210执行,使得所述处理单元1210执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元1210可以执行如图2中所示的步骤S202至步骤S206所描述的方案。

存储单元1220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)12201和/或高速缓存存储单元12202,还可以进一步包括只读存储单元(ROM)12203。

存储单元1220还可以包括具有一组(至少一个)程序模块12205的程序/实用工具12204,这样的程序模块12205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备1200也可以与一个或多个外部设备1260(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1200交互的设备通信,和/或与使得该电子设备1200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1240进行。并且,电子设备1200还可以通过网络适配器1250与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1250通过总线1230与电子设备1200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。

根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

相关技术
  • 一种报文发送方法、装置、网络设备和计算机可读介质
  • 基于网络融合的报文转发方法、设备、存储介质及装置
  • 报文转发方法及装置、计算机可读存储介质、电子设备
  • 网络设备系统、网络设备系统的实现方法以及计算机可读存储介质
  • 一种报文处理方法、装置及网络设备
  • 报文转发方法、设备、系统、网络设备和存储介质
  • 报文转发路径确定方法、装置、网络设备和存储介质
技术分类

06120116085896