我家里装了200兆宽带,但刷网页经常转圈,看视频每隔几分钟缓冲一次。刚开始以为是宽带问题,后来排查发现是路由器MTU值设置不对。MTU(最大传输单元)决定了数据包的大小,如果设置太大,数据包会被分片重传导致延迟;设置太小则会增加传输次数。我实测了三种不同MTU值下的网络表现,今天把方法分享出来。
首先登录路由器后台(一般是192.168.1.1或192.168.0.1),在“高级设置”或“WAN口设置”里找到MTU选项。大多数路由器默认是1500,但这个值不一定适合你的网络。我测试时发现,当MTU设为1500时,网页加载需要3到5秒,视频缓冲频繁。于是我开始手动优化。
具体测试方法:打开电脑的命令行(Win+R输入cmd),输入ping -f -l 1464 8.8.8.8,其中1464是临时数据包大小,需要从1450开始逐步增加。注意这里的1464加上28字节的包头正好是1492。如果返回“需要拆分数据包”则说明MTU过大。我依次测试了1450、1464、1472、1480、1492、1500这几个值。当设置为1472时,ping命令没有返回错误,但网页加载速度一般;当提高到1492时,包开始被拆分,所以最优值就是1492(等于1464+28)。
找到最优MTU后,在路由器设置中把MTU改为1492,保存并重启。重启后我连续三天测试,网页打开速度明显提升,基本在1秒内,视频拖拽也很流畅。注意不同运营商可能最优值不同:电信光纤多数是1480或1492,移动宽带有些需要1400。如果你不确定,建议从1400开始向上测,每次增加8个字节,直到出现“需要拆分数据包”为止,然后取上一个值。
另外还要注意,如果路由器启用了PPPoE拨号,MTU应比实际测到的值再减8(因为PPPoE头部额外占用8字节)。我朋友家用的移动宽带,测到最优MTU是1480,但拨号后实际设成1472才稳定。这一点很容易忽略。
我在调整前后用Speedtest测速对比:调整前下载速度只有180Mbps,调整后稳定在190Mbps以上,虽然提升不大,但延迟从35ms降到了18ms,实际体验改善非常明显。如果你的路由器还有“MTU自动检测”功能,建议关闭手动设置,因为自动检测往往不准或者选择保守值。
最后提醒:MTU设置只影响WAN口传输,如果内网有线或无线连接有问题,还要检查网线、无线干扰等其他因素。但如果你遇到的就是网页卡顿、视频缓冲,而且其他环节都正常,强烈建议从MTU入手。
问:MTU是越大越好还是越小越好?答:不是越大越好,也不是越小越好。MTU过大会导致数据包分片重传,增加延迟;过小虽然不分片,但包头比例增加,传输效率降低。我测试发现1480到1492之间比较适合家庭宽带。你可以用我上面说的ping命令找出你网络环境下不丢包的最大值,再减28就得到最佳MTU。
问:为什么我按你的方法测试时,ping命令总是提示“请求超时”?答:可能有几个原因:你ping的目标地址(比如8.8.8.8)被防火墙拦截了,可以换成你路由器的网关IP(如192.168.1.1),或者换成114.114.114.114;另外,如果命令行参数写错了,比如-l后面忘了跟数字,也会报错。我一开始也犯过这个错,后来仔细核对格式就好了。
问:修改MTU后网速反而变慢是怎么回事?答:可能你设置的值不是最优的。比如我之前把MTU改成了1500,结果网页反而更慢。建议重新按步骤从低到高测试,找到那个刚好不出现“需要拆分数据包”的最大值。还有,如果路由器开启了“巨型帧”而且终端不支持,也可能导致异常。我同事家就是开了巨型帧,MTU设到9000,结果无线设备全部掉线。所以先恢复默认1500,再逐步优化。

