- Read Me First
- Introduction to Segment Routing
- Segment Routing With IS-IS v4 Node SID
- IS-IS Link-protection Topology Independent Loop Free Alternate Fast Reroute
- Segment Routing Traffic Engineering With IS-IS
- Segment Routing With OSPFv2 Node SID
- OSPFv2 Link-protection Topology Independent Loop Free Alternate Fast Reroute
- Segment Routing Traffic Engineering With OSPF
- BGP Dynamic Segment Routing Traffic Engineering
- Segment Routing On Demand Next Hop for L3/L3VPN
- Routing Information Base Support
- SR-TE On Demand LSP
- Segment Routing MPLS OAM Support
- Using Seamless BFD and SSPF with Segment Routing
- Dynamic PCC
- ISIS - SR: uLoop Avoidance
- BGP - SR: BGP Prefix SID Redistribution
- Restrictions for Segment Routing OAM MPLS Support
- Information About Segment Routing MPLS OAM Support
- How to Diagnose Segment Routing with LSP Ping and Trace Route Nil FEC Target
- Example for LSP Ping Nil FEC Target Support
- Path Validation in Segment Routing Network
- Configuring Segment Routing MPLS Traffic Engineering for MPLS Ping and Traceroute
- Configuring Segment Routing MPLS IGP for MPLS Ping and Traceroute
- Verifying Segment Routing OAM Using Cisco IOS CLI
- Additional References for Segment Routing OAM Support
- Feature Information for Segment Routing OAM Support
Segment Routing MPLS
OAM Support
Segment Routing Operations, Administration, and Maintenance (OAM) helps service providers to monitor label-switched paths (LSPs) and quickly isolate forwarding problems to assist with fault detection and troubleshooting in the network. The Segment Routing OAM feature provides support for Nil-FEC (forwarding equivalence classes) LSP Ping and Traceroute, IGP prefix SID FEC type, and partially IGP adjacency-SID FEC type for SR-TE functionality.
- Restrictions for Segment Routing OAM MPLS Support
- Information About Segment Routing MPLS OAM Support
- How to Diagnose Segment Routing with LSP Ping and Trace Route Nil FEC Target
- Example for LSP Ping Nil FEC Target Support
- Path Validation in Segment Routing Network
- Configuring Segment Routing MPLS Traffic Engineering for MPLS Ping and Traceroute
- Configuring Segment Routing MPLS IGP for MPLS Ping and Traceroute
- Verifying Segment Routing OAM Using Cisco IOS CLI
- Additional References for Segment Routing OAM Support
- Feature Information for Segment Routing OAM Support
Restrictions for Segment Routing OAM MPLS Support
-
Ping and traceroute are unsupported with SR-TE static auto tunnel, BGP Dynamic TE, and on-demand next hop auto tunnels.
-
Strict-SID option is not supported by the path installed by OSPF.
-
MPLS traceroute does not support popping of two explicit null labels in one node.
-
Rerouting the path to IP over MPLS segment without using Layer3 VPN is not supported due to IP routing destination not being a MPLS FEC.
Information About Segment Routing MPLS OAM Support
Segment Routing OAM Support
In the case of segment routing, each segment nodal label and adjacent label along the routing path is put into the label stack of an echo request message from initiator Label Switch Router (LSR); MPLS data plane forward this packet to the label stack target, and the label stack target reply the echo message back.
Benefits of Segment Routing OAM Support
-
The feature enables the MPLS OAM functionality in the Segment Routing Network where the traffic is engineering via SR-TE tunnels or native SR forwarding.
-
In traditional MPLS networks, source node chooses the path based on hop by hop signaling protocols such as LDP or RSVP-TE. In Segment Routing Networks, the path is specified by set of segments which are advertised by the IGP protocols (currently OSPF and ISIS).
-
As the volume of services offered using SR increase, it is important that the operator essentially is able to do the connectivity verification and the fault isolation in the SR architecture.
-
The segment assignment is not based on hop by hop protocols as in traditional MPLS network, any broken transit node could lead in traffic blackholing, which could lead to undesired behavior.
-
Both SR and SR-TE supports load balancing, it is important to trace all the ECMP paths available between source and target routers. The features offers the multipath traceroute support for both TE and native SR paths.
-
The following are the main benefits of Segment Routing-OAM Support:
Segment Routing MPLS Ping
MPLS ping and traceroute are extendable by design. You can add SR support by defining new FECs and/or additional verification procedures. MPLS ping verifies MPLS data path and performs the following:
Segment Routing MPLS Traceroute
MPLS ping and traceroute are extendable by design. You can add SR support by defining new forwarding equivalence classes (FECs) and/or additional verification procedures. MPLS traceroute verifies forwarding and control plane at each hop of the LSP to isolate faults. Traceroute sends MPLS echo requests with monotonically increasing time-to-live (TTL), starting with TTL of 1. Upon TTL expiry, transit node processes the request in software and verifies if it has an LSP to the target FEC and intended transit node. The transit node sends echo reply containing return code specifying the result of above verification and label stack to reach the next-hop, as well as ID of the next-hop towards destination, if verification is successful. Originator processes echo reply to build the next echo request containing TTL+1. Process is repeated until the destination replies that it is the egress for the FEC.
LSP Ping Operation for Nil FEC target
How to Diagnose Segment Routing with LSP Ping and Trace Route Nil FEC Target
Using LSP Ping for Nil FEC Target
The Nil FEC LSP ping and traceroute operation are simply extension of regular MPLS ping and trace route. nil-fec labels <label, label…> is added to the ping mpls command. This command sends an echo request message with MPLS label stack as specified and add another explicit null at bottom of the stack.
ping mpls nil-fec labels <comma separated labels> output interface <tx-interface> nexthop <nexthop ip addr> [repeat <count>] [size <size> | sweep <min_size> <max_size> <increment>] [timeout <seconds>] [interval <milliseconds>] [destination <addr_start> [<addr_end> [<addr_incr_mask> | <addr_incr>]]] [source <addr>] [exp <exp-value>] [pad <pattern>] [ttl <ttl>] [reply [mode [ipv4 | router-alert | no-reply]] [dscp <dscp-bits>] [pad-tlv]] [verbose] [force-disposition ra-label] {dsmap | ddmap [l2ecmp]} [hashkey {none | {ipv4 | ipv4-label-set {bitmap <bitmap_size>}}]
For more information, refer ping mpls.
Using LSP Traceroute for Nil FEC Target
trace mpls nil-fec labels <comma separated labels> output interface <tx-interface>} nexthop <nexthop ip addr> [timeout <seconds>] [destination <addr_start> [<addr_end> [<addr_incr_mask> | <addr_incr>]]] [source <addr> ] [exp <exp-value>] [ttl <ttl-max>] [reply [mode [ipv4 | router-alert | no-reply]] [dscp <dscp-bits>] [pad-tlv]] [flags {fec | ttl}] [hashkey ipv4 | ipv4-label-set {bitmap <bitmap_size>}]
For more information, refer to the traceroute mpls.
Example for LSP Ping Nil FEC Target Support
Node loopback IP address: 1.1.1.3 1.1.1.4 1.1.1.5 1.1.1.7 Node label: 16004 16005 16007 Nodes: Arizona --------------- Utah --------------- Wyoming --------------- Texas Interface: Eth1/0 Eth1/0 Interface IP address: 30.1.1.3 30.1.1.4 Device#sh mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 3333.3333.0000-Et1/0-30.1.1.3 \ 0 Et1/0 30.1.1.3 17 Pop Label 5555.5555.5555-Et1/1-90.1.1.5 \ 0 Et1/1 90.1.1.5 18 Pop Label 3333.3333.0253-Et0/2-102.102.102.2 \ 0 Et0/2 102.102.102.2 19 Pop Label 9.9.9.4/32 0 Et0/2 102.102.102.2 20 Pop Label 1.1.1.5/32 0 Et1/1 90.1.1.5 21 Pop Label 1.1.1.3/32 0 Et1/0 30.1.1.3 22 Pop Label 16.16.16.16/32 0 Et1/0 30.1.1.3 23 Pop Label 16.16.16.17/32 0 Et1/0 30.1.1.3 24 Pop Label 17.17.17.17/32 0 Et1/0 30.1.1.3 25 20 9.9.9.3/32 0 Et1/0 30.1.1.3 26 21 1.1.1.6/32 0 Et1/0 30.1.1.3 27 24 1.1.1.2/32 0 Et1/0 30.1.1.3 28 1.1.1.2/32 0 Et1/1 90.1.1.5 28 18 1.1.1.7/32 0 Et1/1 90.1.1.5 29 27 9.9.9.7/32 0 Et1/1 90.1.1.5 30 Pop Label 55.1.1.0/24 0 Et1/1 90.1.1.5 31 Pop Label 19.1.1.0/24 0 Et1/0 30.1.1.3 Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 32 Pop Label 100.1.1.0/24 0 Et1/0 30.1.1.3 33 Pop Label 100.100.100.0/24 0 Et1/0 30.1.1.3 34 Pop Label 110.1.1.0/24 0 Et1/0 30.1.1.3 35 28 10.1.1.0/24 0 Et1/0 30.1.1.3 36 29 101.101.101.0/24 0 Et1/0 30.1.1.3 37 29 65.1.1.0/24 0 Et1/1 90.1.1.5 38 33 104.104.104.0/24 0 Et1/0 30.1.1.3 39 104.104.104.0/24 0 Et1/1 90.1.1.5 39 30 103.103.103.0/24 0 Et1/1 90.1.1.5 16005 Pop Label 1.1.1.5/32 1782 Et1/1 90.1.1.5 16006 16006 1.1.1.6/32 0 Et1/0 30.1.1.3 16007 16007 1.1.1.7/32 0 Et1/1 90.1.1.5 16017 16017 17.17.17.17/32 0 Et1/0 30.1.1.3 16250 16250 9.9.9.3/32 0 Et1/0 30.1.1.3 16252 16252 9.9.9.7/32 0 Et1/1 90.1.1.5 16253 Pop Label 9.9.9.4/32 0 Et0/2 102.102.102.2 17000 17000 16.16.16.16/32 0 Et1/0 30.1.1.3 17002 17002 1.1.1.2/32 0 Et1/0 30.1.1.3 17002 1.1.1.2/32 0 Et1/1 90.1.1.5 Device#ping mpls nil-fec labels 16005,16007 output interface ethernet 1/0 nexthop 30.1.1.4 repeat 1 Sending 1, 72-byte MPLS Echos with Nil FEC labels 16005,16007, timeout is 2 seconds, send interval is 0 msec: Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. ! Success rate is 100 percent (1/1), round-trip min/avg/max = 1/1/1 ms Total Time Elapsed 0 ms Device#traceroute mpls nil-fec labels 16005,16007 output interface ethernet 1/0 nexthop 30.1.1.4 Tracing MPLS Label Switched Path with Nil FEC labels 16005,16007, timeout is 2 seconds Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. 0 30.1.1.3 MRU 1500 [Labels: 16005/16007/explicit-null Exp: 0/0/0] L 1 30.1.1.4 MRU 1500 [Labels: implicit-null/16007/explicit-null Exp: 0/0/0] 1 ms L 2 90.1.1.5 MRU 1500 [Labels: implicit-null/explicit-null Exp: 0/0] 1 ms ! 3 55.1.1.7 1 ms
Path Validation in Segment Routing Network
The MPLS OAM mechanisms help with fault detection and isolation for a MPLS data-plane path by the use of various target FEC stack sub-TLVs that are carried in MPLS echo request packets and used by the responder for FEC validation. While it is obvious that new sub-TLVs need to be assigned for segment routing, the unique nature of the segment routing architecture raises the need for additional operational considerations for path validation.
The forwarding semantic of Adjacency Segment ID is to pop the Segment ID and send the packet to a specific neighbor over a specific link. A malfunctioning node may forward packets using Adjacency Segment ID to an incorrect neighbor or over an incorrect link. The exposed Segment ID (of an incorrectly forwarded Adjacency Segment ID) might still allow such packet to reach the intended destination, although the intended strict traversal has been broken. MPLS traceroute may help with detecting such a deviation.
The format of the following Segment ID sub-TLVs follows the philosophy of Target FEC Stack TLV carrying FECs corresponding to each label in the label stack. This allows LSP ping/traceroute operations to function when Target FEC Stack TLV contains more FECs than received label stack at responder nodes. Three new sub-TLVs are defined for Target FEC Stack TLVs (Type 1), Reverse-Path Target FEC Stack TLV (Type 16) and Reply Path TLV (Type 21).
sub-Type Value Field -------- --------------- 34 IPv4 IGP-Prefix Segment ID 35 IPv6 IGP-Prefix Segment ID 36 IGP-Adjacency Segment ID
- MPLS Ping and Traceroute for IGP Prefix-SID FEC Type
- MPLS Ping and Traceroute for IGP-Adjacency Segment ID
MPLS Ping and Traceroute for IGP Prefix-SID FEC Type
MPLS ping and traceroute operations for prefix SID are supported for various IGP scenarios, for example:
-
Within an IS-IS level or OSPF area
-
Across IS-IS levels or OSPF areas
-
Route redistribution from IS-IS to OSPF and from OSPF to IS-IS
The MPLS LSP Ping feature is used to check the connectivity between ingress Label Switch Routers (LSRs) and egress LSRs along an LSP. MPLS LSP ping uses MPLS echo request and reply messages, similar to Internet Control Message Protocol (ICMP) echo request and reply messages, to validate an LSP. The destination IP address of the MPLS echo request packet is different from the address used to select the label stack.
The MPLS LSP Traceroute feature is used to isolate the failure point of an LSP. It is used for hop-by-hop fault localization and path tracing. The MPLS LSP Traceroute feature relies on the expiration of the Time to Live (TTL) value of the packet that carries the echo request. When the MPLS echo request message hits a transit node, it checks the TTL value and if it is expired, the packet is passed to the control plane, else the message is forwarded. If the echo message is passed to the control plane, a reply message is generated based on the contents of the request message.
The MPLS LSP Tree Trace (traceroute multipath) operation is also supported for IGP Prefix SID. MPLS LSP Tree Trace provides the means to discover all possible equal-cost multipath (ECMP) routing paths of an LSP to reach a destination Prefix SID. It uses multipath data encoded in echo request packets to query for the load-balancing information that may allow the originator to exercise each ECMP. When the packet TTL expires at the responding node, the node returns the list of downstream paths, as well as the multipath information that can lead the operator to exercise each path in the MPLS echo reply. This operation is performed repeatedly for each hop of each path with increasing TTL values until all ECMP are discovered and validated.
MPLS echo request packets carry Target FEC Stack sub-TLVs. The Target FEC sub-TLVs are used by the responder for FEC validation. The IGPIPv4 prefix sub-TLV has been added to the Target FEC Stack sub-TLV. The IGP IPv4 prefix sub-TLV contains the prefix SID, the prefix length, and the protocol (IS-IS or OSPF).
The network node which advertised the Node Segment ID is responsible for generating a FEC Stack Change sub-TLV with pop operation type for Node Segment ID, regardless of whether penultimate hop popping (PHP) is enabled or not.
The format is as below for IPv4 IGP-Prefix Segment ID:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 Prefix | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Prefix Length | Protocol | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The format is as below for IPv6 IGP-Prefix Segment ID:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | IPv6 Prefix | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Prefix Length | Protocol | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MPLS Ping and Traceroute for IGP-Adjacency Segment ID
The network node that is immediate downstream of the node which advertised the Adjacency Segment ID is responsible for generating FEC Stack Change sub-TLV for "POP" operation for Adjacency Segment ID.
The format is as below for IGP-adjacency SID:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Adj. Type | Protocol | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Local Interface ID (4 or 16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Remote Interface ID (4 or 16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ~ | Advertising Node Identifier (4 or 6 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ~ | Receiving Node Identifier (4 or 6 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Configuring Segment Routing MPLS Traffic Engineering for MPLS Ping and Traceroute
ping mpls traffic-eng tunnel <tun-id> [repeat <count>] [size <size> | sweep <min_size> <max_size> <increment>] [timeout <seconds>] [interval <milliseconds>] [destination <addr_start> [<addr_end> [<addr_incr_mask> | <addr_incr>]]] [source <addr>] [exp <exp-value>] [pad <pattern>] [ttl <ttl>] [reply [mode [ipv4 | router-alert | no-reply]] [dscp <dscp-bits>] [pad-tlv]] [verbose] [output {interface <tx-interface>} [nexthop <nexthop ip addr>]] [{dsmap | ddmap [l2ecmp]} [hashkey {none | {ipv4 | ipv4-label-set {bitmap <bitmap_size>}}] traceroute mpls [multipath] traffic-eng <tunnel-interface> [timeout <seconds>] [destination <addr_start> [<addr_end> [<addr_incr_mask> | <addr_incr>]]] [source <addr> ] [exp <exp-value>] [ttl <ttl-max>] [reply [mode [ipv4 | router-alert | no-reply]] [pad-tlv]] [output {interface <tx-interface>} [nexthop <nexthop ip addr>]] [flags {fec | ttl}] [hashkey ipv4 | ipv4-label-set {bitmap <bitmap_size>}]
Configuring Segment Routing MPLS IGP for MPLS Ping and Traceroute
ping mpls ipv4 <prefix/prefix_length> [fec-type [ldp | bgp | generic | isis | ospf]] [sr-path-type [ip | sid | strict-sid]] [destination <addr_start> [<addr_end> [<addr_incr_mask> | <addr_incr>]]] [source <addr>] [exp <exp-value>] [pad <pattern>] [ttl <ttl>] [reply [mode [ipv4 | router-alert | no-reply]] [dscp <dscp-bits>] [pad-tlv]] [verbose] [output {interface <tx-interface>} [nexthop <nexthop ip addr>]] [{dsmap | ddmap [l2ecmp]} [hashkey {none | {ipv4 | ipv4-label-set {bitmap <bitmap_size>}}] traceroute mpls [multipath] ipv4 <prefix/prefix_length> [fec-type [ldp | bgp | generic | isis | ospf]] [sr-path-type [ip | sid | strict-sid]] [timeout <seconds>] [destination <addr_start> [<addr_end> [<addr_incr_mask> | <addr_incr>]]] [source <addr> ] [exp <exp-value>] [ttl <ttl-max>] [reply [mode [ipv4 | router-alert | no-reply]] [pad-tlv]] [output {interface <tx-interface>} [nexthop <nexthop ip addr>]] [flags {fec | ttl}] [hashkey ipv4 | ipv4-label-set {bitmap <bitmap_size>}]
Verifying Segment Routing OAM Using Cisco IOS CLI
This section provides a summary on the main Command Line Interfaces (CLIs) that are needed to verify segment routing OAM feature(s). Ping and traceroute commands illustrate the operation and output over IGP (OSPF SR), ISIS SR, and SR-TE. Change the actual tunnel numbers and IP addresses based on the actual values needed and enabled in the configurations.
- Verifying Segment Routing Traffic Engineering OAM Operations
- Verifying Segment Routing OAM OSPF Using CLI
- Verifying Segment Routing OAM IS-IS Using CLI
- Verifying MPLS Ping and Traceroute for IGP Segment ID
Verifying Segment Routing Traffic Engineering OAM Operations
The following traceroute command displays SR-TE OAM operations:
SR_Device#traceroute mpls traffic-eng tunnel 1005 verbose Tracing MPLS TE Label Switched Path on Tunnel1005 Active LSP, timeout is 2 seconds Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. 0 100.103.1.1 100.103.1.2 MRU 1500 [Labels: implicit-null/22/22 Exp: 0/0/0], RSC 0 l 1 100.103.1.2 103.104.1.2 MRU 1500 [Labels: implicit-null/22 Exp: 0/0] 3 ms, ret code 15, RSC 0 l 2 103.104.1.2 104.105.1.2 MRU 1500 [Labels: implicit-null Exp: 0] 3 ms, ret code 15, RSC 0 ! 3 104.105.1.2 2 ms, ret code 3
SR_Device#traceroute mpls ipv4 55.5.5.5/32 output interface tunnel1 force-explicit-null Tracing MPLS Label Switched Path to 55.5.5.5/32, timeout is 2 seconds Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. 0 100.101.1.1 MRU 1500 [Labels: 26000/explicit-null Exp: 0/0] L 1 100.101.1.2 MRU 1500 [Labels: 26000/explicit-null Exp: 0/0] 3 ms L 2 101.104.1.2 MRU 1500 [Labels: implicit-null/explicit-null Exp: 0/0] 6 ms ! 3 104.105.1.2 3 ms
The following tree traceroute command displays SR-TE OAM operations in ECMP scenarios:
SR_Device#traceroute mpls multi traffic-eng tunnel 1 verbose Starting LSP Multipath Traceroute for Tunnel1 Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. LL! Path 0 found, output interface Gi2 nexthop 100.101.1.2 source 50.0.0.0 destination 127.0.0.0 0 100.101.1.1 100.101.1.2 MRU 1500 [Labels: 26000 Exp: 0] multipaths 0 L 1 100.101.1.2 101.102.1.2 MRU 1500 [Labels: 26000 Exp: 0] ret code 8, RSC 0 multipaths 2 L 2 101.102.1.2 102.105.1.2 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8, RSC 0 multipaths 1 ! 3 102.105.1.2, ret code 3 multipaths 0 L! Path 1 found, output interface Gi2 nexthop 100.101.1.2 source 50.0.0.0 destination 127.0.0.1 0 100.101.1.1 100.101.1.2 MRU 1500 [Labels: 26000 Exp: 0] multipaths 0 L 1 100.101.1.2 101.104.1.2 MRU 1500 [Labels: 26000 Exp: 0] ret code 8, RSC 0 multipaths 2 L 2 101.104.1.2 104.105.1.2 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8, RSC 0 multipaths 1 ! 3 104.105.1.2, ret code 3 multipaths 0 LL! Path 2 found, output interface Gi3 nexthop 100.103.1.2 source 50.0.0.0 destination 127.0.0.0 0 100.103.1.1 100.103.1.2 MRU 1500 [Labels: 26000 Exp: 0] multipaths 0 L 1 100.103.1.2 102.103.1.1 MRU 1500 [Labels: 26000 Exp: 0] ret code 8, RSC 0 multipaths 2 L 2 102.103.1.1 102.105.1.2 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8, RSC 0 multipaths 1 ! 3 102.105.1.2, ret code 3 multipaths 0 L! Path 3 found, output interface Gi3 nexthop 100.103.1.2 source 50.0.0.0 destination 127.0.0.1 0 100.103.1.1 100.103.1.2 MRU 1500 [Labels: 26000 Exp: 0] multipaths 0 L 1 100.103.1.2 103.104.1.2 MRU 1500 [Labels: 26000 Exp: 0] ret code 8, RSC 0 multipaths 2 L 2 103.104.1.2 104.105.1.2 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8, RSC 0 multipaths 1 ! 3 104.105.1.2, ret code 3 multipaths 0 Paths (found/broken/unexplored) (4/0/0) Echo Request (sent/fail) (10/0) Echo Reply (received/timeout)
Verifying Segment Routing OAM OSPF Using CLI
You need to specify the fec type specifically when performing the ping or traceroute for the prefixes which span across IGP boundaries. For example, when a prefix is redistributed to OSPF from ISIS domain then specify the fec type ISIS. When the ping or traceroute is performed within the IGP domain then you do not need to mention fec type explicitly. Provide generic fec type generic when the user does not know the IGP protocol on the destination node. When SR path type is not mentioned, default SR path type IP is taken.
The following ping commands are used to illustrate SR OAM when the underlying network is OSPF.
As per the above topology example, at the head end R1, SR-TE tunnel is created with the destination as R3. The SR-TE tunnel is created with explicit path option to pass through R6 and R7. The SR-TE path is, R1---R6----R7----R3, when the IP traffic ingress at R1.
Device#ping mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type ip verbose Sending 2, 72-byte MPLS Echos to IGP Prefix SID(OSPF) FEC 5.5.5.5/32, timeout is 2 seconds, send interval is 0 msec: Select segment routing IP imposition path. Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. ! size 72, reply addr 2.4.0.4, return code 3 ! size 72, reply addr 2.4.0.4, return code 3 Success rate is 100 percent (2/2), round-trip min/avg/max = 1/1/1 ms Total Time Elapsed 4 ms
Note | Using the multipath option, both the paths can be traced for the destination. |
Device# ping mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type sid verbose Sending 1, 72-byte MPLS Echos to IGP Prefix SID(OSPF) FEC 5.5.5.5/32, timeout is 2 seconds, send interval is 0 msec: Select segment routing prefix SID path. Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. ! size 72, reply addr 2.4.0.4, return code 3 Success rate is 100 percent (1/1), round-trip min/avg/max = 1/1/1 ms Total Time Elapsed 3 ms
The following traceroute commands display SR OAM when the underlying network is OSPF.
To trace the IP route path when the incoming traffic to R1 is the native IP, the below command is used at the end of R1.
Device#traceroute mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type ip verbose Tracing MPLS Label Switched Path to IGP Prefix SID(OSPF) FEC 4.4.4.4/32, timeout is 2 seconds Select segment routing IP imposition path. Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'l' - Label switched with FEC change, 'd' - see DDMAP for return code, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. 0 1.2.0.1 1.2.0.2 MRU 1500 [Labels: 16002/16005 Exp: 0/0], RSC 0 L 1 1.2.0.2 3.3.3.3 MRU 1500 [Labels: 16005 Exp: 0] 2 ms, ret code 8, RSC 0 L 2 3.3.3.3 3.4.0.4 MRU 1500 [Labels: implicit-null Exp: 0] 1 ms, ret code 8, RSC 0 ! 3 3.4.0.4 1 ms, ret code 3
Device#traceroute mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type sid verbose
Device#traceroute mpls multipath ipv4 4.4.4.4/32 fec-type ospf sr-path-type ip verbose Type escape sequence to abort. LL! Path 0 found, output interface Et0/1 nexthop 1.2.0.2 //path R1-R6-R7-R3 source 1.1.1.1 destination 127.0.0.0 0 1.2.0.1 1.2.0.2 MRU 1500 [Labels: 16666 Exp: 0] multipaths 0 L 1 1.2.0.2 2.4.0.4 MRU 1500 [Labels: 16666 Exp: 0] ret code 8, RSC 0 multipaths 1 L 2 2.4.0.4 4.6.0.6 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8, RSC 0 multipaths 1 ! 3 4.6.0.6, ret code 3 multipaths 0 LL! Path 1 found, output interface Et0/2 nexthop 1.3.0.3 //path R1-R4-R5-R3 source 1.1.1.1 destination 127.0.0.0 0 1.3.0.1 1.3.0.3 MRU 1500 [Labels: 16666 Exp: 0] multipaths 0 L 1 1.3.0.3 3.4.0.4 MRU 1500 [Labels: 16666 Exp: 0] ret code 8, RSC 0 multipaths 1 L 2 3.4.0.4 4.6.0.6 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8, RSC 0 multipaths 1 ! 3 4.6.0.6, ret code 3 multipaths 0 Paths (found/broken/unexplored) (2/0/0) Echo Request (sent/fail) (6/0) Echo Reply (received/timeout) (6/0) Total Time Elapsed 23 ms
Device#traceroute mpls multipath ipv4 4.4.4.4/32 fec-type ospf sr-path-type sid verbose
Verifying Segment Routing OAM IS-IS Using CLI
The following ping commands are used to display SR OAM when the underlying network is IS-IS:
Device# ping mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type ip verbose
Device# ping mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type sid verbose
Device# ping mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type strict-sid verbose
Device# ping mpls ipv4 4.4.4.4/32 sr-path-type ip verbose
Device# ping mpls ipv4 4.4.4.4/32 sr-path-type sid verbose
Device# ping mpls ipv4 4.4.4.4/32 sr-path-type strict-sid verbose
The following traceroute commands display SR OAM when the underlying network is IS-IS. When multipath option is enabled, all ECMP paths are returned.
Device# traceroute mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type ip verbose
Device# traceroute mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type sid verbose
Device# traceroute mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type strict-sid verbose
Device# traceroute mpls multipath ipv4 4.4.4.4/32 fec-type isis sr-path-type ip verbose
Device# traceroute mpls multipath ipv4 4.4.4.4/32 fec-type isis sr-path-type sid verbose
Device# traceroute mpls multipath ipv4 4.4.4.4/32 fec-type isis sr-path-type strict-sid verbose
Verifying MPLS Ping and Traceroute for IGP Segment ID
Use the following command SR network with IGP validation:
ping|traceroute mpls [multipath] ipv4 <prefix> [fec-type bgp |generic|ldp|isis|ospf] [sr-path-type ip|sid|strict-sid]
Use the following command to verify MPLS TE tunnel OAM when the tunnel LSP is a SR-TE LSP.
ping|traceroute mpls traffic-eng tunnel <tunnelid>
Additional References for Segment Routing OAM Support
Related Documents
Related Topic |
Document Title |
---|---|
Cisco IOS commands |
Feature Information for Segment Routing OAM Support
The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.
Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Feature Name |
Releases |
Feature Information |
---|---|---|
Segment Routing OAM Support |
Cisco IOS XE Release 3.17 S |
The Segment Routing OAM feature provides support for Nil-FEC (forwarding equivalence classes) LSP Ping and Traceroute functionality. The Nil-FEC LSP ping and traceroute operation are simply extension of regular MPLS ping and trace route. |
Verifying Segment Routing OAM Using CLI |
Cisco IOS XE Everest 16.6.1 Cisco IOS XE Fuji 16.7.1 |
This feature provides the Command Line Interfaces (CLIs) that are needed to verify segment routing OAM feature(s). Ping and traceroute commands display the operation and output over IGP (OSPF SR, IS-IS SR), and SR-TE. The following commands were introduced or modified: ping mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type ip verbose, ping mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type sid verbose, ping mpls ipv4 4.4.4.4/32 fec-type isis sr-path-type strict-sid verbose, ping mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type ip verbose, ping mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type sid verbose, traceroute mpls traffic-eng tunnel 1005 verbose, traceroute mpls ipv4 55.5.5.5/32 output interface tunnel1 force-explicit-null, traceroute mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type ip verbose, traceroute mpls ipv4 4.4.4.4/32 fec-type ospf sr-path-type sid verbose, traceroute mpls multipath ipv4 4.4.4.4/32 fec-type ospf sr-path-type sid verbose. In Cisco IOS XE Fuji 16.7.1, this feature is supported on Cisco 4000 Series Integrated Service Routers. |