
乙太網路無所不在,成千上萬的製造商生產支援乙太網路的設備。然而,幾乎所有這些設備都有一個共同的數字—— :
$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff MTU(最大傳輸單元)定義單一資料包的最大大小。一般來說,當你和區域網路上的裝置交換訊息時,MTU 會在 1500 位元組左右,而整個網路幾乎都以 1500 B 運作。但這並不意味著這些通訊技術不能傳輸更大的資料包。
例如,802.11(通常稱為 WiFi)的 MTU 為 2304 位元組,如果您的網路使用 FDDI,那麼您的 MTU 為 4352 位元組。乙太網路本身俱有「巨型幀」的概念,其中 MTU 可以設定為最大 9000 位元組的大小(如果 NIC、交換器和路由器支援)。
但在網路上這並不是特別必要的。由於網際網路的主幹網路主要由乙太網路連線組成,事實上的非官方最大資料包大小設定為 1500B,以避免其他裝置上出現資料包碎片。
數字 1500 本身很奇怪——例如,人們可能認為電腦世界中的常數是基於 1500 的冪的。那麼 XNUMX B 是從哪裡來的,為什麼我們仍在使用它們?
神奇數字
乙太網路在世界上的第一個重大突破是以標準的形式出現的 (薄)和 (粗),其中的數字表示特定網段可以覆蓋多少百公尺。
由於當時存在許多競爭協議,且硬體有其自身的局限性,因此該格式的創建者承認,資料包緩衝區的記憶體要求在神奇數字 1500 的出現中發揮了作用:
事後看來,顯然更大的最大值可能是更好的解決方案,但如果我們早期增加了 NIC(網路控制器)的成本,乙太網路就不會變得如此普及。
然而,這並不是故事的全部。在 1980 年的《乙太網路:本地電腦網路中的分散式分組交換》提供了網路中使用大資料包的效率的最早分析之一。當時,這對於乙太網路尤其重要,因為它們可以用單一同軸電纜連接所有系統,或者由可以同時向網段上的所有節點發送資料包的集線器組成。
有必要選擇一個數字,該數字不會在分段傳輸訊息(有時非常繁忙)時造成太高的延遲,同時不會過度增加資料包的數量。
顯然,當時的工程師選擇 1500 B(約 12000 位元)這個數字作為最「安全」的選項。
從那時起,各種其他訊息傳遞系統相繼出現和消失,但其中最低的 MTU 是具有 1500 B 的乙太網路。超過網路上的最小 MTU 意味著導致封包碎片或 PMTUD [路徑最大尺寸偵測]。兩種選擇都有各自的特定問題。即使有時主要的作業系統供應商將 MTU 值降低得更低。
效率因素
我們現在知道,互聯網上的 MTU 限制為 1500B,這主要是由於遺留延遲和硬體限制。這對網路的效率有多大影響?

如果我們查看大型網路交換點 AMS-IX 的數據,我們會發現至少 20% 的傳輸資料包都是最大尺寸。您也可以查看整體 LAN 流量:

如果將兩個圖表結合起來,您會得到類似以下內容(每個資料包大小範圍的流量估計):

或者,如果我們查看所有這些標頭和其他服務資訊的流量,我們會得到具有不同比例的相同圖表:

相當大一部分頻寬都花在了最大尺寸類別的資料包頭上。由於峰值流量時的最高開銷為 246 Gbps,因此可以合理地假設,如果我們在選項仍然存在時全部切換到“巨型幀”,則該開銷將僅為 41 Gbps 左右。
但我認為,對於當今網路的大部分來說,這列火車已經開走了。儘管一些 ISP 可以使用 9000 的 MTU,但大多數 ISP 並不支援它,事實證明,在互聯網上進行全局更改的嘗試一次又一次變得極其困難。
來源: www.habr.com
