Jumat, 16 Oktober 2009

Multiprotocol Label Switching Traffic Engineering

Paymin

Multiprotocol Label Switching Traffic Engineering by Richard Hijinx

In this MPLS article we will look at Multiprotocol Label Switching Traffic Engineering cisco ccie certification. ipnetworksllc. com. Before getting too far into this I want to point out that MPLS traffic engineering does not support by all routing protocols. If you plan to deploy MPLS traffic engineering you are going to be limited to using OSPF or ISIS. With that we have to depart form routing protocol implementation used in MPLS part II which was mistakenly EIGRP.

Let's jump right in but be sure you have grabbed the MPLS Lab Topology ipnetworksllc. com cisco ccie certification MPLS_Topology. jpg IP Address Scheme ipnetworksllc. com cisco ccie certification MPLS_CRL. pdf. If you have followed through from Multiprotocol Label Switching Parts I II you will want to modify your routing protocol to be OSPF as we will be using OSPF in this article. I won't be going over the details of OSPF configuration here as they are quite simple. The 2nd change we have to make to all the routers in our MPLS topology is the addition of Loopback addresses to support consistent OSPF router id configuration also in order to support the end points of our Multiprotocol Label Switching traffic engineering tunnels. The IP scheme for the Loopback addresses is as follows:

MPLS1 10. 0. 0. 1 32

MPLS2 10. 0. 0. 2 32

MPLS3 10. 0. 0. 3 32

MPLS4 10. 0. 0. 4 32

MPLS5 10. 0. 0. 5 32

MPLS6 10. 0. 0. 6 32

MPLS7 10. 0. 0. 7 32

We will need to be sure to advertise these addresses via OSPF as they will need to be globally routable for the tunnels that we are creating in support of future MPLS labs as they become available. With that being done we are going to begin the configuration of MPLS Traffic Engineering. As stated in Multiprotocol Label Switching Part II it important to have Cisco Express Forwarding cisco ccie certification. ipnetworksllc. com 2009 05 intro to cisco multi layer switching. html enabled. It can be enabled as follows:

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #ip cef

MPLS1 config #^Z

MPLS1#

With every Multiprotocol Label Switching device participating in MPLS Traffic Engineering you will need to enable Multiprotocol Label Switching Traffic Engineering support as follows:

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #mpls traffic eng tunnels

MPLS1 config #^Z

MPLS1#

Next we are going to enable each Multiprotocol Label Switching device's interface to support an RSVP based Multiprotocol Label Switching Traffic Engineering Tunnel which is done as follows:

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #int fa1 0

MPLS1 config if #mpls traffic eng tunnels

MPLS1 config if #ip rsvp bandwidth 100

MPLS1 config if #^Z

MPLS1#

Since the routers have been enabled to support Multiprotocol Label Switching Traffic Engineering it time to make sure our routing protocol is ready also. We are using OSPF in this example so that is what we will demonstrate here:

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #router ospf 1

MPLS1 config router #mpls traffic eng router id Loopback0

MPLS1 config router #mpls traffic eng area 0

MPLS1 config router #^Z

MPLS1#

Moving on it time for us to define the paths that we want our traffic to take through the network. I am going to show the configuration of 3 different paths here. I will make a point about these later so please do all three of them for clarity later on.

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #ip explicit path name ACG enable

MPLS1 cfg ip expl path #next address 172. 16. 13. 3

MPLS1 cfg ip expl path #next address 172. 16. 37. 3

MPLS1 cfg ip expl path #next address 172. 16. 37. 7

MPLS1 cfg ip expl path #next address 10. 0. 0. 7

MPLS1 cfg ip expl path #^Z

MPLS1#

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #ip explicit path name ABDFG enable

MPLS1 cfg ip expl path #next address 172. 16. 12. 2

MPLS1 cfg ip expl path #next address 172. 16. 24. 2

MPLS1 cfg ip expl path #next address 172. 16. 24. 4

MPLS1 cfg ip expl path #next address 172. 16. 46. 4

MPLS1 cfg ip expl path #next address 172. 16. 46. 6

MPLS1 cfg ip expl path #next address 172. 16. 67. 6

MPLS1 cfg ip expl path #next address 172. 16. 67. 7

MPLS1 cfg ip expl path #next address 10. 0. 0. 7

MPLS1 cfg ip expl path #^Z

MPLS1#

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #ip explicit path name AEG enable

MPLS1 cfg ip expl path #next address 172. 16. 15. 5

MPLS1 cfg ip expl path #next address 172. 16. 57. 5

MPLS1 cfg ip expl path #next address 172. 16. 57. 7

