我正在构建一个集成的网络运营门户,将来自多个资源的信息联系在一起。我想了解的一件事是网络的拓扑结构,我正在尝试使用 MTR 来实现这一点。不幸的是,我认为它无法识别交换机、防火墙或虚拟 (vSphere) 交换机的 IP 地址。
我知道到达该终点需要经过几个跳转。此输出很有用,因为我将能够了解终点之间的跳转次数,因此有了足够的数据,我将能够确认同一段(逻辑或虚拟)上的内容,但是我希望能够了解这些段如何组合在一起。
$ mtr --show-ips --report-wide 10.8.100.12
Start: Sat Feb 27 12:00:05 2016
HOST: tbrown Loss% Snt Last Avg Best Wrst StDev
1.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
2.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
3.|-- drblah02.xyz.com (10.8.100.12) 0.0% 10 76.2 76.1 73.7 80.7 2.3
是否需要启用这些设备才能以某种方式提供这些信息?
答案1
跟踪输出中的行数将指示从您到对等点的路径上跳数限制(也称为生存时间)减少了多少次。因此,未减少跳数限制的设备将对跟踪不可见。例如,交换机将不会出现在跟踪中,因为它们在比 IP 更低的层上运行。
同样重要的是,当跳数限制变为零时,设备会如何表现。如果设备默默地丢弃数据包,您将看到一条空白行。如果设备生成带有正确错误代码的 ICMP 数据包,您将看到该 ICMP 数据包的源 IP(或主机名)。
路由器在跟踪中显示为空白行可能有多种原因:
- 它可能配置为限制其产生的 ICMP 数据包的数量或者根本不发送它们。
- 它可能在 ICMP 生成中存在错误(一个可能的错误是在 ICMP 数据包中使用原始数据包的剩余跳数限制)。
- 它可能没有足够的 CPU 能力来响应所有数据包。
如果您在最终目标之前看到多个空白行,则可能是目标本身的 IP 堆栈中存在错误。如果目标将跳数限制从原始数据包复制到响应,则除非原始跳数限制足以覆盖双向路由,否则响应将不会返回。这通常会导致路径看起来是实际长度的两倍 - 而路径的后半部分没有响应。