CN108322388B - 一种报文转发方法及装置 - Google Patents
一种报文转发方法及装置 Download PDFInfo
- Publication number
- CN108322388B CN108322388B CN201810097021.8A CN201810097021A CN108322388B CN 108322388 B CN108322388 B CN 108322388B CN 201810097021 A CN201810097021 A CN 201810097021A CN 108322388 B CN108322388 B CN 108322388B
- Authority
- CN
- China
- Prior art keywords
- next hop
- target
- value
- type field
- message
- 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
Images
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/24—Multipath
-
- 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/20—Hop count for routing purposes, e.g. TTL
-
- 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/54—Organization of routing tables
-
- 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种报文转发方法及装置,所述方法包括:对于本地存在多个非等价下一跳的FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳。应用本公开实施例可以在实现多个非等价下一跳的负载均衡的前提下,节省系统资源。
Description
技术领域
本公开涉及网络通信技术领域,尤其涉及一种报文转发方法及装置。
背景技术
ECMP(Equal Cost Multiple Path,等价路由)是当前网络中普遍使用的一种多路径负载均衡和链路备份的技术,其缺点较明显,就是当不同链路的可用带宽不同时,带宽的利用率比较低。例如:两条链路,链路一可用带宽10G,链路二可用带宽是1G,如果要在这两条路径上部署ECMP,由于两条链路对流量均衡负载分担,总带宽最多只能是2G,否则链路二会超带宽丢包。
UCMP(Unequal Cost Multiple Path,非等价路由)可以很好的解决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(Internet Protocol,互联网协议)地址查FIB(Forward Information dataBase,转发信息库)表,命中FIB表项后会关联到一个下一跳数组的基址(指向一个由多个下一跳表项组成的数组,本文中简称为下一跳数组),并能获取到下一跳的总条数,以图1为例,等价下一跳包括a、b、c 3条。设备会根据报文的特征(通常是可设置的,例如根据目的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所示,该报文转发方法可以包括以下步骤:
步骤301、对于本地存在多个非等价下一跳的FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值。
本公开实施例中,转发设备可以遍历本地的FIB表项,并筛选出存在多个非等价下一跳的FIB表项。
其中,对于任一存在多个非等价下一跳的FIB表项,转发设备可以根据各下一跳对应的出口带宽确定各下一跳的权值。例如,根据各下一跳对应的出口带宽的比值确定各下一跳的权值。
举例来说,假设FIB表项1存在3个非等价下一跳(假设分别为a、b和c),且其出口带宽分别为5G、5G和1G,则转发设备可以确定下一跳a、下一跳b和下一跳c的权值分别为5、5和1。
步骤302、当接收到报文,且确定该报文匹配的目标FIB表项存在多个非等价下一跳时,根据报文的指定特征,利用预设算法,得到第一数值,并利用第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值。
本公开实施例中,当转发设备接收到报文时,可以根据该报文的目的IP地址查询本地的FIB表项,以确定该报文匹配的FIB表项(本文中称为目标FIB表项)。
当转发设备查询到报文匹配的目标FIB表项,且该目标FIB表项存在多个非等价下一跳时,转发设备可以根据该报文的指定特征(如目的IP地址、目的MAC(Media AccessControl,媒体访问控制)地址等),利用预设算法进行计算,以得到对应的数值(本文中称为第一数值)。
其中,当输入参数相同时,利用上述预设算法计算得到的第一数值相同,且该第一数值为正整数;当输入参数不同时,利用上述预设算法计算得到的第一数值不同。
转发设备得到第一数值之后,可以利用第一数值对目标FIB表项的各下一跳权值之和取余,得到对应的数值(本文中称为第二数值)。
举例来说,假设目标FIB表项的各下一跳权值分别为5、5和1,且转发设备根据接收到的报文的目的IP地址利用上述预设算法计算得到的第一数值为20,则转发设备可以利用20对11(5+5+1=11)取余得到对应的第二数值,即第二数值为9(20%11=9)。
需要说明的是,在本公开实施例中,当目标FIB表仅存在一个下一跳,或者,存在多个等价下一跳时,转发设备对报文的转发处理方式可以参见现有相关技术中的相关处理流程,本公开实施例在此不做赘述。
步骤303、根据第二数值从目标FIB表项对应的目标下一跳数组中确定用于转发该报文的目标下一跳;其中,第二数值大于目标下一跳数组中目标下一跳之前的各下一跳的权值之和,且小于等于目标下一跳数组中目标下一跳之前的各下一跳与目标下一跳的权值之和。
本公开实施例中,存在多个非等价下一跳的FIB表项对应的下一跳数组中的下一跳的数量与该FIB表项的非等价下一跳的数量相同。
当转发设备根据接收到的报文确定了第二数值之后,转发设备可以根据该第二数值从目标FIB表项对应的下一跳数组(本文中称为目标下一跳数组)中确定用于转发报文的下一跳(本文中称为目标下一跳)。
其中,假设目标下一跳数组中共有n(n为大于1的正整数)个下一跳,且目标下一跳为第i(i为小于等于n的正整数)个下一跳,则第二数值需要大于目标下一跳数组中前i-1个下一跳的权值之和,且小于等于目标下一跳数组中前i个下一跳权值。
举例来说,假设目标下一跳数组中包括三个非等价下一跳(假设第一个下一跳为a,第二个下一跳为b,第三个下一跳为c),且其权值分别为5、5和1,则若第二数值大于0,且小于等于5,则转发设备确定目标下一跳数组中的第一个下一跳(即a)为目标下一跳;若第二数值大于5,且小于等于10(5+5=10),则转发设备确定目标下一跳数组的第二个下一跳(即b)为目标下一跳;若第三数值大于10(5+5=10),且小于等于11(5+5+1=11),则转发设备确定目标下一跳数组的第三个下一跳(即c)为目标下一跳。
需要说明的是,在本公开实施例中,当目标下一跳为目标下一跳数组中第一个下一跳时,目标下一跳的前一个下一跳不存在,此时,该目标下一跳数组中目标下一跳之前的各下一跳的权值之和为0。
可见,在图3所示的方法流程中,在不需要在下一跳数组中多下发下一跳的情况下,即可实现FIB表项存在多个非等价下一跳的情况下的负载分担,节省了系统资源。
在本公开其中一个实施例中,FIB表对应的下一跳数组中包括第一类型字段和第二类型字段,该下一跳数组中任一下一跳的第一类型字段的值为该下一跳数组中该任一下一跳的之前的各下一跳与该任一下一跳的权值之和,第二类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳的权值之和;
相应地,上述根据第二数值从目标FIB表项对应的目标下一跳数组中确定用于转发接收到的报文的目标下一跳,包括:
从目标下一跳数组中选择候选下一跳;
若候选下一跳的第一类型字段的值大于第二数值,第二类型字段的值小于等于第二数值,则将该候选下一跳确定为目标下一跳;
否则,重新选择候选下一跳。
在该实施例中,转发设备下发FIB表项对应的下一跳数组时,可以在该下一跳数组中新增两个字段(本文中称为第一类型字段和第二类型字段),其中,该下一跳数组中任一下一跳的第一类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第二类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳的权值之和。
相应地,当转发设备根据接收到的报文确定了第二数值时,转发设备可以从目标下一跳数组中选择候选下一跳,并比较该第二数值,以及所选择的候选下一跳的第一类型字段的值和第二类型字段的值,并将第一类型字段的值大于第二数值,且第二类型字段的值小于等于第二数值的候选下一跳确定为目标下一跳。
举例来说,仍以步骤303中所举示例为例,转发设备下发的目标下一跳数组可以如图4A所示。
假设转发设备根据接收到的报文确定的第二数值为9,则由于该第二数值大于目标下一跳数组中的第一个下一跳(即a)的第一类型字段的值(5),因此,该目标下一跳数组中的第一个下一跳不是目标下一跳;
由于该第二数值小于目标下一跳数组中的第二个下一跳(即b)的第一类型字段的值(10),且大于该下一跳的第二类型字段的值(即5),因此,转发设备可以将该下一跳确定为目标下一跳,即目标下一跳为b。
在本公开另一个实施例中,FIB表对应的下一跳数组中包括第三类型字段和第四类型字段,下一跳数组中任一下一跳的第三类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第四类型字段的值为该任一下一跳的权值;
相应地,上述根据第二数值从目标FIB表项对应的目标下一跳数组中确定用于转发接收到的报文的目标下一跳,包括:
从目标下一跳数组中选择候选下一跳;
若候选下一跳的第三类型字段的值大于第二数值,第三类型字段的值与第四类型字段的值的差值小于等于第二数值,则将该候选下一跳确定为目标下一跳;
否则,重新选择候选下一跳。
在该实施例中,转发设备下发FIB表项对应的下一跳数组时,可以在该下一跳数组中新增两个字段(本文中称为第三类型字段和第四类型字段),其中,该下一跳数组中任一下一跳的第三类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第四类型字段的值为该任一下一跳的权值。
相应地,当转发设备根据接收到的报文确定了第二数值时,转发设备可以从目标下一跳数组中选择候选下一跳,并比较该第二数值,以及所选择的候选下一跳的第三类型字段的值、第三类型字段的值与第四类型字段的值的差值,并将第三类型字段的值大于第二数值,且第三类型字段的值与第四字段的值的差值小于等于第二数值的候选下一跳确定为目标下一跳。
举例来说,仍以步骤303中所举示例为例,转发设备下发的目标下一跳数组可以如图4B所示。
假设转发设备根据接收到的报文确定的第二数值为10,则由于该第二数值大于目标下一跳数组中的第一个下一跳(即a)的第三类型字段的值(5),因此,该目标下一跳数组中的第一个下一跳不是目标下一跳;
由于该第二数值等于目标下一跳数组中的第二个下一跳(即b)的第三类型字段的值(10),因此,该目标下一跳数组中的第二个下一跳不是目标下一跳;
因此,由于该第二数值小于目标下一跳数组中的第三个下一跳(即c)的第三类型字段的值(11),且等于该下一跳的第三类型字段的值(11)与第四字段的值(1)的差值(10),因此,转发设备可以将该下一跳确定为目标下一跳,即目标下一跳为c。
在本公开其中一个实施例中,上述从目标下一跳数组中选择候选下一跳,可以包括:
按照从前往后的顺序或从后往前的顺序依次选择目标下一跳数组中各下一跳为候选下一跳。
在该实施例中,转发设备根据接收到的报文确定了第二数值后,可以按照从前往后的顺序从目标下一跳数组中选择候选下一跳,并按照上述方法流程中描述的方式判断该候选下一跳是否为目标下一跳,直至确定转发报文的目标下一跳。
以上一示例为例,转发设备可以依次选择下一跳a、下一跳b和下一跳c为候选下一跳,直至确定转发报文的目标下一跳。
或者,转发设备可以按照从后往前的顺序从目标下一跳数组中选择候选下一跳,并按照上述方法流程中描述的方式判断该候选下一跳是否为目标下一跳,直至确定转发报文的目标下一跳。
仍以上一示例为例,转发设备可以依次选择下一跳c、下一跳b和下一跳a为候选下一跳,直至确定转发报文的目标下一跳。
在本公开另一个实施例中,上述从目标下一跳数组中选择候选下一跳,可以包括:
利用二分法从目标下一跳数组中选择候选下一跳。
在该实施例中,为了提高确定目标下一跳的效率,转发设备根据接收到的报文确定了第二数值之后,可以利用二分法从目标下一跳数组中选择候选下一跳。
若确定第个下一跳的第一类型字段的值小于等于第二数值,或者,第个下一跳的第三类型字段的值小于等于第二数值,则继续利用二分法在所述目标FIB表项对应的下一跳数组的第个下一跳到第N个下一跳中选择候选下一跳;
若第个下一跳的第二类型字段的值大于第二数值,或者,第个下一跳的第三类型字段的值与第四类型字段的值的差值大于第二数值,则继续利用二分法在所述目标FIB表项对应的下一跳数组的第1个下一跳到第个下一跳中选择候选下一跳。
以此类推,直至确定转发报文的目标下一跳。
举例来说,以图4A所示示例为例,假设第二数值为1,转发设备可以先选择下一跳b为候选下一跳,由于下一跳b的第二类型字段的值(5)大于第二数值,因此,转发设备可以确定下一跳b不是目标下一跳,且转发设备再选择下一跳a为候选下一跳,由于下一跳a的第一类型字段的值(5)大于第二数值,且第二类型字段的值(0)小于第二数值,因此,转发设备可以确定下一跳a为目标下一跳。
又举例来说,以图4B所示示例为例,假设第二数值为10,转发设备可以先选择下一跳b为候选下一跳,由于下一跳b的第三类型字段的值(10)等于第二数值,因此,转发设备可以确定下一跳b不是目标下一跳,且转发设备再选择下一跳c为候选下一跳,由于下一跳c的第三类型字段的值(11)大于第二数值,且第三类型字段的值(11)与第四类型字段的值(10)的差值(1)小于第二数值,因此,转发设备可以确定下一跳c为目标下一跳。
通过以上描述可以看出,在本公开实施例提供的技术方案中,对于本地存在多个非等价下一跳的FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定该报文匹配的目标FIB表项存在多个非等价下一跳时,根据该报文的指定特征,利用预设算法,得到第一数值,并利用该第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值,进而根据该第二数值从目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳,在实现多个非等价下一跳的负载均衡的前提下,节省了系统资源。
请参见图5,为本公开实施例提供的一种报文转发装置的结构示意图,其中,该报文转发装置可以应用于上述方法实施例中的转发设备,如图5所示,该报文转发装置可以包括:
第一确定单元510,用于对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;
接收单元520,用于接收报文;
第二确定单元530,还用于当所述接收单元接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;
第三确定单元540,用于根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。
在可选实施例中,FIB表对应的下一跳数组中包括第一类型字段和第二类型字段,所述下一跳数组中任一下一跳的第一类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第二类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳的权值之和;
相应地,所述第三确定单元540,具体用于从所述目标下一跳数组中选择候选下一跳;若候选下一跳的第一类型字段的值大于所述第二数值,第二类型字段的值小于等于所述第二数值,则将该候选下一跳确定为目标下一跳;否则,重新选择候选下一跳。
在可选实施例中,FIB表对应的下一跳数组中包括第三类型字段和第四类型字段,所述下一跳数组中任一下一跳的第三类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第四类型字段的值为该任一下一跳的权值;
相应地,所述第三确定单元540,具体用于从所述目标下一跳数组中选择候选下一跳;若候选下一跳的第三类型字段的值大于所述第二数值,第三类型字段的值与第四类型字段的值的差值小于等于所述第二数值,则将该候选下一跳确定为目标下一跳;否则,重新选择候选下一跳。
在可选实施例中,所述第三确定单元540,具体用于按照从前往后的顺序或从后往前的顺序依次选择目标下一跳数组中各下一跳为候选下一跳。
在可选实施例中,所述第三确定单元540,具体用于利用二分法从所述目标下一跳数组中选择候选下一跳。
请参见图6,为本公开实施例提供的一种报文转发装置的硬件结构示意图。该报文转发装置可以包括处理器601、存储有机器可执行指令的机器可读存储介质602。处理器601与机器可读存储介质602可经由系统总线603通信。并且,通过读取并执行机器可读存储介质602中与报文转发逻辑对应的机器可执行指令,处理器601可执行上文描述的报文转发方法。
本文中提到的机器可读存储介质602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
本公开实施例还提供了一种包括机器可执行指令的机器可读存储介质,例如图6中的机器可读存储介质602,所述机器可执行指令可由报文转发装置中的处理器601执行以实现以上描述的报文转发方法。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,对于本地存在多个非等价下一跳的FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;当接收到报文,且确定该报文匹配的目标FIB表项存在多个非等价下一跳时,根据该报文的指定特征,利用预设算法,得到第一数值,并利用该第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值,进而根据该第二数值从目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳,在实现多个非等价下一跳的负载均衡的前提下,节省了系统资源。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (12)
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表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。
7.根据权利要求6所述的装置,其特征在于,FIB表对应的下一跳数组中包括第一类型字段和第二类型字段,所述下一跳数组中任一下一跳的第一类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第二类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳的权值之和;
所述第三确定单元,具体用于从所述目标下一跳数组中选择候选下一跳;若候选下一跳的第一类型字段的值大于所述第二数值,第二类型字段的值小于等于所述第二数值,则将该候选下一跳确定为目标下一跳;否则,重新选择候选下一跳。
8.根据权利要求6所述的装置,其特征在于,FIB表对应的下一跳数组中包括第三类型字段和第四类型字段,所述下一跳数组中任一下一跳的第三类型字段的值为该下一跳数组中该任一下一跳之前的各下一跳与该任一下一跳的权值之和,第四类型字段的值为该任一下一跳的权值;
所述第三确定单元,具体用于从所述目标下一跳数组中选择候选下一跳;若候选下一跳的第三类型字段的值大于所述第二数值,第三类型字段的值与第四类型字段的值的差值小于等于所述第二数值,则将该候选下一跳确定为目标下一跳;否则,重新选择候选下一跳。
9.根据权利要求7或8所述的装置,其特征在于,
所述第三确定单元,具体用于按照从前往后的顺序或从后往前的顺序依次选择目标下一跳数组中各下一跳为候选下一跳。
10.根据权利要求7或8所述的装置,其特征在于,
所述第三确定单元,具体用于利用二分法从所述目标下一跳数组中选择候选下一跳。
11.一种报文转发装置,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:
对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;
当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;其中,当输入参数相同时,利用所述预设算法计算得到的第一数值相同,且该第一数值为正整数;当输入参数不同时,利用所述预设算法计算得到的第一数值不同;
根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。
12.一种机器可读存储介质,其特征在于,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:
对于本地存在多个非等价下一跳的转发信息库FIB表项,根据各下一跳对应的出口带宽确定各下一跳的权值;
当接收到报文,且确定所述报文匹配的目标FIB表项存在多个非等价下一跳时,根据所述报文的指定特征,利用预设算法,得到第一数值,并利用所述第一数值对目标FIB表项的各下一跳的权值之和取余,得到第二数值;
其中,当输入参数相同时,利用所述预设算法计算得到的第一数值相同,且
该第一数值为正整数;当输入参数不同时,利用上述预设算法计算得到的第一数值不同;
根据所述第二数值从所述目标FIB表项对应的目标下一跳数组中确定用于转发所述报文的目标下一跳;其中,所述第二数值大于所述目标下一跳数组中所述目标下一跳之前的各下一跳的权值之和,且小于等于所述目标下一跳数组中所述目标下一跳之前的各下一跳与所述目标下一跳的权值之和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810097021.8A CN108322388B (zh) | 2018-01-31 | 2018-01-31 | 一种报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810097021.8A CN108322388B (zh) | 2018-01-31 | 2018-01-31 | 一种报文转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108322388A CN108322388A (zh) | 2018-07-24 |
CN108322388B true CN108322388B (zh) | 2022-03-01 |
Family
ID=62890346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810097021.8A Active CN108322388B (zh) | 2018-01-31 | 2018-01-31 | 一种报文转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108322388B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109639590B (zh) * | 2019-01-15 | 2022-08-30 | 网宿科技股份有限公司 | 实现非等价线路负载均衡的数据传输方法及路由节点设备 |
CN110401594B (zh) * | 2019-07-02 | 2022-03-25 | 杭州迪普科技股份有限公司 | 报文转发方法、装置、电子设备及机器可读存储介质 |
CN113660160B (zh) * | 2021-08-20 | 2023-04-28 | 烽火通信科技股份有限公司 | 一种ucmp负载分担的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710507A (zh) * | 2012-05-17 | 2012-10-03 | 杭州华三通信技术有限公司 | 一种实现报文转发路径一致的方法和网络设备 |
CN103188165A (zh) * | 2013-03-12 | 2013-07-03 | 神州数码网络(北京)有限公司 | 一种路由器多径输出智能负载均衡的方法及路由器 |
CN103281253A (zh) * | 2013-05-27 | 2013-09-04 | 杭州华三通信技术有限公司 | 一种非等价路由的负载分担方法和设备 |
CN103379042A (zh) * | 2012-04-25 | 2013-10-30 | 丛林网络公司 | 路径加权的等价多路径 |
US20150032871A1 (en) * | 2010-09-08 | 2015-01-29 | Telefonaktiebolaget L M Ericsson (Publ) | Automated traffic engineering based upon the use of bandwidth and unequal cost path utilization |
US20170026303A1 (en) * | 2012-09-13 | 2017-01-26 | First Principles, Inc. | Data stream division to increase data transmission rates |
CN106605391A (zh) * | 2014-08-29 | 2017-04-26 | 思科技术公司 | 带宽加权的等价多路径路由 |
-
2018
- 2018-01-31 CN CN201810097021.8A patent/CN108322388B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150032871A1 (en) * | 2010-09-08 | 2015-01-29 | Telefonaktiebolaget L M Ericsson (Publ) | Automated traffic engineering based upon the use of bandwidth and unequal cost path utilization |
CN103379042A (zh) * | 2012-04-25 | 2013-10-30 | 丛林网络公司 | 路径加权的等价多路径 |
CN102710507A (zh) * | 2012-05-17 | 2012-10-03 | 杭州华三通信技术有限公司 | 一种实现报文转发路径一致的方法和网络设备 |
US20170026303A1 (en) * | 2012-09-13 | 2017-01-26 | First Principles, Inc. | Data stream division to increase data transmission rates |
CN103188165A (zh) * | 2013-03-12 | 2013-07-03 | 神州数码网络(北京)有限公司 | 一种路由器多径输出智能负载均衡的方法及路由器 |
CN103281253A (zh) * | 2013-05-27 | 2013-09-04 | 杭州华三通信技术有限公司 | 一种非等价路由的负载分担方法和设备 |
CN106605391A (zh) * | 2014-08-29 | 2017-04-26 | 思科技术公司 | 带宽加权的等价多路径路由 |
Also Published As
Publication number | Publication date |
---|---|
CN108322388A (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150124652A1 (en) | Weighted equal cost multipath routing | |
US9571400B1 (en) | Weighted load balancing in a multistage network using hierarchical ECMP | |
US9565114B1 (en) | Weighted load balancing using scaled parallel hashing | |
US6973082B2 (en) | Forwarding packets to aggregated links using distributed ingress card processing | |
US8804531B2 (en) | Methods and apparatus for load balancing across member ports for traffic egressing out of a port channel | |
EP3167574B1 (en) | System and method for supporting efficient load-balancing in a high performance computing (hpc) environment | |
CN106559324A (zh) | 一种基于等价多路径转发报文的方法及网络设备 | |
US11140069B2 (en) | Optimizing information related to a route and/or a next hop for multicast traffic | |
CN108322388B (zh) | 一种报文转发方法及装置 | |
EP3562097B1 (en) | Establishment for table entry of equal-cost path | |
US7395351B1 (en) | Method for assigning link weights in a communications network | |
US10560367B2 (en) | Bidirectional constrained path search | |
CN110768917B (zh) | 一种报文传输方法及装置 | |
US8867408B2 (en) | Fast convergence on child link failures and weighted load balancing of aggregate ethernet/sonet bundles | |
US11765072B2 (en) | Weighted bandwidth allocation for adaptive routing | |
US11711290B2 (en) | Enabling selection of a bypass path from available paths in an open shortest path first (OSPF) domain and an intermediate system to intermediate system (ISIS) domain | |
US10243838B1 (en) | Interleaving members for proportionate network traffic distribution | |
US11770338B2 (en) | Increasing multi-path size using hierarchical forwarding equivalent classes | |
US11489767B1 (en) | Interspersing network traffic across members of a container label-switched path | |
CN107547385B (zh) | Bfd协议报文的传输方法和装置 | |
CN113825175A (zh) | 一种卫星数据的传输方法、装置、设备及存储介质 | |
CN118075191A (zh) | 一种基于SRv6策略隧道传输报文的方法和装置 |
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 |