无丢失网络中的拥塞控制方法与流程

文档序号:15394675发布日期:2018-09-08 01:54阅读:218来源:国知局

本发明涉及网络拥塞控制技术领域,更具体地,涉及无丢失网络中的拥塞控制方法。



背景技术:

为了能在数据中心以太网中实现无丢失特性,目前很多网络设备都支持基于优先级的流量控制机制pfc(priority-basedflowcontrol)。pfc将流量划分为8个优先级并监测交换机入端口上每种优先级流量的累积情况。当某一优先级流量超过给定阈值x_off时,交换机向上一跳发送pause帧终止该优先级流量的传输;当该优先级流量在队列中的累积缓解低于另一个给定阈值x_on时,再发送resume帧恢复传输。然而,pfc会导致拥塞树生成并迅速扩展,引起队头阻塞、不公平等问题。

拥塞树的生成和扩展是无丢失网络性能损失的根本原因。图1示出了一个无丢失网络的拓扑图。n*m个源端h11、…h1m、…、hn1、……、hnm同时向终端r发送数据,经过一级交换机转发,在最后一跳交换机s0处产生严重的局部拥塞,导致s0的触发pfc向上一跳交换机s1、…、sn发送pause帧和resume帧,进而s1、…、sn只能间歇性地向s0发送数据,这使得s1、…、sn上也产生了拥塞并触发pfc向源端发送pause和resume帧,最终源端也只能间歇性地发送数据。总之,在pfc的作用下,原本只发生在最后一跳的局部拥塞,沿着拥塞流的路径逆向生成了一棵拥塞树并迅速扩展到全网。

上述pfc的问题可以通过引入端到端的拥塞控制机制来解决,基本工作流程是:拥塞点cp(congestionpoint,位于交换机)探测拥塞,通告点np(notificationpoint,位于交换机或终端)根据拥塞探测的结果生成拥塞通告包cnp(congestionnotificationpacket)反馈给响应点rp(reactionpoint,位于源端),响应点根据收到的拥塞通告包调节发送速率。在图1的示例中,所有的交换机都是拥塞点,同时也可以是通告点;r是通告点;h11-hnm是响应点。在有局部拥塞发生时,qcn和dcqcn对拥塞相关的流进行减速,进而预防并控制局部拥塞的扩散。

然而,在对拥塞流进行减速时,选择一个合理的减速幅度是困难的。减速平缓会导致局部拥塞长时间得不到缓解,最终触发pfc引起拥塞扩展。在数据中心中,并发流数目巨大,并发导致在最后一跳上的拥塞十分严重,希望每条流都能快速减速。反过来,减速激进则会引起不必要的吞吐量浪费,在数据中心中,短突发流量密集,频繁的短突发流量会导致对其他流量的频繁减速,严重影响网络吞吐量。目前代表性的方法有ieee802.1标准化工作组定义的量化的拥塞通告机制qcn(quantitatedcongestionnotification),以及结合显示拥塞通告机制ecn(explicitcongestionnotification)支持三层路由网络的数据中心量化的拥塞通告机制dcqcn(datacenterqcn)。已有的拥塞控制机制在对拥塞流进行减速时,仅在当前速率上减去一定比例,对网络实际能提供的可用带宽缺少准确的估计,导致需要多次减速才能消除局部拥塞,同时导致减速过当导致吞吐量损失。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的无丢失网络中的拥塞控制方法。

根据本发明的一个方面,提供一种无丢失网络中的拥塞控制方法,包括:

若根据接收到的终端的反馈信息,获知发向所述终端的数据流处于拥塞状态,则根据所述反馈信息确定所述数据流到达所述终端的到达速率;

根据所述到达速率,调整发向所述终端的数据流的发送速率。

优选地,所述反馈信息为终端发送的拥塞通告数据包,所述拥塞通告数据包中携带有拥塞指示信息和所述数据流到达所述终端的到达速率;

