Intermediate+

MPLS: Penultimate Hop Popping

The second-to-last router pops the label, so the egress router receives a plain IP packet and needs no label table at all.

Open this lab

Free interactive lab. No signup. Runs in your browser.

The scenario

The same three routers as the basics lab, PE1, P and PE2, between Host-A (10.0.1.10) and Host-B (10.0.3.10), with one difference in who pops. PE1 pushes label 16001 for 10.0.3.0/24. P, the penultimate hop, pops 16001 and sends the now unlabelled packet to PE2 at 10.0.20.2. PE2 receives plain IP and forwards it by its routing table. The reply is the mirror image: PE2 pushes 16010 for 10.0.1.0/24 and P pops it on the way to PE1 at 10.0.10.1. PE1 and PE2 have no label table entries at all. P has no IP route to either host network, and no router runs OSPF.

What you will work out

Understand penultimate hop popping (PHP): who removes the label, what the egress router does instead, and why networks do it.

Why this matters

PHP is the default behaviour in most production MPLS networks, so the last hop before a PE usually shows no label at all. Knowing that explains label tables that say 'pop' or 'implicit-null' one hop early, traceroutes whose final label disappears before the egress, and why explicit null exists for networks that need the label's QoS bits all the way to the edge.

Running it

MPLS: Penultimate Hop Popping opens on a canvas, already wired and addressed. Trace a packet through it hop by hop, or run the same topology live on real Linux network namespaces. How the two modes differ.

Open MPLS: Penultimate Hop Popping

Runs in your browser. No install, no signup, and the simulation starts instantly.

Open the lab →