Frame Mode MPLS – Multiprotocol Label Switching Part 2

Joe Doran | Computers | Friday, May 15th, 2009

MPLS Part I provides a summary Multiprotocol Label Switching and the features it provides as a WAN switching service. In Part 2, 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 Multiprotocol Label Switching terminology out of the way. This terminology is directly out of RFC 3031, which defines the Multiprotocol Label Switching Architecture.

FEC – a group of IP packets which are forwarded in the same manner (e.g., over the same path, with the same forwarding treatment)

label – a short 4 byte physically contiguous identifier which is used to identify a FEC, usually of local significance.

label swap – the basic forwarding operation consisting of looking up an incoming label to determine the outgoing label, encapsulation, port, and other data handling information.

label swapping – a forwarding paradigm allowing streamlined forwarding of data by using labels to identify classes of data packets which are treated indistinguishably when forwarding.

label switched hop – the hop between two MPLS nodes, on which forwarding is done using labels.

label switched path – The path through one or more LSRs at one level of the hierarchy followed by a packet in a particular FEC.

label switching router – a Multiprotocol Label Switch node that is capable of forwarding 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

MPLS edge node – an MPLS node connecting a Multiprotocol Label Switch domain with a node which is outside of the domain, either because it does not run MPLS, or because it is in a different MPLS domain. Note that if a LSR has a neighboring host which is not running MPLS, that that Label Switch Router is an Multiprotocol Label Switched edge node.

Multiprotocol Label Switch egress node – an Multiprotocol Label Switch 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 our terminology out of the way, let’s begin by downloading the MPLS topology and Multiprotocol Label Switching cabling and IP addressing schemes we are going to be working with, and then start prepping all our devices for the MPLS portion of the lab. First, we’ll have to 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. Following the cabling scheme provided, these these subnets are in 172.16.13.0/28, 172.16.12.0/28, and 172.16.15.0/28, respectively. The local IP address assignments are shown below:

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

We need to continue configuring the interfaces on the remaining devices in the same manner. One of the requirements of MPLS is that Cisco Express Forwarding be enabled, which it should be enabled by default on most modern IOS releases, but enabling it is simple enough with the following command:

MPLS1(config)#ip cef

MPLS1(config)#^Z

MPLS1#

Cisco Express Forwarding needs to be enabled on every MPLS device. The specifics of Multiprotocol Label Switching reliance on CEF will be covered in later labs. Right now we are just excited to get an MPLS network configured and operational. After we have all our interfaces configured we will need to enable an interior gateway protocol. I’m choosing to use Enhanced Interior Gateway Routing Protocol because of its support for unequal cost load-balancing, which we are going to use in our more advanced MPLS configurations. For the scenarios I have provided here, you can enable Enhanced Interior Gateway Routing Protocol on each MPLS device 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 you have done that on each of your MPLS devices, 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 there are multiple routes for several of the subnets. We are eventually 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 examine how Multiprotocol Label Switching interacts with Cisco Express Forwarding.

Since we are done getting our lab ready for MPLS it is the moment we have all been waiting for. It is time to get MPLS operational on this network, and it is easier than you would ever believe. First, we are going to look at how Multiprotocol Label Switching “labels” packets. The MPLS label is right between the layer 2 frame header, and the layer 3 packet header. With an MPLS label being 4 bytes long, it is possible that we can cause Maximum Transmission Unit violations (..and consequently fragmentation) on traditional ethernet networks such as the one we are using in this lab. That being said, it is important to increase the MTU by at least 4 bytes if we are using only a single label. In Multiprotocol Label Switching stacked label environments it will be necessary to bump the MTU even further to 1508 or 1512. For our labs I’m going to go ahead and 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.

These two little details are going to be important for our interface configurations. To get these interfaces talking MPLS, 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 here that I caught some LDP console output. The Label Distribution Protocol formed an adjacency with another Multiprotocol Label Switching device. There are several commands we can use now to verify that we’ve got MPLS working. Since this post is starting to get rather lengthy I’m just going to rattle them off real quick, and more detail can follow in Part III.

The first command shows the MPLS forwarding table. You’ll see the incoming label, the outgoing label(s), the destination prefix, and the next hop IP. This is a pretty self-explanatory table, 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. Right now we’re just really exciting to see Multiprotocol Label Switching labels working in our network.

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 we will use 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 final command for Multiprotocol Label Switching Part II shows the mpls ip bindings. The “imp-null” is another way of seeing Penultimate Hop Popping at work. The “inuse” indicator shows that the outgoing label is isntalled in the Multiprotocol Label Switching 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 III soon.

About the Author:

Powered by WordPress | Theme by Roy Tanck | Free SEO by Court's Internet Marketing School | Get Tranquility White WP Theme