交换机的「包转发率」由最小帧决定,不由最大帧决定。 1 Gbps 下 64 字节帧对应 1.488 Mpps,而有效吞吐只有 761.9 Mbps。
上一节讲了 RFC 2544 的四个指标,这一节把它们落到交换机上。 交换机的性能要同时看两个数:交换容量(Gbps)管大包,包转发率(pps)管小包。
一、线上开销是固定的 20 字节
以太网每一帧在线上占的字节数,比帧本身多 20 字节:前导 8 字节 + 帧间隙 12 字节。
这 20 字节是「固定成本」,所以帧越小,开销占比越高:
帧长 字节 线上 字节 开销占比
64 84 23.8% 128 148 13.5% 512 532 3.8% 1518 1538 1.3%
64 字节时,将近四分之一的带宽花在「帧头与间隔」上。 这就是「同样线速,小包送不出那么多有用数据」的原因。
二、pps 与有效吞吐的关系
1 Gbps 下的换算:pps = 线速 ÷ 8 ÷ 线上字节数。 64 字节对应 1.488 Mpps,此时有效吞吐只有 761.9 Mbps。
而 1518 字节时,pps 掉到 81 K,有效吞吐却涨到 987 Mbps。 同一个线速,两头差着两个数量级。
所以「这台交换机能不能线速」要问两个问题: 大包能不能跑满(看交换容量)、小包能不能跑满(看包转发率)。 两个指标都要看,缺一个就可能在某一侧掉链子。
典型反例:一台标称「48 Gbps 交换容量、30 Mpps」的 48 口千兆机。 48 口双向需要 96 Gbps,需要 142.9 Mpps——两个数字随便挑一个对照,都能看出它做不了全端口线速。
三、为什么厂商喜欢报 Gbps
Gbps 的数字大、好看、也好算;pps 的数字小,还得解释包长。 所以规格书首页通常只写「交换容量 XX Gbps」。
但真正卡住业务的往往是 pps:小包场景(语音、游戏、行情、DNS)全是小包, 大包场景(文件、备份、视频)才吃交换容量。
所以正确的做法是「按自己的流量构成反推」: 先估小包占比,再算需要的 pps,最后才看交换容量够不够。 顺序反了,就会买到「数字很大但小包跑不动」的机器。
四、动手 Demo:线速到底是多少 pps,为什么小包说了算
这段在 1 Gbps 上算六种帧长的 pps 与有效吞吐, 再用一台标称「48 Gbps/30 Mpps」的 48 口机做反例核对。
link = 1e9
for s in sizes:
wire = s + 20 # 前导 8 + 帧间隙 12
pps = link / 8 / wire
good = pps * s * 8 / 1e6
T([u"%d" % s, u"%.0f" % (pps / 1000) + u" K",
u"%.1f" % good], [0, 0, 0])
实跑输出:
--------------------------------------------------------------------
线速到底是多少 pps,为什么小包说了算
--------------------------------------------------------------------
**交换机的「包转发率」用 pps 算,而这个数字由最小帧决定,不由最大帧决定。**
**这是新手最容易反直觉的一处。**
**线上开销是固定的 20 字节**:前导 8 字节 + 帧间隙 12 字节。**所以帧越小,开销占比越高。**
帧长 字节 线上 字节 pps 有效吞吐 Mbps 开销占比
---------------------------------------------------------------------
64 84 1488 K 761.9 23.8%
128 148 845 K 864.9 13.5%
256 276 453 K 927.5 7.2%
512 532 235 K 962.4 3.8%
1024 1044 120 K 980.8 1.9%
1518 1538 81 K 987.0 1.3%
**64 字节时 1 Gbps 对应 1.49 Mpps,有效吞吐只有 761.9 Mbps。**
**也就是说:同样的线速,最小包只能送 76% 的「有用数据」。**
剩下 24% 全是帧头、前导和帧间隙。
**所以「这台交换机能不能线速」要看两件事**:
交换容量够不够(Gbps):决定大包能不能跑满。
包转发率够不够(pps):决定小包能不能跑满。
两个指标都要看,缺一个就可能在某一侧掉链子。
**典型反例**:一台标称「48 Gbps 交换容量、30 Mpps」的 48 口千兆交换机。
48 口 × 1 Gbps × 双向 = 96 Gbps,交换容量 48 Gbps 就已经不够。
双向全小包需要 142.9 Mpps,标称 30 Mpps 也不够。
**两个数字随便挑一个对照,都能看出「这台机器做不了全端口线速」。**
厂商写「48 Gbps/30 Mpps」时,通常指的是「非阻塞半双工口径」或者「典型流量」。
**买之前把这两个数字按自己的口数复算一遍,比看任何形容词都管用。**
注意 wire = s + 20 这一行:它把「线上开销」显式写出来,而不是含糊地「按帧长算」。
这 20 字节就是「标称带宽」与「有效带宽」之间那道缝的来源。
再看「反例」那段的三行: 48 口 × 1 G × 双向 = 96 G,而机器只有 48 G 交换容量——这说明它的 48 G 是「单向口径」。
所以看规格书的第二个要点是「口径」:同一个数字,单工与双工差一倍,含不含端口开销又差一截。 厂商不是故意含糊,是行业里这两套口径混用了很多年。
30 秒实验
- 查一下你单位核心交换机的「交换容量」与「包转发率」。
- 按 84 字节算一下它的最小包线速 pps 是多少。
- 想一想:为什么语音场景特别吃 pps?
常见误区
- 以为线速就是「所有包都能跑满」。小包只能送出约四分之三的有效数据。
- 以为交换容量够就万事大吉。pps 不够时小包一样跑不动。
- 把单工与双工的交换容量混着比。两个数字差一倍,不能直接对照。
自测三问(点开对答案)
1. 以太网的线上开销是多少字节?由什么构成? —— 20 字节:前导 8 字节加帧间隙 12 字节。 2. 1 Gbps 下 64 字节帧对应多少 pps?有效吞吐多少? —— 1.488 Mpps,有效吞吐 761.9 Mbps。 3. 为什么交换机的性能要同时看 Gbps 与 pps? —— Gbps 决定大包能不能跑满,pps 决定小包能不能跑满。下一节:路由器的性能怎么算——它比交换机多一道坎。
- ☐ (本节完,下一节 07.04.04 路由器性能的考量方法)