# MTU / MSS 路径计算器

输入接口 MTU 和封装栈(GRE / VXLAN / WireGuard / IPSec / PPPoE / VLAN),逐层计算每层吃掉多少字节、剩余 MSS,并给出 ping 探测的 DF 包大小建议和分片诊断。

> 标准页面: https://elysiatools.com/zh/tools/mtu-and-mss-path-calculator

- **分类:** Network

- **关键词:** MTU, MSS, 路径 MTU, 封装, GRE, VXLAN, WireGuard, IPSec, PPPoE, VLAN, 分片, TCP, SD-WAN, k8s CNI

## 概述

精确计算每个隧道/封装层从 MTU 里吃掉多少字节,以及 TCP 会话实际得到的 MSS。

**为什么重要。** 标准以太网 MTU 是 1500 字节。一旦叠加隧道(GRE、VXLAN、WireGuard、IPSec),每层都会偷走头部字节。内层 TCP 以为自己的 MSS 是 1460,但外层帧已经超过了路径 MTU——包被分片,或者设了 DF 时被悄悄丢弃。路径 MTU 黑洞是 SD-WAN、k8s CNI overlay 和 IPSec VPN 上"诡异、间歇性"连通问题的最常见原因之一。

**工作原理。** 从接口 MTU(最外层帧的负载预算)开始,按"从外到内"的顺序依次减去每层的封装开销。所有层减完后剩下的就是内层 IP 包可用的 MTU。再减去 IP 头(IPv4 为 20 字节,IPv6 为 40)和 TCP 头(默认 20 字节)就得到**有效 MSS**。

**使用的开销表(每层,来自 RFC)**:
- **以太网头**不计入——MTU 本来就指 L3 负载。
- **VLAN 802.1Q** — 4 字节。
- **Q-in-Q** — 8 字节(两个 VLAN 标签)。
- **PPPoE** — 8 字节(6 字节 PPPoE 头 + 2 字节 PPP 协议)。
- **GRE** — 最少 4 字节;带 Checksum/Key/Sequence 选项时 +4。
- **VXLAN** — 8 字节。
- **Geneve** — 基础 8 字节(不含可变 TLV)。
- **WireGuard** — IPv4 上 80 字节(32 外层 IP + 8 外层 UDP + 32 WG 数据消息 + 8 poly1305 标签),IPv6 上 100(60 外层 IP + 8 外层 UDP + 32 WG 数据消息)。
- **IPSec ESP** — 取决于加密 + 认证 + 尾部。**传输模式** AES-GCM ≈ 55 字节;**隧道模式** ≈ +20(新外层 IP 头)。

**诊断输出。** 对每个栈报告:
- 每层开销和累计总数;
- 封装后剩余 MTU;
- 减去 IP + TCP 头后的有效 MSS;
- 用 `ping -M do -s <大小>`(Linux)或 `ping -f -l <大小>`(Windows)探测路径 MTU 的精确 **DF 探测大小**;
- 当有效 MSS 低于 1360 时告警(可能导致 TCP 性能问题或 PMTUD 失败)。

**小贴士。**
- WireGuard 用户:把 WG 接口 MTU 设为 `外层 MTU − 80`(IPv4)或 `− 100`(IPv6),避免双重分片。
- 数据中心 VXLAN:1500 字节底层时把 overlay MTU 设为 1450。
- PPPoE DSL:在 WAN 侧 `ping -M do -s 1472` 得到 PPPoE 再扣 8 字节之前的真实路径 MTU。

## 输入项

- **接口 MTU (字节)** (number): e.g. 1500
- **封装栈** (text): Comma-separated list of layers, outermost first. Valid values: vlan, qinq, pppoe, gre, gre_checksum, vxlan, geneve, wireguard4, wireguard6, ipsec_transport, ipsec_tunnel.
- **内层负载 IP 版本** (select)
- **TCP 传输层头 (字节)** (number): e.g. 20 (with TCP options up to 60)
- **自定义每层开销 (字节)** (number): e.g. 0 (extra bytes not covered above)

## 适用场景

- 在部署 SD-WAN、Kubernetes CNI 叠加网络或 IPSec VPN 隧道，需要确定最佳接口 MTU 以避免双重分片时。
- 遇到网络连接诡异中断、大文件传输失败或特定网页无法加载，怀疑存在路径 MTU 黑洞时。
- 需要使用 ping 命令进行 DF（不分片）测试，需要计算精确的 ICMP 负载大小（DF 探测大小）时。

## 工作原理

- 输入物理接口的 MTU 大小（如标准以太网的 1500 字节）并选择内层 IP 版本及 TCP 头部大小。
- 依次输入从外到内的封装协议栈（如 vxlan, wireguard4），系统将根据 RFC 标准扣除每层协议头的开销。
- 自动计算出最终可用的内层 MTU、有效 TCP MSS，并输出在 Linux/Windows 下进行不分片 ping 探测的精确字节数。

## 使用案例

- 规划数据中心 VXLAN 叠加网络时，计算 overlay 网络的 MTU 预留空间。
- 排查企业 IPSec VPN 隧道中的 TCP 握手成功但无法传输数据的问题。
- 优化家庭或企业 PPPoE 宽带连接的路由器 MTU 和 MSS 钳制（MSS Clamping）设置。

