← 笔记

ping 通不代表大包能过

约 1 分钟#网络#调试

ping 零丢包、延迟 11 毫秒,下载却只有 10 到 25 KB/s。把 MTU 降到 1400 之后,快了大约 300 倍。

ping 默认发的是小包,它只能证明小包能过。用禁止分片的大包逐级试:1472 和 1464 字节的负载全部失败,1372 才通,说明这条 WiFi 路径的 MTU 实际只有 1400 左右。网卡按 1500 发出去的大包在半路被静默丢弃,TCP 只能一遍遍重传。

ping -M do -s 1472 <host>   # 不通就往下试,1372 通即路径 MTU ≈ 1400
sudo ip link set dev wlp3s0 mtu 1400

把网卡 MTU 降到 1400 之后,一个 12.6 MB 的包 1.6 秒下完。这个设置重连 WiFi 就会失效,要长期生效得写进 NetworkManager 的连接配置。

作者Shihao Qi