首页/安全/安全设备配置速查/TCP MSS 调整与隧道叠加场景

TCP MSS 调整与隧道叠加场景

MSS 决定 TCP 单段数据长度,经 IPsec、GRE 等隧道封装后有效 MTU 变小,不调 MSS 会出现网页卡、大包丢的现象。

安全设备配置速查安全更新于 2026-10-13

TCP MSS 是什么

MSS 是 TCP 单个报文能承载的最大数据长度,由双方在握手时协商。它与路径 MTU 的关系是 MSS ≈ 路径 MTU − IP 头 − TCP 头;当流量经过 IPsec、GRE、VXLAN 等隧道时,封装头会额外占用字节,实际可用的 MSS 变小。若设备不调整 MSS 通告值,就会出现小报文正常、大报文被丢弃的现象:网页能打开但加载慢、登录成功但传文件失败、TLS 握手完成但下载中断。

基本信息

关系式MSS ≈ 路径 MTU − IP 头 − TCP 头,隧道场景再减封装开销
典型问题小包通、大包断;能登录、传文件失败;网页加载卡顿
设备侧动作对经过设备的 TCP 报文改写 MSS 通告值,通常作用于握手阶段
生效方向设备只改写经过自己的连接,两端都要覆盖才对全路径有效
验证方式用带 DF 标志的 ping 探测路径 MTU,再核对实际协商结果

典型使用场景

  • 分支机构与总部之间建立 IPsec 隧道后,访问大文件或网页卡顿
  • GRE 或 VXLAN 封装承载业务,部分站点访问正常、部分站点异常
  • PPPoE 或特殊接入链路上出现大包被丢弃的情况
  • 跨运营商访问时部分目的地异常,与中间链路的 MTU 差异有关
  • 上线上新隧道前做预检,避免业务切换后才暴露大包问题

华为 USG 示例(先看 ? 帮助)

华为 USG 示例(先看 ? 帮助)
system-view
 firewall tcp-mss 1200          # 取值范围与生效方向随版本略有差异
 quit
# 配置前用 ? 查看本机支持的子命令,避免照搬其他型号写法
display current-configuration | include mss

客户端侧验证

客户端侧验证
ping -M do -s 1400 10.1.1.1      # Linux:禁止分片探测路径 MTU
ping -f -l 1400 10.1.1.1        # Windows:等价用法
# 逐步减小包长,找到能通的最大值,再核对 MSS 协商是否匹配
tcpdump -i any -n 'tcp[tcpflags] & tcp-syn != 0'   # 观察握手时报文长度

现象与处置对照

现象可能原因处置方向
小包通大包断MSS 未按封装开销下调在隧道两端与中间设备调整 MSS
只有部分站点异常该路径 MTU 更小或经过额外封装按站点复测并单独调整
网页能开加载慢大包被丢弃后反复重传核对丢弃统计与 MTU 探测结果
隧道建成后大文件失败封装导致有效 MTU 变小调整隧道接口 MTU 或 TCP MSS
全部流量正常路径 MTU 一致且无隧道通常无需调整,改造后再复测
两端都在公网、路径 MTU 一致且没有隧道封装时通常无需调整;一旦新增隧道、改变接入方式或更换运营商线路,应重新做一次 MTU 探测与业务回归。
禁用 ICMP 会让路径 MTU 发现机制失效:中间设备无法把需要分片的差错报文回给发送端,隧道场景下应放行必要的 ICMP 差错报文,而不是简单全禁。

易错点

  • 只调整一端设备的 MSS,往返路径上还有设备在丢弃大包,问题依旧
  • 直接禁用全部 ICMP 导致路径 MTU 发现失效,大包问题被掩盖并在复杂链路上放大
  • 把 MSS 值照搬其他型号或其他项目,超出本机取值范围导致命令不生效
  • 只在新隧道上线后测试小流量业务,未验证大文件下载与网页加载等大包场景

数据来源与参考

  • 华为 USG6000 产品文档:TCP MSS 配置
  • TCP/IP 协议栈与 PMTUD 原理(RFC 1191)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