【教學】使用PPPoE時,MTU之最佳設定值


頁 : [1] 2 3

if2
2004-06-21, 10:50 AM
轉換成ADSL也已經好幾天了,昨天上網路找了一些資料,針對使用PPPoE時MTU的設定怎樣才是最佳化,在下將心得整理成文章希望對大家有幫助。如有錯誤,歡迎各位指正。

先來說說什麼是MTU好了,MTU為Maximum Transmission Unit的縮寫。字面解釋為「最大傳輸單位」,也就是我們電腦所送出網路封包的最大長度。過大時,可能在途中需分解,分別到達目的地後再組合起來,效率反而變差。但過小時,一定長度的資料需要分更多次來傳送,效率也無法提高。

看看下面那張圖1應可以比較清楚,圖中可以看出MTU就是你從軟體送出的封包的最大長度值,最大是1500 bytes,這是針對Ethernet時的狀況。

http://www10.plala.or.jp/infra/gif/ethernet.gif
圖1. Ethernet封包示意圖

那使用PPPoE時又是怎樣的情形呢?因為PPPoE需要 6 bytes 的空間儲存資訊,而PPPoE本身就是PPP的衍生,所以PPP所耗用的空間他也一併接收,一般辨識用的資訊會耗用掉 2 bytes ,如果有其他資訊的話最多可以耗用 4 bytes,Mutilink PPP的資訊最多 4 bytes ,最後儲存壓縮和加密的資訊最多也是 4 bytes 所以加一加最多最多會耗用 20 bytes不過一般情形都是如圖2,也就是只有PPPoE和PPP identifies所以共耗用 8 bytes。

http://www10.plala.or.jp/infra/gif/ethernetp.gif
圖2. PPPoE封包示意圖

翻查資料的結果,目前大概分成兩派,一派人針對MTU的大小,覺得是大就是好,而PPPoE因為需要耗用 8 bytes 所以MTU的最大值就是1492,他們認為設為1492是最佳的值,不過目前沒有找到有哪一篇提出相關理論基礎的實證,所以有待商榷。而另一派則是認為1454是最佳值,為什麼呢?針對這點,我們先看看下面圖3,至於圖3最下面的值就是我們等會要討論的。

http://www10.plala.or.jp/infra/gif/adsl4.gif
圖3. PPPoE與ISP連接示意圖

圖3中可以看到,當我們的ADSL數據機要跟ISP那邊溝通時是透過ATM(Asynchronous Transfer Mode,非同步傳輸模式)協定來達成,關於ATM的相關問題在此不多作贅述,有興趣各位可以自行參閱相關書籍或資料。這裡我們把焦點放在ATM網路的Cell的大小,從圖4中我們可以知道,一個ATM Cell的大小是固定為 53 bytes 而真正存放資料的部分是 48 bytes。

http://ironbark.bendigo.latrobe.edu.au/courses/bcomp/c202/2003/L18/L20Fig04.gif
圖4. ATM Cell示意圖

接下來就是我們要來探討,為什麼MTU設為 1454 bytes時是最佳值,因為ATM Cell是固定的 53 bytes ,而資料是 48 bytes,所以當你的資料要進入ATM網路是會被分成若干個 48 bytes 的區塊,而不足 48 bytes 則是補上PADDING,但因為不足的那一個一定是最後一個,而在ATM架構中的AAL5(ATM Adaptation Layer 5)中,最後一個Cell的最後面必須加上 8 bytes 的SAR(segmentation and re-assembly)就是儲存如何把分割後的這些Cell還原的資訊。

這樣看來的話當你的MTU設定為1492時,你傳送到ATM的實際資料大小是:

TCP/IP Payload(就是你的MTU)+ PPP Headers + PPPoE Headers + Ethernet Headers = 1492 + 2 + 6 + 18 = 1518

而你的封包必須被分成 48 bytes一個等分,所以1518 / 48 = 31 餘 30,最後一個Cell就會如圖5上半部所示,30 + 8(SAR) + 10(Padding)= 48。也就是每個封包會多使用 10 bytes 的空間,10 / 1452 = 0.68% 的空間浪費,為何是1452而不是1492,因為你本身還需要耗掉 40 bytes 來放置TCP/IP的資訊,也就是圖1、圖2中你真正資料的所在MSS。

那MTU設為1454的時候呢?

TCP/IP Payload + PPP Headers + PPPoE Headers + Ethernet Headers = 1454 + 2 + 6 + 18 = 1480
1480 / 48 = 30 餘 40

