实时音视频这种实时业务一般用udp传输数据,其对网络性能是非常敏感的,在实战中,经常需要测试当前端到端或端到云的网络性能。在这里我们讨论一下网络性能测试中所涉及到指标,技术和相关工具,以及如何编写自己的网络性能测试工具。
性能指标
先给出几个比较重要的指标的定义以及它们的意义。
- 带宽(吞吐量)
单位时间内传输的数据量,单位通常是每秒比特数,记作bps;
带宽反映了网络的传输能力,越大越好; - 丢包
数据包丢失个数,等于“发送数据包数” - “接受数据包数”;
丢包反映了网络可靠性,越小越好; - 时延
数据包从发送开始到接收到该数据所耗费的时间,单位通常是毫秒;
时延反映了网络的速度,越小越好; - 抖动
指时延的变化,即两个数据包时延的差值;
抖动反映了网络的稳定性,越小越好; - 乱序
指接收到的数据包顺序和发送顺序不一致的次数;
乱序反映了网络的稳定性,越小越好;
当乱序比较严重时,丢包也会比较严重,所以一般都以丢包指标为主,忽略乱序指标;
测试工具
网上有很多测试网络性能的工具,如果它们能满足需求的话,就不用自己再造轮子了。
ping
ping是最常见的,几乎在所有的OS上都有它的存在。 其工作原理如图
- Local发送的数据包,Remote收到数据包后原样发回来;
- 数据包里包含有序号和时间戳信息;
- 序号用于判断是否丢包;
- 时间戳用于计算来回时延(图中蓝色部分),它等于接收时间减去数据包时间戳;
不同OS的ping命令选项可能会略有差别,以Mac OSX的ping为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|