One of the readers of my “When would an MPLS LSR have Untagged output label?” post made an interesting comment:
When a loopback network is advertised as 18.104.22.168/16, it's seen as »pop tag« on the neighboring router and I can't see it in the »show mpls forwarding« printout on the local router. What's going on?
As explained in the “When would an MPLS LSR have Untagged output label?” post, the Untagged (also displayed as No label in recent IOS releases) value means that the Label Switch Router (LSR) cannot use the inbound label to decide what to do with the packet and has to perform layer-3 lookup.
In most cases, an LSR using MPLS for IP routing can advertise an implicit null label to its upstream neighbors to indicate it wants to receive an IP packet, not a labeled packet. The upstream LSR performs Penultimate Hop Popping (PHP) as indicated by a Pop tag (recently Pop Label) entry in its LFIB. The LSR we’re discussing has just saved a lookup operation, as it doesn’t have to perform label lookup followed by an IP lookup.
In these cases, the LSR is allocating labels to IP prefixes only if it has received corresponding labels from downstream LSRs. The untagged IP prefixes thus never appear in the Label Forwarding Information Base (LFIB) and in the show mpls forwarding display.
Sometimes a router must receive a labeled packet from the upstream LSR (PHP is not an option). There are two well-known scenarios: Label-controlled ATM (LC-ATM) where the MPLS label is part of ATM cell headers and MPLS VPN, where the inbound label (also) indicates the VRF to use. In both cases, you’ll see No label entries in LFIB for directly connected or aggregate routes. In the LC-ATM case, you’ll also see No label entries associated with all IP destinations for which the next-hop router has not advertised a label.