TCP的FRTO理解

本文详细探讨了TCP中的FRTO(Fast Retransmit and Fast Recovery Timeout)机制,旨在解决DSACK启用时因延迟ACK引发的不必要的重传问题。内容包括FRTO的背景、RFC解释、4.9.4内核版本中的实现以及FRTO的工作流程,通过实例说明了FRTO如何避免误判RTO,从而提高TCP传输效率。
摘要由CSDN通过智能技术生成

TCP的FRTO理解

本文主要描述内核4.9.4中的TCP丢包处理与frto相关的操作,主要覆盖使用sack的场景。

0. 参考文档

[1] RFC-5682
[2] linuxtcp.ps
[3] frto.pdf

1. FRTO要解决的问题

FRTO主要是用来处理在DSACK生效时,突发的延迟触发RTO超时后,不必要的延迟和重传报文的ack造成了DSACK而产生非必要的快速重传[1]。
传统的基于DSACK的RTO超时会有如下问题:

  • 1) 在16.5s和17s中间最后一个ack到来之前一直处于慢启动阶段,指数发送数据,
  • 2) 18s虚假RTO触发,其实只是延迟,但是这时候RTO工作,重传丢失的报文。
  • 3) 19s的时候延迟包的ack到达,注意到此时ack的数据序列号是大于重传报文的序列号。
  • 4) 延迟的ack使发送端继续重传之后延迟的ack之后的数据(这部分数据之前已经发送过))(19s到19.5s之间的重传)。
  • 5) 在19.8s,之前发送的最大序列号报文被确认,接着由于4中的重传报文陆续到达,接收端发送了一系列以最大序列号报文为ack的Duplicate SACK。
  • 6) 发送端收到这些重复的DSACK后,触发了快速重传,降低了传输性能。

使用FRTO后的效果:

  • 1) 同上
  • 2) 同上
  • 3) 同上
  • 4) 由于延迟包的ack更新了snd_una,因此这里不重传其余数据,而是发送两个新的分片。
  • 5) 延迟包的ack陆续到达,此时由于未重传的包收到了对应的ack,因此可以判断当前是一个虚假的RTO,继续发送新的数据。

1. FRTO rfc解释

这里主要针对sack的场景,即rfc-5682的section 3。

   1) When the retransmission timer expires, retransmit the first
      unacknowledged segment and set SpuriousRecovery to FALSE.
      Following the recommendation in the SACK specification [MMFR96],
      reset the SACK scoreboard.  If "RecoveryPoint" is larger than or
      equal to SND.UNA, do not enter step 2 of this algorithm.  Instead,
      set variable "RecoveryPoint" to indicate the highest sequence
      number transmitted so far and continue with slow-start
      retransmissions following the conventional RTO recovery algorithm.

   2) Wait until the acknowledgment of the data retransmitted due to the
      timeout arrives at the sender.  If duplicate ACKs arrive before
      the cumulative acknowledgment for retransmitted data, adjust the
      scoreboard according 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值