irtt 专门测长期延迟稳定性和抖动,按固定间隔发包(如每 10ms 一个),统计 RTT、单向延迟、IPDV(抖动)和丢包。它比 ping 精确得多,很适合跑几小时甚至几天的稳定性测试。
相比于传统的 ICMP (Ping) 测试,IRTT 采用 UDP 能够更真实地模拟 VoIP、在线游戏等实时业务的流量,并能同时测量出双向丢包、单向延迟 (OWD) 以及抖动 (IPDV) 等深度指标。
irtt server
irtt client -i 10ms -d 1h -l 64
<server_ip> -o result.json
在 alpine 下安装:
echo "@edgecommunity http://mirrors.ustc.edu.cn/alpine/edge/community" >> /etc/apk/repositories
apk update
apk add irtt@edgecommunity
其他系统按需安装。
也可以这样纯静态交叉编译后放到目标机器中使用:
$ git clone https://github.com/heistp/irtt.git
$ cd irtt
$ CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -extldflags '-static'" -o irtt_linux_arm64 ./cmd/irtt
效果:
seq=1213 rtt=270µs rd=1.9s sd=-1.9s ipdv=71.5µs
seq=1214 rtt=254µs rd=1.9s sd=-1.9s ipdv=15.3µs
seq=1215 rtt=283µs rd=1.9s sd=-1.9s ipdv=28.3µs
interrupt
Min Mean Median Max Stddev
--- ---- ------ --- ------
RTT 171µs 280µs 273µs 3.74ms 111µs
send delay -1.9s -1.9s -1.9s -1.9s 105µs
receive delay 1.9s 1.9s 1.9s 1.9s 18.9µs
IPDV (jitter) 180ns 49.2µs 33µs 3.52ms 147µs
send IPDV 63ns 41.1µs 26.4µs 3.45ms 143µs
receive IPDV 30ns 18.2µs 13.8µs 158µs 17.7µs
send call time 10.5µs 20.5µs 127µs 9.05µs
timer error 76ns 258µs 925µs 159µs
server proc. time 2.95µs 6.57µs 53.8µs 2.55µs
duration: 12.2s (wait 0s)
packets sent/received: 1217/1216 (0.08% loss)
server packets received: 1216/1217 (0.08%/0.00% loss up/down)
bytes sent/received: 77888/77824
send/receive rate: 51.2 Kbps / 51.2 Kbps
timer stats: 2/1219 (0.16%) missed, 2.58% error