本发明涉及通信领域,尤其涉及一种拥塞控制方法及系统。
背景技术:
tcp(transmissioncontrolprotocol,传输控制协议)现在被广泛使用。tcp的拥塞控制机制是一种被动拥塞控制方法,该方法进行拥塞控制的手段是基于“探测”的想法,根据当前网络的丢包情况,动态地调整拥塞窗口来实现拥塞控制,例如cubic算法。
现有的拥塞控制方法的缺陷在于:不能快速适应网络质量变化;当网络质量变差时,拥塞窗口并不会实时进行调整,发送方仍然按照原先的速率进行发包,这样将导致丢包;另一方面,tcp在丢包时采用将拥塞窗口大小减半的方式进行拥塞避免,而发送方的发送速率取决于拥塞窗口的大小,因此会造成带宽利用率低。
在移动网络中,终端设备的网络质量更容易发生变化,如果采用上述被动拥塞控制方法,则丢包和带宽利用率低的问题将会更加突出。
技术实现要素:
本申请提出一种拥塞控制方法及系统,能够提高拥塞控制的实时性和带宽利用率,减少丢包。
本申请采用如下技术方案。
一种拥塞控制方法,包括:
计算第一终端和服务端的吞吐率;
周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小。
可选地,所述周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小包括:
周期性计算当前时刻之前第一预定时间长度内的所述吞吐率的算术平均数b,确定拥塞窗口的大小w为α×rttmin×b;其中α为预定常数,rttmin为当前时刻之前第一预定时间长度内最小的往返时间。
可选地,所述第一预定时间长度小于或等于500毫秒,大于或等于计算所述吞吐率的时间间隔;
1≤α≤100。
可选地,所述第一预定时间长度为100毫秒,α为2。
可选地,所述的方法还包括:
当已发送给所述第一终端但未收到所述第一终端确认的数据量未达到w时,以b作为发送速率将数据发送给所述第一终端;当已发送给所述第一终端但未收到所述第一终端确认的数据量超过w时,暂停发送数据给所述第一终端。
一种拥塞控制系统,包括:
计算模块,用于计算第一终端和基站之间的吞吐率;
网络预测模块,用于周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小。
可选地,所述网络预测模块周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小包括:
所述网络预测模块周期性计算当前时刻之前第一预定时间长度内的所述吞吐率的算术平均数b,确定拥塞窗口的大小w为α×rttmin×b;其中α为预定常数,rttmin为当前时刻之前第一预定时间长度内最小的往返时间。
可选地,所述第一预定时间长度小于或等于500毫秒,大于或等于计算所述吞吐率的时间间隔;
1≤α≤100。
可选地,所述第一预定时间长度为100毫秒,α为2。
可选地,所述的系统还包括:
拥塞处理模块,用于当已发送给所述第一终端但未收到所述第一终端确认的数据量未达到w时,以b作为发送速率将数据发送给所述第一终端;当已发送给所述第一终端但未收到所述第一终端确认的数据量超过w时,暂停发送数据给所述第一终端。
本申请包括以下优点:
本申请至少一个备选方案通过吞吐率确定拥塞窗口的大小,因此可以及时得知网络质量的变化并随之调整拥塞窗口的大小,相较于现有技术中发生丢包就直接将拥塞窗口的大小减半的做法,可以提高带宽利用率;当网络质量变差时,吞吐率将下降,由于拥塞窗口的大小是依据吞吐率确定的,因此发送速率也会随之下降,减少丢包;另外,由于吞吐率可以基于且不限于物理层参数得到,因此该方案能够很好地适用于可以采集物理层参数的通信系统。
本申请又一个备选方案限定了利用吞吐率确定拥塞窗口的计算细节。本备选方案的一种实施方式里限定了计算时所采用的参数值,能够更加合理的确定拥塞窗口。本备选方案的又一实施方式中限定了当未确认的数据量没达到拥塞窗口的大小时,以预测带宽作为发送速率,相当于根据实时的吞吐率来动态调整发送数据的快慢;而当未确认的数据量超过拥塞窗口的大小时则暂停发送,等待确认;拥塞窗口的大小并不直接根据数据的确认情况进行调整,而是与实时的吞吐率相关。
本申请又一个备选方案限定了如何进行主、被动混合式拥塞控制,从而能够更好地适应通信过程中的不同阶段。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1是实施例一的拥塞控制方法的流程示意图;
图2是实施例二的拥塞控制系统的示意图;
图3是实施例二的示例的应用场景的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,客户端或认证系统的计算设备可包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块n(n为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom),快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
实施例一、一种拥塞控制方法,如图1所示,包括步骤s110~s120:
s110、计算第一终端和基站之间的吞吐率;
s120、周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小。
本实施例中,所述步骤s110中,可以但不限于通过实时采集的第一终端和基站之间进行通信时的物理层参数,计算出所述吞吐率,可以称为物理层吞吐率;所述物理层参数可以但不限于通过物理层控制帧获取。所述步骤s120中,所述拥塞窗口的单位可以但不限于是以下任一个:数据包个数、报文段个数、字节数、时间长度等。
现有技术中是根据丢包和收到的ack(确认)消息调整拥塞窗口的大小,相当于根据发送结果进行调整,因此当网络状况发生变化时,拥塞窗口的调整存在一定延迟;而本实施例中所述拥塞窗口的大小根据物理层参数确定,能更好地匹配网络当前的实际情况,而且可以适用于能够计算出吞吐率的通信系统,比如lte(longtermevolution,长期演进)系统,也可以是cdma(codedivisionmultipleaccess,码分多址)、wcdma(widebandcodedivisionmultipleaccess,宽带码分多址)等系统;相对于现有技术中的被动拥塞控制方案,本实施例能实现主动式的拥塞控制。
一种可供选择的计算吞吐率的做法是:所述物理层参数包括mcs(modulationandcodingscheme,调制与编码策略)、rb(resourceblock,资源块)和tbs(transportblocksize,传输块大小)。计算吞吐率时,根据mcs和rb数查表得到tbs;确定每个子帧的tbs后,根据帧配比和特殊子帧配比累加各个子帧的tbs+crc(如果是双码字还要乘以2),从而计算出吞吐率。其它的吞吐率计算方法也可以适用。
本实施例中,所述步骤s110中的“计算”操作可以在收到物理层控制帧时触发,比如每次收到物理层控制帧后就采集其中携带的物理层参数并根据所采集的物理层参数计算一次吞吐率。所述步骤s120中的周期长短可自行设置,比如可以设置为每采集一次物理层参数就确定一次拥塞窗口的大小。
本实施例的一种备选方案中,所述步骤s120可以包括:
周期性计算当前时刻之前第一预定时间长度内的所述吞吐率的算术平均数b,确定拥塞窗口的大小w为α×rttmin×b,其中α为预定常数,rttmin 为当前时刻之前第一预定时间长度内最小的rtt(round-triptime,往返时间)。
本备选方案中,所述算数平均数b可以看成是当前时刻的预测带宽,单位可以为字节/秒,也可以为比特/秒等;w的单位相应地可以为字节,也可以为比特等。其中,计算b和确定w的周期长度可以为所述第一预定时间长度,也可以大于或小于所述第一预定时间长度。
其它备选方案中,也可以预定吞吐率和拥塞窗口的大小之间的对应关系,根据吞吐率及该对应关系确定拥塞窗口的大小。其它备选方案中,还可以采用最近一次或多次计算出的吞吐率确定拥塞窗口的大小。其它备选方案中,当采用最近多次计算出的吞吐率、或当前时刻之前第一预定时间长度内的多个吞吐率确定拥塞窗口的大小时,除了可以采用这些吞吐率的算数平均值进行计算,还可以采用这些吞吐率中的最小值或其它计算方式得到的数值确定拥塞窗口的大小。
本备选方案的一种实施方式中,所述第一预定时间长度t小于或等于500ms,大于或等于计算所述吞吐率的时间间隔;优选地,t可以但不限于为100ms(毫秒),t越小则采集频率越高,测量结果更精准,但会较为耗电。1≤α≤100,优选地,α可以但不限于为2,当传输延迟较低时还可以加大α。
本实施方式中,t的最小值相当于取决于第一终端底层上报物理层参数的频率,当第一终端的底层协议栈实体收到物理层控制帧后,会解析出其中的物理层参数并上报;在实时计算中,如果每上报一次物理层参数就进行一次吞吐率的计算,则t的最小值至少为相邻两次计算吞吐率的时间点所间隔的时间长度。
本备选方案的一种实施方式中,所述方法还可以包括:
s130、当已发送给所述第一终端但未收到所述第一终端确认的数据量未达到w时,以b作为发送速率将数据发送给所述第一终端;当已发送给所述第一终端但未收到所述第一终端确认的数据量超过w时,暂停发送数据给所述第一终端。
本实施方式中,步骤s130和步骤s110、s120是可以并行的;当第一终端启动后第一次确定拥塞窗口的大小后即可开始步骤s130。在启动后第一次确定拥塞窗口的大小之前,也可以采用预定的或第一终端上次启动时最后一次计算出的吞吐率确定拥塞窗口的大小,以进行步骤s130;还可以使用预定的或第一终端上次启动时最后采用的拥塞窗口的大小进行步骤s130。
本实施方式中,未收到确认可以但不限于是指未收到ack消息。
可以设置为只有当发生丢包的情况下,才采用本实施方式的方案进行拥塞控制;也可以设置为预定情况采用或任何情况下都采用本实施方式的方案。
本实施方式中,已发送但未收到确认的数据量正好等于w的情况如何处理可以自行设置,比如可以设置为和未达到w时进行同样的处理,即以b作为发送速率进行数据发送,也可以设置为和超过w时进行同样的处理,即暂停发送数据;还可以设置为“保持现状”,比如当已发送但未收到确认的数据量正好等于w时,如果正在以b作为发送速率进行数据发送,则可以继续发送,如果正在暂停发送,则继续暂停。
本实施方式中,暂停发送数据后,将会继续收到对于之前发送的数据的确认,因此已发送但未收到确认的数据量将会减少,当减少到小于w后,将继续以b作为发送速率进行数据发送。在此期间,w只随着计算出的吞吐率改变而发生改变,不会在丢包时就立即减半。
其它实施方式中,也可以采用其它方式来利用拥塞窗口进行拥塞控制;比如当已发送但未收到确认的数据量未达到w时,以设定速率或者根据拥塞窗口的大小确定的速率进行数据发送;再比如当已发送但未收到确认的数据量超过w时,按照设定步长减小w。
本实施例的一种备选方案中,所述步骤s110前还可以包括:
所述第一终端启动未达到第二预定时间长度时,采用tcp慢启动方式进行拥塞控制。
本备选方案中,采用tcp慢启动方式进行拥塞控制的情况可以包括所述第一终端向基站发送上行数据时,对所述第一终端进行拥塞控制,也可以 包括基站向所述第一终端发送下行数据时,对所述基站进行拥塞控制。
本备选方案中,由于刚启动时,网络上没有通信流量,b和rttmin无法测量计算,因此采用tcp慢启动的算法。
本备选方案中,所述第二预定时间长度可以大于或等于所述第一预定时间长度。
其它备选方案中,可以在第一终端启动未达到第二预定时间长度时采用其它算法进行拥塞控制,也可以利用第一终端上一次启动时最后确定的拥塞窗口进行拥塞控制,还可以先利用预设的拥塞窗口进行拥塞控制。
本备选方案的一种实施方式中,还可以设置为当不发生丢包时,采用tcpcubic算法进行拥塞控制;发生丢包时才采用上述步骤s110~s130进行拥塞控制;这样可以结合主、被动拥塞控制的优势。在其它实施方式中,可以除了启动未达到第二预定时间长度时以外,都采用上述步骤s110~s130进行拥塞控制。
实施例二、一种拥塞控制系统,如图2所示,包括:
计算模块21,用于计算第一终端和基站之间的吞吐率;
网络预测模块22,用于周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小。
本实施例中,所述计算模块21是所述系统中负责计算吞吐率的部分,可以是软件、硬件或两者的结合。
本实施例中,所述网络预测模块22是所述系统中负责确定拥塞窗口的大小的部分,可以是软件、硬件或两者的结合。
所述计算模块21可以但不限于设置于所述第一终端。所述网络预测模块22可以但不限于设置于所述第一终端。
本实施例的一种备选方案中,所述网络预测模块周期性根据所述吞吐率,确定所述第一终端对应的拥塞窗口的大小可以包括:
所述网络预测模块周期性计算当前时刻之前第一预定时间长度内的所 述吞吐率的算术平均数b,确定拥塞窗口的大小w为α×rttmin×b;其中α为预定常数,rttmin为当前时刻之前第一预定时间长度内最小的往返时间。
本备选方案的一种实施方式中,所述第一预定时间长度小于或等于500毫秒,大于或等于计算所述吞吐率的时间间隔;1≤α≤100。
优选地,所述第一预定时间长度可以为100毫秒,α可以为2。
本备选方案的一种实施方式中,所述系统还可以包括:
拥塞处理模块,用于当已发送给所述第一终端但未收到所述第一终端确认的数据量未达到w时,以b作为发送速率将数据发送给所述第一终端;当已发送给所述第一终端但未收到所述第一终端确认的数据量超过w时,暂停发送数据给所述第一终端。
本实施方式中,所述拥塞处理模块是所述系统中负责进行拥塞控制的部分,可以是软件、硬件或两者的结合。
本实施方式中,所述拥塞处理模块可以但不限于设置于和第一终端交互的应用服务器上。当拥塞处理模块设置于应用服务器,而计算模块21和网络预测模块22设置于所述第一终端时,拥塞处理模块需要从所述第一终端获取拥塞窗口的大小等信息。
本实施例的一种备选方案中,所述的系统还可以包括:
被动控制模块,用于在所述第一终端启动未达到第二预定时间长度时,采用传输控制协议慢启动方式进行拥塞控制。
其它实现细节可参见实施例一。
下面用一个实施示例说明本实施例,本实施示例的应用场景如图3所示,其中,所述第一终端和基站之间交互物理层控制帧,通过基站及中间网关和应用服务器交互上、下行数据。
所述计算模块和所述网络预测模块设置于所述第一终端。所述拥塞处理模块设置于所述应用服务器。所述第一终端将预测带宽b和拥塞窗口的大小w发送到所述应用服务器。
所述计算模块用于实时采集终端与基站通信的物理层参数mcs、rb、tbs,计算吞吐率。
所述网络预测模块根据实时计算出的吞吐率,计算当前的预测带宽b和拥塞窗口的大小w:
计算前t时间内的平均吞吐率(算术平均数)作为预测带宽b,计算前t时间内最小往返时间rttmin,则拥塞窗口的大小w=α×rttmin×b,t取100ms,α取2。
所述拥塞处理模块根据预测带宽b和拥塞窗口的大小w进行发送控制。当发生丢包时,若已发送给第一终端但未收到确认的数据量的大小不超过w(单位:字节),则以b(单位:字节/秒)为发送速率向第一终端发送数据;若已发送给第一终端但未收到确认的数据量的大小超过w,则暂停发送数据给第一终端,等待确认。当没发生丢包时,可以但不限于采用tcpcubic算法控制发送。由于启动时,网络上没有流量,b和rttmin无法测量计算,因此可以采用tcp慢启动的算法。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。