MPLS Labels and Devices

In my introduction to MPLS I explained why we use MPLS and explained some of the basics of how we use labels for forwarding decisions. In this lesson, we’ll take a closer look at the MPLS labels, the devices that we use and how IP packets travel through the MPLS network.

MPLS Label Format

The MPLS header has been standardized, you can find it in RFC 3032. The header is pretty simple, here’s what it looks like:

MPLS Label Header

Here’s what the different fields are used for:

  • Label value: the name says it all, this is where you will find the value of the label.
  • EXP: these are the three experimental bits. These are used for QoS, normally the IP precedence value of the IP packet will be copied here.
  • S: this is the “bottom of stack” bit. With MPLS it’s possible to add more than one label, you’ll see why in some of the MPLS VPN lessons. When this bit is set to one, it’s the last MPLS header. When it’s set to zero then there is one or more MPLS headers left.
  • TTL: just like in the IP header, this is the time to live field. You you can use this for traces in the MPLS network. Each hop decrements the TTL by one.

The MPLS header is added in between the L2 and L3 header:

MPLS Header Between Layer 2 3

That’s why we call it a “layer 2.5” protocol. Here’s an example of what it looks like in wireshark:

wireshark capture mpls header

Above you have an example of the MPLS header in between the Ethernet and IP header. You can also see the different fields, this header uses label value 16. We don’t use QoS and since there is only one MPLS header, the bottom of label stack bit has been set.

Where did the label value come from? MPLS uses a protocol called LDP (Label Distribution Protocol) for this. You will learn about it in the next lesson.

MPLS Devices and Operations

Now you know what the MPLS labels look like, let’s talk about a bit about the different devices you will encounter in a MPLS network. Here’s an overview:

MPLS Network Topology

Above you will find three different routers:

  • CE (Customer Edge): this device is the last device in the customer’s network, it could be a L2 or L3 device. In my picture I used a router but for example, it could be a switch. This device does not use MPLS.
  • PE (Provider Edge): this device is owned by the ISP and sits at the edge of the ISP’s network. It has an important role…it receives packets or frames from the customer and will then add a MPLS label to it and forwards towards the core. Another common name for this device is LER (Label Edge Router).
  • P (Provider): this device connects to PE routers and other P routers. It has a simple job, it switches packets based on their labels or removes the labels. Another common name for this device is the LSR (Label Switch Router) or transit router.

There are three actions we can perform with labels:

We're Sorry, Full Content Access is for Members Only...

If you like to keep on reading, Become a Member Now! Here is why:

  • Learn any CCNA, CCNP and CCIE R&S Topic. Explained As Simple As Possible.
  • Try for Just $1. The Best Dollar You've Ever Spent on Your Cisco Career!
  • Full Access to our 655 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)

546 Sign Ups in the last 30 days

satisfaction-guaranteed
100% Satisfaction Guaranteed!
You may cancel your monthly membership at any time.
No Questions Asked!

Tags:


Forum Replies

  1. Hi Kumaran,

    These have to do with PHP (Penultimate Hop Popping).

    Imagine you have a couple of routers like this:

    CE1 - PE1 - P1 - P2 - PE2 - CE2

    Let’s say CE1 sends an IP packet meant for CE2. What happens is that PE1 adds a label and then it gets label switched from PE1 to P1 > P2 > PE2.

    To save PE2 a label lookup, we use PHP. This means that P2 will remove the label before forwarding it to PE2. This will save PE2 a label lookup.

    P2 knows that it has to do PHP because PE2 will tell it to. This is done with the implicit NULL label which has a value of 3. This i

    ... Continue reading in our forum

  2. Hi Rene,

    Hope you are doing great …

    I have some questions …

    1. What is the advantage Using PHP over Ultimate HOP popping . I am facing some confusion regarding why we will use PHP.
    2. Suppose 3 ldp Router connected serially … R1+R2+R3 , R1 has a prefix 1.1.1.1 that tag: imp-null and advertise to R2 . R2 also created Tag :16 for 1.1.1.1 and advertise to R1, R3 . Also R3 created Tag:20 for 1.1.1.1 and advertise to R2. So, R2 got those Tags for 1.1.1.1 : 1. Tag :imp-null from R1, 2. Tag: 16 (own creation), 3. Tag:20 from R3 . So my questions is how R2 create LFIB
    ... Continue reading in our forum

  3. Hi @Zaman.rubd

    Let’s look at an example of PHP first. Take a look at this picture:

    https://networklessons.com/wp-content/uploads/2015/08/mpls-device-label-operations.png

    In this example, P3 pops the label and forwards only the IP packet to PE2. The advantage here is that we saved a lookup for PE2. It only has to route the packet, not another lookup for the label.

    Without PHP, (that’s Ultimate Hop Popping), the egress router (PE2) has to pop the label and do a lookup in the IP routing table.

    PHP helps to move some of the load

    ... Continue reading in our forum

  4. Hi Gareth,

    https://cdn.networklessons.com/wp-content/uploads/2015/08/xcontrol-plane-rib-forwarding-plane-fib.png.pagespeed.a.ic.b7IHIdxA5T.png

    Each routing protocol has its own “RIB”. The OSPF LSDB can be called the OSPF RIB and the EIGRP topology table is the EIGRP RIB.

    The routing table can be considered the “main” RIB of the router.

    The FIB is your forwarding table, on Cisco routers, this is the CEF table. It doesn’t only contain L3 information like the RIB does but also L2 information (needed to reach the next hop).

    Here’s

    ... Continue reading in our forum

  5. Hello Chris

    In PHP, it is more appropriate to refer to the outer and inner label, although the top and bottom labels are also used as terminology. The top label is the outer and the bottom is the inner. So in PHP, it is the outer label that is removed by the Label Switch Router (LSR) before the packet is passed to the adjacent Label Edge Router (LER).

    In the case of MPLS VPN, a packet consists of two labels, the inner one is the VPN label and the outer one is the common MPLS label. So when PHP will be performed by an LSR it will remove only the outer label.

    ... Continue reading in our forum

24 more replies! Ask a question or join the discussion by visiting our Community Forum