TCP F-RTO浅析-CSDN博客

F-RTO为了解决一个问题,RFC5682最开头有说:

It has been pointed out that the retransmission timer can expire spuriously and cause unnecessary retransmissions when no segments have been lost [LK00, GL02, LM03]. After a spurious retransmission timeout, the late acknowledgments of the original segments arrive at the sender, usually triggering unnecessary retransmissions of a whole window of segments during the RTO recovery. Furthermore, after a spurious retransmission timeout, a conventional TCP sender increases the congestion window on each late acknowledgment in slow start. This injects a large number of data segments into the network within one round-trip time, thus violating the packet conservation principle [Jac88].

F-RTO的目标是避免不必要重传,减少了网络上的数据包,这可有效减缓拥塞,是一个利他利己的效果,至于拥塞状态机的undo只是它的副作用。
造成虚假超时的原因大致两类:

  • 突发拥塞。这导致瞬时RTT升高,造成RTO重传。
  • 路由重收敛。这导致路径切换,新路径RTT偏高。

其中拥塞因素不再赘述,路由重收敛值得一提。

路由重收敛时间接近分钟级别,即使是小范围路由抖动也需秒级方可稳定,在TCP看来,RTO超时是必然的,RTO超时后即重传UNA,UNA将沿着新的路径到达对端并被ACK,接下来的做法,是理解F-RTO算法的核心。收到重传的UNA的ACK后,sender可以:

  • 重传UNA~RecoveryPoint。
  • 传输新报文。

如果重传UNA~RecoveryPoint,显然是没有必要的,徒增了网络负载,如果传输新报文,由于TCP是积累确认,接下来从返回的ACK就能判断RTO超时是真超时还是假超时了:

  • 若ACK包含SACK,则为真超时,迄今只发了UNA和新报文,SACK说明有空洞,实锤(大概率)丢包。
  • 若ACK确认了从未重传的报文,则必然为假超时,undo恢复。

F-RTO,顾名思义,其中的F就是Forward,即发送新报文的意思。
下图展示了标准RTO超时后的tcptrace图样例:
在这里插入图片描述
下面是启用F-RTO后的:
在这里插入图片描述
浙江温州皮鞋湿,下雨进水不会胖。

原文链接: https://blog.csdn.net/dog250/article/details/122626558

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    TCP F-RTO浅析-CSDN博客

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/405617

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 上午9:19
下一篇 2023年4月26日 上午9:19

相关推荐