MPLS PHP – Penultimate Hop Popping
Penultimate Hop Popping is the operation where the outermost label is removed (MPLS POP) from the packet one hop before it’s destination and was implemented to reduce the load on the endpoint routers.
Without PHP the destination router would have to do two label label operations; one to remove the core label identifying the packet destination, and one to process the service label to identify the pseudowire or VRF.
PHP is achieved by the destination router advertising the implicit-null label 3 to it’s neighbor routers for his own loopback address and is the default behavior for LDP.
Implicit-null might be disabled by enabling explit-null. In most cases the default behavior is used and advised unless you need to keep some specific QoS parameters for the attached circuit.
My previous post about tLDP is a great example to explain the MPLS Penultimate Hop Popping operation.
As you can see the destination router advertises the implicit-null label for his loopback address, informing the upstream router to pop the core label.
The edge router receives a packet immediately identifying the destination pseudowire FEC or VRF without the need to perform two label operations.


nice explanation
The “destination” or “destination router” that you are referring to should be corrected to “provider edge” or “provider edge router”.
do we need to any configure any thing for this php behaviour
PHP does not works on ELSRs, core LSRs also advertise their directly connected prefixes as imp-null to other LSRs. I need to know the adv. of PHP within MPLS domain.
Secondly PHP does not work for prefixes not directly connected with Edge-LSRs, therefore no imp-null will be requested for them… and mostly the traffic is destined for prefixes not directly connected to ELSRs, for all such prefixes the Edge-LSR will still be doing two lookups..
whats the benefit of PHP???