
我的家庭網路有兩個路由器,一個在另一個後面。外部路由器的 WAN 連接埠是 VDSL2 PPPoE 連接,具有即時 IP 位址,MTU 大小為 1492。預設情況下,它的預設 MTU 為 1500。我已將其更改為 1492 以匹配外部路由器。
現在我想知道進一步減少內部網路的 MTU 大小是否有意義。在這種雙 NAT 場景中,這會讓內部網路更加健壯嗎?
答案1
NAT 只是更改封包中的 IP 位址/端口,它不包含封包中的任何額外資訊(標頭等)。因此,它不會以任何方式減少 MTU,並且具有相同的 MTU 就可以了。
答案2
雖然 NAT 不會增加資料包的大小(或者更準確地說,會減少每個資料包的最大有效負載大小),但 PPoE 和其他隧道協定通常會增加資料包的大小。
然而,大多數現代作業系統都實現了路徑 MTU 發現,概述於RFC1191,它會自動將傳出資料包調整為發送主機和目標之間任何連結的最小 MTU。它透過DF bit
在大型出站資料包中設定(不分段)並查找 ICMP 錯誤來實現此目的Fragmentation Needed
。
在 MacOS 和其他類 Unix 作業系統中,該ping
實用程式具有多個開關,可設定DF bit
、 和設定有效負載大小,甚至掃描一系列大小,從而有效地確定來源主機和目標之間的 MTU。發送出去有 8 個位元組的開銷,IP 封包中有 20 個位元組的開銷,因此在 1500 位元組 MTU 介面上設定的ICMP Echo Request
ping
ping 封包的最大有效負載為 1472 。DF bit
您可以將 MTU 設定得較低,以某種非常小的方式優化這條特定路徑,以換取稍微不理想的資料包大小所有其他主機參與的資料包流。
因此,除非您遇到檔案傳輸停滯的問題,否則最好讓作業系統自動處理 MTU。
[nevin-mac-mini:~] nevin% ping -c 1 -D -s 1472 192.168.2.1 PING 192.168.2.1 (192.168.2.1):1472 資料位元組 來自 192.168.2.1 的 1480 位元組:icmp_seq=0 ttl=64 時間=0.667 ms --- 192.168.2.1 ping 統計 --- 發送 1 個資料包,接收 1 個資料包,0.0% 資料包遺失 往返最小/平均/最大/標準差 = 0.667/0.667/0.667/0.000 毫秒 [nevin-mac-mini:~] nevin% ping -c 1 -D -s 1473 192.168.2.1 PING 192.168.2.1 (192.168.2.1):1473 個資料位元組 ping:sendto:訊息太長 --- 192.168.2.1 ping 統計 --- 發送 1 個資料包,接收 0 個資料包,100.0% 資料包遺失