相应地,所述获知发向所述终端的数据流处于拥塞状态,具体为:根据所述拥塞通告数据包中携带的拥塞指示信息,获知发向所述终端的数据流处于拥塞状态;

相应地,根据所述反馈信息确定所述数据流到达所述终端的到达速率,具体为:根据所述拥塞通告数据包中携带的所述到达速率,确定所述数据流到达所述终端的到达速率。

优选地,所述反馈信息为终端发送的ack确认字符,所述ack确认字符中封装有拥塞标记;

相应地,所述获知发向所述终端的数据流处于拥塞状态,具体为:根据所述ack确认字符中封装的拥塞标记,获知发向所述终端的数据流处于拥塞状态;

相应地,根据所述反馈信息确定所述数据流到达所述终端的到达速率,具体为:根据终端回复所述ack确认字符的速率,确定所述数据流到达所述终端的到达速率。

优选地,所述根据所述到达速率,调整发向所述终端的数据流的发送速率,具体为:

根据预设比例调整所述数据流的到达速率,获得参考速率,其中所述预设比例略小于1;

对比所述参考速率与当前的发送速率,将两者中的较小值,作为所述数据流后续的发送速率。

根据本发明的另一个方面,还提供一种无丢失网络中的拥塞控制方法,包括:

若根据接收到的交换机的拥塞信息,获知处于拥塞状态的数据流;则生成对应所述数据流的所述反馈信息,所述反馈信息中携带有数据流处于拥塞状态的信息;

将所述反馈信息发送至所述数据流的源端,以使得所述源端根据接收到所述反馈信息,获知所述数据流处于拥塞状态,根据所述反馈信息确定所述数据流到达终端的到达速率,并根据所述到达速率,调整发向所述终端的数据流的发送速率。

优选地,所述反馈信息为ack确认字符;

相应地,生成对应所述数据流的所述反馈信息,具体为:

生成对应该处于拥塞状态的数据流的拥塞标记;

将所述拥塞标记封装至ack确认字符中。

优选地,所述反馈信息为拥塞通告数据包;

相应地,生成对应所述数据流的所述反馈信息,具体为:

生成拥塞指示信息,周期性地统计所述数据流的到达速率;

将所述数据流的到达速率和拥塞指示信息封装在拥塞通告数据包内,作为所述反馈信息。

优选地,所述周期性地统计所述数据流的到达速率,具体为:

设置统计周期的时长;

对于任意一个统计周期,根据该统计周期内收到来自所述数据流的数据包的总个数与该统计周期的时长的商,作为所述数据流的到达速率。

根据本发明的另一个方面,还提供一种源端,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例的拥塞控制方法中源端侧方法及其所有可选实施例的方法。

根据本发明的另一个方面,还提供一种终端,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例的拥塞控制方法中终端侧方法及其所有可选实施例的方法。

本发明实施例提出的无丢失网络的拥塞控制方法,克服了现有技术中采用交换机逐跳流控(pfc)带来的固有问题,通过采用数据流的到达速率调整发送速率,从接收端速率中感知网络的可用带宽,而不是像现有技术直接在发送速率的基础上减去一定比例,能够使得数据流稳定在满利用率、低队列额以及极低的pfc触发状态下。

附图说明

图1为根据本发明实施例的无丢失网络的拓扑图;

图2为根据本发明实施例的拥塞控制方法的流程示意图;

图3为根据本发明实施例的根据到达速率调整发送速率的流程示意图;

图4为根据本发明实施例的拥塞控制方法的流程示意图;

图5为根据本发明实施例的源端的设备框图;

图6为根据本发明实施例的终端的设备框图;

图7为根据本发明实施例与现有技术的拥塞控制方法的效果对比图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

为了克服现有技术的上述问题,本发明实施例提供一种无丢失网络中的拥塞控制方法,其执行主体为源端,图2示出了本发明实施例的拥塞控制方法的流程示意图,如图2所示,该拥塞控制方法包括:

