- 论坛徽章:
- 0
|
![]()
这是reno算法的拥塞窗口图,怎么看都感觉是错的啊:
If 3 dup ACKs, Set ssthresh = max(flightsize/2,2*SMSS),重传丢失的分组,
Set cwnd = ssthresh + 3;
对每个dup ACK, cwnd += SMSS;
若确认一个新的ACK,set cwnd = ssthresh,进入CA
上面这里有两次设置cwnd,是不是多余的。
首先我假设,A发送了100个数据包出去,第1个丢失了,然后突然收到3个dupack(2,3,4),于是进入fastretrans,这时候cwnd = 51。
对于后续收到的每个dupack,cwnd++,也就是说,当从进入fastretrans后大约收到23个dup包之后,这时:
还在网络的数据包 = 96 - 23 = 73
当前cwnd = 74
这个时候,可以发送数据了,但是A后面还会收到74个dupack,也就是说,假设丢包时刻为t,那么在t ~ t + RTT这段时间内,cwnd最高会变成 150(大约)
在t+RTT时刻,cwnd = 150,网络中的数据包 74(全新的数据包),这个时候B会收到A的重传包(第1个数据包),返回一个新的ack,于是cwnd = 51。
----------------------------
图里这部分是不是少了? |
|