测量网络的MTU值

或者直接用:
traceroute -F xx.xx.xx.xx 1473 
-F 表示不分片。

关于TCP/IP的MTU(转载)
 1:    什么是MTU? MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。 大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 

2:    如何检测网关的MTU? 

执行: 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。 


3: 如何修改本机的MTU? 修改方法如下: 
    3.1:    运行regedit
    3.2:    浏览到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
    3.3:    Interfaces下有多个子项,每个子项对应一个网卡。请按如下方法选择网卡: 
              a: 确定本机用来连接Internet的网卡或拨号连接的IP,如192.168.0.19;
              b: 用鼠标点击Interfaces上的子项,查看键值列表中的IPAddress项;
              c: 如果IPAddress的键值与a中的IP相同,即192.168.0.19,则该子项就是要找的网卡;

    3.4:    进入该子项,在右边的窗口里按鼠标右键,选择“新建”->“双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口: 如图3: 填入MTU的值。填写前请先把基数设为十进制。 设置好后,需要重启机器才能生效。



範例三:找出最大的 MTU 數值
[root@linux ~]# ping -c 2 -s 1000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 1000(1028) bytes of data.
1008 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.424 ms
# 如果有回應,那就是可以接受這個封包,如果無回應,那就表示這個 MTU 太大了。

[root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 8000(8028) bytes of data.
ping: local error: Message too long, mtu=1500
# 這個錯誤訊息是說,本地端的 MTU 才到 1500 而已,你要偵測 8000 的 MTU
# 根本就是無法達成的!那要如何是好?用前一小節介紹的 ip link 來進行 MTU 設定吧! 
不過,你需要知道的是,由於 IP 封包表頭 (不含 options) 就已經佔用了 20 bytes ,再加上 ICMP 的表頭有 8 bytes ,所以 當然你在使用 -s size 的時候,那個封包的大小就得要先扣除 (20+8=28) 的大小了。 因此如果要使用 MTU 為 1500 時,就得要下達『 ping -s 1472 -M do xx.yy.zz.ip 』才行啊 ! 另外,由於本地端的網路卡 MTU 也會影響到偵測,所以如果想要偵測整個傳輸媒體的 MTU 數值, 那麼每個可以調整的主機就得要先使用 ifcofig 或 ip 先將 MTU 調大,然後再去進行偵測, 否則就會出現像上面提供的案例一樣,可能會出現『Message too long, mtu=1500』之類的字樣喔! 至於如果偵測完畢後,想要調整最佳化的 MTU ,那麼請參考前一章節的內容來調整囉! ^_^

不過這個 MTU 不要隨便調整啊!除非真的有問題。通常調整 MTU 的時間是在這個時候: 因為全部的主機群都是在內部的區網,例如叢集架構 (cluster) 的環境下, 由於內部的網路節點都是我們可以控制的,因此可以透過修改 MTU 來增進網路效能;因為作業系統預設的 MTU 與您的網域不符,導致某些網站可以順利連線,某些網站則無法連線。 以 Windows 作業系統作為連線分享的主機時,在 Client 端挺容易發生這個問題; 如果是要連上 Internet 的主機,注意不要隨便調整 MTU ,因為我們無法知道 Internet 上面的每部機器能夠支援的 MTU 到多大,因為......不是我們能夠管的到的嘛! ^_^

另外,其實每種連線方式都有不同的 MTU 值,常見的各種介面的 MTU 值分別為︰

網路介面 MTU
Ethernet 1500
PPPoE 1492
Dial-up(Modem) 576

你可能感兴趣的:(其他杂项)