星期四, 7月 10, 2008

簡介 MTU 及其調整

原文連結:
http://www.euca.net/forums/archive/index.php/t-778.html
by mike
2002-01-16, 09:45 AM
   有許多用 ADSL 的使用者,當有用 ICS 開啟 NAT 功能時,常常會抱怨為什麼 Client 端的電腦無法收郵件,或是無法瀏覽某些網頁(但是其它的網頁是正常的),其實只要調整 Client 端網路卡的 MTU 值,即可完全解決此一問題,而且可以藉由調整 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\ 為 GUID 碼,進去裡面根據前面所說的,找出您要設定的網路卡之 GUID 碼。
  然後在 HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ 之下(為剛剛找出之GUID碼),加入 DWORD,並命名為 MTU,然後輸入您剛才所得到的數值(要注意 16 進位還是 10 進位喔!)。

沒有留言: