使用 MTR(使用 TCP,而不是 ICMP),我不断看到一台执行正常 ICMP 泛洪限制的路由器上出现数据包丢失。UDP 也是如此 - 我仍然看到数据包丢失。
但是,当我使用其他工具,即TCPing.exe,hping3,PRTG QOS时,我很少看到丢失(除了正常的ICMP丢失)。
什么可以解释为什么 MTR 的结果与其他工具的结果始终不同?
第 2 跳是具有 ICMP 泛洪限制的 Cisco 路由器:并查看 MTR 中的毫秒时间:
mtr -P 445 -T -rn 172.31.xx.5
Start: 2020-09-02T11:54:26+0800
HOST: xxxx Loss% Snt Last Avg Best Wrst StDev
1.|-- 172.20.x.254 0.0% 10 0.6 0.7 0.5 1.9 0.4
2.|-- 172.18.x.239 10.0% 10 7014. 3339. 0.2 7018. 3506.6
3.|-- 172.31.x.32 0.0% 10 4.3 2.4 2.0 4.3 0.7
4.|-- 172.18.x.211 0.0% 10 2.4 2.5 2.4 2.6 0.0
5.|-- 172.31.x.5 0.0% 10 81.4 81.7 81.4 82.5 0.4
运行:
sudo hping3 -q --fast -n -c 100 172.31.x.5 -p 445 -T
HPING 172.31.x.5 (ens160 172.31.x.5): NO FLAGS are set, 40 headers + 0 data bytes
hop=1 TTL 0 during transit from ip=172.20.x.254
hop=1 hoprtt=0.9 ms
hop=2 TTL 0 during transit from ip=172.18.x.239
hop=2 hoprtt=0.8 ms
hop=3 TTL 0 during transit from ip=172.31.x.32
hop=3 hoprtt=2.8 ms
hop=4 TTL 0 during transit from ip=172.18.x.211
hop=4 hoprtt=2.8 ms
--- 172.31.x.5 hping statistic ---
100 packets transmitted, 100 packets received, 0% packet loss
round-trip min/avg/max = 0.8/78.7/86.4 ms
TCPing.exe:
./tcping -i .1 -p 445 -n 50 172.31.x.5
Probing 172.31.x.5:445/tcp - Port is open - time=81.423ms
Probing 172.31.x.5:445/tcp - Port is open - time=81.375ms
Probing 172.31.x.5:445/tcp - Port is open - time=81.246ms
Ping statistics for 172.31.x.5:445
50 probes sent.
50 successful, 0 failed. (0.00% fail)
Approximate trip times in milli-seconds:
Minimum = 81.246ms, Maximum = 85.690ms, Average = 81.628ms
答案1
不确定您使用的其他工具,但 mtr 使用 TCP 时会向目的地发送 TCP SYN 数据包,并将 TTL 从 1 递增,直到到达目的地。因此,当数据包达到 TTL 0 时,路径中的路由器仍会发回 ICMP 类型 11 - 生存时间已超出。如果控制平面策略在路由器上生效,则这可能会导致路由器上感知到的丢失。
如果感兴趣的话,可以在这里阅读一些有关控制平面监管的内容:https://nwmichl.net/2021/02/03/coping-with-copp-why-icmp-drops-happen/