1500字节为何成为互联网MTU标准?

news/2024/10/18 7:45:51/

以太网无处不在,几乎所有硬件厂商都有涉及,所有以太网链路都有一个共同的参数:MTU。

$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWNlink/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 字节运行。但是这并不意味着链路层技术无法传输更大的数据包。

例如,802.11 网络(也就是大众所了解的 WiFi)MTU 为 2304 字节;如果你使用光纤,则 MTU 约为 4352 字节。以太网本身具有“巨型帧”的概念,其中 MTU 可以设置为 9000 字节(如果网卡,交换机和路由器支持)。

但是这些在互联网上都意义不大,因为 Internet 主干网目前主要由以太网链接组成,因此数据包实际最大长度现在都是非正式地设置为 1500 字节,以避免数据包在传输链路上被分片。

从表面上看,1500 是一个奇怪的数字,计算机领域碰到的很多数字都基于数学常数,例如使用 2 的幂。但 1500 显然不属于前者。

那么 1500 是从哪里来的,为什么我们仍在使用它呢?

魔术数字

以太网问世第一个重大突破是以 10BASE-2(细缆网)和 10BASE-5(粗缆网)的形式出现,最后的数字是说单个网段可以跨越几个百米。

由于当时有许多竞争协议,并且存在硬件限制,早期设计者在一封电子邮件 (1) 中指出数据包缓冲存储器的需求一定程度决定了 1500 这个数字。(感谢推友 @yeled 提供资料)

回顾一下,大一点 MTU 可能会更好,但是在早期会增加网卡成本,并进而影响以太网的广泛采用。

1980年发表的论文“以太网:本地计算机网络的分布式数据包交换 (2) ”,是对网络大数据包效率成本分析的早期记录。这对当时的以太网设计尤其重要,因为当时以太网在所有系统之间共享同一同轴电缆,或者使用以太网集线器,后者一次只能允许一个数据包在以太网网段的所有成员之间传输。

因此必须选择一个合适的数值,这样在共享网络段(有时很忙)上的传输等待时间不会太久,而且数据包头的开销也不会太大。(请参阅前面提到的论文第15-16页)

因此工程师最终选择了 1500 字节(约 12000 bit)作为最佳“安全”值。

这些年来,各种传输系统出现与消亡,但是它们的 MTU 值仍然使用以太网的 1500 字节。大于 MTU 可能会导致 IP 碎片,或者需要进行路径 MTU 检测。两者都有各自的问题。(为了保险)有时大型操作系统甚至会将默认 MTU 设到更低的水平。

效率的因素

现在我们知道互联网 MTU 设为 1500 主要是由于旧的时延问题和硬件限制,接下来我们分析这个数值对互联网的效率影响到底有多大。

如果我们查看来自骨干 Internet 流量交换点(AMS-IX)的数据,发现至少有 20% 的数据包通过该交换设备时是最大长度。

我们还可以分析局域网的总流量:

如果将这两个图结合,你将得到如下所示的内容。这是不同大小数据包有多少流量的估计:

如果我们仅看以太网包头所占用的流量,则会得到相同的图表,但比例不同:

这表明在最大的数据包上,仅是数据包头就消耗了大量带宽。由于峰值流量显示开销大约 246G Bit/s 的开销,因此我们可以假设,如果有机会全部采用了巨型帧,此开销仅约为 41G Bit/s

但是我认为,我们已经航行在更广阔的互联网上。尽管某些互联网运营商使用 9000 MTU 进行运营,但绝大多数运营商不这样做,历史一次又一次地表明,想要改变互联网的集体想法极其困难

如果你对 1500 字节的 MTU 以太坊历史有更多了解,请通过电子邮件联系作者 ethernet1500@benjojo.co.uk。难过的是,网络上与此相关的手册,邮件列表帖子等内容正在迅速消失。

文中链接:

  1. https://blog.benjojo.co.uk/asset/1hhfq2UR8

  2. https://blog.benjojo.co.uk/asset/4Up5QvCjA

原文链接:

