[Contents] [Prev] [Next] [Index] [Report an Error]

Verifying and Troubleshooting MPLS Connectivity

Problem

In IP networks, the ping and traceroute commands enable you to verify network connectivity and find broken links or loops. In MPLS-enabled networks, you can use the ping command to determine whether IP connectivity exists to a destination even when the ping packets must traverse multiple LSPs. You can use the traceroute command to determine the labels that data packets use when traversing LSPs to the destination.

In an MPLS-enabled network, however, you cannot use these IP commands to determine MPLS connectivity to a destination.

Solution

You can use the MPLS ping and trace features to detect data plane failures in LSPs. Specific mpls ping and trace mpls commands enable you to target different types of MPLS applications and network topologies. The various ping mpls and trace mpls commands send UDP packets, known as MPLS echo requests, to the egress LSR of MPLS packets in a given FEC. Each echo request is forwarded along the same data path as the MPLS packets in that FEC.

The echo request packets use a destination address in the 127.0.0.0/8 range and port 3503. The default address is 127.0.0.1. This address range prevents IP from forwarding the packet, so that the echo request must follow the MPLS data path. This behavior is different from that of the IP ping and traceroute commands, which send ICMP packets to the actual destination.

Each MPLS echo request packet contains information about the FEC stack that is being validated. LSRs that receive an MPLS echo request respond with MPLS echo reply packets. (Even when MPLS is not enabled on that router, echo reply packets are sent by E-series routers that receive an echo request packet. This situation is a transient condition when the router is receiving labeled packets. A return code in the echo replies indicates to the sending router that no label mapping exists on the receiving router.)

The ping mpls commands perform a basic connectivity check. When the echo request exits the tunnel at the egress LSR, the LSR sends the packet to the control plane. The egress router validates the FEC stack to determine whether that LSR is the actual egress for the FEC. The egress router sends an echo reply packet back to the source address of the echo request packet. The egress router can send the packet back by means of either the IP path or the MPLS path.

The trace mpls commands isolate faults in the LSP. For these commands, successive echo request packets are sent along the path. The first packet has a TTL of one; the TTL value is incremented by one for each successive packet. The first packet therefore reaches only the next hop on the path; the second packet reaches the next router after that. Echo request packets are sent until either an echo reply is received from the egress router for the FEC or a TTL of 32 is reached.

When a TTL expires on an LSR, that LSR sends an echo reply packet back to the source. For transit routers, the echo reply indicates that downstream mapping exists for the FEC, meaning that the packet would have been forwarded if the TTL had not expired. The egress router sends an echo reply packet verifying that it is the egress.

Although you cannot send IPv6 UDP packets for MPLS ping, you can use the ping mpls l3vpn command with an IPv6 prefix to investigate IPv6 VPNs.

MPLS Connectivity and ECMP

When an MPLS ECMP is part of the tunnel being explored by an MPLS echo request, the request packet takes one of the available ECMP paths. Probing FECs with different label stacks can yield different ECMP paths. However, you cannot guarantee complete coverage of all the ECMP paths.

You can use MPLS trace to determine which paths are present on an MPLS LSR. When the TTL expires on an MPLS LSR, the echo reply that is returned includes a downstream mapping TLV. This TLV contains all the downstream mappings of the LSR on which the TTL expired, if that feature is supported by the LSR. You can use the detail version of the trace mpls commands to display these downstream mappings.

Supported TLVs

Table 59 lists the TLVs supported by the MPLS LSP ping feature. Table 60 lists the sub-TLVs supported for the Target FEC Stack TLV.

Table 59: TLVs Supported by MPLS LSP ping

Type Number

Value

Comments

1

Target FEC Stack

Multiple FEC stack sub-TLVs are not supported. A single LSP ping message cannot have more than one target FEC stack TLV.

2

Downstream Mapping

Only the IPv4 (numbered or unnumbered) downstream address type is supported.

Flag I for the Interface and Label Stack object is supported. Flag N, to treat the packet as a non-IP packet, is not supported.

An MPLS LSP trace echo request includes this TLV. This TLV contains the downstream address all-routers-multicast; that is the well-known IP address 224.0.0.2. Validation of the downstream address is not performed.

Verification of the downstream address is not performed on receipt of an MPLS echo request that contains this TLV.

In an MPLS echo reply, multipath information is not supported in this TLV; the multipath type is always set to 0 in the reply. However, the reply includes one downstream mapping TLV for each downstream path.

3

Pad

This TLV is included in the MPLS echo request packet. The TLV can specify either “ Do not reply” or “ Reply via an IPv4/IPv6 UDP packet.”

7

Interface and Label Stack

This TLV is generated if requested by the received downstream mapping TLV.

9

Errored TLVs

This TLV is generated if an error is encountered while parsing one of the received TLVs.

10

Reply TOS Byte

Table 60: Sub-TLVs Supported for the Target FEC Stack TLV

Subtype Number

Value

Comments

1

LDP IPv4 prefix

2

LDP IPv6 prefix

3

RSVP IPv4 LSP

6

VPN IPv4 prefix

7

VPN IPv6 prefix

8

L2 VPN endpoint

For VPLS and VPWS

10

FEC 128 pseudowire

For Martini encapsulation

To send an MPLS echo request packet to the specified IP or IPv6 address:

To send MPLS echo request packets to discover and examine the path MPLS packets follow to the specified IP or IPv6 address:

To send an MPLS echo request packet to the specified layer 2 cross-connect virtual (Martini) circuit:

To send MPLS echo request packets to discover and examine the path MPLS packets follow to the specified layer 2 cross-connect virtual (Martini pseudowire) circuit:

To send an MPLS echo request packet to the specified L3VPN IP or IPv6 prefix:

To send MPLS echo request packets to discover and examine the path MPLS packets follow to the L3VPN IP or IPv6 prefix:

To send an MPLS echo request packet to the specified RSVP-TE tunnel:

To send MPLS echo request packets to discover and examine the path MPLS packets follow to the specified RSVP-TE tunnel:

To send an MPLS echo request packet to the specified VPLS instance:

To send MPLS echo request packets to discover and examine the path MPLS packets follow to the specified VPLS instance:

Related Topics


[Contents] [Prev] [Next] [Index] [Report an Error]