一. 基本概念
二. linux 代码
2.1 tcp_rtt_estimator()
https://github.com/VVvector/linux-5.0.1/blob/master/linux-5.0.1/net/ipv4/tcp_input.c
- linux实现中mdev变量相当于协议中的RTTVAR变量,这里mdev的更新与协议有了明显的不同,主要原因是如果链路时延突然大幅降低的时候,如果按照协议方法更新,反而会大幅增加最后的RTO,因此,linux在发现链路时延大幅下降的时候会降低RTO增长的幅度。
- linux中在测量到第一个RTT采样之前RTO的初始化参考tcp_init_metrics(),RTT相关状态变量的更新参考tcp_rtt_estimator(),其中mdev放大4倍,srtt放大8倍进行的保存和计算。