Penultimate Hop Popping (PHP)

Penultimate Hop Popping optimizes MPLS performance by removing the requirement for double lookup to be performed on PE router. The LIB table will show the value of imp-null.

When PHP is turned on the penultimate router remove the label (POP) from the packet if he sees that the destination packet is directly connected for the remote router. How he knows it? He sees that information in its MPLS forwarding table where he list that remote router got implicit null label for that destination. This improves performance by removing the requirement for double lookup to be performed on last router.

If the PHP function is turned of the penultimate router will not POP the label from the packet, so the last router has to perform two lookups. First to its MPLS forwarding table to find out that this packet is directly connected and second lookup into the routing table to identify the outgoing interface.

You can disable MPLS PHP feature by command #mpls ldp explicit-null. This is not recommended unless you do some QoS on MPLS, because the last router needs to see QoS settings in the MPLS label, which he is not able when the penultimate router POP the label. When the PHP is turned off, the penultimate router sees in the forwarding table outgoing label 0 and in its binding table now explicit null, not implicit null