巨型帧把 MTU 从 1500 提到 9000,省的是「每帧必付的那 38 个字节」。 效率只涨 2 个百分点,真正的收益是「帧数少了 6 倍」——所以它在 10G 以上才有意义。
上一节讲表的容量,这一节讲帧的长度。两者都是「规格书上的一行,影响却很大」。 这一节要算:开销比例、帧数、以及「端到端全配」的代价。
一、每帧的固定开销
以太网头 14 + FCS 4 + 前导 8 + 帧间隙 12 = 38 字节。 这 38 字节每一帧都要付一次,与载荷大小无关。
算效率:1500 字节载荷占 1538 的 97.53%;9000 字节占 9038 的 99.58%。只涨 2 个百分点。
所以巨型帧不是「提速神器」。宣传里说「提升 20% 性能」的, 多半是把「帧数减少」换算成了 CPU 占用,不是带宽。
二、真正的收益在帧数
传 1 GB,MTU 1500 要 66.7 万帧,MTU 9000 只要 11.1 万帧。 少了 6 倍。
每一帧都有处理成本:查表、中断、DMA 描述符、内存分配。 这个成本在低速链路上相对传输时间很小,在 25G/100G 上就成了主要开销。
所以它的适用范围很清楚:存储网络(iSCSI、NFS)、数据中心东西向流量。普通办公网开它没意义。
三、端到端全配,缺一跳就出怪事
链路上任何一跳只支持 1500,大帧就会被丢掉,而且丢得不明显。
典型症状:小包全通、大文件传输卡住、ping 通的但拷文件不通——这是最难查的一类故障。
所以规矩是三条:全部设备(含虚拟交换机与网卡)配同一个值、先在一段链路上试、别全网一次改。
四、动手 Demo:三档 MTU 的效率与帧数
这段算 576、1500、9000 三档 MTU 的线上字节数、效率、以及传 1 GB 各要多少帧。
for mtu in (576, 1500, 9000):
onwire = mtu + 38
eff = mtu / float(onwire)
frames = 1000 * 1000 * 1000 // mtu
T([u"%d" % mtu, u"%d" % onwire, u"%.2f%%" % (eff * 100),
format(frames, u",")], [0, 0, 0, 0])
实跑输出:
--------------------------------------------------------------------
巨型帧省的是「每帧的固定开销」
--------------------------------------------------------------------
**巨型帧(jumbo frame)就是把 MTU 从 1500 提到 9000 左右,让一帧装更多数据。**省下来的不是带宽,
是「每帧必付的那几十个字节」。
**先算清楚一帧要付多少固定开销**:
以太网头 14 + FCS 4 + 前导 8 + 帧间隙 12 = 38 字节。
**这 38 字节每一帧都要付一次,跟载荷大小无关。**
MTU 线上字节 效率 传 1 GB 要几帧
---------------------------------------------------
576 614 93.81% 1,736,111
1500 1538 97.53% 666,666
9000 9038 99.58% 111,111
**从 1500 提到 9000,效率从 97.53% 涨到 99.58%,只涨 2 个百分点。**所以巨型帧不是「提速神器」。
**真正的收益在别处:帧数少了 6 倍。**
MTU 1500:666,666 帧。按每帧 1 微秒处理开销算,光处理就要 0.7 秒。
MTU 9000:111,111 帧。按每帧 1 微秒处理开销算,光处理就要 0.1 秒。
**所以巨型帧的收益取决于「每帧的处理成本」。**在千兆上,每帧处理开销相对传输时间很小,收益不明显;
在 25G/100G 上,一帧 1500 字节只占 0.12 微秒,
而查表与中断开销是它的好几倍——**这时候减少帧数才是真收益。**
**代价是「必须端到端全配」。**链路上任何一跳只支持 1500,大帧就会被丢掉,
而且丢得不明显——**表现为「大文件传输卡住、小包正常」**。
**实践中的三条规矩**:
1. 存储网络(iSCSI/NFS)值得开,普通办公网不值得。
2. **所有交换机、所有网卡、所有中间设备都要配成同一个值**,包括虚拟交换机。
3. 先在一段链路上试,别全网一次改。**改错的表现是「某些流量莫名其妙超时」。**
576 那一行是历史:早期以太网要求所有设备至少支持 576,所以它成了「最小公分母」。 效率只有 93.8%。
1500 到 9000 只涨 2 个百分点,这就是「巨型帧不提速」的证据。 但帧数从 66.7 万降到 11.1 万——这才是它的价值。
按每帧 1 微秒处理开销算:1500 要 0.67 秒、9000 只要 0.11 秒, 省下 0.56 秒的 CPU 时间。在 1 Gbps 上这 0.56 秒相当于传输 70 MB——所以明显;但在百兆上传输 1 GB 本身就要 80 秒,省 0.56 秒毫无意义。
30 秒实验
- 查你网卡的 MTU 设置是多少。
- 查交换机有没有「巨型帧」这个开关。
- 用 ping 大包测试(-l 或 -s 参数)看链路能过多大的帧。
常见误区
- 以为巨型帧能大幅提速。效率只涨 2 个百分点。
- 只配交换机不配网卡。大帧会被丢弃。
- 全网一次改。出问题很难定位。
自测三问(点开对答案)
1. 一帧的固定开销是多少字节? —— 38 字节:头 14+FCS 4+前导 8+帧间隙 12。 2. 巨型帧的真正收益是什么? —— 帧数减少约 6 倍,降低每帧的处理成本。 3. 缺一跳不支持巨帧会怎样? —— 大帧被丢弃,表现为小包通、大文件卡住。下一节:第三个功能是防环——生成树。
- ☐ (本节完,下一节 02.08.03 生成树功能)