201、若根据接收到的终端的反馈信息,获知发向所述终端的数据流处于拥塞状态,则根据所述反馈信息确定所述数据流到达所述终端的到达速率;

需要说明的是,本发明实施例的拥塞控制方法区别于现有技术由交换机发送拥塞通告包的方式使终端获知数据流发生了拥塞,采用由终端向源端上报反馈信息的方式,以使得终端可以根据反馈信息即可以获知数据流发生了拥塞,还可以使源端获知数据流到达终端的到达速率。数据流的到达速率是指终端接收数据包的速率,例如以单位时间内收到的数据包个数来表示。

202、根据所述到达速率,调整发向所述终端的数据流的发送速率。

需要说明的是,与到达速率相对应的是发送速率,是指源端发送数据包的速率,例如以单位时间内发送的数据包个数来表示。本发明实施例引入端到端的拥塞控制机制,克服了现有技术中采用交换机逐跳流控(pfc)带来的固有问题。本发明实施例通过采用数据流的到达速率调整发送速率,从到达速率中感知网络的可用带宽,而不是像现有技术直接在发送速率的基础上减去一定比例,能够使得数据流稳定在满利用率、低队列额度以及极低的pfc触发状态下。

在上述实施例的基础上,所述反馈信息为终端发送的拥塞通告数据包,所述拥塞通告数据包中携带有拥塞指示信息和所述数据流到达所述终端的到达速率;

相应地,所述获知发向所述终端的数据流处于拥塞状态,具体为:根据所述拥塞通告数据包中携带的拥塞指示信息,获知发向所述终端的数据流处于拥塞状态;

相应地,根据所述反馈信息确定所述数据流到达所述终端的到达速率,具体为:根据所述拥塞通告数据包中携带的所述到达速率,确定所述数据流到达所述终端的到达速率。

需要说明的是,本发明实施例的拥塞控制方法采用终端将拥塞相关的信息封装成拥塞通告数据包回传给源端,源端通过解析拥塞通告数据包,获知数据流处于拥塞状态以及数据流的到达速率。显然拥塞相关的信息包括用于显示数据流处于拥塞状态的拥塞指示信息,使得源端通过解析到该拥塞指示信息,就获知数据流处于拥塞状态。终端通过统计数据流的到达速率并封装至拥塞通告数据包中,使得源端通过解析拥塞通告数据包即可获知数据流到达终端的到达速率。

在一个可选实施例中,还可以通过由源端自身计算获取数据流到达终端的到达速率的方式。在本发明实施例中,所述反馈信息为终端发送的ack确认字符,所述ack确认字符中封装有拥塞标记。

作为本领域技术人员所熟知的内容,ack(acknowledgement)确认字符,是指在数据通信中,接收方发给发送方的一种传输类控制字符,表示发来的数据已确认接收无误。在tcp/ip协议中,如果接收方成功的接收到数据,那么会回复一个ack确认字符。

相应地,所述获知发向所述终端的数据流处于拥塞状态,具体为:根据所述ack确认字符中封装的拥塞标记,获知发向所述终端的数据流处于拥塞状态。

在本发明实施例中,终端只需要按照预设的通信规则在ack确认字符中添加拥塞标记,源端只需要接收到ack确认字符并解析,即可知道数据流处于拥塞状态,非常方便,并且由于ack确认字符的大小仅为几个比特大小,几乎不占用到数据流传输的带宽。具体地,可以将拥塞标记的ecn位设置在ip包头中,将ip信息添加至ack确认字符中。

相应地,根据所述反馈信息确定所述数据流到达所述终端的到达速率,具体为:根据终端回复所述ack确认字符的速率,确定所述数据流到达所述终端的到达速率。

