一、路由器MTU设置指南 1、什么情况下需要改MTU?如果您的动态域名网站不能被正常访问,很难连接,连接上也非常慢,请试试把DirectSend设为“总是关闭”。如果关闭后可以正常访问,这种情况就需要修改MTU。如果您的网站连接正常,只是下载速度慢,就不必改MTU了。请跳过这一节。 2、什么是MTU?MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 3、如何检测网关的MTU? 在本机打开dos窗口,执行:ping -f -l 1472 192.168.0.1;其中192.168.0.1是网关IP地址,1472是数据包的长度。请注意,上面的参数是“-l”(小写的L),而不是“-1”。如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。如果出现:Packet needs to be fragmented but DF set.表示数据包需要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。从1400到1472之间多试几次,就能找到合适的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。如果检测到网关的MTU值是1500,不需要修改。如果网关有防火墙ping不通,可以试试直接把MTU设为1400。 4、如何修改本机的MTU? (1)运行regedit;(2)浏览到:HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces;(3)Interfaces下有多个子项,每个子项对应一个网卡。请按如下方法选择网卡: (a)确定本机用来连接Internet的网卡或拨号连接的IP,如192.168.0.19;(b)用鼠标点击Interfaces上的子项,查看键值列表中的IPAddress项;(c)如果IPAddress的键值与(a)中的IP相同,即192.168.0.19,则该子项就是要找的网卡。 (4)进入该子项,在右边的窗口里按鼠标右键,选择“新建”->“双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口:填入MTU的值。填写前请先把基数设为十进制。设置好后,需要重启机器才能生效。 二、MTU跟我的网络有神马关系? 关系还是挺密切的,在windows里,默认的MTU是1500,但是不同的网络接入方式,不同地区的网络运营商,甚至不同的路由器,它们的MTU值都可能是不同的。例如:ADSL接入时MTU为1492字节,假设A需要给B传输3000字节数据,如果整个传输过程中各个环节的MTU都是1500,那么2个数据包就可以传输完成。可是偏偏这时ADSL接入方式的MTU是1492字节,数据包就因为这个MTU差异额外拆分为3个(为了便于理解,暂时不将“数据包报头”纳入考虑范围)显然这额外增加了需要传输的数据包数量,而且拆包组包的过程也浪费了时间。如果从本地到网络采用一致的MTU就可以避免额外拆包。 三、我该怎么合理设置MTU呢? 更快的网速,这个理由够不够让你折腾一趟呢?显然是值得的,可是MTU值不是一个数字,天下通用的。所以在我们动手设置的时候,讲究一个合理!那么什么情况下MTU值是合理的呢?我们先来看看不合理的。1、本地MTU值大于网络MTU值时,本地传输的数据包过大导致网络会拆包后传输,不但产生额外的数据包,而且消耗了“拆包、组包”的时间。2、本地MTU值小于网络MTU值时,本地传输的数据包可以直接传输,但是未能完全利用网络给予的数据包传输尺寸的上限值,传输能力未完全发挥。 这样我们就知道,所谓合理的设置MTU值,就是让本地的MTU值与网络的MTU值一致,既能完整发挥传输性能,又不让数据包拆分。接下来最重要的就是要找出对于你的网络环境来说MTU多少才是合理的。方法也是灰常简单,请继续看下文: 1)按win+r组合键呼叫运行菜单,输入cmd后回车 2)在“命令提示符”窗口中输入“ping -l 1472 -f 百度”然后回车这段杂乱无章的东东是神马意思呢?接下来稍微解释下:ping:发起一个探测请求; -l(L的小写):限制探测包大小; 1472:包大小为1472字节; -f:禁止路由器拆分数据包 百度:设百度为探测目标 3)按下回车后会出现两种返回结果:(1)如果收到了回复,那么说明网络允许最大MTU值就是1500字节,与系统默认值相同,只需要将路由器的MTU值也设置为1500即可;(2)如出现需要拆分数据包但是设置 DF。或是Packer needs to be fragmented but DF set.的提示,那就说明数据包大小超过了网络限定的MTU大小。需减小探测包大小再次尝试。(为了截效果图,我将探测包改为1473了) 4)按“上箭头”恢复刚才输入的命令,然后以5为跨度减小包大小为1467字节,再次回车探测。 5)这时同样也有两种可能:(1)、如果有返回,说明数据包小于MTU限制,就将包大小+3再次探测,如果+3之后没有返回,那就以1为跨度降低数据包大小进行探测。(2)、如果还是没有返回,就继续以5为跨度减小包大小,直至有返回后进行5(1)中的操作。 6)直至你发现数据包-1后,有了返回,就说明你探测到了MTU允许的准确数据包大小。例如从1465降低到1464就有了返回,那么允许的数据包大小就是1464 7)不过上面得到的值还不能设置为操作系统或路由器的MTU,你找到的数据包大小需要加上28字节的“数据包报头”,才是完整的数据包尺寸。例如:探测到的数据包大小是1464,那么加上28字节,最终MTU=1492字节 8)最后只需将路由器和操作系统中MTU值设置为你得出的结果即可进入后台,高级选项中的MTU设置中填入测得的数值即可。
|