在Linux中,如何设置TCP连接允许的最大数据段大小?我需要为一个不是我编写的应用程序设置它(所以我不能使用setsockopt来设置)。我需要在网络堆栈中将其设置为高于mtu。
我有两个流共享相同的网络连接。一种是定期发送小数据包,这需要绝对最小的延迟。另一个发送大量数据--我使用SCP来模拟该链路。
我已将流量控制(tc)设置为最小延迟流量的高优先级。然而,我遇到的问题是,从SCP传来的TCP数据包最终的大小高达64K字节。是的,这些根据mtu被分解成更小的数据包,但不幸的是,这发生在tc对数据包进行优先排序之后。因此,我的低延迟数据包滞留在高达64K字节的SCP流量之后。
This article表示您可以在Windows上设置此值。
在Linux上有什么我可以设置的吗?我尝试过ip route和iptables,但它们在网络堆栈中的应用太少。我需要在tc之前限制TCP数据包的大小,以便它可以适当地确定高优先级数据包的优先级。
发布于 2012-11-01 02:42:08
您是否正在使用tcp分段将负载转移到nic?(您可以使用"ethtool -k $your_network_device“查看卸载设置。)据我所知,这是您将看到64k tcp数据包和设备MTU为1500的唯一方法。这并不能回答这个问题,但它可能有助于避免误诊。
发布于 2018-03-20 02:32:07
带有选项advmss的ip route命令有助于设置MSS值。
ip route add 192.168.1.0/24 dev eth0 advmss 1500发布于 2010-10-05 09:46:02
通告的TCP MSS的上界是第一跳路由的MTU。如果你看到64k的数据段,那就说明第一跳路由的MTU太大了--你是在使用环回还是别的什么进行测试?
https://stackoverflow.com/questions/3857892
复制相似问题