Penultimate hop popping

Penultimate hop popping (PHP) is specified in RFC 3031 Section 3.16 and 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 (RFC 2547) 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:

  1. The outer label, identifying that the packet was destined to have its label stripped on this router.
  2. The inner label, to identify which Virtual Routing and Forwarding (VRF) instance to use for the subsequent IP routing lookup.

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.

edit