1. 带宽测试概述

大家好,我是你们的老朋友。今天咱们聊聊带宽测试这件事。

带宽测试,说白了就是测量网络能跑多快。你可能觉得这很简单——找个工具跑一下不就完了?嗯,我刚开始也是这么想的。直到有一次在生产环境里,我测出来的带宽数据跟实际体验完全对不上,排查了整整两天才发现是测试方法出了问题。从那以后,我对带宽测试就再也不敢马虎了。

什么是带宽?

带宽这个词,其实有两个层面的含义。

物理层面,带宽指的是通信链路能承载的最大频率范围。比如你家宽带说的「100M」,就是指每秒能传输100兆比特的数据。

实际层面,带宽就是网络在单位时间内能传输的数据量。你想想看,一条高速公路,车道越多、限速越高,单位时间能通过的车就越多。带宽就是这个道理。

我个人习惯把带宽理解成「管道的粗细」。管道越粗,水流越大。但注意,管道粗不代表水一定能流满——这就要说到后面的测试了。

为什么需要测带宽?

这个问题我问过不少刚入行的朋友。有人说「领导让测的」,有人说「出问题了才测」。其实都不对。

我总结下来,测带宽有三大核心目的:

  • 验证服务商承诺:你交了100M的钱,实际能不能跑到100M?不测怎么知道。我曾经遇到过一家云厂商,买的是10Gbps的带宽,实际跑出来只有2Gbps,找他们理论,对方一开始还不认账。
  • 定位性能瓶颈:应用慢,是带宽不够?还是服务器处理能力不行?还是中间链路有问题?带宽测试能帮你快速定位。
  • 容量规划依据:业务要扩容了,加多少带宽合适?凭感觉拍脑袋?还是拿数据说话?我建议你选后者。

核心观点:带宽测试不是「测着玩」的,它是网络运维的基础数据来源。没有准确的带宽数据,你做任何优化都是盲人摸象。

带宽测试的核心指标

说到指标,很多人第一反应就是「吞吐量」。没错,吞吐量很重要,但光看吞吐量远远不够。我习惯把核心指标分成四个维度来看:

1. 吞吐量

吞吐量就是单位时间内成功传输的数据量。单位通常是bps(比特每秒),或者更常见的Mbps、Gbps。

举个例子:你从服务器下载一个1GB的文件,花了10秒钟。那吞吐量就是 1GB × 8 / 10s = 800Mbps。注意,这里要换算成比特,因为网络带宽的单位是比特。

吞吐量受很多因素影响:

  • TCP窗口大小
  • 往返延迟(RTT)
  • 丢包率
  • 中间设备的处理能力

我在项目中遇到过一件事:两个数据中心之间专线带宽标称10Gbps,但实际吞吐量只有3Gbps。排查下来,是防火墙的会话处理能力不够,成了瓶颈。换掉防火墙之后,吞吐量直接飙到9.2Gbps。

2. 延迟

延迟就是数据从源头发送到目的地所需的时间。单位是毫秒(ms)。

延迟分为几种:

  • 传播延迟:光在光纤里跑需要时间。北京到上海大约1000公里,光速是3×10⁸ m/s,但光纤里的速度大约是光速的2/3。算下来,单程延迟大约5ms。
  • 处理延迟:路由器、交换机处理数据包的时间。
  • 排队延迟:数据包在设备缓冲区里排队等待的时间。

你想想看,为什么打游戏的时候延迟高会卡?因为游戏是实时交互的,你按一下键盘,数据要跑到服务器,服务器处理完再传回来。延迟越高,响应越慢。

小技巧:测延迟用ping命令就够了。但注意,ping测的是ICMP协议的延迟,跟实际业务的TCP延迟可能有差异。我一般会同时用tcping或者hping3来测TCP端口的延迟,更贴近真实情况。

3. 抖动

抖动,就是延迟的变化量。说白了,延迟不稳定。

举个例子:

  • 第1个包延迟10ms
  • 第2个包延迟50ms
  • 第3个包延迟15ms

这种忽高忽低的情况,就是抖动大。抖动对实时应用影响特别大,比如视频会议、VoIP电话、在线游戏。

我曾经帮一个客户排查视频会议卡顿的问题。带宽够用,延迟也不高,但就是画面一卡一卡的。一测抖动,好家伙,峰值抖动达到200ms。最后发现是出口链路上有人在跑P2P下载,把队列占满了。

抖动的计算公式:

抖动 = |延迟(i) - 延迟(i-1)| 的平均值

一般来说,抖动低于20ms算良好,超过50ms就会明显影响体验。

4. 丢包率

丢包率,就是发送的数据包中,有多少没有被成功接收。单位是百分比。

丢包的原因很多:

  • 链路质量差(比如无线信号干扰)
  • 设备缓冲区溢出
  • 网络拥塞
  • 硬件故障

丢包对吞吐量的影响非常大。TCP协议有拥塞控制机制,一旦检测到丢包,就会主动降低发送速率。这就是为什么有时候带宽明明够,但下载速度就是上不去——丢包率太高了。

注意:不要以为丢包率1%很小。对于TCP传输来说,1%的丢包率可能导致吞吐量下降50%以上。我见过最夸张的一次,丢包率只有0.5%,但吞吐量从900Mbps掉到了200Mbps。嗯,这就是TCP的「脾气」。

四个指标的关系

这四个指标不是孤立的,它们之间相互影响。我画了一张图,帮你理清关系:

带宽测试核心指标关系图 带宽测试 吞吐量 延迟 抖动 丢包率 负影响 负影响 相关 四个指标相互影响,测试时需综合评估 吞吐量:单位时间传输的数据量 延迟:数据从源到目的的时间 | 抖动:延迟的变化量 | 丢包率:丢失包的比例 丢包率和延迟升高 → 吞吐量下降

从这张图你能看出来:

  • 丢包率和延迟会直接影响吞吐量。丢包越多、延迟越高,吞吐量就越低。
  • 延迟和抖动是相关的。延迟不稳定,抖动就大。
  • 这四个指标要综合看,不能只看一个。

测试前的准备工作

在正式开始测试之前,有几件事我建议你先做好:

  1. 明确测试目的:你是要验证带宽?还是排查问题?目的不同,测试方法也不同。
  2. 选择测试工具:iPerf3、Speedtest、Netperf、mtr……每个工具都有自己的适用场景。
  3. 控制变量:测试期间,尽量让网络处于空闲状态。别一边测带宽一边刷视频,那数据就没意义了。
  4. 多次测试取平均:单次测试偶然性太大。我一般会跑3-5次,取平均值。

我的习惯:每次测试前,我都会先跑一轮ping,确认基础延迟和丢包率正常。如果ping都丢包,那后面的带宽测试就不用跑了——先把链路修好再说。

小结

带宽测试不是简单的「跑个分」。你得理解带宽是什么,为什么要测,以及该看哪些指标。吞吐量、延迟、抖动、丢包率,这四个指标缺一不可。

记住一句话:没有测量,就没有管理。你连网络现状都不清楚,怎么优化?怎么排障?

下一节,我会带你看看具体的测试工具怎么用。咱们先从最经典的iPerf3开始。


想要更多资料,联系可可