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 秒实验
- 找一台交换机的规格书,看看它标了哪几个指标。
- 按 84 字节算一下你单位设备的「时延下限」是多少微秒。
- 想一想:为什么存储交换机要比接入交换机更大的缓存?
常见误区
- 只看吞吐一个数字。时延、丢包、背靠背都不写,等于什么都没说。
- 以为时延可以无限小。64 字节帧在 1 Gbps 上就要 0.672 微秒。
- 以为缓存越大越好。大缓存扛突发,但也让满载时延变大。
自测三问(点开对答案)
1. RFC 2544 的四个指标是什么? —— 吞吐量、时延、帧丢失率、背靠背。 2. 1 Gbps 下 64 字节帧的传输时间是多少?为什么是下限? —— 0.672 微秒;线上占 84 字节,任何设备都越不过这个物理时间。 3. 为什么「背靠背帧数」要连着「满载时延」一起看? —— 背靠背帧数等于缓存除以 84,缓存越大排队越长,满载时延就越大。下一节:交换机该怎么看性能——为什么小包说了算。
- ☐ (本节完,下一节 07.04.03 交换机性能的考量方法)