MPLS traffic engineering

Posted on April 4, 2010

Covering the basics, how to set up a MPLS traffic engineering tunnel. In our example I’ll be running ISIS as IGP and a 4 routers topology.

Diagram

Step 1: configure MPLS

MPLS configuration is straightforward

Globally

mpls ldp router-id Loopback0
mpls traffic-eng tunnels


At interface level

interface GigabitEthernet0/0
 mpls ip
 mpls traffic-eng tunnels

The interface level configuration must be enable on ALL interfaces on the path of the MPLS traffic engineering tunnel.

Step 2 : Configure IGP

I’ll be using ISIS with a basic configuration (all routers in a level 2 domain), all net’s will be configured on the form 49.000X.0000.0000.YYYY.00 where X will be 1 and YYYY will be the router number (1111 for router 1)

For the process

router isis
 net 49.0001.0000.0000.3333.00
 is-type level-2-only
 metric-style wide
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2

And at interface level

interface GigabitEthernet0/0
 ip router isis

mpls traffic-eng router-id
mpls traffic-eng level-2

Adjacency should fire up, you can check that is show clns neighbors

SPRack1R3#show clns neighbors

System Id      Interface   SNPA                State  Holdtime  Type Protocol
SPRack1R4      Se1/0.1     DLCI 304            Up     22        L2   IS-IS
SPRack1R6      Gi0/0       0023.33b1.d681      Up     8         L2   IS-IS

If adjacencies are up correctly you should see the router name as the System Id and not a number.

Step 3: Enable a RSVP path

RSVP will signal the path and reserve bandwidth for the MPLS traffic engineering tunnel according to configuration. RSVP is configured at interface level, there are 2 ways of setting the maximum reservable bandwidth

SPRack1R4(config-if)#ip rsvp bandwidth ?
  <1-10000000>  Reservable Bandwidth (kbps)
  <cr>

ip rsvp bandwidth with no option will assume that 75% of the interface bandwidth can be reserved and that a single flow can use those 75%. This can be checked with show ip rsvp interface

SPRack1R4(config-if)#do sh ip rsvp int g0/1
interface    allocated  i/f max  flow max sub max
Gi0/1        0          75M      75M      0

The second option is to specify the amount of reservable bandwidth per link, you can set 2 parameters, the Reservable Bandwidth which is the maximum amount that can be reserved on this interface and the Largest Reservable Flow which controls the maximum bandwidth that a single tunnel can use.

SPRack1R4(config-if)#ip rsvp bandwidth 20 ?
  <1-10000000>  Largest Reservable Flow (kbps)
  sub-pool      Reservable Bandwidth for Tunnel using sub pool
  <cr>

In our setup I’ll leave the bandwidth to the defaults as it’s just a lab.

Interface configuration

interface GigabitEthernet0/0
 bandwidth 100000
 ip rsvp bandwidth

The interface level RSVP configuration must be enable on ALL interfaces on the path of the MPLS traffic engineering tunnel.

At this point the basis are set, we are ready to build our MPLS Traffic Engineering tunnel.

Step 4: setting up the MPLS Traffic Engineering tunnel

We’ll be setting up a MPLS traffic engineering tunnel between R4 and R3 in 2 forms, the first setup will have an explicit path configured, the second one will be dynamic.
REMEMBER a TE tunnel is unidirectionnal !!

We’ll start with the basic config which is common to the 2 setups.

interface Tunnel0
 description TO-R3
 ip unnumbered Loopback0
 tunnel destination 24.1.3.3
 tunnel mode mpls traffic-eng
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth  64000
  • tunnel mode mpls traffic-eng : this will configure the tunnel as a MPLS Traffic Engineering tunnel
  • tunnel mpls traffic-eng bandwidth 64000: this will configure the reserved bandwidth for this tunnel
  • tunnel mpls traffic-eng autoroute announce : this will allow the tunnel to be advertised in the routing table. By default the MPLS traffic engineering tunnel will not be announced to the IGP
    SPRack1R4(config-if)#do sh run int tun 0 | i announce
    SPRack1R4(config-if)#
    SPRack1R4(config-if)#do sh ip route | i 24.1.3.3
    i L2    24.1.3.3/32 [115/20] via 24.1.34.3, Serial0/0/0.1
    
    SPRack1R4(config-if)#do sh run int tun 0 | i announce
     tunnel mpls traffic-eng autoroute announce
    SPRack1R4(config-if)#do sh ip route | i 24.1.3.3
    i L2    24.1.3.3/32 [115/20] via 24.1.3.3, Tunnel0
    SPRack1R4(config-if)#
    
  • tunnel mpls traffic-eng priority 7 7 : this configures the setup and hold priority of this tunnel (the lower the better, ranging from 0 to 7)the first number is the setup priority compared to other tunnel, if there isn’t enough bandwidth reservable for 2 tunnels the one with the lowest priority will be setup and the other one will stay down.
    the second number is the hold priority, it does the same thing than the setup priority but for holding the tunnel. If for example a link goes down and the reservable bandwidth is not enough to hold 2 tunnels the one with the highest priority will be brought down.

    SPRack1R4(config-if)#tunnel mpls traffic-eng priority ?
      <0-7>  setup priority
    
    SPRack1R4(config-if)#tunnel mpls traffic-eng priority 0 ?
      <0-7>  hold priority
      <cr>
    

