一种基于quic协议的拥塞改进方法

文档序号:10473633阅读:434来源:国知局
一种基于quic协议的拥塞改进方法
【专利摘要】本发明提供了一种基于QUIC协议的拥塞改进方法,在拥塞算法中加入了时延的信息,并通过上一次RTT与当前RTT的比较,自适应地改变α的取值来判断当前网络的状况,然后根据当前网络状况调整当前的目标窗口值,接着基于cubic算法的三次增长曲线对拥塞窗口进行改变。这种改进方式能使得QUIC协议能够更及时准确地判断当前网络状况,并能够使拥塞窗口能够快速地改变以充分利用带宽。同时,在QUIC协议中存在最大拥塞窗口限制200,即无论拥塞窗口如何增长,都不会超过200,这种限制大大地降低了QUIC协议在高带宽长时延网络环境下的吞吐率。
【专利说明】
-种基于QUIC协议的拥塞改进方法
技术领域
[0001] 本发明设及到计算机网络基于UDP(用户数据包协议)的应用层可靠传输领域,具 体设及一种卵IC协议的拥塞改进方法。
【背景技术】
[0002] 2013年谷歌公司提出了卵IC协议,实现了基于UDP的可靠传输。该协议在谷歌浏览 器中实现,主要致力于加快页面访问速度。由于卵IC协议是基于UDP之上的应用层协议,它 在处理丢包W及初始连接时有更好的效率。QUIC主要解决了传统TCP(传输控制协议)的两 个问题。第一,传统TCP是有序传输,即在TCP中,若一个包发生丢失,后面的包必须等待该包 重传之后才能将数据一并提交到应用层。但是UDP是支持无序传输的,一个包若发生丢失, 后面的包不必等到该包重传而直接可W提交到应用层进行处理。第二,传统的HTTPS(超文 本传输协议安全)协议需要1个RTT(数据包往返时延)的TCP握手连接,W及2个RlT的化S(传 输层安全)连接,但卵IC协议最快只需0个RlT的握手连接即可达到与HTWS相同的安全性。
[0003] 在测试中发现,在高带宽高时延的环境下,QUIC的传输性能较差,主要原因为:第 一,QUIC协议采用的默认拥塞控制算法为cubic(=次增长曲线),cubic是一种基于丢包的 拥塞控制算法,由于cubic算法采用了=次增长曲线,在经历丢包之后能够快速到达上次丢 包时的窗口值,提高了高带宽高时延积下的吞吐率,但cubic主要是基于丢包来判断网络拥 塞情况,不能很准确判断当前网络状态,同时,其目标窗口值只有在丢包时才发生改变,并 不能很及时地反应当前网络状态。并且,在高误码率的环境下,cubic的拥塞窗口会剧烈减 少,并不能充分利用带宽。第二,在QUIC协议中,发现其对拥塞窗口存在一个最大限制为 200,也就是无论带宽时延积多大,其一次最多只能传输200个包,对其传输性能有较大影 响。若不对卵IC协议的拥塞窗口进行限制,那么其拥塞窗口将无限增长,然后产生剧烈丢包 现象,反而使得卵IC协议的吞吐量更差。
[0004] 在长时延高误码率的环境下,使用基于RTT的拥塞控制方法,如TCP-Westwood、 TCP-Vegas,能够提升数据传输的性能。TCP-Westwood通过测量返回的ACK(确认)的间隔时 间W及ACK确认的数据量来预估当前带宽,在丢包时将慢启动阔值修改为当前带宽值。而 TCP-Vegas主要是通过最小RTTW及当前平滑估计的RTT来获得实际吞吐率与期望吞吐率, 根据两者之差来预估当前队列排队情况,从而预估当前网络的状况。但是在实际环境中,由 于对RlT的估计会受到很多噪声的影响,会产生较大误差,从而影响拥塞窗口的变化。

【发明内容】

