3. 网络测量基础:Ping与Traceroute原理、单向延迟测量(OWAMP/TWAMP)、网络性能测量工具(iperf3、mtr、Smokeping)
做网络排障这么多年,我有个习惯——遇到抖动问题,先不急着翻配置,而是先问自己一句:「我到底测准了没有?」
你想想看,如果测量工具本身就有误差,那后面的根因分析全是白搭。这一章,我就把网络测量那点家底给你抖一抖。
3.1 Ping与Traceroute:最基础的,也是最容易被误读的
Ping,说白了就是发个ICMP Echo请求,等对方回个Echo Reply。我测的是往返时间(RTT)。
但这里有个坑——Ping测的是双向延迟。如果去程和回程路径不对称,你根本不知道哪一段在抖。
Traceroute,原理是逐跳增加TTL值,让每一跳路由器返回ICMP超时消息。我习惯用它来定位「到底哪一跳在背锅」。
# 经典用法
traceroute -n 8.8.8.8
mtr -n 8.8.8.8 # 我个人更推荐mtr,后面会讲
但Traceroute也有局限:它只能看到三层路径,看不到二层交换机的转发延迟。而且,有些运营商路由器对ICMP的响应优先级很低,导致最后一跳延迟虚高——嗯,这个要注意。
3.2 单向延迟测量:OWAMP与TWAMP
为什么需要单向延迟?因为RTT掩盖了太多真相。
举个例子:去程延迟10ms,回程延迟90ms,RTT是100ms。你以为是均匀的,其实回程已经快炸了。单向测量才能看清真相。
OWAMP(One-Way Active Measurement Protocol),是RFC 4656定义的。它需要两端时钟同步(通常靠NTP或PTP),然后发送方打时间戳,接收方计算差值。
TWAMP(Two-Way Active Measurement Protocol),是OWAMP的简化版。它不需要两端都部署客户端,控制端发请求,响应端回包,控制端自己算单向延迟。
| 特性 | OWAMP | TWAMP |
|---|---|---|
| 协议标准 | RFC 4656 | RFC 5357 |
| 时钟同步要求 | 高(两端需同步) | 中(控制端计算) |
| 部署复杂度 | 高 | 低 |
| 适用场景 | 科研、高精度测量 | 运营商、企业专线 |
3.3 网络性能测量工具:iperf3、mtr、Smokeping
工具不在多,在于会用。我挑三个最常用的说说。
3.3.1 iperf3:带宽和抖动的照妖镜
iperf3测的是TCP/UDP吞吐量。很多人只拿它测带宽,其实它还能测抖动(jitter)。
# 服务端
iperf3 -s -p 5201
# 客户端(UDP模式,测抖动)
iperf3 -c 10.0.0.1 -u -b 100M -t 30
输出里有个字段叫「Jitter」,单位是ms。如果抖动超过5ms,说明链路不太稳。我个人习惯把iperf3和Ping同时跑,对比看——如果Ping正常但iperf3抖动大,那多半是带宽瓶颈或队列缓存问题。
3.3.2 mtr:Ping + Traceroute的合体
mtr是我最常用的排障工具。它把Ping和Traceroute结合起来,逐跳显示丢包率和延迟。
mtr -r -c 100 8.8.8.8
输出里,每一跳都有Loss%、Snt、Last、Avg、Best、Wrst、StDev。我一般先看StDev(标准差)——如果某跳的标准差超过10ms,那这跳大概率有问题。
我曾经遇到一个案例:mtr显示第5跳丢包30%,但后续跳丢包为0%。这说明第5跳只是对ICMP不响应,实际数据包是通的。嗯,这就是典型的「假丢包」。
3.3.3 Smokeping:7x24小时的延迟监控
Smokeping是个Web工具,用RRDtool存储历史数据,能画出漂亮的延迟趋势图。我习惯把它部署在IDC,监控所有分支机构的专线质量。
它的核心优势是可视化——一眼就能看出哪条链路在哪个时间段抖动。比如,每天下午3点准时抖,那多半是带宽跑满了;凌晨2点抖,可能是运营商在做割接。
3.4 知识体系总览
下面这张图,是我自己梳理的测量工具选型逻辑。你排障时,按这个思路走,基本不会漏。
说白了,测量是排障的第一步,也是最重要的一步。工具选对了,数据测准了,根因分析就成功了一半。下一章,我会带你看看这些工具在实际抖动场景中怎么组合使用。
公众号:蓝海资料掘金营,微信deep3321