MPLS1 cfg ip expl path #next address 10. 0. 0. 7

MPLS1 cfg ip expl path #^Z

MPLS1#

We are doing the same thing on MPLS7. The relevant portion of the running config of MPLS7 is shown below:

ipexplicit pathnameGCAenable

next address172. 16. 37. 3

next address172. 16. 13. 3

next address172. 16. 13. 1

next address10. 0. 0. 1

ipexplicit pathnameGFDBAenable

next address172. 16. 67. 6

next address172. 16. 46. 6

next address172. 16. 46. 4

next address172. 16. 24. 4

next address172. 16. 24. 2

next address172. 16. 12. 2

next address172. 16. 12. 1

next address10. 0. 0. 1

ipexplicit pathnameGEAenable

next address172. 16. 57. 5

next address172. 16. 15. 5

next address172. 16. 15. 1

next address10. 0. 0. 1

We have enabled MPLS Traffic Engineering support for all of our devices. We also configured OSPF support for MPLS Traffic Engineering now we have created the traffic engineering paths through the Multiprotocol Label Switching network. It is now time for us to begin building the tunnels. This is really easy but it also a very powerful tool to use in controlling the flow of traffic through your network. We will start by creating a tunnel interface setting the destination encapsulation defining an MPLS path specifying the relative load each path will take as shown here note we are creating three tunnels one for each of our paths :

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #interface Tunnel7

MPLS1 config if #ip unnumbered Loopback0

MPLS1 config if #tunnel destination 10. 0. 0. 7

MPLS1 config if #tunnel mode mpls traffic eng

MPLS1 config if #tunnel mpls traffic eng priority 7 7

MPLS1 config if #tunnel mpls traffic eng bandwidth 100

MPLS1 config if #tunnel mpls traffic eng path option 1 explicit name ACG

MPLS1 config if #tunnel mpls traffic eng load share 10

MPLS1 config if #^Z

MPLS1#

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #interface Tunnel702

MPLS1 config if #ip unnumbered Loopback0

MPLS1 config if #tunnel destination 10. 0. 0. 7

MPLS1 config if #tunnel mode mpls traffic eng

MPLS1 config if #tunnel mpls traffic eng priority 7 7

MPLS1 config if #tunnel mpls traffic eng bandwidth 100

MPLS1 config if #tunnel mpls traffic eng path option 1 explicit name ABDFG

MPLS1 config if #tunnel mpls traffic eng load share 10

MPLS1 config if #^Z

MPLS1#

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #interface Tunnel703

MPLS1 config if #ip unnumbered Loopback0

MPLS1 config if #tunnel destination 10. 0. 0. 7

MPLS1 config if #tunnel mode mpls traffic eng

MPLS1 config if #tunnel mpls traffic eng priority 7 7

MPLS1 config if #tunnel mpls traffic eng bandwidth 100

MPLS1 config if #tunnel mpls traffic eng path option 1 explicit name AEG

MPLS1 config if #tunnel mpls traffic eng load share 10

MPLS1 config if #^Z

MPLS1#

Now I offer the running configuration of the tunnel interfaces created on MPLS7 since that is where the endpoint of the tunnel is terminated:

interfaceTunnel1

ipunnumberedLoopback0

tunneldestination10. 0. 0. 1

tunnelmodemplstraffic eng

tunnelmplstraffic engpriority77

tunnelmplstraffic engbandwidth100

tunnelmplstraffic engpath option1explicitnameGCA

tunnelmplstraffic engload share10

noroutingdynamic

interfaceTunnel102

ipunnumberedLoopback0

tunneldestination10. 0. 0. 1

tunnelmodemplstraffic eng

tunnelmplstraffic engpriority77

tunnelmplstraffic engbandwidth100

tunnelmplstraffic engpath option1explicitnameGFDBA

tunnelmplstraffic engload share10

noroutingdynamic

interfaceTunnel103

ipunnumberedLoopback0

tunneldestination10. 0. 0. 1

tunnelmodemplstraffic eng

tunnelmplstraffic engpriority77

tunnelmplstraffic engbandwidth100

tunnelmplstraffic engpath option1explicitnameGEA

tunnelmplstraffic engload share10

noroutingdynamic

Now we are going to verify our tunnels have come up as we expected. We do that with the following command:

MPLS1#showmplstraffic engtunnelsbrief

SignallingSummary:

LSPTunnelsProcess:running

RSVPProcess:running

Forwarding:enabled

Periodicreoptimization:every3600seconds,nextin125seconds

Periodicauto bwcollection:disabled

TUNNELNAMEDESTINATIONUPIFDOWNIFSTATE PROT