需要说明的是,由于在ack机制中,终端收到数据包即需要向源端回复一个ack确认字符,因此,源端通过统计终端的ack确认字符的回复速率即可估算出数据流的到达速率。具体地,ack确认字符的回复速率可以用源端在单位时间内收到的ack确认字符的个数表示。

图3示出了本发明实施例根据到达速率调整发送速率的流程示意图,如图3所示,该步骤包括:

301、根据预设比例调整所述数据流的到达速率,获得参考速率,其中所述预设比例略小于1;

302、对比所述参考速率与当前的发送速率,将两者中的较小值,作为所述数据流后续的发送速率。

需要说明的是,对于所有经过同一个发生拥塞的交换机的数据流来说,各数据流到达终端的到达速率之和必然等于网络容量,通过让每一个数据流的发送速率小于终端的到达速率,直接保证发送速率减速后,数据流的总速率小于网络总带宽。而预设比例略小于1,例如取0.999,目的则是为了不使发送速率减得太激进,而刚刚略小于网络带宽。

当网络刚发生拥塞时,终端上各数据流的接收速率之和等于网络容量,而发送速率之和则超过拥塞容量。通过设置一个略小于1的预设比例(例如取0.999),让每一个数据流的发送速率小于接收端的到达速率,保证减速后这些流的总速率是小于网络总带宽,即可解决拥塞问题。而在拥塞缓解阶段,也就是在交换机中还有队列,但是队列中数据包的在消减的时候,发送速率之和已经小于网络容量,但接收速率之和仍然等于网络容量。因此,在本发明实施例中,当拥塞消减到一定程度时,若发现当前的发送速率小于参考速率,则需要保持发送速率不变。

在一个可选实施例中,若参考速率大于当前的发送速率,则以一个略大于1的预设比例提升当前的发送速率。

本发明实施例提供一种无丢失网络中的拥塞控制方法,该拥塞控制方法的执行主体为终端。图4示出了本发明实施例的拥塞控制方法的流程示意图,包括:

401、若根据接收到的交换机的拥塞信息,获知处于拥塞状态的数据流,则生成对应所述数据流的所述反馈信息,所述反馈信息中携带有数据流处于拥塞状态的信息。

402、将所述反馈信息发送至所述数据流的源端,以使得所述源端根据接收到所述反馈信息,获知所述数据流处于拥塞状态,根据所述反馈信息确定所述数据流到达终端的到达速率,并根据所述到达速率,调整发向所述终端的数据流的发送速率。

需要说明的是,在本发明实施例中,交换机根据显式拥塞通告机制ecn(explicitcongestionnotification)生成拥塞信息,向终端表明自身正在经历拥塞以及具体拥塞的数据流。终端生成的反馈信息中携带有数据包处于拥塞状态的信息,以使得源端接收到反馈信息即可获知数据流出现了拥塞,此外,反馈信息中既可以直接包含有由终端获得的数据流的到达速率,让源端直接解析反馈信息即获知到达速率,也可以采取与终端接收数据包的频率一致的方式,将反馈信息发送至源端,这样就可以使得源端通过分析接收拥塞信息的频率估算出数据流的到达速率。

在上述实施例的基础上,所述反馈信息为ack确认字符;

相应地,生成对应所述数据流的所述反馈信息包括:

生成对应该处于拥塞状态的数据流的拥塞标记;

将所述拥塞标记封装至ack确认字符中。

需要说明的是,由于在ack机制中,终端收到数据包即需要向源端回复一个ack确认字符,因此,源端通过统计终端的ack确认字符的回复速率即可估算出数据流的到达速率。具体地,ack确认字符的回复速率可以用源端单位时间内收到的ack确认字符的个数表示。

在上述实施例的基础上,所述反馈信息为拥塞通告数据包;

相应地,生成对应所述数据流的所述反馈信息包括:

生成拥塞指示信息,周期性地统计所述数据流的到达速率;

将所述数据流的到达速率封装在拥塞通告数据包内,作为所述拥塞信息。