https://blog.benjojo.co.uk/post/why-is-ethernet-mtu-1500

参考阅读:

  • 解决并发编程之痛的良药--结构化并发编程

  • Hulu如何扩展InfluxDB使其支持每秒百万TPS

  • 深入浅出Rust异步编程之Tokio

  • 聊聊用 UUID/GUID 作为主键那些坑

  • 为了戒网,我给每个网站自动添加3-25秒的访问延迟

  • 如何成为一名在家办公的高效工程师(一个国外团队的远程经验)

本文作者 Dmitry Nosachev,由高可用架构翻译。技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。

高可用架构

改变互联网的构建方式


长按二维码 关注「高可用架构」公众号


http://www.ppmy.cn/news/572981.html

相关文章

S7-1200和S7-1500数学函数

CALCULATE&#xff1a;计算 可以使用“计算”指令定义并执行表达式&#xff0c;根据所选数据类型计算数学运算或复杂逻辑运算。 可以从指令框的“???”下拉列表中选择该指令的数据类型。根据所选的数据类型&#xff0c;可以组合某些指令的函数以执行复杂计算。将在一个对话…

S7-1200和S7-1500比较操作

CMP &#xff1a;等于 可以使用“等于”指令判断第一个比较值&#xff08;<操作数 1>&#xff09;是否等于第二个比较值&#xff08;<操作数 2>&#xff09;。 如果满足比较条件&#xff0c;则指令返回逻辑运算结果 1。如果不满足比较条件&#xff0c;则指令返回…

1500: 单位转换

1500: 单位转换 1.描述 三师弟最近在复习考研&#xff0c;在复习计算机组成原理的时候&#xff0c;遇到了一个问题。就是在计算机存储里面的单位转换。我们都知道1MB1024KB&#xff0c;1KB1024B&#xff0c;1B8bit&#xff0c;他在做题的时候经常会遇到格式各样的&#xff0c…

力扣OJ(1401-1500)

目录 1401. 圆和矩形是否有重叠 1414. 和为 K 的最少斐波那契数字数目 1419. 数青蛙 1420. 生成数组 1424. 对角线遍历 II 1426. 数元素 1427. 字符串的左右移 1428. 至少有一个 1 的最左端列 1430. 判断给定的序列是否是二叉树从根到叶的路径 1441. 用栈操作构建数组…

S7-1200和S7-1500计数器操作

CTU&#xff1a;加计数 可以使用“加计数”指令&#xff0c;递增输出 CV 的值。如果输入 CU 的信号状态从“0”变为“1”&#xff08;信号上升沿&#xff09;&#xff0c;则执行该指令&#xff0c;同时输出 CV 的当前计数器值加 1。每检测到一个信号上升沿&#xff0c;计数器值…

1500 Graph编程功能介绍

1、块触角 一、输入&#xff1a;首先所有输入为边沿触发 按组划分&#xff1a; 初始化 OFF_SQ 关闭顺序执行 INI_SQ 初始化 应答错误 ACK_EF 应答错误 3.半自动 S_PREV 前一步 S_NEXT 后一步 SW_TAP 半自动保留跳转条件 SW_TOP 半自动跳过跳转条件 T_PUSH 推进步 自动 …

请简要说明西门子PLC1500的主要功能

西门子PLC1500是一款专为工业控制应用而设计的可编程控制器(PLC)。它的主要功能包括&#xff1a; 输入/输出(I/O)管理&#xff1a;PLC1500可以监测和控制各种设备的开关状态。 数据存储&#xff1a;它可以存储大量的数据&#xff0c;如生产过程中的生产数据和历史数据。 运算处…

【JTAG】1500协议详解

目录 一、简介 二、访问端口与基本结构 三、芯片系统应用 一、简介 随着集成电路的规模不断扩大,1149.1的板级测试无法满足要求越来越高的芯片测试需求。芯片规模变大后,测试需求不在是一次测试整片芯片,而是芯片分为好几个区域去测试,而1500协议正是对1149.1在该方面的…