MPLS1_t710. 0. 0. 7 Fa1 0up up

MPLS1_t70210. 0. 0. 7 Fa1 1up up

MPLS1_t70310. 0. 0. 7 Fa2 0up up

MPLS7_t110. 0. 0. 1Fa1 0 up up

MPLS7_t10210. 0. 0. 1Fa1 1 up up

MPLS7_t10310. 0. 0. 1Fa2 0 up up

Displayed3 of3 heads,0 of0 midpoints,3 of3 tails

It looks like all THREE of our tunnels are up. Now it's time to find out what a wrench looks like when thrown at an MPLS tunnel. We'll start by looking at the MPLS Forwarding Table also known as the LFIB for the tunnel's destination endpoint. This is shown below:

MPLS1#shomplsforwarding table10. 0. 0. 7

LocalOutgoingPrefixBytestagOutgoingNextHop

tagtagorVCorTunnelIdswitchedinterface

323210. 0. 0. 7 320Fa2 0172. 16. 15. 5

3210. 0. 0. 7 320Fa1 0172. 16. 13. 3

Weird. Where is the third tunnel path Well since the Label Forwarding Information Base relies on the Forwarding Information Base let's look at the Forwarding Information Base. Again this is below:

MPLS1#showipcef10. 0. 0. 7detail

10. 0. 0. 7 32,version58,epoch0,per destinationsharing

0packets,0bytes

taginformationset

localtag:32

via172. 16. 15. 5,FastEthernet2 0,0dependencies

trafficshare1

nexthop172. 16. 15. 5,FastEthernet2 0

validadjacency

tagrewritewithFa2 0,172. 16. 15. 5,tagsimposed:32

via172. 16. 13. 3,FastEthernet1 0,0dependencies

trafficshare1

nexthop172. 16. 13. 3,FastEthernet1 0

validadjacency

tagrewritewithFa1 0,172. 16. 13. 3,tagsimposed:32

0packets,0bytesswitchedthroughtheprefix

tmstats:external0packets,0bytes

internal0packets,0bytes

Huh. Yeah let's see what is going on. The FIB is received form Layer 3 Engine in the control plane. Let's have a look at the routing table to see what on earth is going on.

MPLS1#showiproute10. 0. 0. 7

Routingentryfor10. 0. 0. 7 32

Knownvia"ospf1",distance110,metric3,typeintraarea

Lastupdatefrom172. 16. 15. 5onFastEthernet2 0,00:22:54ago

RoutingDescriptorBlocks:

*172. 16. 15. 5,from10. 0. 0. 7,00:22:54ago,viaFastEthernet2 0

Routemetricis3,trafficsharecountis1

172. 16. 13. 3,from10. 0. 0. 7,00:22:54ago,viaFastEthernet1 0

Routemetricis3,trafficsharecountis1

That didn't do much good other than to demonstrate the dependence of the LFIB on the FIB the Forwarding Information Base on the routing table. You should have noticed in all of the above commands that these are all physical interfaces none of them are the tunnel interfaces. We need to have OSPF to use the tunnel interfaces in its calculations. We can do THAT by creating the following configuration on each tunnel interface:

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #int tunnel 7

MPLS1 config if #tunnel mpls traffic eng autoroute announce

MPLS1 config if #^Z

MPLS1#

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #int tunnel 702

MPLS1 config if #tunnel mpls traffic eng autoroute announce

MPLS1 config if #^Z

MPLS1#

MPLS1#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS1 config #int tunnel 703

MPLS1 config if #tunnel mpls traffic eng autoroute announce

MPLS1 config if #^Z

MPLS1#

MPLS7#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS7 config #int tunnel 1

MPLS7 config if #tunnel mpls traffic eng autoroute announce

MPLS7 config if #^Z

MPLS7#

MPLS7#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS7 config #int tunnel 102

MPLS7 config if #tunnel mpls traffic eng autoroute announce

MPLS7 config if #^Z

MPLS7#

MPLS7#conf t

Enter configuration commands one per line. End with CNTL Z.

MPLS7 config #int tunnel 103

MPLS7 config if #tunnel mpls traffic eng autoroute announce

MPLS7 config if #^Z

MPLS7#

Alrighty. Let's verify our configs as we did earlier. Again let's start by viewing the LFIB:

MPLS1#shomplsforwarding table10. 0. 0. 7

LocalOutgoingPrefixBytestagOutgoingNextHop

tagtagorVCorTunnelIdswitchedinterface

32Poptag[T]10. 0. 0. 7 320Tu7point2point

Poptag[T]10. 0. 0. 7 320Tu702point2point

