大包不通的典型特征
小包探测正常、登录也正常,但传输大文件、打开复杂页面或走 HTTPS 时卡住或超时,这类现象往往指向路径最大传输单元不一致。路径上某一跳的单元值小于发送端,导致大包被丢弃,而依赖的分片机制又被策略拦截时,会话就会表现为长时间无响应。
探测与调整的思路
先用禁止分片的探测方式逐步缩小包大小,找到能够通过的临界值,推算出路径可用的单元值。调整时要注意两端都要对齐,隧道与专线场景中间设备也要一并处理;只在应用侧调参数通常解决不了问题。
基本信息
| 常见链路 | 隧道、专线、跨运营商链路 |
|---|---|
| 探测方式 | 禁止分片的探测命令逐步缩小包长 |
| 查看命令 | 查看接口单元值与到目标的选路 |
| 调整位置 | 两端接口、中间设备或转发路径上的钳制策略 |
典型使用场景
- 文件传输卡在中途,小文件传输正常
- HTTPS 页面加载不全或长时间等待
- 建立隧道后部分服务不可用,其他服务正常
- 跨专线访问业务系统出现超时
- 云环境与本地互联后大包传输异常
探测
探测
ping -M do -s 1472 -c 2 <对端地址> # 加上协议头正好是常见以太网单元值
ping -M do -s 1400 -c 2 <对端地址> # 逐步减小找临界值
ip link show eth0 | grep mtu # 本机接口单元值
ip route get <对端地址> # 选路与出口接口
tracepath <对端地址> 2>/dev/null | tail -5 # 观察路径与探测结果调整
调整
ip link set dev eth0 mtu 1400 # 临时调整,重启后失效
# 持久化写入连接配置或网络配置文件
# 转发场景可在内核层做最大报文段钳制,示例:
# iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# 隧道与专线环境优先在两端与中间设备上对齐现象与判断
| 现象 | 可能原因 | 验证方式 |
|---|---|---|
| 小包正常大包超时 | 路径单元值偏小 | 逐步缩小包长找临界值 |
| 仅隧道内服务异常 | 隧道封装占用额外字节 | 两端同时调整并复测 |
| HTTPS 握手卡住 | 握手阶段报文较大被丢弃 | 对比不同协议的表现 |
| 抓包看到需要分片提示 | 依赖分片但被拦截 | 检查路径上的策略 |
| 部分链路正常部分异常 | 不同路径单元值不同 | 按目标分别探测 |
禁止分片的探测方式依赖 ICMP 正常,若链路上 ICMP 被限制会得到误判结果,此时应结合抓包与两端直测确认,避免按错误结论调整参数。