2个不稳定版本
使用旧的Rust 2015
0.3.0 | 2017年3月11日 |
---|---|
0.2.0 | 2017年3月3日 |
#5 in #variation
33KB
671 行
wping
wping
与ping
类似,但它试图产生更有用的输出
动机
使用ping
估计丢包通常涉及查看输出或通过观察输出的时间来发展对丢失包百分比的直觉。或者,可以循环运行它,并在退出时观察ping
打印的累计统计信息,然后尝试随着时间的推移跟踪它们。我们可以做得更好。
wping的工作原理
wping
计算并显示往返时间(RTT)和明显丢包率的指数加权移动平均(EWMA)。为了计算丢包率,如果一个数据包在平滑(RTT)+ 2 * 变化(RTT)内没有收到响应,则认为该数据包已丢失。但是,如果之前发送的数据包收到了响应,wping
将提高丢包率的估计。
当明显丢包率低于1%(即当丢包事件足够远时),则将丢包率报告为0%。
EWMA计算按照RFC6298执行。
每次发送间隔打印一次更新后的统计信息:当收到响应时,或者,如果没有收到响应,当下一个探测即将发送时。
安装
目前,安装wping
的方法是通过cargo。如果cargo不是作为分发包提供的,那么获取它的最简单方法是通过安装rustup然后
$ cargo install wping
$ sudo setcap cap_net_raw+ep ~/.cargo/bin/wping
用法
在一个具有模拟丢包的接口上
$ wping en.wikipedia.org
PING 91.198.174.192 for en.wikipedia.org (91.198.174.192)
Seq RTT smooth RTT RTT variation Packet loss
1 96 ms 96 ms 48 ms 0%
2 95 ms 96 ms 36 ms 0%
3 108 ms 97 ms 30 ms 0%
4 100 ms 98 ms 23 ms 0%
- - 98 ms 23 ms 12%
6 97 ms 97 ms 17 ms 11%
7 95 ms 97 ms 14 ms 10%
8 95 ms 97 ms 10 ms 8%
9 96 ms 97 ms 8 ms 7%
10 97 ms 97 ms 6 ms 6%
11 98 ms 97 ms 5 ms 6%
12 97 ms 97 ms 3 ms 5%
- - 97 ms 3 ms 17%
14 96 ms 97 ms 3 ms 15%
15 108 ms 98 ms 5 ms 13%
16 97 ms 98 ms 4 ms 11%
17 97 ms 98 ms 3 ms 10%
- - 98 ms 3 ms 21%
19 96 ms 98 ms 3 ms 18%
20 111 ms 99 ms 5 ms 16%
21 96 ms 99 ms 5 ms 14%
默认发送间隔为1秒,自适应丢包窗口包含20个探测(丢包事件的影响在该之后降至低于1%)。启动时,wping
会打印出为目标域名检索到的所有IP地址,作为温和的提醒,轮询DNS可能正在发挥作用。
Usage:
wping [OPTIONS] [ADDRESS]
positional arguments:
address Target hostname or IPv4 address
optional arguments:
-h,--help show this help message and exit
-i Send interval
-s,--packet-size PACKET_SIZE
Payload size in bytes
--window WINDOW Adaptive packet loss calculation for the last N probes
-x,--extended Include additional information in the output
当前限制
- 不会注意/处理其他ICMP数据包类型(例如ICMP_REDIRECT)
- 不支持IPv6
依赖关系
~5MB
~110K SLoC