## 常见问题

### 为什么叠加隧道后大文件传输会变慢或中断？

隧道封装会占用额外的头部字节，若未调整 MSS，外层数据包将超过物理路径 MTU 导致分片或被丢弃（MTU 黑洞）。

### 什么是 DF 探测大小？它与 MTU 有什么区别？

DF 探测大小是 ping 命令中 -s（Linux）或 -l（Windows）参数指定的 ICMP 负载大小，它等于路径 MTU 减去 IP 头（20字节）和 ICMP 头（8字节）。

### WireGuard 推荐的 MTU 是多少？

在 1500 字节的 IPv4 底层链路上，WireGuard 占用 80 字节开销，因此推荐将 WireGuard 接口 MTU 设为 1420。

### 这个计算器支持自定义协议开销吗？

支持，您可以通过“自定义每层开销”输入框手动添加未列出的其他协议或特定选项的额外字节数。

### 为什么有效 MSS 低于 1360 会收到警告？

过低的 MSS 会导致协议头开销占比过高，降低网络传输效率，并可能触发某些网络设备的 PMTUD 失败。

## 相关工具

- [Lotka–Volterra 捕食者-猎物模型动态模拟器](https://elysiatools.com/zh/tools/lotka-volterra-predator-prey): 求解并可视化经典 Lotka–Volterra 捕食者-猎口方程组 dN/dt = rN − aNP、dP/dt = bNP − mP：RK4 数值积分（6000 步，带 Hamilton 守恒量 V = bN − m·ln N + aP − r·ln P 漂移监控），输出猎物/捕食者相位振荡的时间序列曲线与闭合轨道相平面图（含共存平衡点 N*=m/b、P*=r/a 与线性化周期 T ≈ 2π/√(rm)）。自动检测周期数量与实测周期、种群振幅范围，并说明中性振荡的结构不稳定性——周期振幅完全由初始条件决定，真实系统会因密度依赖而阻尼或因富集悖论而自激。
- [2048](https://elysiatools.com/zh/tools/2048-game): 经典 2048。方向键或滑动合并相同数字，每次有效移动后随机生成新方块，分数累加合并产生的新值。可选 4×4/5×5/6×6 棋盘与目标值，到目标即胜但可继续。
- [填充词移除图](https://elysiatools.com/zh/tools/audio-filler-word-removal-map): 结合带时间戳的转录文本与音频,标记填充词(嗯、啊、那个…),并可选择静音或移除。
- [音频元数据压缩](https://elysiatools.com/zh/tools/audio-metadata-compress): 压缩或移除元数据/封面以减小体积
- [超低音单声道化器](https://elysiatools.com/zh/tools/audio-sub-bass-mono-maker): 把截止频率以下的全部内容折叠为单声道，同时保留其上方的立体声像——保护黑胶刻盘与单声道超低音系统的椭圆 EQ 手法。
- [批量邮箱提取器](https://elysiatools.com/zh/tools/bulk-email-extractor): 从输入文本、文章、网页源码或混合内容中提取所有邮箱地址。支持去重和导出为JSON格式。
- [CSV转换器](https://elysiatools.com/zh/tools/csv-transformer): 转换和处理CSV数据，支持列操作、计算和数据类型转换。 操作示例： • 重命名列: \[{"type": "rename", "column": "旧列名", "new_name": "新列名"}\] • 添加计算列: \[{"type": "add_column", "new_column": "总计", "formula": "价格 * 数量"}\] • 删除列: \[{"type": "remove_column", "remove_column": "要删除的列名"}\] • 转换数据类型: \[{"type": "convert_type", "convert_column": "年龄", "target_type": "number"}\] • 计算值: \[{"type": "calculate", "target_column": "总计", "expression": "价格 * 税率 + 运费"}\] • 过滤行: \[{"type": "filter_values", "filter_column": "状态", "operator": "equals", "value": "激活"}\]
- [BOM字符移除器](https://elysiatools.com/zh/tools/data-bom-remover): 从文本和文件内容中移除BOM（字节顺序标记）字符。非常适合清理有编码问题的文本文件、修复CSV导入和为处理准备数据。 功能特点： - 检测并移除UTF-8 BOM (EF BB BF) - 检测并移除UTF-16 BOM (FE FF 或 FF FE) - 检测并移除UTF-32 BOM (00 00 FE FF 或 FF FE 00 00) - 支持多种输入格式 - 可视化BOM字符显示 - 详细检测报告 - 支持批量文本处理 常见用途： - 修复CSV文件导入错误 - 清理文本文件编码问题 - 为JSON解析准备数据 - 修复XML解析问题 - 解决API数据编码冲突 - 标准化文本数据格式

## 示例

- [路径分析器样本](https://elysiatools.com/zh/samples/path-analyzer): 来自Windows、Linux和macOS的文件系统路径综合集合，用于路径分析和测试
- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [导入路径示例](https://elysiatools.com/zh/samples/import-path-examples): JavaScript和TypeScript导入示例集合，展示各种导入模式和模块系统
- [重复行示例](https://elysiatools.com/zh/samples/text-duplicate-line-samples): 用于测试重复行移除工具的各种重复行类型的示例文件
