在Linux中,如何设置TCP连接上允许的最大段大小?我需要为我没写的应用程序设置它(所以我不能用setsockopt它来做).我需要将此设置为网络堆栈中的mtu.
我有两个流共享相同的网络连接.一个周期性地发送小数据包,这需要绝对最小延迟.另一个发送大量数据 - 我正在使用SCP来模拟该链接.
我已设置流量控制(tc)以使最小延迟流量具有高优先级.但是,我遇到的问题是,从SCP下来的TCP数据包最终会出现64K字节的大小.是的,这些基于mtu被分成更小的数据包,但遗憾的是,在tc对数据包进行优先级排序之后.因此,我的低延迟数据包被卡在高达64K字节的SCP流量后面.
本文指出在Windows上您可以设置此值.
我可以在Linux上设置一些东西吗?我尝试过ip route和iptables,但这些在网络堆栈中应用得太低了.我需要在tc之前限制TCP数据包大小,因此它可以适当地优先处理高优先级数据包.
您是否正在使用tcp分段卸载到nic?(您可以使用"ethtool -k $ your_network_device"来查看卸载设置.)据我所知,这是唯一的方法,您可以看到设备MTU为1500的64k tcp数据包.不是这个回答了问题,但是它可能有助于避免误诊.
ip route带选项的命令advmss有助于设置MSS值。
ip route add 192.168.1.0/24 dev eth0 advmss 1500
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28225 次 |
| 最近记录: |