掌桥专利:专业的专利平台
掌桥专利
首页

基于端网协同的广域网拥塞控制算法

文献发布时间:2024-04-18 19:59:31


基于端网协同的广域网拥塞控制算法

技术领域

本发明涉及广域网拥塞控制技术领域,具体涉及基于端网协同的广域网拥塞控制算法。

背景技术

近几年,广域网的带宽需求正在快速增长,根据谷歌数据显示,云数据中心互联广域网络(Data Center Interconnect,DCI)的带宽需求在五年内增长了100多倍。与此同时,随着东数西算工程的实施,广域网络的分布性变广,东部与西部的数据传输的RTT可能长达100毫秒。在长RTT下可能存在链路拥塞或空闲不能及时调整造成的高时延、丢包问题以及链路利用率不足等问题。因此,如何在长RTT下进行快速以及精准的拥塞控制来实现网络传输的高带宽成为了学术界以及工业界的聚焦热点。

发明内容

因此,针对现有广域网络链路拥塞或空闲不能及时调整造成的高时延、丢包问题以及链路利用率不足等问题,本发明提供一种基于端网协同的广域网拥塞控制算法。本发明能够快速、精准地进行网络拥塞的感知和发送速率的调整,从根本上革新了广域网络拥塞控制的技术架构,实现了广域网高吞吐量的同时保持相对的低时延。

本发明为解决技术问题所采用的技术方案如下:

本发明的一种基于端网协同的广域网拥塞控制算法,包括以下步骤:

(1)发送方主机发送数据包;

(2)当发送方主机发送的数据包到达广域网节点时,广域网节点依概率向数据包插入节点ID信息;

(3)接收方主机复制节点ID信息到ACK包中;

(4)出入口路由器建立并维护共享链路表;

(5)当发送方主机发送的数据包到达广域网节点时,广域网节点依规则向数据包插入该广域网节点信息;

(6)接收方主机复制节点拥塞状态信息到ACK包中;

(7)出入口路由器对携带节点拥塞状态信息的ACK包进行整合,并根据共享链路表发往所有相关联的发送方主机;

(8)发送方主机在获取节点拥塞状态信息后调整发送速率。

进一步的,步骤(2)中,当发送方主机发送的数据包到达广域网节点时,广域网节点会判断该数据包是否携带了节点ID信息,如果未携带节点ID信息,广域网节点则会以设定的概率值p向该数据包包头插入节点ID,该概率值p与广域网节点数量N的关系如式(1)所示;

N×p=1 (1)

如果该数据包携带了节点ID信息,则广域网节点不对该数据包进行上述操作。

进一步的,步骤(3)中,当携带了节点ID信息的数据包到达接收方主机时,接收方主机在发送ACK包的同时将该数据包携带的节点ID复制到ACK包中。

