📡 第七章 网络硬件设备的选购要点
📄 一句话概括

交换机的「包转发率」由最小帧决定,不由最大帧决定。 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 秒实验

  1. 查一下你单位核心交换机的「交换容量」与「包转发率」。
  2. 按 84 字节算一下它的最小包线速 pps 是多少。
  3. 想一想:为什么语音场景特别吃 pps?

常见误区

  1. 以为线速就是「所有包都能跑满」。小包只能送出约四分之三的有效数据。
  2. 以为交换容量够就万事大吉。pps 不够时小包一样跑不动。
  3. 把单工与双工的交换容量混着比。两个数字差一倍,不能直接对照。
自测三问(点开对答案) 1. 以太网的线上开销是多少字节?由什么构成? —— 20 字节:前导 8 字节加帧间隙 12 字节。 2. 1 Gbps 下 64 字节帧对应多少 pps?有效吞吐多少? —— 1.488 Mpps,有效吞吐 761.9 Mbps。 3. 为什么交换机的性能要同时看 Gbps 与 pps? —— Gbps 决定大包能不能跑满,pps 决定小包能不能跑满。

下一节:路由器的性能怎么算——它比交换机多一道坎。

相关笔记