我正在自定义协议中实现类似TCP的RTT估计。当我查看函数时
static void tcp_rtt_estimator(struct sock *sk, long mrtt){
long m = mrtt; /* RTT */对于第一次迭代,当没有完成先前的RTT估计时,代码片段为
srtt = m << 3; /* take the measured time to be rtt */为什么不为srtt直接获取m的值?根据我的理解,参数mrtt_us只是当前往返时间度量的jiffies中的值。
上面关于mrtt_us的假设是不正确的吗?如果是,那么我应该向这个函数传递什么值?
附注:我已经测量了jiffies中的RTT,目前我正在将它传递给这个函数。显然,这是不正确的,因为由于srtt = m << 3,第一个RTT值变成了与测量的srtt不同的值
发布于 2016-10-19 19:42:33
我是从https://lkml.org/lkml/1998/9/12/41的LKML上的一个邮件链中发现的
它提到存储的SRTT实际上是实际SRTT的8倍。我认为这样做是为了在计算中提供更高的精度。
因此,为了回答这个问题,RTT的测量值应该传递给jiffies中的这个函数(内核版本3.13)
https://stackoverflow.com/questions/40112346
复制相似问题