I have often seen that people often confuses between MPLS explicit null and Implicit null label value (I was among those) so in this post will try to ease your confusion on this 🙂
Before starting with these label values, I hope you are aware of MPLS PHP (Penultimate Hop Popping) feature. If you are not let me explain….
Take a look at the below picture, Ingress LSR and Egress LSR are routers which have customer connections on each side and LSRs in figure are inner MPLS routers.
In Normal MPLS operation, IPv4 packet when comes to Egress LSR, will have MPLS Label on the top of IP Header. Egress LSR will do 2 operations and 2 look ups. One in MPLS table and other in IP Routing Table to send the packet to appropriate Customer interface. However these 2 operations increases the memory and CPU consumption on the Egress LSR. To avoid these 2 lookups on Egress, Egress LSR initially send a special label value of 3 to “next-to-last LSR” (called the penultimate LSR). This label 3 is called the IPv4 Implicit Null label. When an LSR receives an MPLS header in which the label is set to 3, it always POPs the header i.e., it removes the top label.
This procedure is called Penultimate Hop Popping (PHP).
So what is Explicit Null?
Ok, when a packet or Ethernet frame is encapsulated in MPLS, you have the option of copying the IP precedence or 802.1p bits to the three CoS bits of the MPLS header i.e. EXP Bits.
If a POP is performed at the penultimate LSR, the EXP bits in the MPLS header are no longer available as a reference for queuing and the packet is queued on the outgoing interface according to the CoS behavior of the underlying payload (in Ipv4 packet, it will be ToS field). An explicit null (Label Value 0 for IPv4), on the other hand, leaves the MPLS header in place until it reaches the egress, preserving the LSP CoS behavior across the entire LSP.
So that’s all for these reserved label values. If you still have any queries, please let me know.
7 thoughts on “MPLS Explicit and Implicit null Label”
Hi Mohit, so using Explicit null the qos information will be delivered to edge router. via ip pkt?
It will still be MPLS Packet only as Label Pop is not performed on Penultimate router and edge router needs to look at both MPLS and IP Packet for CoS and forwarding decision.
What about the BGP VPN Label, it will still be present and router can use it’s EXP right ?
Hi Saya.. thats right.. if 2 labels are present then even after PHP Egress PE can use VPN Label for QoS.. However for applications where only one label is used then explicit label 0 can be used to preserve the QoS
When the PHP happens the router, why don’t the router copy the EXP bits to the MPLS label at the bottom of the stack? Just like the TTL value in the MPLS headers get copied over to IP header.