在阅读Richard Stevens撰写的“TCP / IP插图第1卷”一书时,我遇到了有关计算RTO的TCP有所改进的信息。
该书指出标准方法存在一些可能的问题,因为它使用了 rttvar 术语的重量级。即使RTT正在减少,这也会导致RTO增加。
它稍后说明,如果RTT低于估计的RTT范围的“低端”( srtt - mdev ),那么通过给予新样本较小的权重来处理RTT正在减少的情况。并提供代码片段:
if(m < (srtt - mdev))
mdev = (31/32) * mdev + (1/32) * |srtt - m|
else
mdev = (3/4) * mdev + (1/4) * |srtt - m|
其中: srtt =平滑的往返时间,mdev =新测量与srtt的偏差,m =新的rtt测量。
我的问题是我无法在任何Linux发行版源代码中找到这种改进。 linux的 tcp_input.c 文件中的函数 static void tcp_rtt_estimator(struct sock * sk,long mrtt_us)如RFC 6298所述,但我找不到上面提到的改进在史蒂文的书中。
我的问题是,由于这个问题难以实现,或者在某些版本中实现了这些改进,但是在测试之后被删除并且得到了令人不满意的结果,还是其他什么?
我还得到了一些信息,即2002年召开了一次技术会议,讨论了这一改进。 (FREENIX轨道会议记录:2002年USENIX年度技术会议),但无法找到他们的结论。
如果有人有关于这个主题的任何信息,我会非常感激。
谢谢。