MPLS Part I provides a summary
Multiprotocol Label Switching and the features it provides as a WAN switching service. In Part II, we will go over some important terminology and then get started with a simple Frame Mode Multiprotocol Label Switching lab configuration. This lab configuration is going to get a little repetitive because we are going to be configuring seven of these devices for Frame Mode Multiprotocol Label Switching. This is going to come in handy when we proceed to more challenging labs where we work on some pretty interesting and powerful configurations offered by Multiprotocol Label Switching, such as MPLS Traffic Engineering.
First off, let's get the nitty gritty MPLS terminology out of the way. This terminology is directly out of RFC 3031, which defines the Multiprotocol Label Switching Architecture.
forwarding equivalence class - a collection of IP packets which are forwarded in the same manner (over the same path, with the same forwarding treatment)
label - a short fixed length physically contiguous identifier which is used to identify a FEC. These are typically of local significance.
label swap - the forwarding operation that consists of looking up an incoming label and determining the outgoing label, the encapsulation, the port, and other data handling information.
label swapping - allows streamlined forwarding of data by using labels to identify classes of data packets which are treated the same when forwarding.
label switched hop - the hop between two Multiprotocol Label Switched nodes, on which forwarding is done using labels.
label switched path - A path through one or more LSRs at one level of the hierarchy followed by a packet in a particular forwarding equivalence class.
LSR - a Multiprotocol Label Switch node capable of forwarding native L3 packets.
label stack - an ordered set of labels
Multiprotocol Label Switch domain - a contiguous group of nodes that operate MPLS routing and forwarding and are also in one Routing or Administrative Domain
Multiprotocol Label Switch edge node - an Multiprotocol Label Switched node that connects a Multiprotocol Label Switch domain with another node that is outside the domain, either because it does not run MPLS, or because it is in a different domain. If a LSR has a neighboring host which is not running MPLS, that Label Switch Router is an Multiprotocol Label Switch edge node.
Multiprotocol Label Switch egress node - an MPLS edge node in its role in handling traffic as it leaves an Multiprotocol Label Switch domain.
MPLS ingress node - an MPLS edge node in its role in handling traffic as it enters an Multiprotocol Label Switch domain.
Now that we've got some important terminology out of the way, let's start off by downloading the
MPLS topology and
Multiprotocol Label Switching cabling and IP addressing schemes we will be working with, and then begin by prepping all our devices for the Multiprotocol Label Switching configuration portion of the lab. The first thing we have to do is get all these interfaces configured.
On MPLS1, I have three interfaces, with F1/0 connected to MPLS3, F1/1 connected to MPLS2, and F2/0 connected to MPLS5. As detailed in the cabling scheme, you can see that these subnets are in 172.16.13.0/28, 172.16.12.0/28, and 172.16.15.0/28, respectively. Here's a quick overview of the local IP addresses:
MPLS1#show ip interface brief Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES NVRAM administratively down down
FastEthernet1/0 172.16.13.1 YES NVRAM up up
FastEthernet1/1 172.16.12.1 YES NVRAM up up
FastEthernet2/0 172.16.15.1 YES NVRAM up up
FastEthernet2/1 unassigned YES NVRAM administratively down down
FastEthernet3/0 unassigned YES NVRAM administratively down down
FastEthernet3/1 unassigned YES NVRAM administratively down down
As shown below, the interface configuration on these is pretty easy.
MPLS1#sho run int fa1/0 Building configuration...
Current configuration : 147 bytes
!
interface FastEthernet1/0
ip address 172.16.13.1 255.255.255.240
duplex auto
speed auto
end
MPLS1#sho run int fa1/1 Building configuration...
Current configuration : 147 bytes
!
interface FastEthernet1/1
ip address 172.16.12.1 255.255.255.240
duplex auto
speed auto end
MPLS1#sho run int fa2/0 Building configuration...
Current configuration : 147 bytes
!
interface FastEthernet2/0
ip address 172.16.15.1 255.255.255.240
duplex auto
speed auto
end
Continue configuring the rest of the interfaces on the devices in the same manner. One important requirement of Multiprotocol Label Switching is that Cisco Express Forwarding be enabled, which is the default on most modern IOS releases, but enabling it is simple with the following command:
MPLS1(config)#ip cef MPLS1(config)#^Z
MPLS1#
CEF will need to be enabled on every Multiprotocol Label Switching device. We will get more into the specifics of Multiprotocol Label Switching reliance on CEF in later lessons. Right now we are just excited to get an MPLS network rocking and rolling. After we have all our interfaces configured we are going to enable an routing protocol. In this case I'm choosing to use EIGRP because of its support for unequal cost load-balancing, which we are going to use in some of our more advanced MPLS labs. For the scenarios I have provided here, you can enable EIGRP on each MPLS router with these very simple commands:
MPLS1#conf t Enter configuration commands, one per line. End with CNTL/Z.
MPLS1(config)#router eigrp 100 MPLS1(config-router)#no auto-summary MPLS1(config-router)#network 172.16.0.0 MPLS1(config-router)#^Z MPLS1#
Once EIGRP is active on every Multiprotocol Label Switching router, let's take a couple minutes to verify our routing tables with this command:
MPLS1#show ip route eigrp 100 172.16.0.0/28 is subnetted, 14 subnets
D 172.16.56.0 [90/30720] via 172.16.15.5, 00:00:35, FastEthernet2/0
D 172.16.57.0 [90/30720] via 172.16.15.5, 00:00:28, FastEthernet2/0
D 172.16.45.0 [90/30720] via 172.16.15.5, 00:00:38, FastEthernet2/0
D 172.16.46.0 [90/33280] via 172.16.15.5, 00:00:36, FastEthernet2/0
[90/33280] via 172.16.13.3, 00:00:36, FastEthernet1/0
[90/33280] via 172.16.12.2, 00:00:36, FastEthernet1/1
D 172.16.36.0 [90/30720] via 172.16.13.3, 00:00:32, FastEthernet1/0
D 172.16.37.0 [90/30720] via 172.16.13.3, 00:00:28, FastEthernet1/0
D 172.16.34.0 [90/30720] via 172.16.13.3, 00:00:36, FastEthernet1/0
D 172.16.24.0 [90/30720] via 172.16.12.2, 00:00:37, FastEthernet1/1
D 172.16.25.0 [90/30720] via 172.16.15.5, 00:00:38, FastEthernet2/0
[90/30720] via 172.16.12.2, 00:00:38, FastEthernet1/1
D 172.16.23.0 [90/30720] via 172.16.13.3, 00:00:37, FastEthernet1/0
[90/30720] via 172.16.12.2, 00:00:37, FastEthernet1/1
D 172.16.67.0 [90/33280] via 172.16.15.5, 00:00:32, FastEthernet2/0
[90/33280] via 172.16.13.3, 00:00:32, FastEthernet1/0
Notice the multiple routes for several of the subnets. When the time comes, we are going to manipulate some of the routing metrics so that these don't have the same feasible distance and then enable unequal cost load balancing so we can take a good look at how Multiprotocol Label Switching interacts with CEF.
With our lab prepped and ready for action with Multiprotocol Label Switching it is the moment we have all been waiting for. It is time to get MPLS running through this network, and it is easier than you would ever believe. It is important to understand how Multiprotocol Label Switching "labels" packets. The MPLS label sits right between the layer 2 header, and the layer 3 header. With an MPLS label being 4 bytes long, we can cause MTU violations (..and consequently fragmentation) on traditional ethernet networks such as the one we are using in this lab. With that being said, we need to increase the MTU by at least 4 bytes if we are using only a single label. In MPLS stacked label environments you may want to go even further with an Maximum Transmission Unit of 1508 or even 1512. I am going to have you use 1512 so we can play with stacked labels in later labs.
The second thing to consider in this lesson is the Multiprotocol Label Switching label binding protocol we are going to use for label exchange. I am going to keep it simple here and just tell you we are going to use the standards-based Label Distribution Protocol (LDP), although Cisco offers the Tag Distribution Protocol (TDP) which is functionally equivalent as far as I know.
Armed with those two little pieces of knowledge we are ready to get these interfaces talking MPLS. To make this happen, all we need to do from interface configuration mode on each of our interfaces:
MPLS1(config)#int fa1/0 MPLS1(config-if)#mpls label protocol ldp MPLS1(config-if)#mpls mtu 1512 MPLS1(config-if)#mpls ip MPLS1(config-if)#^Z *May 4 23:12:30.687: %LDP-5-NBRCHG: LDP Neighbor 172.16.37.3:0 (2) is UP
MPLS1#
You'll notice some LDP console output. The Label Distribution Protocol formed an adjacency with another MPLS device. There are a few different commands we can use now to verify that we've got Multiprotocol Label Switching configured properly.
Our first show command shows the MPLS forwarding table. You'll see the incoming label, the outgoing label(s), the destination prefix, and the next hop IP. Looking at this table it is pretty self-explanatory, with the exception of the Outgoing label entry of "Pop tag." The is the indication of the infamous penultimate hop popping (yes that's a real term), but the details behind it are for later discussion. If you haven't worked with Multiprotocol Label Switching before, now is the time to get pretty excited.
MPLS1#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 172.16.23.0/28 0 Fa1/0 172.16.13.3
Pop tag 172.16.23.0/28 0 Fa1/1 172.16.12.2
17 Pop tag 172.16.24.0/28 0 Fa1/1 172.16.12.2
18 Pop tag 172.16.25.0/28 0 Fa2/0 172.16.15.5
Pop tag 172.16.25.0/28 0 Fa1/1 172.16.12.2
19 Pop tag 172.16.34.0/28 0 Fa1/0 172.16.13.3
20 Pop tag 172.16.36.0/28 0 Fa1/0 172.16.13.3
21 Pop tag 172.16.37.0/28 0 Fa1/0 172.16.13.3
22 Pop tag 172.16.45.0/28 0 Fa2/0 172.16.15.5
23 23 172.16.46.0/28 0 Fa2/0 172.16.15.5
21 172.16.46.0/28 0 Fa1/0 172.16.13.3
22 172.16.46.0/28 0 Fa1/1 172.16.12.2
24 Pop tag 172.16.56.0/28 0 Fa2/0 172.16.15.5
25 Pop tag 172.16.57.0/28 0 Fa2/0 172.16.15.5
26 24 172.16.67.0/28 0 Fa2/0 172.16.15.5
24 172.16.67.0/28 0 Fa1/0 172.16.13.3
The second command simply shows the local interfaces involved in Multiprotocol Label Switching operations:
MPLS1#show mpls interfaces Interface IP Tunnel Operational
FastEthernet1/0 Yes (ldp) No Yes
FastEthernet1/1 Yes (ldp) No Yes
FastEthernet2/0 Yes (ldp) No Yes
The 3rd and final command for Multiprotocol Label Switching Part 2 shows the multiprotocol label switching ip bindings. The "imp-null" is another instance of Penultimate Hop Popping at work. The "inuse" indicator shows that the outgoing label is in use and it is isntalled in the MPLS forwarding table.
MPLS1#show mpls ip binding 172.16.12.0/28
in label: imp-null
out label: imp-null lsr: 172.16.25.2:0
out label: 17 lsr: 172.16.57.5:0
out label: 16 lsr: 172.16.37.3:0
172.16.13.0/28
in label: imp-null
out label: 16 lsr: 172.16.25.2:0
out label: 16 lsr: 172.16.57.5:0
out label: imp-null lsr: 172.16.37.3:0
172.16.15.0/28
in label: imp-null
out label: 17 lsr: 172.16.25.2:0
out label: imp-null lsr: 172.16.57.5:0
out label: 17 lsr: 172.16.37.3:0
172.16.23.0/28
in label: 16
out label: imp-null lsr: 172.16.25.2:0 inuse
out label: 19 lsr: 172.16.57.5:0
out label: imp-null lsr: 172.16.37.3:0 inuse
172.16.24.0/28
in label: 17
out label: imp-null lsr: 172.16.25.2:0 inuse
out label: 18 lsr: 172.16.57.5:0
out label: 18 lsr: 172.16.37.3:0
172.16.25.0/28
in label: 18
out label: imp-null lsr: 172.16.25.2:0 inuse
out label: imp-null lsr: 172.16.57.5:0 inuse
out label: 19 lsr: 172.16.37.3:0
172.16.34.0/28
in label: 19
out label: 18 lsr: 172.16.25.2:0
out label: 20 lsr: 172.16.57.5:0
out label: imp-null lsr: 172.16.37.3:0 inuse
172.16.36.0/28
in label: 20
out label: 19 lsr: 172.16.25.2:0
out label: 21 lsr: 172.16.57.5:0
out label: imp-null lsr: 172.16.37.3:0 inuse
172.16.37.0/28
in label: 21
out label: 20 lsr: 172.16.25.2:0
out label: 22 lsr: 172.16.57.5:0
out label: imp-null lsr: 172.16.37.3:0 inuse
172.16.45.0/28
in label: 22
out label: 21 lsr: 172.16.25.2:0
out label: imp-null lsr: 172.16.57.5:0 inuse
out label: 20 lsr: 172.16.37.3:0
172.16.46.0/28
in label: 23
out label: 22 lsr: 172.16.25.2:0 inuse
out label: 23 lsr: 172.16.57.5:0 inuse
out label: 21 lsr: 172.16.37.3:0 inuse
172.16.56.0/28
in label: 24
out label: imp-null lsr: 172.16.57.5:0 inuse
out label: 23 lsr: 172.16.25.2:0
out label: 22 lsr: 172.16.37.3:0
172.16.57.0/28
in label: 25
out label: imp-null lsr: 172.16.57.5:0 inuse
out label: 24 lsr: 172.16.25.2:0
out label: 23 lsr: 172.16.37.3:0
172.16.67.0/28
in label: 26
out label: 24 lsr: 172.16.57.5:0 inuse
out label: 25 lsr: 172.16.25.2:0
out label: 24 lsr: 172.16.37.3:0 inuse
I had hoped to provide more details in this lab, but I'm getting tired, so I look forward to seeing you in MPLS Part 3 soon.