Our tunnel is nearly ready, all that we have to do is define how we will connect to the other router. Here we have 2 options, dynamic or explicit.
Let’s start with the dynamic one (the easiest) the network will choose how to route the traffic based on the available reservable bandwidth.
All we have to do is to configure it:

interface Tunnel0
 tunnel mpls traffic-eng path-option 1 dynamic

And here we go

SPRack1R4(config-if)#do sh mpls traffic-eng tunnels

Name: TO-R3                               (Tunnel0) Destination: 24.1.3.3
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected

    path option 1, type dynamic (Basis for Setup, path weight 10)

  Config Parameters:
    Bandwidth: 64000    kbps (Global)  Priority: 7  7   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    AutoRoute:  enabled   LockDown: disabled  Loadshare: 64000    bw-based
    auto-bw: disabled

  InLabel  :  -
  OutLabel : Serial0/0/0.1, implicit-null
  RSVP Signalling Info:
       Src 24.1.4.4, Dst 24.1.3.3, Tun_Id 0, Tun_Instance 18
    RSVP Path Info:
      My Address: 24.1.4.4
      Explicit Route: 24.1.34.3 24.1.3.3
      Record Route:  NONE
      Tspec: ave rate=64000 kbits, burst=1000 bytes, peak rate=64000 kbits
    RSVP Resv Info:
      Record Route:  NONE
      Fspec: ave rate=64000 kbits, burst=1000 bytes, peak rate=64000 kbits
  History:
    Tunnel:
      Time since created: 1 hours, 31 minutes
      Time since path change: 14 seconds
    Current LSP:
      Uptime: 14 seconds
      Selection: reoptimation
    Prior LSP:
      ID: path option 1 [17]
      Removal Trigger: configuration changed

We can see that dynamically the path was selected through the frame relay.

Now lets says we have a favorite path, there we’ll use an explicit one, we’ll choose how to reach our end router by specifying the next hops in an ip explicith-path map

SPRack1R4(config)#ip explicit-path name TO-R3
SPRack1R4(cfg-ip-expl-path)#?
Explicit-Path configuration commands:
  append-after     Append additional entry after specified index
  exclude-address  Exclude an address from subsequent partial path segments
  exit             Exit from explicit-path configuration mode
  index            Specify the next entry index to add, edit (or delete)
  list             Re-list all or part of the explicit path entries
  next-address     Specify the next (adjacent) address in the path
  no               Delete a specific explicit-path entry index

In our example by default the traffic would go from R4 to R3 through the frame relay. We’ll force it through the ethernet network.

SPRack1R4(config)#ip explicit-path name TO-R3
SPRack1R4(cfg-ip-expl-path)#next-address 24.1.45.5
Explicit Path name TO-R3:
    1: next-address 24.1.45.5
SPRack1R4(cfg-ip-expl-path)#next-address 24.1.56.6
Explicit Path name TO-R3:
    1: next-address 24.1.45.5
    2: next-address 24.1.56.6
SPRack1R4(cfg-ip-expl-path)#next-address 24.1.36.3
Explicit Path name TO-R3:
    1: next-address 24.1.45.5
    2: next-address 24.1.56.6
    3: next-address 24.1.36.3
SPRack1R4(cfg-ip-expl-path)#next-address 24.1.3.3
Explicit Path name TO-R3:
    1: next-address 24.1.45.5
    2: next-address 24.1.56.6
    3: next-address 24.1.36.3
    4: next-address 24.1.3.3

After that we just have to tell the tunnel to use this path.

interface Tunnel0
 tunnel mpls traffic-eng path-option 1 explicit name TO-R3
SPRack1R4(config-if)#do sh mpls traf tun

Name: TO-R3                               (Tunnel0) Destination: 24.1.3.3
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected

    path option 1, type explicit TO-R3 (Basis for Setup, path weight 30)

  Config Parameters:
    Bandwidth: 64       kbps (Global)  Priority: 7  7   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    AutoRoute:  enabled   LockDown: disabled  Loadshare: 64       bw-based
    auto-bw: disabled

  InLabel  :  -
  OutLabel : GigabitEthernet0/1, 21
  RSVP Signalling Info:
       Src 24.1.4.4, Dst 24.1.3.3, Tun_Id 0, Tun_Instance 70
    RSVP Path Info:
      My Address: 24.1.45.4
      Explicit Route: 24.1.45.5 24.1.56.5 24.1.56.6 24.1.36.6
                      24.1.36.3 24.1.3.3
      Record Route:  NONE
      Tspec: ave rate=64 kbits, burst=1000 bytes, peak rate=64 kbits
    RSVP Resv Info:
      Record Route:  NONE
      Fspec: ave rate=64 kbits, burst=1000 bytes, peak rate=64 kbits
  History:
    Tunnel:
      Time since created: 1 hours, 56 minutes
      Time since path change: 4 minutes, 53 seconds
    Current LSP:
      Uptime: 4 minutes, 53 seconds
    Prior LSP:
      ID: path option 1 [18]
      Removal Trigger: path option updated

And here we are our tunnel is setup !

We did simple configuration here (only explicit or only dynamic) but in most cases if you have an explicit path you’d have another explicit or dynamic path also in case the primary path fails. In most configs you’d see:

interface Tunnel0
 tunnel mpls traffic-eng path-option 1 explicit name TO-R3
 tunnel mpls traffic-eng path-option 2 dynamic

1 Reply to "MPLS traffic engineering"

  • cruit
    August 3, 2011 (05:01)
    Reply

    Can you show your topology ?


Leave a Reply to cruit Cancel reply

Some html is OK