Traceroute 不显示一跳?

网络工程 思科 杜松 聚光灯 虚拟现实
2021-07-07 07:38:55

我有一个有趣的问题,我的 traceroute 在途中跳过了一跳。我不知道为什么,但这似乎是某种我还不了解的瞻博网络行为。蓝色路由器是 Cisco 机器,其他类似 PC 的图标是 Juniper 路由器。

我有这个拓扑: 在此处输入图片说明

但是当我做一个 CE2: traceroute 172.16.0.1 (to CE1 Lo0 interface) 我得到以下信息:

root> traceroute 172.16.0.1                       
traceroute to 172.16.0.1 (172.16.0.1), 30 hops max, 52 byte packets
 1  192.168.1.9 (192.168.1.9)  2.514 ms  1.861 ms  1.393 ms
 2  10.0.3.1 (10.0.3.1)  5.597 ms  6.516 ms  5.480 ms
     MPLS Label=300160 CoS=0 TTL=1 S=0
     MPLS Label=18 CoS=0 TTL=1 S=1
 3  10.0.2.5 (10.0.2.5)  5.618 ms  6.154 ms  5.312 ms
     MPLS Label=300 CoS=0 TTL=1 S=0
     MPLS Label=203 CoS=0 TTL=1 S=0
     MPLS Label=18 CoS=0 TTL=2 S=1
 4  10.0.2.1 (10.0.2.1)  5.742 ms  5.344 ms  5.366 ms
     MPLS Label=203 CoS=0 TTL=1 S=0
     MPLS Label=18 CoS=0 TTL=1 S=1
 5  172.16.1.9 (172.16.1.9)  5.550 ms  4.752 ms  4.675 ms
     MPLS Label=18 CoS=0 TTL=1 S=1
 6  172.16.1.10 (172.16.1.10)  5.315 ms  5.238 ms  5.532 ms

root> 

我从 CE1 的另一端尝试了同样的事情:traceroute 192.168.0.1(到 CE2 接口 Lo0)我得到了这个:

CE1#traceroute 192.168.0.1                  
Type escape sequence to abort.
Tracing the route to 192.168.0.1
VRF info: (vrf in name/id, vrf out name/id)
  1 172.16.1.9 1 msec 1 msec 0 msec
  2 10.0.1.2 [MPLS: Labels 201/16 Exp 0] 5 msec 5 msec 4 msec
  3 10.0.2.2 [MPLS: Labels 301/300144/16 Exp 0] 4 msec 4 msec 4 msec
  4 10.0.2.6 [MPLS: Labels 300144/16 Exp 0] 4 msec 4 msec 4 msec
  5 192.168.0.1 5 msec 6 msec 6 msec
CE1#

如您所见,PE2_2 路由器不在输出中?谁能解释为什么会发生这种情况?

3个回答

traceroute通过使用具有递增 TTL 值的探测数据包来工作。数据包的 TTL 超时的跃点应该返回一个超时的ICMP 消息,该消息由 处理和显示traceroute如果一跳不减少 TTL,您根本看不到它。

显然,PE2_2 不会减少该路径中的 TTL - 如果没有(经过消毒的)配置,我们将无法告诉您原因。

这就是 MPLS 的工作原理。数据包在那个时候没有被路由,它是标签交换的。

Traceroute 的工作原理是让数据包 TTL 过期,然后发回一条 ICMP 消息,说明数据包已过期。路由器将在路由数据包时递减 TTL。MPLS 不路由数据包,它在数据包上放置标签并根据标签进行切换。这意味着路由器不会路由数据包,因此它不会减少 TTL,并且 TTL 不会过期。

如果您使用其他类型的隧道,您将观察到相同的行为,因为隧道的外部数据包的 TTL 将递减,而不是 traceroute 数据包 TTL,因此 traceroute 数据包标头 TTL 不会过期。

基本上,隧道看起来像原始 traceroute 数据包的单跳,中间路由可能没有返回源主机的路由,甚至能够发送 ICMP 超时。

奇怪的是,这是由 PE2_2 瞻博网络上的命令引起的。

删除路由实例 L3VPN-1 vrf-table-label 解决了这个问题,现在我得到:

CE1#trace 192.168.0.1
Type escape sequence to abort.
Tracing the route to 192.168.0.1
VRF info: (vrf in name/id, vrf out name/id)
  1 172.16.1.9 1 msec 0 msec 0 msec
  2 10.0.1.2 [MPLS: Labels 205/299792 Exp 0] 6 msec 6 msec 5 msec
  3 10.0.2.2 [MPLS: Labels 301/299888/299792 Exp 0] 5 msec 6 msec 5 msec
  4 10.0.2.6 [MPLS: Labels 299888/299792 Exp 0] 5 msec 8 msec 5 msec
  5 10.0.3.2 [MPLS: Label 299792 Exp 0] 5 msec 3 msec 3 msec
  6 192.168.0.1 5 msec 5 msec 5 msec
CE1#

仍然不确定那里发生了什么。干杯