tcp的数据包发送与网络队列长度

 假设tcp的拥塞控制算法为Tcp Reno,ssthresh=20,拥塞窗口的初始值为1.假设网络链路为n0<–(B1,D1)–>n1<–(B1,D2)–>n2,其中(B,D)分别代表带宽和时延,B1>B2。假设这条链路仅有一个tcp session。现在,从理论上分析下这条链路的丢包情况。根据之前的分析[1],tcp的发包的时间间隔匹配的是ack的返回间隔,也就是瓶颈链路处理两个数据包的时间间隔。我用符号“1”表示一个数据包。
 在慢启动阶段,第一个周期发送了一个数据包”1”(seq0).第二个周期发送两个数据包”11”(seq1,seq2).”11”在瓶颈链路排队,接受端接收数据包的间隔 Δτ=MTUB2 ,ack的返回间隔为 Δτ .第三个周期发送数据包,”11”(seq3,seq4)< Δτ >”11”(seq5,seq6),就是收到对数据包1的确认,可以连续发送数据包3,4;间隔 Δτ 收到对数据包2的确认,可以发送数据包5,6.第四个周期,可以发送”11”(seq7,seq8)< Δτ >”11”(seq9,seq10)< Δτ >”11”(seq11,seq12)< Δτ >”11”(seq13,seq14).以此类推,直到达到了慢启动的阈值。
 关于占用的队列长度,分析下极端的情况,假设链路时延(D1,D2)为0,就是链路上不存在流动的数据包。

周期间隔数据包(序号)队列占用ack确认cwnd
1 Δτ 011
2 Δτ 1,2202
3 Δτ 3,4313
3 Δτ 5,6424
4 Δτ 7,8535
4 Δτ 9,10646
4 Δτ 11,12757
4 Δτ 13,14868
5 Δτ 15,16979
5 Δτ 17,1810810
5 Δτ 19,2011911
5 Δτ 21,22121012
5 Δτ 23,24131113
5 Δτ 25,26141214
5 Δτ 27,28151315
5 Δτ 29,30161416

 第五个周期一共可以发16个数据包。每两个包之间间隔为 Δτ 。在慢启动的条件下,每经过一个RTT,窗口值翻倍。本周期在发送最后的数据包之前,收到的是对上个rtt中最后一个数据包的确认。此周期的队列占用等于本周期发送的数据包个数。
 [2]中有个很形象的视频,说明了tcp的数据包发送过程与路由器的队列占用情况。
[1]BBR与CoDel
[2]TCP congestion control in lossy wireless networks

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值