TCP中的RTT

博客详细讨论了TCP协议中的RTT(Round-Trip Time)相关概念,包括BBR算法中的RTT更新、TCP控制块上的RTT记录以及供定时器模块使用的RTO(Retransmission Timeout)。重点介绍了RTO的复杂计算过程,它是基于平滑后的RTT值和最大偏差,用于避免无效的重传。
摘要由CSDN通过智能技术生成

有几个关键时间

3个。

  • 供定时器基础模块使用的rto
  • tcp控制块上记录的rtt
  • bbr算法中的记录的rtt

BBR算法中rtt的更新

bbr算法中的min_rtt_us来自样本中的rtt_us,rtt_us来自ack报文中的携带的回显时间戳与中记录的当前时间(这个时间与当前时间不一定相等)
只要样本中的rtt_us小于当前bbr状态记录中的min_rtt_us,则更新min_rtt_us;或者min_rtt_us已超时,就是测得的最小值已经超过10s,则更新成当前rtt值。

tcp控制块上记录的rtt

与bbr算法更新rtt的时机一样,但是保存在minmax结构中,即保存一定时间内的三个最优minrtt值。

供定时器模块使用的rto

与上面两个时间在同一个时机,处理ack的时候。
rto的计算较为复杂,来自tcp控制块中的rttvar_us和srtt_us,= srtt_us>>3 + rttvar_us。
将上面的公式全部换算成与rtt的关系。下面是linux中换算,

static void tcp_rtt_estimator(struct sock *sk, long mrtt_us)
{
	struct tcp_sock *tp = tcp_sk(sk);
	long m = mrtt_us; /* RTT */
	u32 srtt = tp->srtt_us;

	/*	The following amusing code comes from Jacobson&
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值