Penultimate Hop Popping (Implicit Null)
As MPLS packets pass through an LSP the tail end MPLS router (the ultimate router) will by default instruct the penultimate router to not push an MPLS Shim Label onto any packets destined towards itself i.e the final hop of the LSP. The feature is often referred to as Penultimate Hop Popping (or PHP) and is used to reduce label and control plane overhead by popping the Shim Label on the penultimate router so the final router only needs to process the VPN label.
The tail end router terminating the LSP signals downstream to the penultimate router using a label value of 3, which is interpreted by the penultimate router as an instructionq to not push an MPLS Shim Label onto any packet destined for the final LSP hop; this can also be referred to as Implicit Null and is the default behaviour within Junos.
When Explicit Null is configured a label value of 0 is signalled to the penultimate router which instructs the router to push an MPLS Shim Label onto packets that are destined for the final hop. In certain cases the requirement for Explicit Null may be desirable, for example to maintain CoS values attributed to the LSP, as the CoS value would normally be discarded at the penultimate router if PHP were enabled.
When enabled Explicit Null will pass a label value of 0 downstream from the tail end router so should be applied at this point in the network.
For RSVP the feature is configured under the MPLS protocol heirarchy and will apply to all egress LSPs signalled by RSVP:
set protocols mpls explicit-null
To apply the feature to LDP the statement is configured directly under the LDP protocol heirarchy and will apply to all LDP signlled LSPs:
set protocols ldp explicit-null