封装开销与 MSS 调整
封装开销会让隧道有效 MTU 小于物理接口:GRE 约 24 字节,IPsec 约 50 到 73 字节(与算法和填充有关)。常见做法是把隧道 MTU 设为 1400、TCP MSS clamp 设为其减 40(即 1360),避免大包在隧道中被丢弃或分片。
基本信息
| GRE 开销 | 约 24 字节(20 字节 IP 头 + 4 字节 GRE 头) |
|---|---|
| IPsec 开销 | 约 50-73 字节,含填充与算法差异 |
| MSS 经验值 | MTU 减 40,例如 MTU 1400 对应 MSS 1360 |
| 生效范围 | MSS clamp 只影响 TCP 会话 |
| 调整位置 | 隧道接口上设置 MTU 与 MSS |
| 典型现象 | 小包通、大包丢,或应用长时间等待 |
典型使用场景
- 新建隧道:先算清封装开销,再定 MTU 与 MSS
- 排障大包不通:检查隧道接口的 MTU 与实际生效值
- 两端对称调整:两侧都要改,避免单向问题
- UDP 业务:MSS 调整对其无效,需要另行评估分片与 MTU
- 变更核对:改完用探测命令确认实际可用 MTU
两侧配置对照
两侧配置对照
interface Tunnel0
ip mtu 1400 # 隧道接口 MTU
ip tcp adjust-mss 1360 # TCP MSS clamp(MTU 减 40)
!
show interfaces Tunnel0 | include MTU
! 华为侧对应配置
interface Tunnel0/0/1
mtu 1400
tcp adjust-mss 1360封装开销参考
| 封装方式 | 开销 | 说明 |
|---|---|---|
| GRE | 约 24 字节 | 20 字节 IP 头与 4 字节 GRE 头 |
| IPsec | 约 50-73 字节 | 受算法与填充影响 |
| GRE over IPsec | 两者叠加 | 开销最大,MTU 需留更多余量 |
| 无封装 | 0 | 按物理接口 MTU 处理 |
MSS clamp 只影响 TCP:UDP 与应用层大包要看 MTU 与分片策略,不能指望一条 MSS 命令解决所有大包问题。
只调一侧等于没调:反方向仍按旧值发送,问题依旧存在;变更时必须两端同时调整,并各自验证实际效果。
数值靠实测而不是照搬:从隧道两端发带 df-bit 的探测包,逐步加大包长,记录能通过的最大值,再留出少量余量;经验值只有在封装方式、加密算法与链路参数都相同时才可直接复用。
数值确定步骤
- 确认封装方式与加密算法,估算标签或封装开销
- 在隧道两端用 df-bit 探测,逐步加大包长找上限
- 把实测上限留出余量后写入隧道 MTU
- 按 MTU 减 40 设置 TCP MSS 并两端同步
- 改完双向复测并记录结果作为基线