一种报文转发方法及装置制造方法及图纸

技术编号:18530173 阅读:31 留言:0更新日期:2018-07-25 14:57
本公开提供一种报文转发方法及装置,所述方法包括:对于本地存在多个非等价下一跳的FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳。应用本公开实施例可以在实现多个非等价下一跳的负载均衡的前提下,节省系统资源。

【技术实现步骤摘要】
一种报文转发方法及装置
本公开涉及网络通信
,尤其涉及一种报文转发方法及装置。
技术介绍
ECMP(EqualCostMultiplePath,等价路由)是当前网络中普遍使用的一种多路径负载均衡和链路备份的技术,其缺点较明显,就是当不同链路的可用带宽不同时,带宽的利用率比较低。例如:两条链路,链路一可用带宽10G,链路二可用带宽是1G,如果要在这两条路径上部署ECMP,由于两条链路对流量均衡负载分担,总带宽最多只能是2G,否则链路二会超带宽丢包。UCMP(UnequalCostMultiplePath,非等价路由)可以很好的解决ECMP遇到的带宽利用率低的问题,用户可以根据链路带宽不同,设置其分担不同比例的流量,仍以上一示例为例,当在这两条路径上部署UCMP时,可以指定链路一分担流量的权值为10,链路二分担流量的权值为1,这样流量的10/11将会走链路一,剩余的1/11将会走链路二,提高了链路利用率。
技术实现思路
本公开提供一种报文转发方法及装置,以解决现有UCMP实现方案中的下一跳数据下发方式会消耗大量的资源的问题根据本公开的第一方面,提供一种报文转发方法,应用于支持UCMP的转发设备,所述方法包括:对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。根据本公开的第二方面,提供一种报文转发装置,应用于支持UCMP的转发设备,所述装置包括:第一确定单元,用于对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;接收单元,用于接收报文;第二确定单元,还用于当所述接收单元接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;第三确定单元,用于根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。根据本公开的第三方面,提供一种报文转发装置,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。根据本公开的第四方面,提供一种机器可读存储介质,其特征在于,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。应用本公开,对于本地存在多个非等价下一跳的FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定该报文匹配的目标FIB表项存在多个非等价下一跳时,根据该报文的指定特征,利用预设算法,得到第一数值,并利用该第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值,进而根据该第二数值从目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳,在实现多个非等价下一跳的负载均衡的前提下,节省了系统资源。附图说明图1是一种ECMP实现方案中下一跳数组的示意图;图2是一种UCMP实现方案中下一跳数组的示意图;图3是本公开实施例提供的一种报文转发方法的流程示意图;图4A和4B是本公开实施例提供的下一跳数组的示意图;图5是本公开实施例提供的一种报文转发装置的结构示意图;图6是本公开实施例提供的一种报文转发装置的硬件结构示意图。具体实施方式在ECMP实现方案中,通过报文目的IP(InternetProtocol,互联网协议)地址查FIB(ForwardInformationdataBase,转发信息库)表,命中FIB表项后会关联到一个下一跳数组的基址(指向一个由多个下一跳表项组成的数组,本文中简称为下一跳数组),并能获取到下一跳的总条数,以图1为例,等价下一跳包括a、b、c3条。设备会根据报文的特征(通常是可设置的,例如根据目的IP)使用固定算法计算出一个数值,用该数值对下一跳总条数取余,作为下一跳数组的下标,报文就按其对应的下一跳出口转发出去。而UCMP实现方案在ECMP实现的基础上进行了扩展,仍以上一示例为例,假设a出口的可用带宽为5G,b出口的可用带宽为5G,c出口的可用带宽1G,则要想充分利用带宽,就需要流量在a、b、c上进行5:5:1的负载分担。表项组织上就要如图2,在下一跳数组中下发5个a,5个b,1个c,下一跳的总条数就是11(5+5+1=11);报文按哪个下一跳转发,由固定的算法对报文特征做运算获取一个数值,并将该数值对11取余,作为数组下标获取对应下一跳出口。因为下一跳数组中有5个a,5个b,1个c,大量随机报文将会在在a、b、c上做5:5:1的负载分担。可见,现有UCMP实现方案中的下一跳数据下发方式会消耗大量的资源。为了使本
的人员更好地理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中技术方案作进一步详细的说明。请参见图3,为本公开实施例提供的一种报文转发方法的流程示意图,其中,该报文转发方法可以应用于支持UCMP的转发设备(以下简称为转发设备),如路由器或交换机等,如图3所示,该报文转发方法可以包括以下本文档来自技高网
...

【技术保护点】
1.一种报文转发方法,应用于支持非等价路由UCMP的转发设备,其特征在于,所述方法包括:对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。

【技术特征摘要】
1.一种报文转发方法,应用于支持非等价路由UCMP的转发设备,其特征在于,所述方法包括:对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。2.根据权利要求1所述的方法,其特征在于,FIB表对应的下一跳数组中包括第一类型字段和第二类型字段,所述下一跳数组中任一下一跳的第一类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第二类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳的权值之和;所述根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳,包括:从所述目标下一跳数组中选择候选下一跳;若候选下一跳的第一类型字段的值大于所述第二数值,第二类型字段的值小于等于所述第二数值,则将该候选下一跳确定为目标下一跳;否则,重新选择候选下一跳。3.根据权利要求1所述的方法,其特征在于,FIB表对应的下一跳数组中包括第三类型字段和第四类型字段,所述下一跳数组中任一下一跳的第三类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第四类型字段的值为该任一下一跳的权值;所述根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳,包括:从所述目标下一跳数组中选择候选下一跳;若候选下一跳的第三类型字段的值大于所述第二数值,第三类型字段的值与第四类型字段的值的差值小于等于所述第二数值,则将该候选下一跳确定为目标下一跳;否则,重新选择候选下一跳。4.根据权利要求2或3所述的方法,其特征在于,所述从所述目标下一跳数组中选择候选下一跳,包括:按照从前往后的顺序或从后往前的顺序依次选择目标下一跳数组中各下一跳为候选下一跳。5.根据权利要求2或3所述的方法,其特征在于,所述从所述目标下一跳数组中选择候选下一跳,包括:利用二分法从所述目标下一跳数组中选择候选下一跳。6.一种报文转发装置,应用于支持非等价路由UCMP的转发设备,其特征在于,所述装置包括:第一确定单元,用于对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;接收单元,用于接收报文;第二确定单元,还用于当所述接收单元接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;第三确定单元,用于根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和...

【专利技术属性】
技术研发人员:王宇轩
申请(专利权)人:新华三技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1