摘要

  • RACK 以已确认送达的较新传输为时间参照,检查较早未确认传输是否超过 RTT 估计值与有界重排序窗口构成的门限。
  • DSACK 可帮助调整该窗口,SRTT 对调整范围加以约束。RFC 8985 至多允许一次超出拥塞窗口限制的额外丢失探测;它计入在途数据核算,并由下一次 ACK 消除临时超额,RTO 仍是后备机制。

TCP 看到序列号缺口时,面对的可能是真正的丢包,也可能只是数据包乱序到达。RFC 8985 规定的 RACK-TLP 引入了两项相互关联但职责不同的机制:RACK 根据传输时间判断丢失,TLP 则可在常规重传超时之前发送一次探测,以争取获得新的 ACK 证据。

这些机制不会取代拥塞控制,也不会取消对拥塞窗口、在途数据量和重传超时的约束。

设想发送方保留着一笔较早传输的状态,但它一直没有得到确认。随后发送的一笔较新传输却已被接收方确认。对于 RACK 而言,后者不仅说明某些字节已经送达,还提供了一个时间参照点。

发送方可以比较两笔传输的发送时刻。如果较早的传输仍未送达,而且其等待时间已经超过估算的往返时间与一个有界重排序窗口之和,RACK 就可以据此将它判定为丢失。这里的关键不是“较大的序列号已经出现”这一项事实,而是较晚发送的传输已被确认,以及较早传输已经超出相应时间门限。

如果这次探测没有带来可用证据,普通重传超时仍是后备路径。RACK-TLP 因而是在既有 TCP 约束中扩展证据来源,而不是用时间判断替换所有其他恢复规则。

规范依据是 RFC 8985;拥塞控制、SACK 恢复和重传计时器的边界分别由 RFC 5681、RFC 6675 与 RFC 6298 确立。这些标准定义的是协议行为,并不能证明当前实现的默认设置、采用情况、部署范围或性能。