Linux实现 - TCP RTO计算

时间:2017-05-31 13:44:49

标签: c linux tcp linux-kernel kernel

在阅读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年度技术会议),但无法找到他们的结论。

如果有人有关于这个主题的任何信息,我会非常感激。

谢谢。

0 个答案:

没有答案