背景技术
对于同一路由协议来说,允许配置多条目的地址相同且开销相同的路由,即等价路由,其发送报文的链路为等价链路;在转发去往目的地址的报文时,将依次通过各条等价链路进行发送,从而实现网络的负载分担,以有效的提高链路的带宽和利用率,且实现链路的相互备份,有效地提高链路的可靠性。
当前的逐流转发方式中,根据五元组(目的MAC(MediaAccessControl,介质访问控制),源MAC,目的IP,源IP,端口号)和Index(索引)计算值生成快转表项,其中记录了转发该五元组报文所需的路由信息,即下一跳和出接口;且相同五元组的后续报文从同一个接口进入,并将匹配到该快转表项,走快转流程,即和前一个报文采用相同的出接口和下一跳进行转发。
当前的逐包转发方式中,从等价路由表的链表头开始,报文每查询一次等价路由表,则需要将链表头所指向的等价路由返回,同时将链表头向后移一个等价路由,这样,在下次查询时就会返回下一个等价路由。
如图1所示,为现有技术的应用场景示意图,Route1设备上的等价路由表中存在如表1所示的等价路由。
表1
针对逐流转发方式,如果有目的地址为1.2.3.4的报文,则匹配网段路由(1.2.3.0/24),且根据五元组和index计算值在端口ethernet0,ethernet1,thernet2和ethernet3上hash,如hash到ethernet1,则可建立快转表项,其出接口为ethernet1,下一跳为3.3.3.3;对于后续该五元组的报文,由于匹配快转表项,因此不再查等价路由表,直接利用接口ethernet1,下一跳3.3.3.3进行转发。
针对逐包转发方式,到目的网段1.2.3.0/24有四条等价路由:下一跳分别为2.2.2.2,3.3.3.3,4.4.4.4,5.5.5.5;如果有目的地址为1.2.3.4的报文,则匹配该网段路由(1.2.3.0/24),共有连续N个报文,则:第一个报文从ethernet0发出,下一跳为2.2.2.2;第二个报文从ethernet1发出,下一跳为3.3.3.3;第三个报文从ethernet2发出,下一跳为4.4.4.4;第四个报文从ethernet3发出,下一跳为5.5.5.5;第五个报文从ethernet0发出,下一跳为2.2.2.2,以此类推。
逐流转发方式的缺点是:对转发的每条流hash时,都需要选择所有等价链路的端口进行hash,且不同流量经过hash映射后,有可能映射到同一条等价链路上,如果网络中存在的流量刚好负载分担至同一条等价链路上进行转发,则仍然会出现该等价链路的负载大,而其他等价链路空闲的现象,从而导致等价链路无法合理分担流量,继而无法合理利用等价链路。逐包转发方式的缺点是:转发效率很差,而且容易出错包,导致重传等问题。
发明内容
本发明实施例提供一种流量负载分担方法和设备,以使等价链路合理分担流量,并合理利用等价链路。
为了达到上述目的,本发明实施例提供一种流量负载分担方法,应用于包括多条等价链路的网络中,该方法包括以下步骤:
在接收到需要通过所述多条等价链路发送的流量时,获得所述多条等价链路中的各条等价链路的剩余链路带宽信息;
当等价链路的剩余链路带宽大于等于所述流量的使用带宽时,将该等价链路所在端口的优先级设置为第一优先级;当等价链路的剩余链路带宽小于所述流量的使用带宽时,将该等价链路所在端口的优先级设置为第二优先级;
如果所述多条等价链路中有等价链路所在端口的优先级为第一优先级,则优先利用所有具有第一优先级的端口对所述流量进行基于逐流转发方式的流量负载分担处理;
如果所述多条等价链路中没有等价链路所在端口的优先级为第一优先级,且有等价链路所在端口的优先级为第二优先级,则利用所有具有第二优先级的端口对所述流量进行基于逐包转发方式的流量负载分担处理。
获得所述多条等价链路中的各条等价链路的剩余链路带宽信息,之后还包括:当等价链路处于拥塞状态时,将该等价链路所在端口的优先级设置为第三优先级;如果所述多条等价链路中所有等价链路所在端口的优先级为第三优先级,则丢弃所述流量。
丢弃所述流量之后还包括:发出告警信息,且所述告警信息用于提示所有等价链路均处于拥塞状态。
每条等价链路配置有令牌桶C和令牌桶E,Tc为所述令牌桶C中的令牌个数,Te为所述令牌桶E中的令牌个数;且所述令牌桶C中存在足够令牌时表示等价链路当前能够在不发生丢包的情况下发送流量;且所述令牌桶C中未存在足够令牌,所述令牌桶E中存在足够令牌时表示等价链路当前能够在发生丢包的情况下发送流量;获得所述多条等价链路中的各条等价链路的剩余链路带宽信息的过程,包括:如果等价链路对应的令牌桶C中的当前令牌个数Tc大于等于所述流量的使用带宽,则确定该等价链路的剩余链路带宽大于等于所述流量的使用带宽;如果等价链路对应的令牌桶C中的当前令牌个数Tc小于所述流量的使用带宽,且该等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和大于等于所述流量的使用带宽,则确定该等价链路的剩余链路带宽小于所述流量的使用带宽;如果等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和小于所述流量的使用带宽,则确定该等价链路处于拥塞状态。
所述令牌桶C的容积为CBS,所述令牌桶E的容积为EBS,所述方法进一步包括:在将令牌放入令牌桶时,如果所述令牌桶C中的令牌个数Tc小于CBS,则将令牌放入所述令牌桶C中;如果所述令牌桶C中的令牌个数Tc等于CBS,且所述令牌桶E中的令牌个数Te小于EBS,则将令牌放入所述令牌桶E中;如果所述令牌桶E中的令牌个数Te等于EBS,则不将令牌放入所述令牌桶C和所述令牌桶E中;
在删除令牌桶中的令牌时,如果所述令牌桶E中存在令牌,则删除所述令牌桶E中存在的令牌;如果所述令牌桶E中不存在令牌,且所述令牌桶C中存在令牌,则删除所述令牌桶C中存在的令牌。
本发明实施例提供一种流量负载分担设备,可应用于包括多条等价链路的网络中,该设备包括:
获得模块,用于在接收到需要通过所述多条等价链路发送的流量时,获得所述多条等价链路中的各条等价链路的剩余链路带宽信息;
设置模块,用于当等价链路的剩余链路带宽大于等于所述流量的使用带宽时,将该等价链路所在端口的优先级设置为第一优先级;当等价链路的剩余链路带宽小于所述流量的使用带宽时,将该等价链路所在端口的优先级设置为第二优先级;
处理模块,用于当所述多条等价链路中有等价链路所在端口的优先级为第一优先级时,则优先利用所有具有第一优先级的端口对所述流量进行基于逐流转发方式的流量负载分担处理;当所述多条等价链路中没有等价链路所在端口的优先级为第一优先级,且有等价链路所在端口的优先级为第二优先级时,则利用所有具有第二优先级的端口对所述流量进行基于逐包转发方式的流量负载分担处理。
所述设置模块,还用于当等价链路处于拥塞状态时,将该等价链路所在端口的优先级设置为第三优先级;
所述处理模块,还用于当所述多条等价链路中所有等价链路所在端口的优先级为第三优先级时,则丢弃所述流量。
所述处理模块,进一步用于在丢弃所述流量之后,发出告警信息,且所述告警信息用于提示所有等价链路均处于拥塞状态。
每条等价链路配置有令牌桶C和令牌桶E,Tc为所述令牌桶C中的令牌个数,Te为所述令牌桶E中的令牌个数;且所述令牌桶C中存在足够令牌时表示等价链路当前能够在不发生丢包的情况下发送流量;且所述令牌桶C中未存在足够令牌,所述令牌桶E中存在足够令牌时表示等价链路当前能够在发生丢包的情况下发送流量;所述获得模块,进一步用于当等价链路对应的令牌桶C中的当前令牌个数Tc大于等于所述流量的使用带宽时,则确定该等价链路的剩余链路带宽大于等于所述流量的使用带宽;当等价链路对应的令牌桶C中的当前令牌个数Tc小于所述流量的使用带宽,且该等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和大于等于所述流量的使用带宽时,则确定该等价链路的剩余链路带宽小于所述流量的使用带宽;当等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和小于所述流量的使用带宽时,则确定该等价链路处于拥塞状态。
所述令牌桶C的容积为CBS,所述令牌桶E的容积为EBS;
所述获得模块,进一步用于在将令牌放入令牌桶时,如果所述令牌桶C中的令牌个数Tc小于CBS,则将令牌放入所述令牌桶C中;如果所述令牌桶C中的令牌个数Tc等于CBS,且所述令牌桶E中的令牌个数Te小于EBS,则将令牌放入所述令牌桶E中;如果所述令牌桶E中的令牌个数Te等于EBS,则不将令牌放入所述令牌桶C和所述令牌桶E中;
在删除令牌桶中的令牌时,如果所述令牌桶E中存在令牌,则删除所述令牌桶E中存在的令牌;如果所述令牌桶E中不存在令牌,且所述令牌桶C中存在令牌,则删除所述令牌桶C中存在的令牌。
与现有技术相比,本发明至少具有以下优点:本发明实施例中,根据各等价链路的状况合理分配端口优先级,使得流量在等价链路上均衡转发,使等价链路合理分担流量,并合理利用等价链路,提高各条等价链路的使用率。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
本发明实施例提出一种流量负载分担方法,该方法可以应用于包括多条等价链路的网络中,以图1为本发明实施例的应用场景示意图,则Route1与Route2之间存在4条等价链路;如图2所示,该方法包括以下步骤:
步骤201,在接收到需要通过多条等价链路发送的流量时,获得多条等价链路中的各条等价链路的剩余链路带宽信息。
例如,Route1接收到需要发送给Route2的流量时,则该流量为需要通过多条等价链路发送的流量,且该流量为当前待转发流量;且Route1需要获得各等价链路的剩余链路带宽信息。
本发明实施例中,等价链路的剩余链路带宽信息具体为:等价链路的剩余链路带宽大于等于当前待转发流量的使用带宽;或者,等价链路的剩余链路带宽小于当前待转发流量的使用带宽;或者,等价链路处于拥塞状态(当某个时刻,流量到达的速率大于发送流量的速率,即链路出现严重丢包)。
为了获得各条等价链路的剩余链路带宽信息,可以在所有需要监控的等价链路端口上使能流量监控功能,且在该功能使能后,可以获取等价链路上的当前带宽使用情况,继而获得等价链路的剩余链路带宽信息。
在实际应用中,可利用令牌桶(TokenBucket)获得各等价链路的剩余链路带宽信息,该令牌桶可以看作是存放一定数量令牌的容器,且基于令牌桶中是否存在令牌来指示何时可发送流量;令牌桶中的每一个令牌代表一个字节,如果令牌桶中存在令牌,则允许发送流量,如果令牌桶中不存在令牌,则不允许发送流量;假设配置平均发送速率为r,则每隔1/r秒将一个令牌放置到令牌桶中,当令牌桶中令牌满时,多出的令牌溢出,令牌桶中令牌不再增加;当一个n字节的数据包到达时,从令牌桶中删除n个令牌,且如果令牌桶中少于n个令牌,则不会删除令牌,认为这个数据包在流量限制之外。
基于令牌桶的相关特征,本发明实施例提供的一种优选的获得等价链路的剩余链路带宽信息的方式,具体为:每条等价链路配置有令牌桶C(标准令牌桶)和令牌桶E(扩展令牌桶),令牌桶C的容积为CBS,令牌桶E的容积为EBS,通过合理设置CBS和EBS(根据实际需要进行设置),使得令牌桶C中存在足够令牌(即令牌个数大于等于当前待转发流量的使用带宽)时表示等价链路当前能够在不发生丢包的情况下发送流量;且令牌桶C中未存在足够令牌(即令牌个数小于当前待转发流量的使用带宽),令牌桶E中存在足够令牌(即令牌桶C和令牌桶E的令牌个数大于等于当前待转发流量的使用带宽)时表示等价链路当前能够在发生丢包的情况下发送流量。
需要说明的是,设置Tc为令牌桶C中的令牌个数,Te为令牌桶E中的令牌个数;且初始时Tc=CBS,Te=EBS。
在将令牌放入令牌桶时,如果令牌桶C中的令牌个数Tc小于CBS,将令牌放入令牌桶C中;如果令牌桶C中的令牌个数Tc等于CBS,令牌桶E中的令牌个数Te小于EBS,将令牌放入令牌桶E中;如果令牌桶E中的令牌个数Te等于EBS,则不将令牌放入令牌桶C和令牌桶E中;在删除令牌桶中的令牌时,如果令牌桶E中存在令牌,则删除令牌桶E中存在的令牌;如果令牌桶E中不存在令牌,令牌桶C中存在令牌,则删除令牌桶C中存在的令牌。
进一步的,基于上述令牌桶C和令牌桶E的相关维护过程,如果等价链路对应的令牌桶C中的当前令牌个数Tc大于等于当前待转发流量的使用带宽,则确定该等价链路的剩余链路带宽大于等于当前待转发流量的使用带宽;如果等价链路对应的令牌桶C中的当前令牌个数Tc小于当前待转发流量的使用带宽,且该等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和大于等于当前待转发流量的使用带宽,则确定该等价链路的剩余链路带宽小于当前待转发流量的使用带宽;如果等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和小于当前待转发流量的使用带宽,则确定该等价链路处于拥塞状态。
本发明实施例中,获得等价链路的剩余链路带宽信息的采样时间包括但不限于:周期性轮询,其轮询的时间可以根据需求进行设置,且该方式适用于流量稳定的情况;动态触发,即当有流量变化需要重新选择等价链路时,需要重新获得等价链路的剩余链路带宽信息,以实时更新端口的优先级,且该方式适用于流量动态变化的情况。
步骤202,当等价链路的剩余链路带宽大于等于流量的使用带宽时,将该等价链路所在端口的优先级设置为第一优先级;当等价链路的剩余链路带宽小于流量的使用带宽时,将该等价链路所在端口的优先级设置为第二优先级。
此外,本发明实施例中,当等价链路处于拥塞状态时,将该等价链路所在端口的优先级设置为第三优先级;其中,第一优先级优于第二优先级,且第二优先级优于第三优先级。
步骤203,如果多条等价链路中有等价链路所在端口的优先级为第一优先级,则优先利用所有具有第一优先级的端口对当前待转发流量进行基于逐流转发方式的流量负载分担处理;如果多条等价链路中没有等价链路所在端口的优先级为第一优先级,且有等价链路所在端口的优先级为第二优先级,则利用所有具有第二优先级的端口对当前待转发流量进行基于逐包转发方式的流量负载分担处理。
此外,本发明实施例中,如果多条等价链路中所有等价链路所在端口的优先级为第三优先级,则丢弃当前待转发流量。进一步的,在丢弃当前待转发流量之后,还可以发出告警信息,且告警信息用于提示所有等价链路均处于拥塞状态。
以下结合图1所示的应用场景进行说明。
(1)4条等价链路中有等价链路所在端口的优先级为第一优先级时,则利用所有具有第一优先级的端口对当前待转发流量进行基于逐流转发方式的流量负载分担处理;具体的,基于具有第一优先级的端口,根据五元组(目的MAC,源MAC,目的IP,源IP,端口号)和Index计算值生成快转表项,其中记录了转发该五元组报文所需的路由信息,即下一跳和出接口;且相同五元组的后续报文从同一个接口进入,并将匹配到该快转表项,走快转流程,即和前一个报文采用相同的出接口和下一跳进行转发。
假设Route1上的等价路由表中存在如表2所示的等价路由。
表2
通过查询等价路由表中的优先级,可以获知端口ethernet0、ethernet1和ethernet3的优先级为第一优先级,如果有目的地址为1.2.3.4的报文,则匹配网段路由(1.2.3.0/24),且根据五元组和index计算值在端口ethernet0、ethernet1和ethernet3上hash,如hash到ethernet1,则可建立快转表项,其出接口为ethernet1,下一跳为3.3.3.3;对于后续该五元组的报文,由于匹配快转表项,因此不再查等价路由表,直接利用接口ethernet1,下一跳3.3.3.3进行转发。
(2)4条等价链路中没有等价链路所在端口的优先级为第一优先级,且有等价链路所在端口的优先级为第二优先级,则利用所有具有第二优先级的端口对当前待转发流量进行基于逐包转发方式的流量负载分担处理;具体的,基于具有第二优先级的端口,从所有具有第二优先级的端口轮询转发报文。
假设Route1上的等价路由表中存在如表3所示的等价路由。
表3
通过查询等价路由表,可获知端口ethernet0、ethernet1和ethernet2的优先级为第二优先级;且到目的网段1.2.3.0/24有四条等价路由:下一跳分别为2.2.2.2,3.3.3.3,4.4.4.4,5.5.5.5;如果有目的地址为1.2.3.4的报文,则匹配该网段路由(1.2.3.0/24),共有连续N个报文,则:第一个报文从ethernet0发出,下一跳为2.2.2.2;第二个报文从ethernet1发出,下一跳为3.3.3.3;第三个报文从ethernet2发出,下一跳为4.4.4.4;第四个报文从ethernet0发出,下一跳为2.2.2.2;以此类推,此条流后续N个报文就按此方式轮询转发,避免流量在带宽不足的单条等价链路上转发引起的网络拥塞,报文丢弃等问题。
(3)4条等价链路中没有等价链路所在端口的优先级为第一优先级,没有等价链路所在端口的优先级为第二优先级,且4条等价链路所在端口的优先级均为第三优先级,则不转发此条待转发流量,并给出告警信息,提示用户所有等价链路都处于拥塞状态,无法转发。
基于与上述方法同样的发明构思,本发明还提出了一种流量负载分担设备,可以应用于包括多条等价链路的网络中,如图3所示,该设备包括:
获得模块11,用于在接收到需要通过所述多条等价链路发送的流量时,获得所述多条等价链路中的各条等价链路的剩余链路带宽信息;
设置模块12,用于当等价链路的剩余链路带宽大于等于所述流量的使用带宽时,将该等价链路所在端口的优先级设置为第一优先级;当等价链路的剩余链路带宽小于所述流量的使用带宽时,将该等价链路所在端口的优先级设置为第二优先级;
处理模块13,用于当所述多条等价链路中有等价链路所在端口的优先级为第一优先级时,则优先利用所有具有第一优先级的端口对所述流量进行基于逐流转发方式的流量负载分担处理;当所述多条等价链路中没有等价链路所在端口的优先级为第一优先级,且有等价链路所在端口的优先级为第二优先级时,则利用所有具有第二优先级的端口对所述流量进行基于逐包转发方式的流量负载分担处理。
所述设置模块12,还用于当等价链路处于拥塞状态时,将该等价链路所在端口的优先级设置为第三优先级;
所述处理模块13,还用于当所述多条等价链路中所有等价链路所在端口的优先级为第三优先级时,则丢弃所述流量。
所述处理模块13,进一步用于在丢弃所述流量之后,发出告警信息,且所述告警信息用于提示所有等价链路均处于拥塞状态。
本发明实施例中,每条等价链路配置有令牌桶C和令牌桶E,Tc为所述令牌桶C中的令牌个数,Te为所述令牌桶E中的令牌个数;且所述令牌桶C中存在足够令牌时表示等价链路当前能够在不发生丢包的情况下发送流量;且所述令牌桶C中未存在足够令牌,所述令牌桶E中存在足够令牌时表示等价链路当前能够在发生丢包的情况下发送流量;
且所述获得模块11,进一步用于当等价链路对应的令牌桶C中的当前令牌个数Tc大于等于所述流量的使用带宽时,则确定该等价链路的剩余链路带宽大于等于所述流量的使用带宽;当等价链路对应的令牌桶C中的当前令牌个数Tc小于所述流量的使用带宽,且该等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和大于等于所述流量的使用带宽时,则确定该等价链路的剩余链路带宽小于所述流量的使用带宽;当等价链路对应的令牌桶C中的当前令牌个数Tc与令牌桶E中的当前令牌个数Te之和小于所述流量的使用带宽时,则确定该等价链路处于拥塞状态。
所述令牌桶C的容积为CBS,所述令牌桶E的容积为EBS;所述获得模块11,进一步用于在将令牌放入令牌桶时,如果所述令牌桶C中的令牌个数Tc小于CBS,则将令牌放入所述令牌桶C中;如果所述令牌桶C中的令牌个数Tc等于CBS,且所述令牌桶E中的令牌个数Te小于EBS,则将令牌放入所述令牌桶E中;如果所述令牌桶E中的令牌个数Te等于EBS,则不将令牌放入所述令牌桶C和所述令牌桶E中;
在删除令牌桶中的令牌时,如果所述令牌桶E中存在令牌,则删除所述令牌桶E中存在的令牌;如果所述令牌桶E中不存在令牌,且所述令牌桶C中存在令牌,则删除所述令牌桶C中存在的令牌。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。