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

RFC 2544 定义了四个基准测试:吞吐、时延、帧丢失率、背靠背。 四个指标必须一起看,缺一个就会被「吞吐 100% 线速」这种说法骗过去。

📝 本节和前面几节的关系

上一节讲「怎么量」,这一节讲「厂商是怎么量的」——因为规格书上的数字都是按这个标准出来的。 知道测试方法,才知道那个数字在什么条件下成立,也才知道它什么时候不成立。

一、四个指标各管一段

指标 回答什么问题 单位


吞吐量 不丢包时最多能跑多快 Mbps 或 Mpps 时延 一个包从进到出要多久 微秒 帧丢失率 超载时丢多少 百分比 背靠背 能扛住多长的突发 帧数

四个指标测的是四种「能力」: 能跑多快、跑起来多久延迟、跑不动时丢多少、突然来一大波接不接得住。

而真实网络里这四种情况都会遇到: 大文件传输考吞吐,视频会议考时延,拥塞考丢包,微突发考背靠背。

二、四个数字会互相矛盾

这才是要点:一台设备可以「吞吐 100% 线速」,同时「满载时延从 3 微秒涨到 900 微秒」。 也可以「背靠背只扛 40 帧」,说明缓存极小,一遇到微突发就丢。

所以规格书只写「吞吐 100%」的时候,你其实什么都不知道。 而只写一个数字的规格书,往往正是最需要警惕的那一种。

看规格书的顺序应该是:先看测试条件(包长、流数、功能是否开启),再看数字本身。 条件不同的两个数字,放在一起比是没有意义的。

三、物理下限:0.672 微秒

时延有一个绕不过去的下限,它由「线速」决定: 64 字节的最小帧,加上前导 8 字节与帧间隙 12 字节,线上占 84 字节。 1 Gbps 下传输这 84 字节需要 0.672 微秒。

所以任何设备的「时延」都不可能小于 0.672 微秒。 一台标称「3 微秒」的设备,已经在下限的 5 倍以内——剩下的全是查表、排队与转发决策。

这个数字的用处是「判断规格书有没有吹牛」: 看到「0.1 微秒时延」就该知道,它测的是「芯片内部」不是「端口到端口」。

四、背靠背与缓存

背靠背测的是「缓存能存多少帧」: 缓存 128 KB 全存最小帧,最多接 1560 帧;缓存 16 MB 就能接 20 万帧。

所以「背靠背帧数」几乎等于「缓存大小除以 84」。 而这个数字既是优点也是缺点:缓存越大越能扛突发,但满载时时延也越大(队排得更长)。

这就是「大缓存」的取舍:它在「微突发」场景下救命,在「持续拥塞」场景下害人。 所以同一个参数,在数据中心交换机上要小,在存储交换机上要大。

一句话总结:RFC 2544 的四个数字不是「性能排序」,是「性能的形状」。 形状对不对,取决于你拿它干什么。

五、动手 Demo:RFC 2544 的四个指标,缺一个就看不全

这段先列四个指标的定义,再算 64 字节最小帧的传输时间与不同缓存下的背靠背帧数, 看「时延下限」与「缓存取舍」是怎么来的。

frame, overhead, link = 64, 20, 1e9
wire = (frame + overhead) * 8
t_tx = wire / link * 1e6
P(u"  1 Gbps 下传输这 %d 字节需要 %.3f 微秒。" % (frame, t_tx))
for bufsize in (128 * 1024, 1024 * 1024, 16 * 1024 * 1024):
    P(u"  缓存 %d KB,最多能接 %d 帧。"
      % (bufsize // 1024, bufsize // (frame + overhead)))

实跑输出:

--------------------------------------------------------------------
RFC 2544 的四个指标,缺一个就看不全
--------------------------------------------------------------------
**RFC 2544 定义了四个基准测试,厂商规格书上的数字大多出自它。**
**四个指标分开看都有意义,合起来才能拼出设备的真实形状。**

  指标         回答什么问题             单位
  ------------------------------------------------------
  吞吐量       不丢包时最多能跑多快     Mbps 或 Mpps
  时延         一个包从进到出要多久     微秒
  帧丢失率     超载时丢多少             百分比
  背靠背       能扛住多长的突发         帧数

**四个数字会互相矛盾,这才是重点。**
  一台设备可以「吞吐 100% 线速」,但「满载时延从 3 微秒涨到 900 微秒」。
  也可以「背靠背只扛 40 帧」,说明缓存极小,一遇到微突发就丢。
  所以规格书只写「吞吐 100%」的时候,你其实什么都不知道。

**用一张 64 字节的最小帧算时延,看看它为什么难测**:

  最小帧 64 字节,加上前导 8 字节与帧间隙 12 字节,线上占 84 字节。
  1 Gbps 下传输这 64 字节需要 0.672 微秒。
  **所以「时延」不可能小于 0.672 微秒**——这是物理下限,再快的设备也越不过去。
  一台标称「3 微秒」的设备,已经接近这个下限的 5 倍以内,剩下的全是排队与查表。

**背靠背也是同一类问题**:
  缓存 128 KB,全存最小帧,最多能接 1560 帧。
  缓存 1024 KB,全存最小帧,最多能接 12483 帧。
  缓存 16384 KB,全存最小帧,最多能接 199728 帧。

**缓存越大,背靠背数字越好看,但满载时延也越大。**
**「大缓存」不是优点也不是缺点,是取舍。**

0.672 微秒这个数要记住:它是一把尺子,用来判断规格书里的「时延」是不是真的「端口到端口」。

缓存那一行更值得琢磨:128 KB 只能接 1560 帧,16 MB 能接 20 万帧——差了 128 倍。 而「背靠背 20 万帧」这个漂亮的数字,代价是「满载时排队排了 20 万帧的时间」。

所以看「背靠背」这个指标时,一定要连着看「满载时延」: 两个数字一起看,才知道这个缓存是「够用」还是「过剩」。

30 秒实验

  1. 找一台交换机的规格书,看看它标了哪几个指标。
  2. 按 84 字节算一下你单位设备的「时延下限」是多少微秒。
  3. 想一想:为什么存储交换机要比接入交换机更大的缓存?

常见误区

  1. 只看吞吐一个数字。时延、丢包、背靠背都不写,等于什么都没说。
  2. 以为时延可以无限小。64 字节帧在 1 Gbps 上就要 0.672 微秒。
  3. 以为缓存越大越好。大缓存扛突发,但也让满载时延变大。
自测三问(点开对答案) 1. RFC 2544 的四个指标是什么? —— 吞吐量、时延、帧丢失率、背靠背。 2. 1 Gbps 下 64 字节帧的传输时间是多少?为什么是下限? —— 0.672 微秒;线上占 84 字节,任何设备都越不过这个物理时间。 3. 为什么「背靠背帧数」要连着「满载时延」一起看? —— 背靠背帧数等于缓存除以 84,缓存越大排队越长,满载时延就越大。

下一节:交换机该怎么看性能——为什么小包说了算。

相关笔记