乙太網路無所不在,數以萬計的製造商生產支援它的設備。 然而,幾乎所有這些設備都有一個共同點——
$ 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(最大傳輸單元)定義單一資料包的最大大小。 一般來說,當您與 LAN 上的裝置交換訊息時,MTU 約為 1500 字節,幾乎整個互聯網都以 1500 位元組運行,但這並不意味著這些通訊技術不能傳輸更大的封包大小。
例如,802.11(俗稱WiFi)的MTU為2304字節,如果您的網路使用FDDI,那麼您的MTU為4352位元組。 乙太網路本身有「巨型幀」的概念,其中MTU最多可以分配9000位元組的大小(網路卡、交換器和路由器都支援這種模式)。
然而,在網路上這並不是特別必要。 由於互聯網的主幹網路主要由乙太網路連接組成,因此事實上的非官方最大資料包大小設定為 1500B,以避免其他裝置上的資料包碎片。
數字 1500 本身很奇怪——例如,人們會期望電腦世界中的常數是基於 1500 的冪。 那麼XNUMXB從何而來,為什麼我們還在使用它呢?
幻數
乙太網路的第一個重大突破是以標準的形式出現的。
由於當時有許多相互競爭的協議,而且硬體也有其局限性,該格式的創建者承認資料包緩衝區的記憶體要求在幻數 1500 的出現中發揮了作用:
事後看來,顯然更大的最大值可能是更好的解決方案,但如果我們儘早增加 NIC 的成本,就會阻礙乙太網路的普及。
然而,這並不是故事的全部。 在
有必要選擇一個在分段傳輸訊息時(有時非常繁忙)不會導致過高延遲的數字,同時不會過度增加資料包的數量。
顯然,當時的工程師選擇了數字1500 B(約12000位)作為最「安全」的選擇。
此後,各種其他訊息系統不斷出現和消失,但其中乙太網路的MTU 值最低,為1500 位元組。超過網路中的最小MTU 值意味著要么導致封包碎片,要么參與PMTUD [查找最大封包大小]對於選定的路徑]。 這兩種選擇都有其自身的特殊問題。 即使有時大型作業系統製造商將 MTU 值降低得更低。
效率係數
我們現在知道,互聯網 MTU 限制為 1500B,這主要是由於遺留延遲指標和硬體限制。 這對網路的效率有多大影響?
如果我們查看來自大型 Internet 交換點 AMS-IX 的數據,我們會發現至少 20% 的傳輸資料包具有最大大小。 您也可以查看 LAN 總流量:
如果將兩個圖結合起來,您會得到如下所示的內容(每個資料包大小範圍的流量估計):
或者,如果我們查看所有這些標頭和其他服務資訊的流量,我們會得到不同比例的相同圖表:
相當大一部分頻寬花在最大尺寸類別的資料包的報頭上。 由於峰值流量時的最高開銷為 246 GB/s,因此可以假設,如果在這種選項仍然存在的情況下全部切換到“巨型幀”,則該開銷大約僅為 41 GB/s。
但我認為今天對於網路的最大部分來說,火車已經離開了。 儘管一些提供者支援 9000 的 MTU,但大多數提供者並不支援它,事實證明,嘗試在網路上全域更改某些內容是極其困難的。
來源: www.habr.com