在Linux中,如何设置TCP连接上允许的最大段大小?我需要将它设置为我没有写入的应用程序(所以我不能使用setsockopt
来做到这一点)。我需要在网络堆栈中设置这个高于mtu。如何在Linux上设置最大TCP最大段大小?
我有两个流共享同一个网络连接。一个定期发送小包,这需要绝对最小的延迟。另一方发送大量数据 - 我正在使用SCP来模拟该链接。
我已经设置交通控制(TC),得到最低延时的流量高优先级。但是我遇到的问题是,从SCP传出的TCP数据包最终大小达64K字节。是的,这些被分解成基于mtu的更小的数据包,但是这不幸在发生在数据包的优先次序后发生。因此,我的低延迟数据包滞留在高达64K字节的SCP流量后面。
This article表明,在Windows中可以设置这个值。
有什么在Linux上我可以设置?我已经尝试过ip route和iptables,但是这些在网络堆栈中应用得太低。我需要在tc之前限制TCP数据包大小,因此它可以适当地优先考虑高优先级数据包。
我发现很难相信包在TCP队列中结束了64k,tc不能在TCP层上工作,它关心数据包,而不是TCP段 – nos 2010-10-04 18:18:48
我必须同意。从我的阅读中,TCP段应该在tc之前分解。但是,这不是我所看到的(无论是在延迟还是在tcpdump中)。当一个大的TCP段出去时,它会延迟高优先级的通道,直到发送大段的所有(最多64K字节)为止。 – Eric 2010-10-18 21:40:05