进一步的,步骤(4)中,所述出入口路由器从ACK包中提取节点ID、源IP地址、目的IP地址、源端口号、目的端口号、SYN标识位和FIN标识位,然后建立一个以目的IP地址为键、以节点ID列表为值的数据结构,对于每个ACK包中的源IP地址,先检查该源IP地址是否存在于该数据结构的键中,若不存在,则向该数据结构的目的IP地址的键中添加该源IP地址,并将该ACK包中的节点ID添加到该数据结构对应的节点ID列表的值中;若存在,则在该数据结构对应的节点ID列表中检查该节点ID是否存在,若存在,则不添加该ACK包的节点ID,若不存在,则向该节点ID列表中添加该ACK包的节点ID;再建立一个以目的IP地址为键、以四元组(IP

进一步的,步骤(5)中,每个广域网节点持有节点ID、自身队列长度和当前发送速率与节点最大发送速率比值;节点ID由事先的全局分配决定,自身队列长度在每个数据包到达该广域网节点时获取,当前发送速率与节点最大发送速率比值由路由器实时维护,维护时需要以下信息辅助:中间节点路由器将记录当前速率、当前时间戳、比值上次更新时间戳、累积发送字节量以及存有该节点路由器的最大发送速率值。

进一步的,步骤(5)中,当一个数据包进入节点路由器时会触发该节点路由器上的处理程序,获取节点ID、当前时间戳、比值上次更新时间戳和累积发送字节量;该节点路由器将判断当前时间戳与比值上次更新时间戳的差值是否大于阈值,若否,则不用更新当前发送速率与节点最大发送速率比值;若是,则通过公式(2)计算得到当前发送速率,再通过公式(3)修改当前发送速率与节点最大发送速率比值,使当前时间戳等于比值上次更新时间戳,清零累积发送字节量,完成当前发送速率与节点最大发送速率比值的更新;

Rate=Byte_cnt/(TS_now-TS_last)(2)

Rate_ratio=Rate/Rate_max(3)

其中,Rate为当前发送速率,Byte_cnt为累积发送字节量,TS_now为当前时间戳,TS_last为比值上次更新时间戳,Rate_ratio为当前发送速率与节点最大发送速率比值,Rate_max为最大发送速率;

之后,该节点路由器将判断当前是否有队列产生,若否,则记录下当前广域网节点的当前发送速率与节点最大发送速率比值信息,用于窗口增长;若是,则记录下自身队列长度,用于判断拥塞状态并进行窗口调整;最后该节点路由器将带有收集到的节点拥塞状态信息的数据包发往下一节点路由器。

进一步的,步骤(6)中,当分别携带了含有自身队列长度以及当前发送速率与节点最大发送速率比值信息的数据包到达接收方主机时,接收方主机会在发送ACK包时,将上述信息复制到ACK包中一同发送。

进一步的,步骤(7)中,当携带节点拥塞状态信息的ACK包到达出入口路由器时,首先提取自身队列长度信息以及当前发送速率与节点最大发送速率比值信息分别对应的所有节点ID,然后将获取的所有对应的节点ID的集合和以目的IP地址为键、以节点ID列表为值的数据结构中的值进行匹配,匹配出与每个目的IP地址相关联的所有节点ID,然后在以目的IP地址为键、以四元组信息(IP

进一步的,步骤(8)中,各个发送方主机在接收到携带广域网节点的拥塞状态信息的数据包之后,根据所携带信息的情况相应的增加或减少发送速率,当携带队列长度信息时增加发送速率,当携带当前发送速率与节点最大发送速率比值信息时减少发送速率。

进一步的,步骤(8)中,采用窗口调整的方式调整发送速率,并在窗口调整的基础上,采用pacing技术使得一个拥塞窗口内的数据包在一个往返时延内均匀的发送;当窗口大小为W、基本往返时延为T时,发送速率R能和窗口大小W进行相互转换,公式如下:

R=W/T(4)

当携带队列长度信息时时,选择自身队列长度最长的节点ID对应的数值来进行窗口的调整,公式如下:

cwnd=cwnd×(1-α)(5)

α=qlen

其中,cwnd表示拥塞窗口的大小;α表示拥塞程度,且0<α<1;qlen

本发明的有益效果是:

本发明为广域网络设计了一种新型的拥塞控制—即采用端网协同的方法进行拥塞状态感知与速率调整。本发明的一种基于端网协同的广域网拥塞控制算法,主要依托于广域网中的节点以及出入口路由器,通过广域网节点对数据包修改以及出入口路由器维护的共享链路表,来实现端网协同式的拥塞控制的快速感知与精准调整。

与现有技术相比,本发明具有以下优点:

1、发送方主机能够在一个sub-RTT时间范围内感知网络的变化;

通过发送方主机共享同一条链路的方式,当广域网络中有流退出或进入时,能够快速及时的作出反应,从而缓解了链路拥塞或空闲不能及时调整造成的高时延、丢包问题以及链路利用率不足的问题。

2、发送方主机能够精准的感知链路信息,结合发送速率控制策略,实现精准的发送速率调整;

通过广域网路由器依规则插入的队列长度、当前发送速率与最大发送速率比值信息,能够精确的感知链路的拥塞、空闲程度,从而保持链路高带宽的同时又有较低的队列长度,使得高吞吐量与低时延能够兼得。

附图说明

图1为本发明的一种基于端网协同的广域网拥塞控制算法的流程图。

图2为本发明的基于端网协同的广域网拥塞控制算法的整体架构。

图3为案例中具体网络拓扑结构与链路信息。

具体实施方式

参见图2进行说明,本发明的基于端网协同的广域网拥塞控制算法的整体架构,主要由多台发送方主机、出入口路由器、多个广域网节点和多个接收方主机,其中发送方主机用于根据拥塞状态进行窗口调整;出入口路由器用于建立和维护共享链路表,同时用于分发链路信息数据包到相关联主机;广域网各节点用于依概率向数据包插入节点ID,同时依规则向数据包插入节点信息;接收方主机用于按一定规则将数据包信息复制到ACK包中。

本发明在拥塞状态感知上,首先发送方主机会以设定的初始发送速率发送数据包,当数据包到达广域网的节点中时,广域网各个节点首先会对数据包依概率插入本节点的ID,从而获取该主机发送的流所经过的节点路径,并且广域网各节点会按照一定规则在数据包中插入该节点的队列长度和当前发送速率与最大发送速率比值的信息,最终会获取该路径上队列长度最长以及速率比值最大的4个节点ID以及对应的信息;携带信息的数据包到达接收方主机时,会将该信息复制到ACK包中,返回的ACK包到达出入口路由器时,出入口路由器根据依概率插入的节点ID,生成共享链路表,并将该ACK包携带的节点信息发往与该节点相关联的其他发送方主机中,从而实现了发送方主机对拥塞状态的快速、精准感知。

本发明在发送速率调整上,发送方主机在接收到携带信息的ACK包或者其他相关联主机的链路状态数据包时,会根据队列长度以及当前发送速率与最大发送速率比值进行相应的发送速率调整,当出现队列长度信息时,会根据队列长度的大小相应的增加发送速率,当出现当前发送速率与最大发送速率比值信息时,会根据速率比值的大小相应的减少发送速率,从而实现了发送方主机对发送速率的快速、精准的调整。

本发明利用出入口路由器,广域网各节点辅助式的帮助发送方主机提前精准的感知链路信息,实现了端网协同的高效率的广域网拥塞控制;通过提前精准的拥塞状态感知与速率调整,实现了广域网络的低时延、高吞吐量。

下面参见图1对本发明做进一步详细说明。

本发明的基于端网协同的广域网拥塞控制算法,其具体工作流程如下:

步骤1:共享链路表的建立与维护,其具体操作流程如下:

步骤1.1:发送方主机发送数据包,广域网节点依概率向数据包插入节点ID;

当发送方主机发送的数据包到达广域网节点时,广域网节点首先会判断该数据包是否携带了节点ID信息,如果该数据包未携带节点ID信息,广域网节点则会以设定的概率值p向该数据包包头插入节点ID,该概率值p与广域网节点数量N相关,广域网节点数量越多,则设置的概率越小,其基本思想为每个数据包携带一个节点ID的数学期望等于1,公式如式(1)所示;

N×p=1 (1)

如果该数据包携带了节点ID信息,则广域网节点不对该数据包进行上述操作。

步骤1.2:接收方主机复制节点ID信息到ACK包中;

当携带了节点ID信息的数据包到达接收方主机时,接收方主机会在发送ACK包的同时,将该数据包携带的节点ID复制到ACK包中。由于考虑到确认字符(ACK)的延迟确认机制,接收方主机不会对接收到的每个数据包都回复确认字符(ACK),因此,在回复确认字符(ACK)时,只有在数据包携带了节点ID并且与上一个数据包携带的节点ID不相同时,才回复确认字符(ACK),以便节省主机开销,降低网络负载。

步骤1.3:出入口路由器建立并维护共享链路表;

出入口路由器从ACK包中提取节点ID、源IP地址、目的IP地址、源端口号、目的端口号、SYN标识位和FIN标识位,然后建立一个以目的IP地址为键、以节点ID列表为值的数据结构,对于每个ACK包中的源IP地址,先检查该源IP地址是否存在于该数据结构的键中,若不存在,则向该数据结构的目的IP地址的键中添加该源IP地址,并将该ACK包中的节点ID添加到该数据结构对应的节点ID列表的值中;若存在,则在该数据结构对应的节点ID列表中检查该节点ID是否存在,若存在,则不添加该ACK包的节点ID,若不存在,则向该节点ID列表中添加该ACK包的节点ID;最终形成的目的IP-节点ID表如表1所示。

此外,还需要建立一个以目的IP地址为键、以四元组(IP

表1目的IP-节点ID表格式

表2共享链路表格式

步骤2:广域网络拥塞状态感知,并将感知的信息发送到相关联的发送方主机;

在拥塞控制中,发送方主机在发送完一个窗口的数据包后,需要经历大于一个往返时延(RTT)的时间接收到ACK包,从而根据ACK包判断丢包、时延变化、带宽变化等因素,来进行发送速率或发送窗口的调整。

本发明在上述建立了共享链路表的情况下,通过从广域网节点获取到的拥塞状态信息,不仅第一个发送方主机会接收到该信息,结合共享链路表,出口路由器会将该信息同时发往与第一个发送方主机具有相同节点路径的其他发送方主机中,因此,其他发送方主机会在自身ACK包还未回来的情况下,提前感知广域网络的拥塞状态,实现了在一个RTT之内进行广域网络拥塞状态的快速感知。

其具体操作流程如下:

步骤2.1:发送方主机发送数据包,从广域网节点获取拥塞状态;

当发送方主机发送的数据包到达广域网节点时,广域网节点依规则向数据包插入该广域网节点信息;

其具体操作流程如下:

首先,每个广域网节点主要持有以下三个信息:节点ID(ID)、自身队列长度(q

每个广域网节点的大致工作流程如下:

当一个数据包进入该节点路由器时,首先会触发该节点路由器上的处理程序(软件或硬件实现),获取节点ID(ID)、当前时间戳(TS_now)、比值上次更新时间戳(TS_last)以及累积发送字节量(Byte_cnt),并将该节点路由器自身负载的字节量累积到累积发送字节量(Byte_cnt)上进行更新。

然后,该节点路由器将判断当前时间戳(TS_now)与比值上次更新时间戳(TS_last)的差值是否大于某个阈值(阈值可以考虑为1ms,方便记录一段较短时间内的平均速率情况),如果小于这个阈值,说明暂时不用更新当前发送速率与节点最大发送速率比值(Rate_ratio)的取值,后续可直接取用;如果大于这个阈值,则通过公式(2)可以得到当前发送速率(Rate),再通过公式(3)修改当前发送速率与节点最大发送速率比值(Rate_ratio),以及使当前时间戳(TS_now)=比值上次更新时间戳(TS_last),清零累积发送字节量(Byte_cnt),完成当前发送速率与节点最大发送速率比值(Rate_ratio)的更新。

Rate=Byte_cnt/(TS_now-TS_last)(2)

Rate_ratio=Rate/Rate_max(3)

之后,该节点路由器将判断当前是否有队列产生,如果尚未产生队列,则认为广域网络不太拥挤,选择记录下当前广域网节点的当前发送速率与节点最大发送速率比值(Rate_ratio)信息,用于窗口增长。若当前数据包中当前发送速率与节点最大发送速率比值(Rate_ratio)信息已满,将会选择记录下4个最大的当前发送速率与节点最大发送速率比值(Rate_ratio)信息,代表着4个潜在的窗口增长限制;而如果已经产生队列,则需要记录下自身队列长度(q

最后,该节点路由器将带有收集到的节点拥塞状态信息的数据包发往下一节点路由器即可。

步骤2.2:接收方主机复制节点拥塞状态信息到ACK包中,其具体操作流程如下:

当分别携带了最多4组含有自身队列长度(q

步骤2.3:出入口路由器对接收到的携带节点拥塞状态信息的ACK包进行整合,并根据共享链路表发往所有相关联的发送方主机,其具体操作流程如下:

当携带节点拥塞状态信息的ACK包到达出入口路由器时,首先会提取自身队列长度(q

当携带节点拥塞状态信息的ACK包到达出入口路由器时,首先提取自身队列长度信息以及当前发送速率与节点最大发送速率比值信息分别对应的所有节点ID,然后将获取的所有对应的节点ID的集合和以目的IP地址为键、以节点ID列表为值的数据结构中的值进行匹配,匹配出与每个目的IP地址相关联的所有节点ID,然后在以目的IP地址为键、以四元组信息(IP

这样当某几个节点发生拥塞或者空闲时,所有经过该节点的发送方主机都会提前接收到该节点的拥塞状态信息,实现了在一个往返时延(RTT)之内感知节点拥塞状态的目的。发送方各主机在接收到上述数据包时,则进行相应的发送速率调整,进入步骤3。

步骤3:发送方主机在获取广域网节点的拥塞状态信息后进行发送速率调整,其具体操作流程如下:

各个发送方主机在接收到携带广域网节点的拥塞状态信息的数据包之后,会根据所携带信息的情况相应的增加发送速率或减少发送速率,即当携带队列长度信息时增加发送速率,当携带当前发送速率与节点最大发送速率比值(Rate_ratio)信息时减少发送速率。发送速率调整的依据为要确保网络性能为最优状态,需要同时满足以下两个条件:(1)瓶颈节点处的队列长度几乎为零,该条件决定了瓶颈链路能保持最小的时延。(2)瓶颈节点的出端口发送速率几乎等于最大发送速率(路由器出厂设定值),该条件决定了瓶颈链路能保持最大吞吐量。

目前拥塞控制算法中,有速率调整和窗口调整两种方式,本发明采用窗口调整的方式,并在窗口调整的基础上,采用pacing技术来使得一个拥塞窗口内的数据包在一个往返时延(RTT)内均匀的发送,既可以有效的控制飞行中(inflight)数据包的数量,又可以避免突发流量,使得数据包的到达速率能够匹配瓶颈节点的离开速率。其中,当窗口大小为W、基本往返时延(RTT)为T时,发送速率R能够和窗口大小W进行相互转换,公式如下:

R=W/T(4)

因此,当各个发送方主机在接收到数据包时,首先会提取节点拥塞状态信息,包括节点ID(ID)、自身队列长度(q

cwnd=cwnd×(1-α)(5)

α=qlen

其中,cwnd为拥塞窗口的大小;α表示拥塞程度,且0<α<1;qlen

公式(5)和公式(6)的整体思想为通过当前节点的最大队列长度值与该链路中的数据包的数量进行比较,当前节点的最大队列长度值越大时,则表示链路越拥塞,则窗口减少的幅度越大。

拥塞控制不应该只在网络发生拥塞时才作出反应,在链路空闲时也应该作出相应反应。因此,本发明在接收方主机接收到只包含当前发送速率与节点最大发送速率比值(Rate_ratio)信息的数据包时,仍然会做出拥塞窗口的调整。具体调整公式为:

cwnd=cwnd/rate_ratio

其中rate_ratio

由于拥塞状态感知的粒度在一个往返时延(RTT)之内,因此也应该考虑快速反应以及防止过度反应的问题。本发明采取的整体的拥塞窗口的调整策略为:当该发送窗口与上一发送窗口大小相同时(链路未发生拥塞或利用率不足),在该窗口内接收的ACK反馈信息中,选择(ACKarrivetime-ACKtimestamp)值最小的作为窗口调整的依据。其中ACKtimestamp为广域网路由器节点出端口时在数据包中插入的时间戳信息,ACKarrivetime为ACK包到达发送方的时间。该策略可以实现sub-RTT的拥塞感知,以及最小化控制环路延迟;当该发送窗口和上一个发送窗口相比,增加或者减少时,要考虑过度反应,只对该窗口内ACKtimestamp大于threshold,并且(ACKarrivetime-ACKtimestamp)值最小的ACK反馈信息作出反应,调整下一窗口的大小。其中threshold为阈值参数,范围为该窗口第一个数据包发送的时间到该窗口第一个数据包发送的时间加上RTT/2,该阈值越大,出现过度反应的情况越小,但接收本窗口内sub-RTT感知的ACK反馈信息的概率减少。

本发明的一种基于端网协同的广域网拥塞控制算法,使用网络中的出入口路由器、中间节点对发送方主机的拥塞控制进行辅助协同,在广域网的长RTT情况下,将拥塞感知的时间粒度降低到一个RTT之内,并结合精准的速率调整,实现了广域网络的高吞吐量的同时降低了时延。

下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

案例一:流量进入,占用带宽;

发送方有三台主机s1、s2、s3,一台出入口路由器ior1,两台广域网路由器wanr1、wanr2和一台接收方主机r1。两台广域网路由器wanr1、wanr2之间的链路速率为100Mbps,时延为40ms,其他各节点的链路速率和时延均为1000Mbps和20ms,因此各发送方主机的RTT为100ms。具体拓扑与链路信息情况如图3所示。其中,出入口路由器ior1的目的IP-节点ID表和共享链路表如表3、表4所示。

表3出入口路由器ior1的目的IP-节点ID表的数据存储情况

表4出入口路由器ior1的共享链路表的数据存储情况

考虑共享同一链路的瓶颈节点发生拥塞的情况,在t=0时刻,主机s1和s2以50Mbps的速率公平的共享同一链路,在t=t1时刻,主机s3以2Mbit的窗口大小,20Mbps的速率开始发送数据。一段时间之后,考虑共享同一链路的其他主机的流退出的情况,在t=t2时刻,主机s2的流结束退出,释放占用的带宽。

在t1时刻,主机s3的流加入时,由于瓶颈节点的最大发送速率为100Mbps,因此在该RTT之内,该节点会在每个RTT增加2Mbit的队列长度。当主机s1的流的数据包经过瓶颈节点wanr1时,会携带上队列长度和该节点最大发送速率的信息,此时数据包的格式如表5所示。当携带该链路信息的ACK包到达出口端路由器后,根据共享链路表,出入口路由器将该信息同时发往主机s2和s3,此时主机s2和s3自身的ACK包并未返回,因此主机s2和s3仅需在sub-RTT就可以检测到链路拥塞。

表5链路拥塞时数据包携带信息情况

主机s1、s2和s3根据速率调整公式(5)和公式(6),调整拥塞窗口的大小分别为

发送速率分别为41.7Mbps,41.7Mbps,16.7Mbps。因此,仅需要一个sub-RTT就可以降低发送速率,缓解链路拥塞,并且经过几轮调整,最终三台主机会公平的共享带宽。

案例二:流量退出,释放带宽;

在t2时刻,主机s2的流退出时,此时主机s3的流的数据包经过路由器wanr1后,数据包携带上该路由器wanr1的速率比值信息,此时rate_ratio

表6链路拥塞时数据包携带信息情况

主机s1和s3根据速率调整公式(7),调整拥塞窗口的大小为(33Mbps×100ms)/(2/3)+W

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术分类

06120116524476