Poptag[T]10. 0. 0. 7 320Tu703point2point

[T]ForwardingthroughaTSPtunnel.

Viewadditionaltagginginfowiththe'detail'option

Spectacular We have 3 paths now to the destination endpoint. Let's take a closer look so let's see the detailed view:

MPLS1#shomplsforwarding table10. 0. 0. 7detail

LocalOutgoingPrefixBytestagOutgoingNextHop

tagtagorVCorTunnelIdswitchedinterface

32Poptag10. 0. 0. 7 320Tu7point2point

MAC Encaps=14 18,MRU=1512,TagStack30,viaFa1 0

CA020ADC001CCA000ADC001C88470001E000

Nooutputfeatureconfigured

Per destinationload sharing,slots:036912

Poptag10. 0. 0. 7 320Tu702point2point

MAC Encaps=14 18,MRU=1512,TagStack32,viaFa1 1

CA010ADC001CCA000ADC001D884700020000

Nooutputfeatureconfigured

Per destinationload sharing,slots:1471013

Poptag10. 0. 0. 7 320Tu703point2point

MAC Encaps=14 18,MRU=1512,TagStack31,viaFa2 0

CA040ADC001CCA000ADC003888470001F000

Nooutputfeatureconfigured

Per destinationload sharing,slots:2581114

This is view that offers some information about the physical interfaces used which slots are used in each tunnel for traffic distribution among the tunnels. Now THAT is some good stuff. We know it working now but we are going to go ahead view the Forwarding Information Base to clarify our understanding of the relationship between the LFIB the FIB. The FIB is shown below:

MPLS1#showipcef10. 0. 0. 7detail

10. 0. 0. 7 32,version63,epoch0,per destinationsharing

0packets,0bytes

taginformationset

localtag:32

via10. 0. 0. 7,Tunnel7,0dependencies

trafficshare1

nexthop10. 0. 0. 7,Tunnel7

validadjacency

tagrewritewithTu7,point2point,tagsimposed:30

via10. 0. 0. 7,Tunnel702,0dependencies

trafficshare1

nexthop10. 0. 0. 7,Tunnel702

validadjacency

tagrewritewithTu702,point2point,tagsimposed:32

via10. 0. 0. 7,Tunnel703,0dependencies

trafficshare1

nexthop10. 0. 0. 7,Tunnel703

validadjacency

tagrewritewithTu703,point2point,tagsimposed:31

0packets,0bytesswitchedthroughtheprefix

tmstats:external0packets,0bytes

internal0packets,0bytes

Now we view the routing table which shows the relationship between the Forwarding Information Base the Layer 3 Engine below:

MPLS1#showiproute10. 0. 0. 7

Routingentryfor10. 0. 0. 7 32

Knownvia"ospf1",distance110,metric3,typeintraarea

Lastupdatefrom10. 0. 0. 7onTunnel703,00:09:26ago

RoutingDescriptorBlocks:

*10. 0. 0. 7,from10. 0. 0. 7,00:09:26ago,viaTunnel7

Routemetricis3,trafficsharecountis1

10. 0. 0. 7,from10. 0. 0. 7,00:09:26ago,viaTunnel702

Routemetricis3,trafficsharecountis1

10. 0. 0. 7,from10. 0. 0. 7,00:09:26ago,viaTunnel703

Routemetricis3,trafficsharecountis1

Finally we are going to do a traceroute with the probe option set to 3 since we have 3 paths. Notice the results do some reflection. I'm not giving the answer to this away here but keep it in mind. This topology was chosen to bring different potential issues to your attention. Check it out:

MPLS1#traceroute10. 0. 0. 7probe3

Typeescapesequencetoabort.

Tracingtherouteto10. 0. 0. 7

1172. 16. 12. 2[MPLS:Label32Exp0]112msec

172. 16. 15. 5[MPLS:Label31Exp0]96msec

172. 16. 13. 3[MPLS:Label30Exp0]96msec

2172. 16. 24. 4[MPLS:Label32Exp0]88msec

172. 16. 57. 792msec

172. 16. 37. 796msec

I hope you've enjoyed all that has been provided here. If you deal with Multiprotocol Label Switching I'm sure you will find it useful. Thanks goodnight.

Joe Doran is cisco certified engineer working toward the prestigious Cisco CCIE RS Certification cisco ccie certification. ipnetworksllc. com. His blog details the journey provides free tips insight into this highly sought after certification track. Joe has an article on Configure Frame Relay Switch cisco ccie certification. ipnetworksllc. com 2009 04 adding frame relay to your cisco cert. html Multiprotocol Label Switching Traffic Engineering