TCP重传机制详解——05RACK

TCP重传机制详解——05RACK

RACK是什么?

RACK(Recent ACKnowledgment)是一种新的基于时间的丢包探索算法,RACK的目的是取代传统的基于dupthresh门限的分钟快速重传及其变种。

基本原理

基于时间的算法,即通过时间戳和SACK信息,维护一个窗口。当ACK到来时,RACK会将窗口中“过期”的包标记为丢失,进行重传;而对于“未过期”的包,有可能丢失也有可能是乱序,会等待超时后在处理。

  1. 记录发送时间戳RACK.xmit_ts,用于后续的丢包推断和快速恢复
  2. 接收ACK/SACK,更新RACK状态,包括最近成功传输的数据包的时间戳、对应的序列号以及计算出的RTT
  3. 丢包推断,对于每个数据包,会计算从发送到最近成功传输的数据包的时间差
  4. 计算重排序窗口,重排序窗口表示发送端愿意等待的时间量,以便区分数据包是丢失还是仅仅发生了重排序

使用条件

  1. 必须使用SACK选项
  2. 对于每个发送的数据包,发送端必须存储这个数据包的发送时间,时间精度至少要达到毫秒精度。如果连接的RTT小于1ms,那么微秒精度将会更有利于RACK探测丢包
  3. 对于每个发送出去的数据包,发送端必须存储这个数据包是否已经重传过

Linux内核参数:/proc/sys/net/ipv4/tcp_recovery

相关推荐

  1. TCP机制详解——05RACK

    2024-04-11 13:54:03       32 阅读
  2. TCP机制详解——03DSACK

    2024-04-11 13:54:03       37 阅读
  3. TCP机制总结

    2024-04-11 13:54:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 13:54:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 13:54:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 13:54:03       87 阅读
  4. Python语言-面向对象

    2024-04-11 13:54:03       96 阅读

热门阅读

  1. 【SQL】mysql数学函数功能介绍并举例

    2024-04-11 13:54:03       35 阅读
  2. python之迭代

    2024-04-11 13:54:03       34 阅读
  3. 七彩之城的独特序列(蓝桥杯)

    2024-04-11 13:54:03       42 阅读
  4. SpringCloudAlibaba-整合gateway(五)

    2024-04-11 13:54:03       38 阅读
  5. opencv使用滑动窗口提取GLCM特征做svm图像分类

    2024-04-11 13:54:03       32 阅读
  6. uniapp实现文件和图片选择上传功能实现

    2024-04-11 13:54:03       35 阅读