显然,拥塞指示信息用于表示数据流处于拥塞状态。

具体地,所述周期性地统计所述数据流的到达速率的步骤包括:

设置统计周期的时长;

对于任意一个统计周期,根据该统计周期内收到来自所述数据流的数据包的总个数与该统计周期的时长的商,作为该条流的到达速率。

图5示出了本发明实施例的源端的设备框图,参见图5,该源端包括:处理器501、存储器(memory)502和总线503;其中,所述处理器501和存储器502通过所述总线503完成相互间的通信。

所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:若根据接收到的终端的反馈信息,获知发向所述终端的数据流处于拥塞状态,则根据所述反馈信息确定所述数据流到达所述终端的到达速率;根据所述到达速率,调整发向所述终端的数据流的发送速率。

本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:若根据接收到的终端的反馈信息,获知发向所述终端的数据流处于拥塞状态,则根据所述反馈信息确定所述数据流到达所述终端的到达速率;根据所述到达速率,调整发向所述终端的数据流的发送速率。

本发明另一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:若根据接收到的终端的反馈信息,获知发向所述终端的数据流处于拥塞状态,则根据所述反馈信息确定所述数据流到达所述终端的到达速率;根据所述到达速率,调整发向所述终端的数据流的发送速率。

图6示出了本发明实施例的终端的设备框图,参见图6,该终端包括:处理器(processor)601、存储器(memory)602和总线603;其中,所述处理器601和存储器602通过所述总线603完成相互间的通信。

所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:若根据接收到的交换机的拥塞信息,获知处于拥塞状态的数据流,则生成对应所述数据流的所述反馈信息,所述反馈信息中携带有数据流处于拥塞状态的信息;将所述反馈信息发送至所述数据流的源端,以使得所述源端根据接收到所述反馈信息,获知所述数据流处于拥塞状态,根据所述反馈信息确定所述数据流到达终端的到达速率,并根据所述到达速率,调整发向所述终端的数据流的发送速率。

本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:若根据接收到的交换机的拥塞信息,获知处于拥塞状态的数据流,则生成对应所述数据流的所述反馈信息,所述反馈信息中携带有数据流处于拥塞状态的信息;将所述反馈信息发送至所述数据流的源端,以使得所述源端根据接收到所述反馈信息,获知所述数据流处于拥塞状态,根据所述反馈信息确定所述数据流到达终端的到达速率,并根据所述到达速率,调整发向所述终端的数据流的发送速率。

本发明另一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:若根据接收到的交换机的拥塞信息,获知处于拥塞状态的数据流,则生成对应所述数据流的所述反馈信息,所述反馈信息中携带有数据流处于拥塞状态的信息;将所述反馈信息发送至所述数据流的源端,以使得所述源端根据接收到所述反馈信息,获知所述数据流处于拥塞状态,根据所述反馈信息确定所述数据流到达终端的到达速率,并根据所述到达速率,调整发向所述终端的数据流的发送速率。

在图1所示的场景进行仿真试验,链路速率为40gbps,链路传播延时为5us,pfc的x_off阈值设为256kb,qcn和dcqcn的配置均为默认参数。比较了并发流数目n*m=4,8,16,32,64时,qcn、dcqcn与本发明提出的拥塞控制方法(简称pcn)的性能。结果如图7所示,其中图7中(a)表示3种方法在不同并发流数目的网络利用率的对比图,(b)表示3种方法在不同并发流数目的平均队列长度的对比图,(c)表示3种方法在不同并发流数目的触发pfcpause帧次数的对比图。在任意并发流数目下,pcn总能将瓶颈链路稳定在满利用率、低队列和极低pfc触发的状态。仿真结果表明,该发明实施例能够在一个往返延时(rtt)内将拥塞流减速到一个略小于可用带宽的值,既保证了快速缓解局部拥塞避免触发pfc导致拥塞树的生成和扩展,又不会造成吞吐量的损失。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1