发明内容
有鉴于此,本发明提供了一种应用于分布式交换***的流量控制方法,能够提高带宽分配合理性。
该方法包括:
接收端获取各发送端的状态和出口流量信息;
接收端根据所获取的状态和出口流量信息确定各发送端的分配带宽;
各发送端根据所述接收端为自身确定的分配带宽,对自身与所述接收端之间的流量进行控制。
其中,所述接收端获取各发送端的状态为:如果接收端接收到发送端发出的拥塞通知报文,则确定发送端处于拥塞状态,否则,确定所述发送端处于非拥塞状态。
较佳地,所述接收端获取各发送端的状态和出口流量信息之前,进一步包括:接收端判断触发定时器的计数值是否超过预定时间间隔T,如果是,则执行所述获取各发送端的状态和出口流量信息的操作;否则,继续所述判断。
较佳地,所述接收端获取各发送端的状态和出口流量信息之后,进一步包括:判断所述各发送端中是否有处于拥塞状态的发送端,或者各发送端中是否有发送端的出口流量与该发送端当前分配带宽之差的绝对值大于预先设置的Δ;在判定为是的情况下,执行所述接收端根据所获取的拥塞状态信息和出口流量信息确定各发送端的分配带宽的操作。
其中,所述接收端根据所获取的状态和出口流量信息确定各发送端的分配带宽包括:
当发送端处于拥塞状态,为该发送端分配配置带宽,作为基础带宽;所述配置带宽为初始分配带宽后发送端得到的带宽;
当发送端处于非拥塞状态,且该发送端的出口流量大于或等于配置带宽,则为该发送端分配配置带宽,作为基础带宽;
当发送端处于非拥塞状态,且该发送端的出口流量小于配置带宽但大于分配带宽,则为该发送端分配配置带宽,作为基础带宽;
当发送端处于非拥塞状态,且该发送端的出口流量小于配置带宽,并小于或等于分配带宽,但大于预先设置的带宽精度,则为该发送端分配实际使用带宽,作为基础带宽;
如果发送端不满足以上任一条件,则不为该发送端分配基础带宽。
该方法进一步包括:a、为发送端分配基础带宽之后,将总出口带宽与已经分配出去的总带宽相减,得到当前剩余带宽;
b、判断当前剩余带宽是否大于零,如果是,则根据所获取的拥塞状态信息和出口流量信息为发送端分配剩余带宽,否则,不进行剩余带宽分配;
c、根据基础带宽分配结果和剩余带宽分配结果确定各发送端的分配带宽。
其中,所述根据所获取的拥塞状态信息和出口流量信息,确定参与剩余带宽分配的发送端包括:
当发送端处于拥塞状态,则确定该发送端参与剩余带宽分配;
当发送端处于非拥塞状态,且该发送端出口流量大于其配置带宽,则确定该发送端参与剩余带宽的分配;所述配置带宽为初始分配带宽后发送端得到的带宽;
当发送端处于非拥塞状态,且该发送端出口流量小于其配置带宽但大于分配带宽,则确定该发送端参与剩余带宽的分配;
如果不存在满足上述条件的发送端,则确定所有发送端参与剩余带宽的分配。
本发明还提供了一种应用于分布式交换***的流量控制***,能够提高带宽分配合理性。
该***包括发送端和接收端,所述发送端和接收端是多对一的关系,其中,
所述接收端,用于获取各发送端的状态和出口流量信息,根据所获取的状态和出口流量信息确定各发送端的分配带宽,将所述分配带宽发送给各发送端;
所述发送端,用于根据所述接收端为自身确定的分配带宽,对自身与所述接收端之间的流量进行控制。
本发明提供了一种应用于分布式交换***的流量控制装置,能够提高带宽分配合理性。
该装置包括:信息获取单元、带宽分配单元和发送单元:
信息获取单元,用于获取各发送端的状态和出口流量信息;
带宽分配单元,用于根据所述状态和出口流量信息确定各发送端的分配带宽;
发送单元,用于将所述各发送端的分配带宽发送给各发送端。
根据以上技术方案可见,本发明的流控方案根据发送端的状态和出口流量信息进行带宽资源分配,分配操作充分考虑了发送端侧信息,将有限的带宽合理的分配给不同状态下的发送端,从而提高了带宽分配的合理性。避免了现有技术中因控制帧对多个发送端的控制粒度相同导致的资源分配不合理的问题,使得带宽资源被合理利用。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明为一种流量控制方案,其基本思想为:在分布式交换***中,接收端根据各发送端的状态和出口流量信息为各发送端分配带宽(Alloband,Allocation bandwidth),各发送端根据接收端为其分配的分配带宽,对自身与所述接收端之间的流量进行控制,从而提高了带宽分配合理性,使得带宽资源被合理利用。
其中,分配带宽是指经流量控制后,各发送端得到的出口带宽。
图2示出了基于以上基本思想的流量控制方案的示例性流程图,如图2所示,该方法包括以下步骤:
步骤201:接收端获取各发送端的状态和各发送端向自身发送流量的出口流量信息。
步骤202:接收端根据所获取的各发送端的状态和出口流量信息重新确定各发送端分配带宽。
步骤203:各发送端根据接收端为其确定的分配带宽,对自身与该接收端之间的流量进行控制。
根据上述流程,采用图2的处理方法,由接收端根据发送端的状态和出口流量信息进行带宽资源分配,分配操作充分考虑了发送端侧具体情况,将有限的带宽合理的分配给发送端,从而提高了带宽分配的合理性,避免了现有技术中因控制帧对多个发送端的控制粒度相同导致的资源分配不合理的问题,提高了带宽分配合理性,使得带宽资源被充分合理利用。
在实际中,可以设置触发条件,触发带宽分配操作的执行。如果不满足触发条件,则一直使用前一次分配得到的分配带宽,达到一次分配多次使用的目的,从而减少流量控制操作的频率。
下面举较佳实施例对本发明的流量控制方案进行详细描述。
图3为本发明较佳实施例中流量控制方法的流程图。如图3所示,该方法包括以下步骤:
步骤300:初始分配带宽,得到配置带宽(Cfgband,Configure bandwidth),各发送端根据配置带宽进行流量发送。
在初始分配带宽时,接收端可提供用户接口,由用户配置各发送端的配置带宽。缺省状态下,即用户没有对配置带宽进行配置的情况下,接收端按照公平分配原则,将总出口带宽平均分配给各个发送端。例如,总出口带宽为10Gbps,向同一接收端发送流量的发送端共有5个,则各个发送端获得的配置带宽均为10Gbps/5=2Gbps。所谓总出口带宽为接收端的入口侧的总带宽。
步骤301:接收端判断触发定时器的计数值是否超过预设定时间隔T,如果是,则执行步骤302,否则,继续执行步骤301的判断操作。
本步骤301中,触发定时器被预先设置在接收端。触发定时器的定时间隔T根据实际情况进行设置。初始分配带宽后,触发定时器开始从0到T循环计数。
步骤302:获取各发送端的拥塞状态信息和出口流量信息。
本实施例中,发送端的状态采用拥塞状态信息表示,包括拥塞状态和非拥塞状态;出口流量信息为接收端的在其入口处测量的发送端与自身之间的出口流量。测量方式为:接收端在预定时间内统计发送端到自身之间的数据量,采用所统计的数据量除以预定时间,得到出口流量。发送端的拥塞状态信息是反应发送端目前所需出口带宽的一个重要标准:当发送端处于拥塞状态时,说明该发送端需要尽量多的出口带宽;对于处于非拥塞的发送端,出口流量信息则精确的反应出发送端所需出口带宽大小。
本步骤中,获取各发送端拥塞状态信息为:当发送端拥塞时,发送端向接收端发送拥塞通知(FCN,Flow Congestion Notification)报文,以通知接收端本端处于拥塞状态。如果接收端收到来自发送端的FCN报文,则确定该发送端处于拥塞状态,否则,确定该发送端处于非拥塞状态。具体实现时,可以设置拥塞标志位。每一个定时间隔T开始时,接收端将拥塞标志位清零,当接收端接收到FCN报文后,将拥塞标志位置位,则本步骤中接收端可以通过读取拥塞标志位的值确定发送端的拥塞状态。
获取预设定时间隔T内各发送端的出口流量为:在接收端的入口处测量来自各个发送端的流量,在定时间隔T开始时,将流量统计值清零,开始进行统计,则本步骤中接收端可以通过读取流量统计值确定预设定时间隔T内各发送端的出口流量。统计得到的出口流量也称为实际使用带宽(Curband,Current bandwidth)。
步骤303:判断是否触发带宽分配过程,如果是,则执行步骤304,否则,返回执行步骤301。
本步骤303中,带宽分配过程的触发条件包括:与接收端通信的发送端中有处于拥塞的发送端,或者,时间间隔T内测量到的某个发送端的出口流量较当前分配带宽的变化大于设定的最小粒度,即当前检测到的某发送端流量统计值与该发送端前一次被分配的当前分配带宽之差的绝对值,大于预先设置的Δ,则触发带宽分配过程,执行步骤304;否则,返回执行步骤301,同时仍按照上一次带宽分配结果进行流量发送。其中,Δ值可以根据具体需要确定。
从本步骤可见,本实施例的带宽分配过程充分考虑到发送端的具体情况,而且只有发送端拥塞或者流量变化较大时,才进行带宽分配,从而减少了流量控制频率,实现了一次分配多次使用。而且,流量控制频率的减少,使得接收端向发送端发送承载分配带宽值的控制报文的数量大大减少,从而降低了控制报文所占带宽,提高了交换网带宽利用率。
步骤304:根据步骤302获取的各个发送端的拥塞状态信息和出口流量信息进行基础带宽分配。
基础带宽分配是根据各个发送端的拥塞状态信息和对应的出口流量信息,从总出口带宽中为各发送端分配基础带宽,以满足各发送端最基本的带宽需求。基础带宽分配的基本原则是:为处于拥塞和根据出口流量判定的将要拥塞的发送端分配基础带宽。其中,将要拥塞的发送端表现为出口流量大于分配带宽。
以下例举了本实施例中基于以上基础带宽分配基本原则进行基础带宽分配的具体原则。其中,发送端处于拥塞状态,则适用于第1条原则;发送端处于非拥塞状态,则适用于第2至第5条原则。
1)发送端处于拥塞状态,为其分配配置带宽,作为基础带宽;
2)发送端的出口流量大于或等于配置带宽,则为其分配配置带宽,作为基础带宽;
3)发送端的出口流量小于配置带宽且大于分配带宽,则为其分配配置带宽,作为基础带宽;
4)发送端的出口流量小于配置带宽,且小于或等于分配带宽,且大于预先设置的带宽精度,则为其分配实际使用带宽,作为基础带宽;即,当出口流量很小时,为该发送端分配与其所需带宽相同的带宽即可。
5)以上1)至4)条均不满足则不为其分配基础带宽。
为了充分利用总出口带宽,本步骤304基础带宽分配完毕后,还需执行步骤305~307中剩余带宽分配操作。
步骤305:计算当前剩余带宽。
本步骤中,当前剩余带宽为总出口带宽减去已分配出去的总带宽。
步骤306:判断剩余带宽是否大于0,如果是,则执行步骤307;否则,执行步骤308。
步骤307:进行剩余带宽分配,转入步骤305。
剩余带宽分配的操作包括:首先确定参与剩余带宽分配的发送端。
本实施例中,并非所有发送端都参与剩余带宽分配,而是根据步骤302获取的各个发送端的拥塞状态信息和出口流量信息,确定参与本轮剩余带宽分配的发送端。确定参与剩余带宽分配的发送端的基本原则是为处于拥塞或将要拥塞的发送端分配剩余带宽。以下例举了本实施例中确定参与剩余带宽分配的发送端的具体原则。其中,发送端处于拥塞状态,则适用于第1条原则;发送端处于非拥塞状态,则适用于第2、3条原则。
1)发送端处于拥塞状态,则确定该发送端参与剩余带宽分配;
2)发送端的出口流量大于配置带宽,则确定该发送端参与剩余带宽分配;
3)发送端的出口流量小于配置带宽但大于分配带宽,则确定该发送端参与剩余带宽的分配;这里,虽然已经为该发送端分配了大于出口流量的配置带宽,但是由于出口流量大于当前分配带宽,预测该发送端可能将要拥塞,因此在本轮带宽分配中确定该发送端参与剩余带宽的分配;
4)如果所有发送端均不满足以上1)至3)条,则确定所有发送端都参与剩余带宽分配,保证交换网带宽没有剩余。
然后,采用公平分配的原则,将当前剩余带宽均分给所确定的参与剩余带宽分配的各发送端。在剩余带宽分配过程中,进一步确定各端口中有某个发送端的基础带宽与当前被分配的剩余带宽之和大于为其配置的最大分配带宽,则为该发送端分配最大分配带宽,并禁止其参与下一轮的剩余带宽分配。在这种情况下,又产生了新的剩余带宽,轮入下一次剩余带宽的分配。其中,分配带宽不能超过预设的最大分配带宽是为了防止某个发送端独占总出口带宽而设置的规则。最大分配带宽可以根据实际需要进行设置,各发送端的最大分配带宽可以相同,也可以不同。
在后续轮次的剩余带宽分配时,分配方法与首轮分配方法相似。不同之处在于,如果在首轮剩余带宽分配过程中产生了被禁止参加下一轮剩余带宽分配的发送端,则该发送端不作为后续剩余带宽分配的参与者。在实际中,可以省略后续剩余带宽分配的参与者判断过程,直接将第一轮剩余带宽分配的参与者中未被禁止参与后续剩余带宽分配的参与者作为本轮剩余带宽分配的参与者,并采用公平分配原则进行本轮剩余带宽的分配。
需要说明的是,以上步骤304和步骤307只是举例了一种接收端根据发送端拥塞状态信息和出口流量信息进行基础带宽分配和剩余带宽分配的具体算法的实施方式。在实际中,还可以根据实际需要,设计其他基础带宽分配算法和剩余带宽分配算法,而不限于本文所述的带宽分配方法。例如,在步骤304进行基础带宽分配时,当发送端的出口流量大于或等于配置带宽时,也可以为发送端分配实际出口带宽,以满足实际出口流量的需要。而本实施例所采用的带宽分配原则充分考虑到其他带宽的需要,在基础带宽分配时,留有一定的预量,令所有需要带宽的发送端尽可能的被公平分配到所需带宽量。
步骤308:计算各个发送端获得的分配带宽。
这里,对于参与剩余带宽分配的发送端,其分配带宽=基础带宽+剩余带宽;对于没有参与剩余带宽分配的发送端,其分配带宽=基础带宽。
步骤309:接收端将各发送端的分配带宽换算为该发送端令牌桶更新周期内的令牌桶更新数(HBPTC,Half Bit Per Token Circle),将令牌桶更新数发送给各发送端。
令牌桶中的令牌数等于允许发送的报文量。发送端会定期向令牌桶内注入令牌,注入令牌的周期为令牌桶更新周期,其数值是恒定的,但令牌桶更新周期内注入的令牌数,即令牌桶更新数可变。因此,可以利用令牌桶更新数控制报文的发送速率。
本步骤中,将带宽分配结果换算为令牌桶更新周期内令牌桶更新数的具体方法为:将为发送端分配的分配带宽乘以令牌桶更新周期,再除以一个令牌代表的比特数。例如,一个令牌代表0.5个比特,令牌桶更新周期为256ns,则令牌桶更新数=发送端分配带宽×256ns/0.5。
步骤310:发送端采用接收到的令牌桶更新数,更新与发送令牌桶更新数的接收端对应的令牌桶,利用更新后的令牌桶进行流量控制。
如何利用令牌桶进行流量控制是现有技术。其具体方法为:在发送端每次发送待发送报文之前,对令牌进行一次评估。如果令牌桶中的令牌数足够表示待发送报文的比特数,则说明流量控制在允许的范围内,发送端将待发送报文发送出去,并从令牌桶中取出与报文比特数大小相同的令牌;否则,令牌数不够表示待发送报文的比特数,则说明带宽超过允许的范围,不再进行报文发送,从而实现了流量控制。
需要说明的是,当分布式交换***的***结构为多个发送端对多个接收端的多对多结构时,可以看成是多个多对一的线性叠加,其流控原理与多对一的情况相同。
仍以图1示出的分布式***结构为例。假设接收端2的总出口流量分别为10Gbps。在初始配置时,采用缺省的公平分配原则,接收端2为发送端0和发送端1分别分配带宽为5Gbps。可见,采用本发明实施例中的带宽分配原则,接收端总是将其总带宽的100%分配给与其通信的发送端,因此不会出现背景技术描述的接收端实际接收流量超过总带宽50%的情况。
初始带宽分配完毕,发送端0和发送端1根据被分配的配置带宽进行流量发送。假设,发送端1发向接收端2的流量增加为6.5Gbps,其流量变化量1.5Gbps大于预先设置的最小粒度0.01Gbps,则接收端2根据触发条件判定重新分配带宽,并根据发送端0和发送端1的拥塞状态信息和出口流量信息进行带宽分配操作。
在带宽分配过程中,假设接收端2统计出发送端0的出口流量为2Gbps,发送端1的出口流量为6.5Gbps,带宽精度为0.5Gbps,则根据基础带宽分配原则第4)条,由于发送端0的出口流量2Gbps小于配置带宽5Gbps,且小于分配带宽5Gbps(此时分配带宽为初始分配的配置带宽),因此确定为发送端0分配实际使用带宽2Gbps;根据基础带宽分配原则第2)条,由于发送端1的出口流量6.5Gbps大于配置带宽5Gbps,则为其分配配置带宽5Gbps。那么当前剩余带宽为(10-2-5)=3Gbps。
再进行剩余带宽分配。根据剩余带宽分配原则第4)条,发送端0不参与剩余带宽分配,根据剩余带宽分配原则第2)条,发送端1参与剩余带宽的分配,为发送端1分配剩余带宽3Gbps。
经本实施例本轮带宽分配,发送端0的分配带宽为2Gbps,发送端1的分配带宽为(5+3)=8Gbps。可见,发送端0和发送端1都得到了充足的出口带宽。
为实现本发明的流量控制方法,本发明提供了一种流量控制***。图4为本发明流量控制***的结构示意图。如图4所示,该***包括发送端和接收端,发送端和接收端之间是n对一的关系,其中n为大于1的整数。其中,
接收端,用于获取各发送端的状态和各发送端向自身发送流量的出口流量信息,根据所获取的各发送端的状态和出口流量信息确定各发送端的分配带宽,将所确定的分配带宽发送给各发送端。
发送端,用于根据接收端为自身确定的分配带宽,对自身与所述接收端之间的流量进行控制。
本发明实施例中公开了一种流量控制装置,即图4中的接收端。图5为本发明实施例中流量控制装置的结构示意图。如图5所示,流量控制装置500包括信息获取单元510、带宽分配单元520和发送单元530。
其中,信息获取单元510用于获取各发送端的拥塞状态信息和出口流量信息,将获取的拥塞状态信息和出口流量信息提供给带宽分配单元520。
该信息获取单元510具体包括拥塞状态收集模块511、出口流量统计模块512和触发判断模块513。其中,拥塞状态收集模块511在接收到发送端发送的FCN报文时,确定所在发送端处于拥塞状态,向触发判断模块513发送拥塞通知。出口流量统计模块512用于统计各发送端的出口流量,将统计得到的出口流量信息发送给触发判断模块513。触发判断模块513,在接收到拥塞通知时,或有发送端的出口流量与该发送端前一次被分配的当前分配带宽之差的绝对值大于预先设置的Δ时,则判定触发带宽分配过程,通知带宽分配单元520为各发送端分配分配带宽,同时将各发送端的拥塞信息和出口流量信息提供给带宽分配单元520。在实际中,不需要进行实时判断,可以在触发判断模块513中设置触发定时器,并将触发定时器的定时间隔设置为前述T,那么该触发判断模块513每隔时间T进行一次触发判断操作。
流量控制装置中的带宽分配单元520,用于根据信息获取单元510提供的状态和出口流量信息确定各发送端的分配带宽,将分配结果发送给发送单元530。
该带宽分配单元520具体包括基础带宽分配模块521、剩余带宽分配模块522和分配带宽计算模块523。其中,基础带宽分配模块521在接收到来自触发判断模块513的带宽分配通知后,根据各发送端的拥塞状态信息和出口流量信息,为各发送端分配基础带宽,将基础带宽分配结果发送给剩余带宽分配模块522。剩余带宽分配模块522,在根据基础带宽分配结果判定存在剩余带宽时,根据各发送端的拥塞状态信息和出口流量信息,确定参与剩余带宽分配的各发送端,并进行剩余带宽分配。然后将基础带宽分配结果和剩余带宽分配结果发送给分配带宽计算模块523。分配带宽计算模块523,根据接收自剩余带宽分配模块522的基础带宽分配结果和剩余带宽分配结果,确定各发送端的分配带宽,将各发送端获得的分配带宽发送给发送单元530。
流量控制装置中的发送单元530,用于将各发送端的分配带宽发送给各发送端。
该发送单元530具体包括换算模块531和分配结果发送模块532。其中,换算模块531接收带宽分配单元520为各发送端分配的分配带宽,将各发送端的分配带宽换算为该发送端令牌桶更新周期内的令牌桶更新数,将得到的各发送端的令牌桶更新数通过分配结果发送模块532分别发送给对应的发送端。在实际中,发送单元530也可以直接将分配带宽发送给各发送端,由各发送端自身执行换算操作。在这种情况下,发送单元530不包括换算模块531。
在实际中,该流量控制装置还可以进一步包括与发送单元530相连的配置带宽确定单元(图5中未示出),用于在初始分配带宽时,为各发送端分配配置带宽。将确定的配置带宽通过发送单元530发送给各个发送端。
图6为图5中发送端的结构示意图。如图6所示,发送端600包括带宽分配结果接收单元601和流量控制单元602。带宽分配结果接收单元601接收接收端为自身确定的分配带宽,并发送给流量控制单元602。其中,分配带宽由令牌桶更新数表示。流量控制单元602,采用接收的令牌桶更新数,更新发送该令牌桶更新数的接收端对应的令牌桶,利用更新后的令牌桶进行流量控制。
在实际中,如果发送端所接收的分配带宽为带宽值,则如图6所示,该发送端进一步包括换算单元603。图中的虚线表示该单元可选。换算单元603用于将带宽分配结果接收单元601接收的分配带宽换算为令牌桶更新数,将得到的令牌桶更新数发送给流量控制单元602,由流量控制单元602更新相应令牌桶,并利用更新后的令牌桶进行流量控制。
本发明所提供的技术方案不仅适用于分布式设备(如分布式路由器)内部的各个单板之间的多对一或多对多板间通信场景,同样也适用于多个独立网络设备之间的多对一或多对多通信场景。
由以上所述可以看出,本发明所提供的流控方案,能够提高带宽分配合理性,使得带宽资源被充分合理利用。当设置带宽分配触发条件后,还可以达到一次分配多次使用的目的,从而减少流控操作的频率。控制报文的减少有利于分布式交换***带宽利用率的提高。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。