CentOS Overlay 网络 MTU 设置指南
一 基础概念与常见取值
- MTU(Maximum Transmission Unit)定义了二层帧可承载的最大上层数据大小。标准以太网帧为1518 字节(头部14字节 + FCS 4字节),因此常见 MTU=1500。Overlay 网络在以太网之上再封装一层隧道头(如 VXLAN/Geneve),会占用若干字节,导致端到端可用空间变小。若不对路径 MTU 做匹配,可能出现分片或DF 置位丢包,表现为应用超时、吞吐抖动等。合理做法是让 Overlay 接口 MTU 比物理/底层 MTU 小,预留封装开销。典型经验值:物理 1500 时,Overlay 选 1450–1400;若底层为 9000(jumbo),Overlay 可选 8950–8900。在 VXLAN 中,外层以太网头 14 + 外层 IP 头 20 + UDP 头 8 + VXLAN 头 8 = 50 字节,因此常见取值为 1500−50=1450;若再启用加密(如 IPsec/ESP),还需再预留约 20–50 字节,工程上常落在 1400–1420 区间。注意:不要盲目把 MTU 调到 1600/1650,除非底层网络明确支持 jumbo(9000) 且整条路径一致,否则会放大分片/丢包风险。
二 场景化配置步骤
三 不同封装与底层网络的推荐 MTU 对照
| 底层网络 MTU |
封装类型 |
是否加密 |
建议 Overlay MTU |
说明 |
| 1500 |
VXLAN/Geneve |
否 |
1450 |
预留外层以太网14+IP20+UDP8+VXLAN8=50字节 |
| 1500 |
VXLAN/Geneve |
是 |
1400–1420 |
在 1450 基础上再预留 ESP 等开销 20–50 字节 |
| 9000 |
VXLAN/Geneve |
否 |
8950–8900 |
仅在整条路径支持 jumbo 时使用 |
| 9000 |
VXLAN/Geneve |
是 |
8900–8850 |
同时考虑加密开销,建议先测后定 |
说明:若底层为 PPPoE(1492),应先以 1492 为基准计算(如 VXLAN 约 1442),再视是否加密下调。上述为工程常用取值,最终以路径探测为准。
四 验证与排障要点
- 路径 MTU 探测:在两端使用 ping 探测最大不分片包长,例如:ping -M do -s 1472 <peer_ip>(1472+28=1500)。若 1472 成功而 1473 失败,则路径 MTU≈1500;Overlay 应不高于该值减去封装开销。对加密场景,逐步下调测试值(如 1420、1400)观察是否消除“需要分片但 DF 置位”的丢包。
- 应用层与协议栈:确保应用不自行设置过小的发送 MSS;检查是否启用 PMTU 发现(通常默认开启),必要时结合应用特性与抓包定位异常。
- 一致性检查:Overlay 的 MTU 必须在通信两端一致;若跨主机/跨机房,需确保物理交换机、宿主机网卡、隧道接口、容器网络配置统一。
- 变更风险控制:先在测试环境验证,再滚动发布;变更窗口内保留回滚方案(如旧 MTU 配置与网络清单)。