[0005] 本发明所要解决的技术问题是提供一种基于卵IC协议的拥塞改进方法,解决卵IC 协议在高带宽高时延下效率较低的问题,同时能够提升卵IC协议在高误码率下的性能。
[0006] 为解决上述技术问题,本发明采用的技术方案是:
[0007] -种基于卵IC协议的拥塞改进方法,包括W下步骤:
[000引步骤1:每收到一个ACK帖,使用公式last_SRTT = SRTT更新上一个SRTT的值,同时 更新当前SRTT的值,SRTT = 0.875 X SRTT+0.125 X RTT,其中 last_SRTT为上一次收到ACK时 计算的平滑往返时延,SRlT为平滑的往返时延,RTT为数据包往返时延;
[0009] 步骤2,判断当前拥塞窗口是否处于慢启动阶段,若处于慢启动,则按照慢启动方 式进行窗口增长,若处于拥塞避免阶段,则窗口增长方式为:
[0010] 步骤2.1:判断当前网络状态
[0011] 若当前窗口处于拥塞避免阶段,根据当前的SRTTW及最小RTT来预估排队的包的 个数diff,判断当前的网络状态;所述diff计算方式为:E邱ected = cwnd/minRTT;Ac1:ual = cwnd/SRTT;diff=化邱ected-Actual) XminRTT;其中,cwnd为当前的拥塞窗 口值,minRTT 为测得的最小RTT的值,SRTT为当前平滑RTT,E邱ected为期望吞吐量,Actual为实际吞吐 量;
[0012] 步骤2.2:对a的取值进行自适应地改变
[0013] a为判断当前网络状况的一个参数,设a初始值设置为l,〇rigin_cwnd为cubicS次 增长曲线的目标窗口值,SRlT为当前平滑RTT,last_SRTT为上一次收到ACK帖时的平滑RTT 的值,则a的自适应改变方法是:
[0014] 1)若diff<a,并且 SRTT小于 last_SRTT,同时a>l,则将〇rigin_cwnd加 1;
[0015] 2)若 diff<a,并且 SRTT 大于 last_SRTT,同时日>1,则 a 减去 1;
[0016] 3)若diff<a,并且 a 等于 1,则将o;rigin_cwnd加 1;
[0017] 4)若 diff>a,并且 SRTT 大于 last_SRTT,同时 a>l,则 a 减去 1;
[001 引 5)若diff>a,并且 SRTT小于 last_SRTT,则a加 1;
[0019] 步骤2.3:判断当前拥塞窗口是否已经到达最大拥塞窗口值
[0020] 若未到达,则继续进行拥塞窗口的改变;若已到达,通过diff与a的比较来判断当 前网络状态是否良好,具体为:
[0021] 若diff >a,不再增加最大拥塞窗口的值;若diff <a,增加最大拥塞窗口的值,即 max_cwnd=max_cwnd+100,同时,若此时cwnd〉= 300,将epoch_sta;rt置为0,将last_max_ cwnd设置为当前的最大拥塞窗口值,将a置为1,其中,max_cwnd为限制的最大拥塞窗口值, 巧och_sta;rt为上次丢包发生的时刻,last_max_cwnd为上次丢包时的拥塞窗口值。
[0022] 根据上述方案,所述慢启动方式进行窗口增长具体为:每收到一个ACK时,窗口加 Io
[0023] 根据上述方案,还包括步骤3:
[0024] 若此时拥塞窗口值还未增长到最大,则改变拥塞窗口的方法为:根据步骤2所计算 出的origin_cwndW及cubic的S次曲线增长,通过公式'
对拥塞窗口进行改变,其中,C为cubic的一个参数,t为上次丢包到现在的时间间隔,K为窗 口增长到上次丢包时的窗口值所需要的时间,Worigin为目标窗口值;根据最大拥塞窗口 W及 S次曲线所得到的拥塞窗口值,将当前拥塞窗口设置为max_cwnd W及Cwnd中的较小值。
[00巧]根据上述方案,还包括步骤4:
[00%] 若窗口发生丢包时,则减少当前拥塞窗口值W及最大拥塞窗口值,即Cwnd = Cwnd* 0, max_cwnd=max_cwnd*0,其中,0等于0.85。
[0027]与现有技术相比,本发明的有益效果是:
[0028] I)本发明使卵IC协议在高带宽长时延的网络环境下吞吐率明显提高,同时在误码 率较高的环境下吞吐率也显著提高。
[0029] 2)对最大的拥塞窗口值采用了一种自适应的方式,使卵IC协议不局限低带宽低时 延的网络,在高带宽高时延得环境下,卵IC也有很好的性能。
[0030] 3)QUIC采用了cubic的S次增长曲线,同时采用了RTT的判断信息,使得卵IC协议 在判断网络状况时更加准确、迅速,尤其是在高误码率的环境下,QUIC协议在丢包之后能很 迅速地恢复拥塞窗口 W充分利用带宽。
[0031] 4)卵IC协议是基于UDP的应用层协议,在修改拥塞算法时不需要修改Linux内核。
【附图说明】
[0032] 图1为基于卵IC协议的网络架构图。
[0033] 图2为本发明卵IC+的拥塞控制流程图。
[0034] 图3为本发明卵IC+的最大拥塞窗口更新方法的流程图。
[0035] 图4为本发明卵IC的拥塞窗口的S次增长曲线流程图。
[0036] 图5为本发明卵IC+丢包后的拥塞窗口变化流程图。
[0037] 图6为本发明的测试环境拓扑图。
[003引图7为带宽为10Mbps、误码率为0时,随着RTT的改变,QUIC+协议、QUIC协议W及 HTTP(超文本传输协议)的吞吐量比较。
[0039] 图8为带宽为IOMbps、RTT为50ms时,随着误码率的改变,卵IC+协议、QUIC协议W及 HTTP协议的吞吐量比较。
[0040] 图9为RlT = 200ms、误码率为0时,随着带宽的改变,卵IC+协议、QUIC协议W及HTTP 协议的吞吐量比较。
【具体实施方式】
[0041] 下面结合附图和【具体实施方式】对本发明作进一步详细的说明。本发明提出了基于 排队时延的拥塞窗口增长方式,同时,最大的拥塞窗口可W自适应地改变。为了描述方便, 将本发明描述为卵IC+(Quick Udp Internet Connection+)。本发明能够使得拥塞窗口能 够更加快速地达到目标窗口值,最终能够使得卵IC协议在高带宽高时延W及高误码率的环 境下的性能更好。
[0042] 基于UDP的可靠传输协议卵IC的架构图如图1所示,从图中,可W看出卵IC协议是 基于UDP的应用层协议,在应用上解决了TCP的许多缺陷,同时,QUIC在应用层实现,不需要 修改Linux操作系统的内核代码,在实现上更加简便。
[0043] 实现本发明采用了 W下步骤:
[0044] 步骤1,每收到一个ACK帖,使用公式last_SRTT = SRTT更新上一个SRTT(平滑的往 返时延)的值,同时更新当前SRTT的值,SRlT = O. 875 X SRTT+0.125 XRTT,其中last_SRTT为 上一次收到AO(时计算的平滑往返时延。
[0045] 步骤2,判断当前拥塞窗口是否处于慢启动阶段,如果处于慢启动,则按照慢启动 方式进行窗口增长,可采用每收到一个ACK窗口加1;若处于拥塞避免阶段,则按照步骤3至 步骤5对窗口进行增长。
[0046] 步骤3,若当前窗口处于拥塞避免阶段,根据当前的SRTTW及最小RTT,即minRTT来 预估的排队的包的个数diff,判断当前的网络状态。
[0047] 对diff的计算方式如下:
[004 引 Expected = cwnd/minRTT;
[0049] AcUial = cwnd/SRTT;
[0化0] diff =化xpected-Actual) XminRTT;
[0051 ]其中,cwnd为当前的拥塞窗口值,minRTT为测得的最小RTT的值,SRTT为当前平滑 RTT ,Expected为期望吞吐量,Actual为实际吞吐量。
[0052]步骤4,对a的取值采用如下方式进行自适应地改变
[0化3] 1)若diff<a,并且 SRTT小于 last_SRTT,同时a>l,则将〇rigin_cwnd加 1。
[0化4] 2)若diff<a,并且SRTT大于last_SRTT,同时日>1,则a减去1。
[0化5] 3)若diff <日,并且a等于1,则将origin_cwnd加1。
[0化6] 4)若diff>a,并且SRTT大于last_SRTT,同时日>1,则a减去1。
[0化7] 5)若diff>a,并且 SRTT小于 last_SRTT,则a加 1。
[0化引其中,将a初始值设置为1,0rigin_cwnd为CUbicS次增长曲线的目标窗口值,SRTT 为当前平滑RTT,last_SRlT为上一次收到ACK帖时的平滑RlT的值。
[0059] 步骤5,判断当前拥塞窗口是否已经到达最大拥塞窗口值,若未到达,则继续进行 拥塞窗口的改变,若已到达,通过diff与a的比较来判断当前网络状态是否良好;若diff > a,说明此时网络较拥塞,不应再增加最大拥塞窗口的值,若diff <a,说明此时网络较空闲, 应增加最大拥塞窗口的值(max_cwnd) W充分利用带宽,即max_cwnd = max_cwnd+100;同时 若此时cwnd(拥塞窗口)〉= 300,将epoch_sta;rt置为0,将last_max_cwnd设置为当前的最大 拥塞窗口值,将a置为1,其中,max_cwnd为限制的最大拥塞窗口值,邱〇油_8化的为上次丢包 发生的时刻,last_max_cwnd为上次丢包时的拥塞窗口值。
[0060] 步骤6,若此时拥塞窗口值还未增长到最大,那么再采取步骤7和步骤8来对拥塞窗 口进行改变。
[0061 ] 步骤7,根据步骤4所计算出的o;rigin_cwndW及cubic的S次曲线增长,通过W下 公式对拥集窗口讲行巧巧:
[0062]
[0063] 其中,C为cubic的一个参数,为常量,t为上次丢包到现在的时间间隔,K为窗口增 长到上次丢包时的窗口值所需要的时间,Wwigin为目标窗口值。
[0064] 步骤8,根据最大拥塞窗口 W及S次曲线所得到的拥塞窗口值,将当前拥塞窗口设 置为max_cwnd W及cwnd中的较小值。
[0065] 步骤9,若窗口发生丢包时,则减少当前拥塞窗口值W及最大拥塞窗口值,即cwnd =cwnd*0, max_cwnd=max_cwnd*0,其中 0等于 0.85。
[0066] 本发明应用于高带宽长时延的网络时,传统的卵IC由于存在最大拥塞窗口限制W 及在发生丢包之后恢复时间较长,故QUIC协议在高带宽长时延的网络下表现较差;若盲目 地增大卵IC协议的最大拥塞窗口,会使卵IC协议的窗口值剧烈增长,产生剧烈丢包现象,从 而使卵IC协议的吞吐率下降,但若不增长QUIC协议的最大拥塞窗口,会使卵IC协议无法充 分利用带宽,从而影响其吞吐率。
[0067] 下面通过具体实例对本发明及其有益效果作进一步详细的说明。首先按照图6所 示的环境拓扑图搭建测试环境,其中,客户端为卵IC协议W及HTTP协议的客户端,QUIC协议 的服务器端为quic_server,HTTP协议的服务器端为nginx服务器,两端的操作系统均为 山如11化12.04.1,卵1(:协议^及册1?协议都通过客户端的(3虹〇1]1;[111]1浏览器进行文件下载。中 间搭建的为WANem网络模拟器,通过WANem,可W设置网络的一系列参数,如带宽,时延,丢包 等等,通过不同网络参数的设置,比较卵1C+、卵ICW及HTTP协议的吞吐率。
[0068] 结合附图2对卵IC+协议的拥塞控制方法作进一步说明:步骤1、接收端每收到一个 ACK帖,就根据当前ACK的到达时间计算RTT,然后计算上一次收到ACK计算的平滑RTT,即 last_SRTT = SRTT,接着计算SRTT = O. 875 X SRTT+0.125 X RTT;步骤2,根据最小RTT W及当 前SRTT计算队列中排队的包的个数diff,diff = kwnd/minRTT-cwnd/SRTT) XminRTT;步骤 3,结合附图2,通过对RlT的判断W及diff和a的大小的判断来估计当前网络状况,判定是否 应增加目标窗口的值,同时对a的取值进行自适应地改变;步骤4,结合附图3所示,根据diff 与a的大小来判断当前是否应该增加最大拥塞窗口的值;步骤5,结合附图4,对于上述步骤 所计算出的目标窗口,利用S次曲线增长函数对卵IC+协议的拥塞窗口进行改变;步骤6,若 当前计算的拥塞窗口已超过最大拥塞窗口,则将最大拥塞窗口值设置为max_cwnd;步骤7, 若发生丢包,则按照附图5的流程图对当前拥塞窗口 W及最大拥塞窗口进行改变。
[0069] 对本发明卵IC+协议与卵IC协议、HTTP协议进行比较。现聯所搭建的网络模拟器为 WANem,通过WANem来模拟链路的带宽,RTT W及误码率。
[0070] 如附图7所示,随着RTT的增加,由于最大拥塞窗口限制为200,原卵IC协议的性能 下降得很快,而卵IC+协议的最大拥塞窗口值可W自适应地改变,同时,由于卵IC+协议对网 络状况判断更为及时、准确,从而提高了卵IC的吞吐量。
[0071] 如附图8所示,随着误码率的增加,由于卵IC+协议对网络状况的判断更为及时、准 确,可W更快恢复丢包前的拥塞窗口,故吞吐量要明显好于原卵IC协议;同时由于卵IC协议 底层是UDP,不需要按序传递,在丢包后无需等待前面的包的到达,故吞吐量也要好于HTTP 协议。
[0072] 如附图9所示,随着带宽的增加,由于最大拥塞窗口限制为200,原卵IC协议的性能 下降得很快,而卵IC+协议的最大拥塞窗口值可W自适应地改变,同时,由于卵IC+协议对网 络状况判断更为及时、准确,从而提高了卵IC的吞吐量。
【主权项】
1. 一种基于QUIC协议的拥塞改进方法,其特征在于,包括以下步骤: 步骤1:每收到一个ACK帧,使用公式last_SRTT = SRTT更新上一个SRTT的值,同时更新 当前SRTT的值,SRTT = 0.875 X SRTT+0.125 XRTT,其中 last_SRTT为上一次收到ACK时计算 的平滑往返时延,SRTT为平滑的往返时延,RTT为数据包往返时延; 步骤2,判断当前拥塞窗口是否处于慢启动阶段,若处于慢启动,则按照慢启动方式进 行窗口增长,若处于拥塞避免阶段,则窗口增长方式为: 步骤2.1:判断当前网络状态 若当前窗口处于拥塞避免阶段,根据当前的SRTT以及最小RTT来预估排队的包的个数 diff,判断当前的网络状态;所述diff计算方式为:Expected = cwnd/minRTT; Actual = cwnd/SRTT; diff= (Expected-Actual) XminRTT;其中,cwnd为当前的拥塞窗 口值,minRTT 为测得的最小RTT的值,SRTT为当前平滑RTT,Expected为期望吞吐量,Actual为实际吞吐 量; 步骤2.2:对α的取值进行自适应地改变 α为判断当前网络状况的一个参数,设α初始值设置为l,origin_cwnd为cubic三次增长 曲线的目标窗口值,SRTT为当前平滑RTT,last_SRTT为上一次收到ACK帧时的平滑RTT的值, 则a的自适应改变方法是: 1) 若diff <a,并且SRTT小于last_SRTT,同时a> 1,则将〇rigin_cwnd加 1; 2) 若diff<a,并且SRTT大于last_SRTT,同时α>1,则α减去1; 3) 若diff <a,并且α 等于 1,则将 〇rigin_cwnd加 1; 4) 若diff>a,并且SRTT大于last_SRTT,同时α>1,则α减去1; 5) 若diff>a,并且 SRTT小于 last_SRTT,则α加 1; 步骤2.3:判断当前拥塞窗口是否已经到达最大拥塞窗口值 若未到达,则继续进行拥塞窗口的改变;若已到达,通过diff与α的比较来判断当前网 络状态是否良好,具体为: 若diff >a,则不再增加最大拥塞窗口的值;若diff <a,则增加最大拥塞窗口的值,即 max_cwnd=max_cwnd+100,同时,若此时cwnd> = 300,将epoch_start置为0,将last_max_ cwnd设置为当前的最大拥塞窗口值,将α置为1,其中,max_cwnd为限制的最大拥塞窗口值, epoch_start为上次丢包发生的时刻,last_max_cwnd为上次丢包时的拥塞窗口值。2. 如权利要求1所述的一种基于QUIC协议的拥塞改进方法,其特征在于,所述慢启动方 式进行窗口增长具体为:每收到一个ACK时,窗口加1。3. 如权利要求1或2所述的一种基于QUIC协议的拥塞改进方法,其特征在于,还包括步 骤3:若此时拥塞窗口值还未增长到最大,则改变拥塞窗口的方法为:根据步骤2所计算出的 origin_cwnd以及cubic的三次曲线增长 拥塞窗口进行改变,其中,C为cubic的一个参数,t为上次丢包到现在的时间间隔,K为窗口 增长到上次丢包时的窗口值所需要的时间,1。"81"为目标窗口值;根据最大拥塞窗口以及三 次曲线所得到的拥塞窗口值,将当前拥塞窗口设置为max_cwnd以及cwnd中的较小值。4. 如权利要求3所述的一种基于QUIC协议的拥塞改进方法,其特征在于,还包括步骤4: 若窗口发生丢包时,则减少当前拥塞窗口值以及最大拥塞窗口值,即cwnd = cwnd^, max_cwnd=max_cwnd*0,其中,β等于 0.85。
【文档编号】H04L12/801GK105827537SQ201610382182
【公开日】2016年8月3日
【申请日】2016年6月1日
【发明人】王俊峰, 刘婷, 高展, 丁雪峰
【申请人】四川大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1