Understanding the Problem in MPLS CoS Classification
How EXP Bits Are Used for CoS in MPLS
Traffic is sent from VPN-A Site-1 → CE-1 → PE-1 → P-1 → PE-2 → CE-2.
The MPLS LSP (Label Switched Path) from PE-1 to PE-2 is expected to carry MPLS EXP bits, which are used for Class of Service (CoS) classification.
PE-2 should classify traffic based on EXP bits received in the MPLS label.
What Happens with PHP (Penultimate Hop Popping)?
By default, the penultimate router (P-1) pops the top MPLS label before sending the packet to PE-2.
Since the EXP bits are in the top MPLS label, they get removed along with the label.
This means that PE-2 no longer sees the correct EXP bits, leading to incorrect traffic classification.
Solution: Configure Explicit-Null on PE-2
Explicit Null (explicit-null) must be configured on PE-2 to ensure that P-1 does NOT remove the MPLS label.
Instead of removing the label, P-1 will send a label of 0 (for IPv4) or 2 (for IPv6) to PE-2.
This preserves the MPLS EXP bits, allowing PE-2 to classify the traffic correctly.
Evaluating the Answer Choices Again
✅ B. Configure the explicit-null statement on PE-2.
Correct, because:
PE-2 is the egress LSR, where Ultimate Hop Popping (UHP) must be enabled.
Configuring explicit-null ensures that P-1 does not remove the label, preserving the EXP bits for CoS classification at PE-2.
Configuration on PE-2:
set protocols mpls explicit-null
"Explicit-null must be configured on the egress LSR to prevent PHP from removing the top MPLS label, thereby preserving the EXP bits."
❌ A. Configure the explicit-null statement on PE-1.
Incorrect, because:
Explicit-null must be configured on the egress LSR (PE-2), not the ingress LSR (PE-1).
PE-1 only labels the traffic but does not control PHP behavior on P-1.
❌ C. Configure VPN prefix mapping for the PE-1_to_PE-2 LSP.
Incorrect, because:
VPN prefix mapping is used for mapping VPN routes to LSPs but does not solve the EXP bit issue.
The problem here is label removal (PHP), not route mapping.
❌ D. Set a static CoS value for the PE-1_to-PE-2 LSP.
Incorrect, because:
This does not preserve the original EXP bits, it only applies a static CoS value.
It’s a workaround, not a fix.
Final Answer: ✅ B. Configure the explicit-null statement on PE-2.
Key Takeaways
Penultimate Hop Popping (PHP) removes the outer MPLS label at P-1, which also removes the EXP bits used for CoS classification.
To keep EXP bits intact, configure explicit-null on the egress PE (PE-2).
This forces P-1 to send a label (0 for IPv4, 2 for IPv6) to PE-2, preserving the EXP bits for CoS classification.
Official Juniper Documentation Reference
???? Juniper MPLS CoS and PHP Behavior Guide
"To retain CoS EXP bits at the egress LSR, configure explicit-null on the egress PE. This prevents PHP from stripping the MPLS label before reaching the final PE router."
Submit