交换机的能力要看两个数:交换容量(Gbps)与包转发率(Mpps)。 只看前者会买到「带宽够但小包跑不动」的设备——因为交换机是按帧处理的。
前面讲完转发机制,这一节讲怎么把这些能力量化成规格书上的数字。 这一节要算:1.488 Mpps 这个常数怎么来的,以及怎么用它判断一台设备行不行。
一、为什么有 pps 这个指标
交换芯片每处理一帧都要做一次查表、排队、转发,这个动作的时间基本固定,与帧多长无关。
所以真正压芯片的是「每秒多少帧」,不是「每秒多少字节」。同样 1 Gbps, 全用 64 字节小包是每秒 148.8 万帧,全用 1518 字节大包只有每秒 8.1 万帧——差 18 倍。
这就是为什么小包才是压力测试:跑 iperf 用默认大包测出来「线速」,不代表小包也能线速。
二、1.488 Mpps 怎么来的
以太网上每一帧除了帧本身,还要加 8 字节前导和 12 字节帧间隙。所以最小帧在线上实际占 64 + 20 = 84 字节。
1 Gbps ÷(84 × 8 bit)= 1,488,095 帧/秒,约 1.488 Mpps。
这个数要背下来: 所有交换机的包转发率都是「端口数 × 1.488 Mpps」(千兆)或「× 14.88 Mpps」(万兆)。 算出来比这个低,就是有阻塞。
三、交换容量为什么要乘 2
全双工端口能同时收 1 Gbps 和发 1 Gbps,交换芯片内部要处理 2 Gbps。
所以 24 口千兆的「无阻塞」及格线是 48 Gbps。规格书写 48 Gbps 不是有余量,是刚好及格。
低于这个数就是共享背板:满负载时会排队,表现是「平时很快、一忙就卡」。 这种设备在轻载下测不出问题,是采购最容易踩的坑。
四、动手 Demo:从帧长算 pps,再算一台 24 口交换机的及格线
这段先把五个帧长的线速 pps 算出来(千兆与万兆各一列), 再算一台「24 口千兆 + 4 口万兆」接入交换机的两个及格线。
for sz in (64, 128, 512, 1024, 1518):
onwire = sz + 20
p1 = 1e9 / (onwire * 8)
p10 = 10e9 / (onwire * 8)
T([u"%d" % sz, u"%d" % onwire, format(int(p1), u","),
format(int(p10), u",")], [0, 0, 1, 1])
实跑输出:
--------------------------------------------------------------------
交换机的处理能力,为什么用 pps 而不是只有 Gbps
--------------------------------------------------------------------
**规格书上两个数一起出现:交换容量(Gbps)和包转发率(Mpps)。**很多人只看前者,
结果买了一台「带宽够但小包跑不动」的设备。
**因为交换机是按「帧」处理的。**每帧不管多长,都要过一次查表、排队、转发,这个动作的时间基本固定。
**所以小包才是真正的压力测试。**
**线速 pps 怎么算。**以太网上每帧还要加 8 字节前导和 12 字节帧间隙:
帧长 线上实际字节 千兆口 pps 万兆口 pps
-------------------------------------------------------
64 84 1,488,095 14,880,952
128 148 844,594 8,445,945
512 532 234,962 2,349,624
1024 1044 119,731 1,197,318
1518 1538 81,274 812,743
**最小的 64 字节帧,千兆口线速是 1,488,095 pps,也就是 1.488 Mpps。**
**这个 1.488 是背下来的常数**:所有交换机的包转发率,都是拿端口数乘它。
**算一台 24 口千兆 + 4 口万兆的接入交换机**:
项目 算法 结果
----------------------------------------------------
包转发率需求 24×1.488+4×14.88 95.2 Mpps
交换容量需求 (24×1+4×10)×2 128 Gbps
**乘 2 是因为全双工**:一个千兆口能同时收 1 Gbps 和发 1 Gbps,交换芯片内部要处理 2 Gbps。
所以标称「48 Gbps」的 24 口千兆交换机,其实只是「无阻塞」的及格线,不是余量。
**怎么用这两个数判断一台设备行不行**:
1. 包转发率 ≥ 端口数 × 1.488 Mpps(千兆)——**低于这个数就是「有阻塞」,满负载小包时会排队。**
2. 交换容量 ≥ 端口带宽 × 2——**低于这个数说明背板是瓶颈。**
3. 两个数都够,才叫「线速无阻塞」。**便宜的家用交换机常常只标第一个数,不标第二个。**
64 字节到 1518 字节,pps 从 148.8 万掉到 8.1 万,差 18 倍。 而 Gbps 一直是 1。这张表就是「为什么不能只看带宽」的最好证明。
24 口千兆 + 4 口万兆那台机器:包转发率需求 49.6 Mpps,交换容量需求 128 Gbps。 规格书低于这两个数,就是有阻塞。
注意「4 口万兆」贡献了 59.5 Mpps 里的 59.5 中的大头——万兆单口的 pps 是千兆的 10 倍。 所以上行口越多,对芯片要求越高。
30 秒实验
- 找一台交换机的规格书,抄下「交换容量」与「包转发率」。
- 按端口数自己算这两个数,跟规格书对一下。
- 用 iperf 打小包,看能不能跑到线速。
常见误区
- 只看 Gbps 不看 Mpps。小包场景会跑不动。
- 以为交换容量大就无阻塞。还要与端口带宽 ×2 对照。
- 假设 1 Gbps 就是 1.488 Mpps。那是 64 字节的理想值,大包时远低于它。
自测三问(点开对答案)
1. 1.488 Mpps 是怎么算出来的? —— 1 Gbps ÷(84 字节 × 8 bit),84 是 64 字节帧加 8 前导与 12 帧间隙。 2. 24 口千兆交换机的无阻塞及格线是多少? —— 包转发率 35.7 Mpps、交换容量 48 Gbps。 3. 为什么小包更压芯片? —— 每帧的处理时间固定,包越小同样带宽下帧数越多。下一节:能力有了数字,接下来看设备怎么分类——按功能分是第一刀。
- ☐ (本节完,下一节 02.06.01 按照交换机的功能分类)