Segment Routing OAM Support

Effective Cisco IOS XE Everest 16.6.1, you can verify that the operation with Segment Routing OAM label switched protocol ping and traceroute (SR OAM LSPV).


Note

OAM Support is available only on the Cisco RSP2 Module.

Restrictions for Segment Routing OAM Support

  • Ping and traceroute do not display proper output over SR-TE tunnels using verbatim path option.
  • Ping and traceroute are unsupported with SR-TE Static auto tunnel, BGP Dynamic TE, and On-demand next hop auto tunnels.

Information About Segment Routing-OAM Support

Segment Routing-OAM Support

The Segment Routing-OAM Support feature provides support for Nil-FEC LSP Ping/Trace functionality. Nil-FEC LSP Ping/Trace functionality support Segment Routing and MPLS Static. It also acts as an additional diagnostic tool for all other LSP types. This feature allows operators to provide the ability to freely test any label stack by allowing them to specify the following:

  • Label stack
  • Outgoing interface
  • Nexthop address

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.

LSP Ping Operation for Nil FEC target

The LSP Ping/Traceroute is used in identifying LSP breakages. The nil-fec target type can be used to test the connectivity for a known label stack. Follow the existing LSP ping procedure (for more information, refer MPLS LSP Ping/Traceroute), with the following modifications:

  • Build the echo request packet with the given label stack;
  • Append explicit null label at the bottom of the label stack;
  • Build echo request FTS TLV with target FEC Nil FEC and label value set to the bottom label of the label stack, which is explicit-null.

How to Diagnose Segment Routing with LSP Ping and Trace Route Nil FEC Target

Use 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
   {{ipv4 <target>/<mask> [fec-type {bgp | generic | ldp}] |
    {pseudowire <peer addr> <vc-id> [segment<segment-number>]} |
    {traffic-eng {<tunnel interface> |
          {p2p <sender> <endpoint>
    <tun-id> <ex-tun-id> <lspid>} |
          {p2mp <p2mp-id> <sender>
     <tun-id><ex-tun-id> <lspid>}} |
{tp <tunnel-tp interface> lsp <working | protect | active>}} |
  {mldp {p2mp | mp2mp}
{{ipv4 <source> <group>} |
 {ipv6 <source> <group>} |
 {vpnv4 <rd> <source> <group>} |
 {vpnv6 <rd> <source> <group>} |
 {hex <opaque type> <opaque value>} |
  {mdt <vpnid> <mdt-num>} |
 {static-id <lsp-identifier>} |
 {global-id <global-identifier>}}} |
 {nil-fec {labels <comma separated labels>}}
 [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-explicit-null]
 [force-disposition ra-label]
 [output {interface <tx-interface>} [nexthop <nexthop ip addr>]]
[{dsmap | ddmap [l2ecmp]} [hashkey {none | {ipv4 | ipv4-label-set {bitmap <bitmap_size>}}]
 [flags {fec | ttl}]
 [segment {all | <lower-segment-number> [upper-segment-number]}
 [jitter <milliseconds>]
 [responder-id <ip addr> | egress <ipaddr>]
   NOTE: responder-id for mldp/ egress for p2mp te
 [entropy-label <label-value>]

For more information, see ping mpls .

Using LSP Traceroute for Nil FEC Target


trace mpls
   {{ipv4 <target>/<mask> [fec-type {bgp | generic | ldp}]} |
    {traffic-eng {<tunnel interface> |
          {p2p <sender> <endpoint>
       <tun-id> <ex-tun-id> <lspid>} |
      {p2mp <p2mp-id> <sender>
     <tun-id><ex-tun-id> <lspid>}} |
    {mldp {p2mp | mp2mp}
  {{ip <source> <group>} |
   {vpn <rd> [<source> <group>]} |
   {hex <opaque type> <opaque value>} |
    {mdt <vpnid> <mdt-num>} |
   {static-id <lsp-identifier>} |
   {global-id <global-identifier>}}}
    {pseudowire <next-pe-address> <pwid> [segment
     <segment-number/lower-segment-number>[<upper-segment-limit>]]} |
    {tp <tunnel-tp interface> lsp <working | protect | active>}} |
   {nil-fec {labels <comma separated labels>}}
   [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]]
   [force-explicit-null]
   [output {interface <tx-interface>} [nexthop <nexthop ip addr>]]
   [flags {fec | ttl}]
   [entropy-label <label-value>]
[hashkey ipv4 | ipv4-label-set {bitmap <bitmap_size>}]

For more information, see traceroute mpls .

Example: 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# show 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
SR231-arizona#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
SR231-arizona#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