【教學】使用PPPoE時,MTU之最佳設定值 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ ADSL_CABLE_FTTH 寬 頻 上 網 討 論 > -- ADSL 寬 頻 專 區 > ---- ADSL 軟 硬 體 技 術


PCZONE 討論區



通知

---- ADSL 軟 硬 體 技 術 討論 ADSL 相關軟體 / 硬體應用技術與心得分享

if2
我要光纖到府
【教學】使用PPPoE時,MTU之最佳設定值
轉換成ADSL也已經好幾天了,昨天上網路找了一些資料,針對使用PPPoE時MTU的設定怎樣才是最佳化,在下將心得整理成文章希望對大家有幫助。如有錯誤,歡迎各位指正。

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

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


圖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。


圖2. PPPoE封包示意圖

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


圖3. PPPoE與ISP連接示意圖

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


圖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。


圖5. MTU為 1492 bytes 和 1454 bytes時的分割結果

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

回覆
會員

請問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
回覆
會員

這個 MTU 我通常都是調到 1300,即使在網路擁塞時也可以有比較好的連線效率。
回覆
if2
我要光纖到府

引用:
最初由 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
我要光纖到府

引用:
最初由 hertw 發表
這個 MTU 我通常都是調到 1300,即使在網路擁塞時也可以有比較好的連線效率。
壅塞時用較小的Packet可以在重新送封包時只需要送較少的DATA,不過1300 + 8 + 18 = 1326,分成每48 bytes一等分後餘數是30,和1492一樣會有 10 bytes 的padding可以考慮稍微改一下,避免padding。
回覆
會員

引用:
最初由 if2 發表
壅塞時用較小的Packet可以在重新送封包時只需要送較少的DATA,不過1300 + 8 + 18 = 1326,分成每48 bytes一等分後餘數是30,和1492一樣會有 10 bytes 的padding可以考慮稍微改一下,避免padding。
我是用固接的,看來設成 1314 會更佳,感謝你的解說!
回覆
小傑

感謝if2兄的文章
看完if2兄的文章,小弟有一些疑問,
1492有10 bytes 的padding,那改成1502就不會有padding了,
可以改成1502嗎??

MTU有上限嗎??
一般網路上的資料都說設1454,有特殊原因嗎??
Thanks:-)
回覆
if2
我要光纖到府

引用:
最初由 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的原因,相信就是因為我文中所講的情況。

回覆
小傑

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

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

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

回覆







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。