Penultimate hop popping (PHP) is a function performed by certain routers in an MPLS enabled network. It refers to the process whereby the outermost label of an MPLS tagged packet is removed by a label switch router (LSR) before the packet is passed to an adjacent label edge router (LER). The benefit is that the LSR has to do a label lookup anyway and it doesn't make a difference whether this results in a label swap or pop. However, for the LER this saves one cycle of label lookup.
The process is important in a Layer 3 MPLS VPN environment as it reduces the load on the LER. If this process didn't happen, the LER would have to perform at least 2 label lookups:
In large, loaded networks the additional time required for second label lookup can make a difference in the overall forwarding performance and reduce buffering.
PHP functionality is achieved by the LER advertising a label with a value of 3 to its neighbours. This label is defined as "implicit-null" and informs the neighbouring LSR(s) to perform PHP.