MSS调整

2022年6月27日 701点热度 1人点赞 0条评论

前期一个项目与外部厂商联调时,由于外部某几个网络环节存在超时或不通的情况,排查到可能需要修改部分网络环节的MSS参数信息,以下对相关操作进行记录,留待后续参考。

0、背景知识

MTU: Maximum Transmission Unit 最大传输单元
MSS: Maximum Segment Size 最大分段大小
一般以太网MTU都为1500, 所以在以太网中, 往往TCP MSS为1460

1、修改方法1---ifconfig

# 默认的设置
ifconfig ens192 mtu 1500
# 改为其他值
ifconfig ens192 mtu 1440

2、修改方法2---iptables

改变TCP MSS以适应PMTU(Path MTU)
iptables -A OUTPUT/INPUT/FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
设置mss
iptables -A OUTPUT/INPUT/FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
删除设置
iptables -D ,,,
---操作实例如下
iptables -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
iptables -D OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400

3、修改方法3---失败

ip route change 10.110.63.0/24 dev ens192 proto kernel scope link src 10.110.63.134 advmss 1300 route -ne

4、抓包验证

tcpdump -i ens192 port 443
此时mss为1400,如下图所示

5、可能需先关闭网卡的 offload 功能

实测两个环境(都是CentOS 7.6),这个offload设置对于设置mss并无影响
tcp-segmentation-offload
generic-segmentation-offload
generic-receive-offload
关闭命令为
ethtool -K ens192 tso off ethtool -K ens192 gso off ethtool -K ens192 gro off
打开命令为
ethtool -K ens192 tso on ethtool -K ens192 gso on ethtool -K ens192 gro on

liking

这个人很懒,什么都没留下

文章评论