2009年6月5日 星期五

MTU

MTU 為 Maximum Transmission Unit 的縮寫, 一般預設值為 1,500。但是在不同的網路環境中,應該是有不同的數值。以下列出各種 Maximum MTU

EtherNet Used:1,500(一般的預設值)
EtherNet Acutally:1,496(因為1,500比較方便記憶)
PPPoE(撥接 ADSL 用的):1,492
Dial-up(Modem 用的):576

以上所列出的為最大值,但實際上要採用的應該是個別的網路情況來設定,而測試 MTU 值的做法如下(請進入 DOS 模式):

ping -f -l [packetsize] [www.yourisp.com]

[packetsize]:看您是用何種的網路環境,從最大值開始試吧!可用的範圍是 1 ~ 1,500。
[www.yourisp.com]:不限定啦!可以用你的 gateway IP,或是 gateway 之外的任何有效網址或IP。

如果出現了 "Packet needs to be fragmented, but DF set",那就請你把 [packetsize] 的數值減小吧!直到不會出現此一訊息為止。

在此另外說其它的東西。因為此封包(packet)包含了 20 bytes 的 IP header 及 8 bytes 的 ICMP header,所以上面得到的數值加上 28,才是我們要的 Maximum MTU。

MSS 為 Maximum Segment Size 的縮寫,也就是實際傳輸的資料量。他和 MTU 的關係是 MTU = MSS + TCP&IP headers。而 TCP header 及 IP header 的大小均為 20 bytes,所以若是可以最大化的 PPPoE 環境,MTU 值為 1,492, 而我們用 ping 所得出來的數值是 1,492 - 28 = 1,464,而 MSS 為 1,492 - 40 = 1,452。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以上是 MTU 的介紹, 現在我們來說明要如何調整. 這必須要用改登錄檔(Registry),而用的工具是 regedit.exe or regedt32.exe (or other third-party programs)。

Win98
先找出你要調整的網路卡是在哪裡,HKEY_Local_Machine\System \CurrentControlSet\Services\Class\NetTrans\000n\,n 為數字 (1 ~ 不定,視您的網路設備數目。),可以從其中IPAddress or IPMask or DefaultGateway......來判斷。

然後在那個機碼內加入 DWOED,並命名為 MaxMTU,然後輸入您剛才所得到的數值(要注意16進位還是10進位喔!)。

Win2K
先找出你要調整的網路卡是在哪裡,HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services \Tcpip\Parameters\Adapters\<interface>,<interface> 為 GUID 碼,進去裡面根據前面所說的,找出您要設定的網路卡之 GUID 碼。

然後在 HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<interface> 之下(<interface>為剛剛找出之GUID碼),加入 DWORD,並命名為 MTU,然後輸入您剛才所得到的數值(要注意 16 進位還是 10 進位喔!)。

參考資料:
簡介 MTU 及其調整
MTU 的最佳化

沒有留言: