TCP SACK重叠选项

时间:2012-11-07 15:41:57

标签: networking tcp

我面临一个奇怪的问题。我们有两个系统通过RFC进行通信,但这种通信每次都会出现以下问题:

客户端收到一个TCP ACK,其SLE = 2734286,SLR = 2777173 然后,客户端开始重新传输“丢失”的包 然后收到一个带有SACK的TCP DUP ACK:2777089-2777173 2734286-2777173

这很奇怪,不是吗? SACK参数重叠。然后客户端再次发送丢失的包但总是收到TCP DUP ACK。经过5次尝试后,客户放弃了。

Windows 2003到Linux 2.6.32。

你是否有人知道这样的问题?网络连接本身没有问题(例如,通过SSH复制数据时,SACK协议似乎正常工作)。

1 个答案:

答案 0 :(得分:1)

根据RFC(http://tools.ietf.org/html/rfc2018),这些SACK没有任何问题。数据接收器假设来修剪第二个SACK,但这不是一个确定的要求(来自第4节):

  

SACK选项应该通过重复最近填写   报告了基于先前SACK中的第一个SACK块的SACK块   选项)不是已包含在SACK块中的SACK块的子集   正在构建SACK选项

我怀疑数据接收者的实现(这是你的例子中的服务器)包括只要段到达时生成一个SACK条目并将其推入列表,而不是每次都尝试折叠列表。