星期四, 7月 10, 2008

MTU 最佳化

原文連結:
http://blog.xuite.net/beavisliu/blog/15106473

一、首先找出client端最大 MTU 值

我們分兩大系統
1.windows
使用ms-dos 命令提示視窗
ping -f -l 1500 192.168.0.1

1500是預設的值
192.168.0.1 指向NAT主機 (這裡不限定)

如果回應
packet needs to be fragmented but DF set.
packet needs to be fragmented but DF set.
packet needs to be fragmented but DF set.
packet needs to be fragmented but DF set.
則為超過
MTU需要設更小

ping -f -l 1464 192.168.0.1
回應
Reply from 192.168.0.1 : bytes=1464 time=10ms TTL=128
則ok

往上再慢慢遞增,找到最大值為止
這樣才可以達傲最佳的網路速度

另外我們還需計算 MTU 實際的數值
因為標頭佔用了28bytes
包含了 20 bytes 的 IP header 及 8 bytes 的 ICMP header,所以上面得到的數值加上 28,才是我們要的 Maximum MTU

所以這個例子最終的MTU為 1464+28=1492

2.linux
linux 的 client 端作法也一樣
不過指令改一下

ping -c -3 -M do -s 1472 192.168.0.1
其他找最大MTU 方法一樣


二、接著我們來動手修改MTU值
windows2K / XP:
開始 -> 執行 regedit

HKEY_Local_Machine
SYSTEM
CurrentControlSet

Services
Tcpip
Parameters
Adapters

底下有很多介面,一個個去看,會有一個與網卡ip相同
在該介面上選編輯 - 新增 - DWORD值
建立一個名為 MTU 的機碼,
按右鍵修改 選擇10進位
填入我們剛剛找到的最大MTU 值 ( 是已經加 28bytes 那個)
完成!

linux client端上比較簡單
ifconfig eth0 mtu xxxx
這樣就可以了

沒有留言: