MTU MSS 問題整理

常遇到的問題,整理一下內容( 擷取至:https://networklessons.com)

TCP Header : 20 bytes
IP Header : 20 bytes
Ethernet Header : 14 bytes
ICMP Header : 8 bytes
GRE  Tunnel Header : 20 + 4 bytes

因為 ethernet MTU 1500  扣除TCP & IP Header  1500-20-20=1460 bytes
所以預設三方交握的過程中會使用MSS 1460 bytes 來做協商

若環境使用GRE Tunnel 建立連線時,就必須要注意TCP MSS  1500-20-20-24=1436 bytes
但因為預設三方交握的過程中會使用MSS 1460 bytes 來做協商,最後MTU會變成1460+20+20+24=1524 bytes

所以需要在Router上修改TCP MSS 參數

#ip tcp adjust-mss 1436

透過ICMP 測試發現一個問題

Cisco IOS ICMP  透過GRE Tunnel  最大MTU 1476 正常

但從Windows 7 ICMP 透過GRE Tunnel 最大MTU 1476 卻異常

原因在於 Cisco IOS ping  SIZE是包含 ICMP data+ICMP header+IP Header
但Windows 7 ping SIZE 是不包含 ICMP header(8 bytes)+IP Header(20 bytes)=28 bytes,
必須再扣除這28個bytes 1476-28=1448 bytes (最大MTU)

Facebook Comments