[c-nsp] MPLS OAM behavior on ASR9k/ASR920

Marcin Kurek md.kurek at gmail.com
Tue Aug 1 04:54:26 EDT 2017


Hi all,

I'm playing a bit in the lab to understand MPLS OAM operation and I 
think I see difference in how different routers behave.
My lab scenario looks like below:

R1 (ASR9006) ---- R2 (ASR9001) --- R3 (ASR920) ---- R4 (ASR920)

I have configured IGP and LDP. I'm sourcing MPLS LSP Ping from R1 to R4.

Quoting MPLS Enabled Applications book:

(...) several requirements become apparent regarding the probes and 
their handling:

1. The probes must follow exactly the same path as the data packets.
2. The probes must be delivered to the control plane of the LSR on which 
they ended their MPLS path for verification
3. The probes must contain enough information about the FEC to allow the 
receiving LSR to determine if it is indeed the correct egress.

If filter LDP packets on R3's interface towards R2 effectively breaking 
LDP adjacency, LSP becomes unlabeled on R2, but the OAM probe is NOT 
punted to the RSP on ASR9001. It is label switched to R3, which consume 
the packet and generate reply like this:

Type escape sequence to abort.

f      size 100, reply addr 10.3.4.3, return code 10
f      size 100, reply addr 10.3.4.3, return code 10
f      size 100, reply addr 10.3.4.3, return code 10
f      size 100, reply addr 10.3.4.3, return code 10
f      size 100, reply addr 10.2.4.2, return code 10

I'm okay with that behavior for a number of reasons:
1.  R2 gets regular labeled packet, even though the LSP is broken it has 
no means to punt the packet (no MPLS Router Alert Label, no TTL=1).
2. The OAM probe is packet switched to R3, which consume it (because it 
is pure IP packet now, destination IP is = 127/8 and there is Router 
Alert IP Option set)
3. R3 knows what label value to expect for this FEC. It doesn't get it, 
so it reports FEC mismatch.

If I break LDP between R3 and R4, the LSP becomes broken on R3. But the 
difference is that on ASR920 the packet seem to be punted.

Jul 31 04:02:25.175: MPLS process: Te0/0/24: rx: Len 114 Stack {18 0 
254} - ipv4 data s:10.1.2.1 d:127.0.0.1 ttl:1 tos:0 prot:11
*Jul 31 04:02:25.175: FIBfwd-proc: packet routed to 
TenGigabitEthernet0/0/25 10.3.4.4(0)
*Jul 31 04:02:25.175: lfd_mpls_packet_exception: Process level 
exception=0 datatype=1 hdr_pid 4, pak 0x37E88900, pak ns 0x37E891AE, pak 
ds 0x37E8919C, pak datasize 114, pak encsize is 18
*Jul 31 04:02:25.175: lfd_mpls_packet_exception: except_data dataptr 
0x37E891AE inlabel_ptr 0x37E891AA local_label 0x12/0x0 end_of_lsp 0x0 
pwid 0x0
*Jul 31 04:02:25.175: LSPV: Generic LSPV rx packet handler , Pak TTL 253

So, even though labeled packet came in, it fell into some sort of 
exception (?) and was consumed by LSPV process.

Why the difference? How does the ASR920 know to punt this probe packet?

Should the probe packet be punted on device on which the LSP ends, or 
can it be punted also on next device? Does it even matter?

Many thanks,
Marcin Kurek












More information about the cisco-nsp mailing list