3. 吞吐测试基础概念:带宽、延迟、丢包率、吞吐量定义

做 QUIC 吞吐测试,你得先搞清楚几个最基础的概念。说白了,就是带宽、延迟、丢包率和吞吐量这四个家伙。我见过不少新手,上来就拿着工具跑测试,结果数据出来了,自己都看不懂——因为根本不知道这些指标到底在说什么。

嗯,咱们一个一个来拆解。

3.1 带宽:管道的粗细

带宽,你可以想象成一根水管的内径。内径越粗,单位时间内能流过的水就越多。在网络里,带宽就是链路能承载的最大数据传输速率,单位通常是 bps(比特每秒)。

举个例子,你家里办了 100M 的宽带,意思就是这条链路理论上每秒能传输 100 兆比特的数据。但注意,这只是理论上限。实际能跑多少,还得看其他因素。

关键点:带宽是容量,不是速度。它决定了你能同时传输多少数据,而不是数据跑得有多快。

我在一次跨国链路测试中遇到过这种情况:两边的服务器带宽都是 10Gbps,但实际吞吐死活上不去。后来发现,问题出在中间链路的带宽瓶颈上。你想想看,端到端的带宽,其实取决于整条路径上最窄的那段管道。

3.2 延迟:数据在路上的时间

延迟,就是数据包从 A 点跑到 B 点所花的时间。单位通常是毫秒(ms)。

延迟由几个部分组成:

  • 传播延迟:信号在物理介质上跑的时间。光速再快,从北京到纽约也得几十毫秒。
  • 处理延迟:路由器、交换机处理数据包的时间。
  • 排队延迟:数据包在设备队列里等着被转发的时间。这个最不稳定,一堵车就飙升。

我个人习惯把延迟看作网络的「反应速度」。你玩游戏卡不卡,主要就看延迟。QUIC 协议在降低延迟上做了很多优化,比如 0-RTT 握手,这个我们后面会细讲。

避坑指南:我曾经犯过一个错误,只测了平均延迟,结果忽略了偶尔出现的延迟抖动。在实时音视频场景里,抖动比高延迟更致命。所以,测试时一定要关注延迟的分布,别只看平均值。

3.3 丢包率:数据包丢失的比例

丢包率,顾名思义,就是发送的数据包中,有多少比例没能到达目的地。单位是百分比。

为什么会丢包?最常见的原因是网络拥塞。路由器缓存满了,新来的包就只能扔掉。无线网络环境(比如 Wi-Fi、4G/5G)下,信号干扰也会导致丢包。

丢包对吞吐的影响非常大。TCP 协议一检测到丢包,就认为是网络拥塞了,会立刻降低发送速度。QUIC 在这方面做了改进,但丢包依然是性能杀手。

丢包率范围 网络质量 对吞吐的影响
0% - 0.1% 优秀 几乎无影响
0.1% - 1% 良好 轻微影响,TCP 可能开始减速
1% - 5% 一般 吞吐明显下降,需要协议优化
> 5% 差 吞吐极低,连接可能不稳定

你看这个表格,丢包率超过 1% 就已经需要警惕了。我测试 QUIC 时,经常会在模拟丢包的环境下跑,看看它到底能扛住多少丢包。

3.4 吞吐量:实际能跑多快

吞吐量,才是我们真正关心的指标。它表示在单位时间内,成功传输的数据量。单位也是 bps,但通常我们会用 Mbps 或 Gbps。

吞吐量和带宽的区别在哪?带宽是理论最大值,吞吐量是实际测量值。就好比一条限速 120km/h 的高速公路(带宽),但因为车多、有事故,你实际只能开到 60km/h(吞吐量)。

影响吞吐量的因素太多了:

  • 带宽和延迟(这两个是硬约束)
  • 丢包率(丢包越多,吞吐越低)
  • 协议本身的开销(TCP 的握手、QUIC 的加密)
  • 接收端的处理能力(CPU 能不能跟上)
  • 缓冲区大小(窗口大小)

注意:不要混淆「吞吐量」和「带宽利用率」。吞吐量是绝对值,带宽利用率是吞吐量除以带宽的百分比。有时候吞吐量很高,但带宽利用率很低,说明带宽被浪费了。QUIC 的多路复用就是为了提高带宽利用率。

3.5 四个概念的关系

这四个概念不是孤立的。它们之间的关系,可以用一个简单的公式来理解:

吞吐量 ≈ 带宽 × (1 - 丢包率) × 协议效率因子

但这个公式太粗糙了。实际上,延迟和丢包会通过影响拥塞控制算法,间接决定吞吐量。比如经典的 BBR 算法,就是通过测量带宽和延迟来估算最优发送速率的。

下面这张图,能帮你理清它们之间的关系:

吞吐测试核心概念关系图 带宽 管道的粗细 延迟 路上的时间 丢包率 丢失的比例 吞吐量 实际能跑多快 上限约束 影响拥塞控制 重传消耗 吞吐量 = f(带宽, 延迟, 丢包率, 协议效率, 接收端能力) 四个指标相互影响,测试时需综合考量

从这张图可以看得很清楚:带宽是上限,延迟和丢包率是干扰因素,吞吐量是最终结果。QUIC 协议的目标,就是在各种网络条件下,尽可能逼近带宽这个上限。

3.6 测试时要注意什么

讲完概念,我分享几个实际测试中的经验:

  • 别只看一个指标。吞吐量高不一定代表网络好,可能只是延迟低、丢包少。反过来,延迟高也不一定代表网络差,可能是链路距离远。
  • 控制变量。测带宽影响时,尽量保持低延迟和零丢包。测丢包影响时,固定带宽和延迟。不然你根本分不清问题出在哪。
  • 多跑几轮。网络是有波动的。一次测试结果不能说明问题。我一般至少跑 5 轮,取中位数或 P90 值。
  • 关注尾部延迟。平均延迟 10ms 看起来很美好,但如果 P99 延迟是 500ms,那你的应用体验会非常糟糕。

一个小技巧:测试 QUIC 吞吐时,我习惯同时抓包分析。光看吞吐数值不够,你得看看丢包是不是集中在某个时间段,或者是不是有大量的重传。这些细节,往往能帮你定位到真正的瓶颈。