網路上訊息傳輸的最大單位是如何變成1500位元組的

網路上訊息傳輸的最大單位是如何變成1500位元組的

乙太網路無所不在,數以萬計的製造商生產支援它的設備。 然而,幾乎所有這些設備都有一個共同點—— MTU:

$ 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從何而來,為什麼我們還在使用它呢?

幻數

乙太網路的第一個重大突破是以標準的形式出現的。 10BASE-2 (薄)和 10BASE-5 (粗),其中的數字表示特定網段可以覆蓋多少數百公尺。

由於當時有許多相互競爭的協議,而且硬體也有其局限性,該格式的創建者承認資料包緩衝區的記憶體要求在幻數 1500 的出現中發揮了作用:

事後看來,顯然更大的最大值可能是更好的解決方案,但如果我們儘早增加 NIC 的成本,就會阻礙乙太網路的普及。

然而,這並不是故事的全部。 在 工作 “乙太網路:本地電腦網路中的分散式資料包交換”,1980 年,提供了在網路中使用大資料包的有效性的最早分析之一。 當時,這對乙太網路尤其重要,因為它們可以使用一條同軸電纜連接所有系統,或者由能夠一次向同一網段上的所有節點發送資料包的集線器組成。

有必要選擇一個在分段傳輸訊息時(有時非常繁忙)不會導致過高延遲的數字,同時不會過度增加資料包的數量。

顯然,當時的工程師選擇了數字1500 B(約12000位)作為最「安全」的選擇。

此後,各種其他訊息系統不斷出現和消失,但其中乙太網路的MTU 值最低,為1500 位元組。超過網路中的最小MTU 值意味著要么導致封包碎片,要么參與PMTUD [查找最大封包大小]對於選定的路徑]。 這兩種選擇都有其自身的特殊問題。 即使有時大型作業系統製造商將 MTU 值降低得更低。

效率係數

我們現在知道,互聯網 MTU 限制為 1500B,這主要是由於遺留延遲指標和硬體限制。 這對網路的效率有多大影響?

網路上訊息傳輸的最大單位是如何變成1500位元組的

如果我們查看來自大型 Internet 交換點 AMS-IX 的數據,我們會發現至少 20% 的傳輸資料包具有最大大小。 您也可以查看 LAN 總流量:

網路上訊息傳輸的最大單位是如何變成1500位元組的

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

網路上訊息傳輸的最大單位是如何變成1500位元組的

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

網路上訊息傳輸的最大單位是如何變成1500位元組的

相當大一部分頻寬花在最大尺寸類別的資料包的報頭上。 由於峰值流量時的最高開銷為 246 GB/s,因此可以假設,如果在這種選項仍然存在的情況下全部切換到“巨型幀”,則該開銷大約僅為 41 GB/s。

但我認為今天對於網路的最大部分來說,火車已經離開了。 儘管一些提供者支援 9000 的 MTU,但大多數提供者並不支援它,事實證明,嘗試在網路上全域更改某些內容是極其困難的。

來源: www.habr.com

添加評論