Symptom
NCS540 MPLS Lable programming issue with FRR.
This setup has only IGP/LDP. No BGP.
Conditions
RP/0/RP0/CPU0:NCS540-M2#show controllers fia diagshell 0 "diag pp occ" location 0/0/cpu0
Tue Nov 7 11:20:20.562 UTC
Node ID: 0/0/CPU0
R/S/I: 0/0/0
InLIF Profile
=============
Bit 0 : DSCP remark preserve
Bit 1 : Unreserved
Bit 2 : Split Horizon Orientation
Bit 3 : Unreserved
OutLIF Profile
==============
Bit 0 : Split Horizon Orientation
Bit 1 : DSCP remark preserve
Bit 2 : Split Horizon Orientation
Bit 3 : Mpls encapsulation extended label
Bit 4 : Unreserved
Bit 5 : Mpls encapsulate swap or push action according to fwd code
RP/0/RP0/CPU0:NCS540-M2#
RP/0/RP0/CPU0:NCS540-M2#show controllers fia diagshell 0 "mod EDB_MPLS_PUSH_FORMAT[7] 6 1 MPLS_ACTION_OUTLIF_PROFILE=0x23" location 0/0/CPU0
Tue Nov 7 13:09:23.452 UTC
Node ID: 0/0/CPU0
R/S/I: 0/0/0
WRITE[EDB_MPLS_PUSH_FORMAT], DATA: 0x3002 0xe20000ff 0x55b5182e
RP/0/RP0/CPU0:NCS540-M2#show controllers fia diagshell 0 "get EPNI_MPLS_OUTLIF_PROFILE_PUSH_TO_SWAP_ENABLED" location 0/0/cpu0
Wed Nov 8 04:50:25.202 UTC
Node ID: 0/0/CPU0
R/S/I: 0/0/0
EPNI_MPLS_OUTLIF_PROFILE_PUSH_TO_SWAP_ENABLED.EPNI0[0x451]=0xffffffff00000000
:
outlif profile field in eedb entry is 6 bit value - with is mapped to 0-63 bit position in EPNI_MPLS_OUTLIF_PROFILE_PUSH_TO_SWAP_ENABLED to check enable/disable of swap operation based on mpls fwd code
according to eedb dumps - outlif profile is 0x3 - which seems not correct according to occ dump; which says 6th bit for push-to-swap.
Workaround
Remove the below command to make data plane work:
hw-module fib mpls ldp lsr-optimized