TCP F-RTO浅析

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后的:
在这里插入图片描述
浙江温州皮鞋湿,下雨进水不会胖。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值