for this network. Because this label is sent, the
pop action (removing the top label in the MPLS label stack
instead of swapping the top label with the next-hop label) for
Network X is used on Router C, using a Penultimate Hop Popping
(PHP) function. The packet sent to Router D will not be
labeled. Receiving Label Advertisement
Router B can
now map the entry for Network X in the router’s FIB and the
local label 25 in the router’s LFIB to the next-hop label 47
that Router B receives from the downstream neighbor, Router C.
Figure illustrates how LSRs update their tables. Router E has
allocated label 26 for Network X and has received a label from
Router B (label 25) and a label from Router C (label 47) for
Network X.
Content 4.2 Assigning MPLS Labels to
Packets 4.2.3 Populating the LFIB Table An
IGP populates the routing tables in all routers in an MPLS
domain. The LDP propagates labels for these networks. Each
router determines the router’s own shortest path using an IGP.
The LFIB table is populated by indicating the action that
should occur when forwarding the packet based on labels. This
action might be to swap a label, remove the label (un-tag), add
an outgoing label, or to “pop” the label. The LDP adds labels
into the FIB and LFIB tables. Only those labels that come from
the next-hop router are inserted into the outgoing field in the
LFIB table. In Figure , Router B first assigns label 25 locally
to network X and then receives label 47 from the upstream
router. Its LFIB table can be completed for network X by
inserting 47 as the outgoing label. Note
In Figure ,
label distribution occurs from right to left, and packet
forwarding occurs from left to right.
Content 4.2
Assigning MPLS Labels to Packets 4.2.4
Packet Propagation Across an MPLS Network How a packet is
forwarded depends on whether the packet is an IP packet or
labeled packet. An incoming IP packet is forwarded by using the
FIB table and can be sent out as an IP packet or as a labeled
IP packet. An incoming labeled packet is forwarded by using the
LFIB table and sent out as a labeled IP packet. If a router
does not receive a label from the next-hop router, the label is
removed and an unlabeled IP packet is sent. Figure illustrates
how IP packets are propagated across an MPLS domain. The steps
are as follows: Step 1 An IP packet destined for
Network X arrives at Router A. Step 2 Router A labels a
packet destined for Network X by using the next-hop label 25
(CEF switching by using the FIB table). Step 3 Router A
sends the packet toward Network X with the MPLS label 25.
Step 4 Router B swaps label 25 with label 47 using the
LFIB. Step 5 Router B forwards the packet to Router C
(label switching by using the LFIB table). Step 6
Router C removes (pops) the label. Step 7 Router C
forwards the unlabeled packet to Router D (label removed by
using the LFIB table). When a router receives an IP packet, the
lookup done is an IP lookup. In Cisco IOS, this means that the
packet is looked up in the CEF table. When a router receives a
labeled packet, the lookup is done in the LFIB table of the
router. The router knows that it receives a labeled packet or
an IP packet by looking at the protocol field in the Layer 2
header. If a packet is forwarded by either Cisco Express
Forwarding (CEF) (IP lookup) or by LFIB (label lookup), the
packet can leave the router either labeled or unlabeled.
Content 4.2 Assigning MPLS Labels to Packets
4.2.5 Penultimate Hop Popping Using Penultimate
Hop Popping (PHP), an LSR removes the outermost label of an
MPLS-tagged packet before passing the packet to an adjacent
Edge LSR. The process reduces the load on the Edge LSR.
Implementing PHP in networks that offer certain quality of
service (QoS) features takes careful consideration, and
consequently only certain routers in an MPLS-enabled network
perform the task. For example, egress routers at the edge of
the MPLS network would not use PHP. Without PHP, the Edge LSR
would have to perform at least two label lookups: -
The outer label: This label indicates that the packet
was destined to have the label stripped on this router.
- The inner label: This label identifies which
Virtual Routing/Forwarding (VRF) instance to use for the
subsequent IP routing lookup
PHP reduces the CPU
load on the Edge LSR by distributing work among the Edge LSR’s
neighbor routers. PHP improves MPLS performance by eliminating
routing lookups on egress LSRs and optimizes MPLS performance
by reducing the number of table lookups on the egress router.
When the downstream router realizes that the router is the
final node in the label switched path (LSP), the router can
distribute the label value of 3 to the upstream router at the
time the path is established. The upstream router makes the
next-hop determination for the packet based on the inbound
label that the router receives. The router then forwards the
packet without a label, allowing the downstream node to perform
a single lookup. Note
A pop label is encoded with a
value of 3 for LDP. This label instructs upstream routers to
remove the label instead of swapping the label with label 3.
The display in the LIB table of the router will be
imp-null rather than the value of 3. Figure shows how
labels are propagated and used in a typical frame mode MPLS
network without PHP enabled. The check marks show which tables
are used on individual routers. The egress router in this
example must perform a lookup in the LFIB table to determine
whether the label must be removed and if a further lookup in
the FIB table is required. PHP removes the requirement for a
double lookup to be performed on egress LSRs. The term pop
means to remove the top label in the MPLS label stack instead
of swapping the top label with the next-hop label. When
popping, the last router before the egress router removes the
top label. Figure shows how a predefined label pop, which
corresponds to the pop action in the LFIB, is propagated on the
first hop or the last hop, depending on the perspective. The
following is a step-by-step explanation: Step 1 IP
packet enters the MPLS cloud at Router A, the Ingress LSR;
Step 2 A FIB lookup is performed and the packet is labeled
with 17, the next hop; Step 3 The pack travels to
Router B an LFIB lookup is performed and the label is switched
to Label: 18, which is the next hop to Router C; Step
4 Router C does an LFIB lookup and removes (that is, pops)
the label; Step 5 Router C sends the packet to router
D, the Egress LSR. PHP slightly optimizes MPLS performance by
eliminating one LFIB lookup at the egress edge LSR.
Content 4.3 Implementing Frame Mode MPLS
4.3.1 The Procedure to Configure MPLS There are
three steps to configuring an MPLS: Step 1 Configure
CEF: CEF must be running as a prerequisite to running MPLS
on a Cisco router. Step 2 Configure MPLS on a frame
mode interface: All MPLS backbone interfaces should be
enabled for MPLS. Step 3 (Optional) Configure the
maximum transmission unit (MTU) size in label switching: To
prevent labeled packets from exceeding the maximum size, you
may need to increase the MTU on the MPLS interface.
Content 4.3 Implementing Frame Mode MPLS
4.3.2 Step 1: Configure CEF To enable MPLS, you
must first enable CEF switching. Figure lists two
considerations when enabling CEF. CEF switching is commonly
enabled globally on a router. However, it can also be enabled
on individual interfaces. Enabling CEF or distributed CEF
(dCEF) operations globally on a router also enables CEF on all
interfaces that support CEF by default. If you want to turn off
CEF on a particular interface, you can do so. In situations
where you want to have control over the range of labels that
LDP assigns, you may need to establish the range for the label
pool. To enable CEF, use the ip cef command in global