Linux - 网络子系统 - TCP RTT and RTO

  • TCP中RTT的测量和RTO的计算
  • TCP系列15—重传—5、Linux中RTO的计算

一. 基本概念

 

二. linux 代码

Linux - 网络子系统 - TCP RTT and RTO_第1张图片

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倍进行的保存和计算。

Linux - 网络子系统 - TCP RTT and RTO_第2张图片

你可能感兴趣的:(linux,网络协议栈,网络,linux,tcp/ip,tcp,RTT,RTO)