如何设置linux通过减less数据包大小像OS X重新传输TCP数据包

在OS XI上注意到,对于没有被确认的数据包,系统以减小的数据包大小重新发送它们。 这可以在下面的图片中看到。

在这里输入图像说明

是否可以在Linux系统中启用相同的行为?

这看起来可能是MTU探测行为。 引用一篇关于Path MTU发现的文章:

MTU探测的工作原理是先发送小包,如果确认成功,则逐渐增加包大小,直到find正确的pathMTU。

在Linux中,我们可以修改/proc/sys/net/ipv4/tcp_mtu_probing ,如下所示:

  • 0 – 禁用(默认)
  • 1 – 仅在检测到PMTU黑洞时启用
  • 2 – 始终启用,使用tcp_base_mss的初始MSS值

值为1将使用正常的PMTUD过程, 但是如果数据包未被确认,则MTU探测将tcp_base_mss并重新开始MSS设置为tcp_base_mss (默认512字节)的数据包的重传 。 假设这些数据包由terminal主机接收并成功确认,则数据包大小将进一步增加,重复此过程。 这种探测方法的优点在于,它只在开始发送重传时才起作用,所以到达该点的所有其他通信都使用默认的MTU发送。 主要的缺点是增加的重传数量以及需要一些时间来等待具有较高MTU的重传发生。

值2简单地强制MTU探测,所有的数据包最初将被发送一个等于tcp_base_mss的MSS,并且如果它们被确认,则逐渐增大。 使用这种方法,在MTU探测开始之前,您不必等待重新传输,但所有出站数据包最初都会很小,这使得探测方法比选项1效率低得多。