The Concept of PHP in MPLS -- Penultimate Hop Popping

Well before starting with the concept of PHP, one should now the basic concept of MPLS and how MPLS works, Like how the labels are pushed, POP and label swapping is done in the MPLS network.

If you remember the basic concepts of the MPLS, the PE-CE router have the routing exchange information by using static routing or by the use of any routing protocol. If there is enterprise network comes into picture which need MPLS solution with more than 50 subnets to be advertised they generally uses BGP protocol between PE-CE routers.

If I am using these terms PE- CE, it means PE- Provider Edge router ( MPLS Provider ) and CE -Customer Edge router ( Enterprise Company ).

So first of all if i am talking about the concept of PHP make sure you know that PHP is the part of the MPLS and is only used in Provider's MPLS Network. So all you know that instead of routing instances in the MPLS core, there is labels exchange by using TDP/LDP protocol and data plane traffic is flowed via internal routing protocol ( IS-IS or OSPF ) at the initial stage and then the traffic flows via TDP/LDP by exchanging the Labels. So LSP- Label Switch Path is there for specific traffic.

Lets take an example We have customer 1 and we need to route the traffic from one location to another location across the globe, then there is LSR's and the specified LSP's from one PE to another PE across the MPLS domain to reach from the head office and to the remote site. Every LSR switched or exchanged only one label and send the frame format to next LSR.

At the last PE router, so have two Labels ( one is MP-iBGP label and other is LDP Label ), to push the customer traffic to the CE router, PE router needs to POP both the labels and send the default customer traffic to CE route. It is like two operations done on the other PE router and have the high CPU utilization as well.


To save the two operations on a remote PE router and save the utilization of the PE router, there is one concept comes into the picture called as PHP- Penultimate Hop Popping.

Fig 1.1 - MPLS PHP
Fig 1.1 - MPLS PHP

What is that ? Why we are using ? Is this concept solve the above issue of two POP labels at PE router?

Yes, It is so by PHP concept, we done POP operation of LDP label at the second last LSR router so that when it sends the label to the last PE router it has only one label in the stack and that label is MP-iBGP label. Now when last PE router gets the update from the LSR with only one Label of MP-iBGP, it matches the same with the update it received from the remote PE router about the specified customer and then it pushed that update to the CE router for which it belongs.

Well now I am sure you understand the concept of the PHP in the MPLS domain and also understand how push/pop/label swapping is done in the MPLS core domain.

We will come up with the further more sessions on MPLS domain and will help you with the real scenarios on the MPLS network which including the concept of MP-iBGP updates and LDP operations.