tcp拥塞控制vegas的数学分析

 本篇主要基于Low的文章[1]。

符号含义
w s ( t ) w_s(t) ws(t)拥塞窗口
α s \alpha_s αsvegas的窗口改变阈值
d s ( t ) d_s(t) ds(t)发送端采集到的最小rtt
D s ( t ) D_s(t) Ds(t)当前的rtt
x s ( t ) x_s(t) xs(t)发送速率, x s ( t ) = w s ( t ) D s ( t ) x_s(t)=\frac{w_s(t)}{D_s(t)} xs(t)=Ds(t)ws(t)

 vegas的窗口调节遵循的规则,就是在阈值 α s \alpha_s αs之下,每个rtt,窗口增加1,大于阈值,每个rtt,窗口减少1。
w s ( t + 1 ) = { w s ( t ) + 1 D s ( t ) , i f w s ( t ) d s ( t ) − w s ( t ) D s ( t ) < α s w s ( t ) − 1 D s ( t ) , i f w s ( t ) d s ( t ) − w s ( t ) D s ( t ) > α s w s ( t ) . e l s e (1) \begin{equation} w_s(t+1)= \left\{ \begin{array}{lr} w_s(t)+\frac{1}{D_s(t)}, &if \frac{w_s(t)}{d_s(t)}-\frac{w_s(t)}{D_s(t)}<\alpha_s \\ w_s(t)-\frac{1}{D_s(t)}, & if \frac{w_s(t)}{d_s(t)}-\frac{w_s(t)}{D_s(t)}>\alpha_s\\ w_s(t).&else \end{array} \right. \end{equation} \tag{1} ws(t+1)= ws(t)+Ds(t)1,ws(t)Ds(t)1,ws(t).ifds(t)ws(t)Ds(t)ws(t)<αsifds(t)ws(t)Ds(t)ws(t)>αselse(1)
 假设一条链路(链路的带宽处理能力 c c c),被一条数据流独占。当数据流的发送速率大于瓶颈链路速率时,链路中出现排队现象[2] (关于发送速率的不变,并不准确,应该分开阐述,增加的是发送的窗口,链路的处理速率与ack的返回速率相同,x_s(t)的计算应该就是根据ack的返回情况计算的)。窗口的增大,以时延的增大为代价.但是链路的吞吐率没有发生变化。
 设 q s ( t ) = D s ( t ) − d s ( t ) q_s(t)=D_s(t)-d_s(t) qs(t)=Ds(t)ds(t):
d i f f = w s ( t ) d s ( t ) − w s ( t ) D s ( t ) = x s ( t ) D s ( t ) − d s ( t ) d s ( t ) (2) diff=\frac{w_s(t)}{d_s(t)}-\frac{w_s(t)}{D_s(t)}=x_s(t)\frac{D_s(t)-d_s(t)}{d_s(t)}\tag{2} diff=ds(t)ws(t)Ds(t)ws(t)=xs(t)ds(t)Ds(t)ds(t)(2)
x s ( t ) = d i f f ∗ d s ( t ) q s ( t ) (3) x_s(t)=\frac{diff*d_s(t)}{q_s(t)}\tag{3} xs(t)=qs(t)diffds(t)(3)
D s ( t ) = d i f f ∗ d s ( t ) x s ( t ) + d s ( t ) (4) D_s(t)=\frac{diff*d_s(t)}{x_s(t)}+d_s(t)\tag{4} Ds(t)=xs(t)diffds(t)+ds(t)(4)
w s ( t ) = D s ( t ) x s ( t ) = d i f f ∗ d s ( t ) + x s ( t ) d s ( t ) = d i f f ∗ d s ( t ) + c ∗ d s ( t ) (5) w_s(t)=D_s(t)x_s(t)=diff*d_s(t)+x_s(t)d_s(t)=diff*d_s(t)+c*d_s(t)\tag{5} ws(t)=Ds(t)xs(t)=diffds(t)+xs(t)ds(t)=diffds(t)+cds(t)(5)
 根据(5)可以看出,当 d i f f < α diff<\alpha diff<α,增加发送窗口,就是要增加相应的 d i f f diff diff值。So the equilibrium point of d i f f diff diff is α s \alpha_s αs. And the equilibrium rate x s ( t ) = α s ∗ d s ( t ) q s ( t ) x_s(t)=\frac{\alpha_s*d_s(t)}{q_s(t)} xs(t)=qs(t)αsds(t).
q s ( t ) = α s ∗ d s ( t ) x s ( t ) (6) q_s(t)=\frac{\alpha_s*d_s(t)}{x_s(t)}\tag{6} qs(t)=xs(t)αsds(t)(6)
 根据网络效率最大化公式:
U s ′ ( x s ) = q s = α s ∗ d s ( t ) x s (7) U'_s(x_s)=q_s=\frac{\alpha_s*d_s(t)}{x_s}\tag{7} Us(xs)=qs=xsαsds(t)(7)
 链路最小时延 d s ( t ) d_s(t) ds(t)为固定值。根据(7)求得的效用函数为:
U s ( x s ) = α s ∗ d s ∗ l o g ( x s ) (8) U_s(x_s)=\alpha_s*d_s*log(x_s)\tag{8} Us(xs)=αsdslog(xs)(8)
 根据(5),分析下 α s \alpha_s αs决定的窗口变化,争抢的到底是什么资源?窗口有两项组成, d i f f ∗ d s ( t ) diff*d_s(t) diffds(t) c ∗ d s ( t ) c*d_s(t) cds(t)。第二项就是链路的时延带宽积,与链路的处理能力适配。vegas还需要额外向链路中注入第一项描述的数据包,占有的就是链路中buffer。
我在ns3仿真平台对vega进行仿真分析,三条数据流,分别在不同时刻向网络中发送数据包。
 数据流的goodput变化:
在这里插入图片描述
 数据流1的单向传输时延:
在这里插入图片描述
 从吞吐量图片可以看出,vegas有 later comer的效应——晚到的数据流可以获取更高的吞吐量。这是因为不同数据采样到的最小rtt(base_rtt)不同。
  做了一些魔改,增加一个事件滤波器,每隔5秒重置base_rtt,看看测试结果:
在这里插入图片描述
 时延:
在这里插入图片描述
 改善了公平性,但是时延却不稳定了。
 仿真代码[4]。
[1]Low S H, Peterson L L, Wang L. Understanding TCP Vegas: a duality model[J]. Journal of the ACM (JACM), 2002, 49(2): 207-235.
[2]TCP Fluid Model
[3]基于时延的mptcp的拥塞控制
[4] quic-on-ns3

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值