TCP RTT预估值和虚假重传超时
《TCP/IP Illustrated Volume1 The Protocols》第14章的总结中提到
Karn’s algorithm removes the retransmission ambiguity problem by preventing the use of RTT measurements for segments that have been lost.
为了避免歧义,重传过的数据包的ack是不被计入RTT采样的。因为分不清这个ack对应的是原始数据包还是重传的数据包。
但这样其实RTT的统计数据缺少了一部分非常重要的数据包。那就是在网络中重传过的数据包。因为重传过,所以肯定超时,这部分超时的数据包意味着实际的RTT比预估的RTT要长。此时RTT的预估值和实际值已经不同,TCP统计时还将这部分重要的数据给丢弃,无疑会导致RTT的预估值越到后期越大概率是小于实际值的。也就是超时会经常发生。【Linux TCP的超时最小时间是200ms可能是为了解决这个问题?】
文中也花了大量的文字描述了虚假超时,也就是实际数据包已经到达对端,然而本地重新发送了一个副本过去。说明实际RTT比预估RTT要长的情况是普遍的。
回过头看, Supurious Retransmission Timeout虚假超时的发生应该是必然的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!