所以最後一個Cell的如圖5下半部所示,40 + 8(SAR)= 48,不需要浪費任何空間給padding。各位如有注意到圖上的字樣,NTS的Enternet軟體所採用的MTU就是 1454 bytes。

http://www.mynetwatchman.com/kb/Images/pppoe.gif
圖5. MTU為 1492 bytes 和 1454 bytes時的分割結果

綜合以上所說,我認為在MTU設為 1454 bytes 時會有比較好的效能。

jaredlu
2004-06-21, 02:35 PM
請問HiNet ADSL非固定制8M/640K供用戶下載的TCP Window Size的設定檔8M_winXP.inf 裡面的值是多少K?因為我有用ROUTER,想要設成一樣.
設定檔內容如下:
[version]
signature="$Windows NT$"

[DefaultInstall]
AddReg=TweakTCP

[TweakTCP]
HKLM,System\CurrentControlSet\Services\Tcpip\Parameters,TcpWindowSize,0x00010001,00045000

hertw
2004-06-21, 03:06 PM
這個 MTU 我通常都是調到 1300,即使在網路擁塞時也可以有比較好的連線效率。

if2
2004-06-21, 04:03 PM
最初由 jaredlu 發表
請問HiNet ADSL非固定制8M/640K供用戶下載的TCP Window Size的設定檔8M_winXP.inf 裡面的值是多少K?因為我有用ROUTER,想要設成一樣.
設定檔內容如下:
[version]
signature="$Windows NT$"

[DefaultInstall]
AddReg=TweakTCP

[TweakTCP]
HKLM,System\CurrentControlSet\Services\Tcpip\Parameters,TcpWindowSize,0x00010001,00045000

裡面的是設定RWIN不是MTU,他設定的值是45000。

if2
2004-06-21, 04:08 PM
最初由 hertw 發表
這個 MTU 我通常都是調到 1300,即使在網路擁塞時也可以有比較好的連線效率。

壅塞時用較小的Packet可以在重新送封包時只需要送較少的DATA,不過1300 + 8 + 18 = 1326,分成每48 bytes一等分後餘數是30,和1492一樣會有 10 bytes 的padding可以考慮稍微改一下,避免padding。:D

hertw
2004-06-22, 06:53 PM
最初由 if2 發表
壅塞時用較小的Packet可以在重新送封包時只需要送較少的DATA,不過1300 + 8 + 18 = 1326,分成每48 bytes一等分後餘數是30,和1492一樣會有 10 bytes 的padding可以考慮稍微改一下,避免padding。:D

我是用固接的,看來設成 1314 會更佳,感謝你的解說!

jackiemi2
2004-06-22, 11:47 PM
感謝if2兄的文章
看完if2兄的文章,小弟有一些疑問,
1492有10 bytes 的padding,那改成1502就不會有padding了,
可以改成1502嗎??

MTU有上限嗎??
一般網路上的資料都說設1454,有特殊原因嗎??
Thanks:-)

if2
2004-06-23, 12:06 AM
最初由 jackiemi2 發表
感謝if2兄的文章
看完if2兄的文章,小弟有一些疑問,
1492有10 bytes 的padding,那改成1502就不會有padding了,
可以改成1502嗎??

MTU有上限嗎??
一般網路上的資料都說設1454,有特殊原因嗎??
Thanks:-)

有上限,請看圖一和二,上限為 1500 Bytes,但是PPPoE要耗用 8 Bytes,當用PPPoE時最大只能設成 1492 Bytes,所以 1502 Bytes 是不可行的。

至於設定為 1454 Bytes的原因,相信就是因為我文中所講的情況。

jackiemi2
2004-06-23, 08:37 PM
最初由 if2 發表
有上限,請看圖一和二,上限為 1500 Bytes,但是PPPoE要耗用 8 Bytes,當用PPPoE時最大只能設成 1492 Bytes,所以 1502 Bytes 是不可行的。

至於設定為 1454 Bytes的原因,相信就是因為我文中所講的情況。
拍謝,沒注意看到最上面的上限1500Bytes了:D

mlj
2004-06-24, 08:37 AM
昨晚(6/23)分別以MTU值設成1492及1454於
hinet的ftp站做600MB檔案之下載速度比對
其中設MTU=1492時,可達800KB/s左右
而MTU=1454時,僅達770KB/s左右
why???
(ps.Hinet ADSL 8M/640K,CT511C-Plus)