CCIE SP – MPLS Traffic Engineering

TE was the main driver and reason for MPLS invention. To utilize bandwidth of unused links, to have flexibility in path selection just like previous WAN switching technologies. To create Virtual circuits on top of IP networks. IP Routing is performed hop by hop and you can not dictate a policy to other hops. TE is configured on Head-End LSR and gets/uses a particular label for a particular path. (Explicit Routing/Source-based routing)

RSVP is used to prepare a path and create a tunnel and label to route packets through the network. Link State routing protocols are required as well to report available bandwidth on each link and also other extra information such as Maximum reserve-able bandwidth and so on. Extensions were made to RSVP (Carry Label, Record Route), OSPF and ISIS (Constrained Metric) to be able to do Traffic Engineering. So once that we want to enable Traffic Engineering on our SP backbone, we have to enable specific technologies in order to run TE, such as:

  1. Enable TE (mpls traffic-engineering tunnels) on routers and ports.
  2. Adjust reversable bandwidth with “ip rsvp bandwidth” on ports.
  3. Tune your link state routing protocol to deliver TE attributes.
  4. Create your tunnel on the head-end LSR (uni-directional) and send packets through it.

Example:

MPLSTE

 

In our example, we will configure a TE tunnel from R3 to R4, and from R4 to R3 (reverse direction) to transit our traffic through R3 – R1 – R2 – R4.

 

Configuration

 

R3:

mpls traffic-eng tunnels
!
interface Tunnel1000
 ip unnumbered Loopback0
 tunnel destination 10.10.4.4
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth  100
 tunnel mpls traffic-eng path-option 5 explicit name myway
!
interface Loopback0
ip address 10.10.3.3 255.255.255.255
!
interface FastEthernet0/0
ip address 10.10.35.3 255.255.255.0
mpls ip
!
interface FastEthernet0/1
ip address 10.10.34.3 255.255.255.0
mpls traffic-eng tunnels
mpls ip
ip rsvp bandwidth 1000
!
interface ATM2/0
ip address 10.10.13.3 255.255.255.0
ip ospf network point-to-point
mpls traffic-eng tunnels
mpls ip
ip rsvp bandwidth 1000
pvc 100/0
  protocol ip 10.10.13.1 broadcast
!
!
router ospf 10
network 10.10.0.0 0.0.255.255 area 0
mpls traffic-eng router-id Loopback0
mpls traffic-eng area 0
!
ip explicit-path name myway enable
next-address 10.10.1.1
next-address 10.10.12.2
next-address 10.10.24.4
!

 

R1:

mpls traffic-eng tunnels
!
interface Loopback0
ip address 10.10.1.1 255.255.255.255
!
interface FastEthernet0/0
ip address 10.10.12.1 255.255.255.0
mpls traffic-eng tunnels
mpls ip
ip rsvp bandwidth 1000
!
interface ATM2/0
ip address 10.10.13.1 255.255.255.0
ip ospf network point-to-point
mpls traffic-eng tunnels
mpls ip
ip rsvp bandwidth 1000
pvc 100/0
  protocol ip 10.10.13.3 broadcast
!
!
router ospf 10
network 0.0.0.0 255.255.255.255 area 0
mpls traffic-eng router-id Loopback0
mpls traffic-eng area 0
!

R2:

mpls traffic-eng tunnels
!        
interface Loopback0
ip address 10.10.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 10.10.12.2 255.255.255.0
mpls label protocol ldp
mpls ip
mpls traffic-eng tunnels
ip rsvp bandwidth 1000
!
interface Serial1/0
ip address 10.10.24.2 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-point
mpls ip
mpls traffic-eng tunnels
frame-relay map ip 10.10.24.2 204
frame-relay map ip 10.10.24.4 204 broadcast
no frame-relay inverse-arp
ip rsvp bandwidth 1000
!
router ospf 10
mpls traffic-eng router-id Loopback0
mpls traffic-eng area 0
network 0.0.0.0 255.255.255.255 area 0
!

R4:

mpls traffic-eng tunnels
!
interface Loopback0
ip address 10.10.4.4 255.255.255.255
!
interface Tunnel1000
ip unnumbered Loopback0
tunnel destination 10.10.3.3
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng path-option 5 explicit name myway
no routing dynamic
!
interface Ethernet0/0
ip address 10.10.46.4 255.255.255.0
mpls ip
!
interface Ethernet0/1
ip address 10.10.34.4 255.255.255.0
mpls ip
mpls traffic-eng tunnels
ip rsvp bandwidth 1000
!        
interface Serial1/0
ip address 10.10.24.4 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-point
mpls ip
mpls traffic-eng tunnels
frame-relay map ip 10.10.24.2 402 broadcast
frame-relay map ip 10.10.24.4 402
no frame-relay inverse-arp
ip rsvp bandwidth 1000
!
router ospf 10
mpls traffic-eng router-id Loopback0
mpls traffic-eng area 0
log-adjacency-changes
network 10.10.0.0 0.0.255.255 area 0
!
ip explicit-path name myway enable
next-address 10.10.24.2
next-address 10.10.12.1
next-address 10.10.13.3
!

R3#show mpls traffic tunnel

Name: R3_t1000             (Tunnel1000) Destination: 10.10.4.4

Status:    Admin: up  Oper: up  Path: valid   Signalling: connected

path option 5, type explicit myway (Basis for Setup, path weight 66)

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

  InLabel  :  –
  OutLabel : ATM2/0, 26
  RSVP Signalling Info:
  Src 10.10.3.3, Dst 10.10.4.4, Tun_Id 1000, Tun_Instance 176
  RSVP Path Info:
  My Address: 10.10.13.3   
  Explicit Route: 10.10.13.1 10.10.12.1 10.10.12.2 10.10.24.4 10.10.4.4
      Record   Route:   NONE
      Tspec: ave rate=100 kbits, burst=1000 bytes, peak rate=100 kbits
    RSVP Resv Info:
      Record   Route:   NONE
      Fspec: ave rate=100 kbits, burst=1000 bytes, peak rate=100 kbits

LSP Tunnel R4_t1000 is signalled, connection is up
  InLabel  : ATM2/0, implicit-null
  OutLabel :  –
  RSVP Signalling Info:
       Src 10.10.4.4, Dst 10.10.3.3, Tun_Id 1000, Tun_Instance 131

Verification

Before:

R5#trace 10.10.6.6

Type escape sequence to abort.
Tracing the route to 10.10.6.6

  1 10.10.35.3 [MPLS: Label 23 Exp 0]
  2 10.10.34.4 [MPLS: Label 17 Exp 0]
  3 10.10.46.6

After:

R5#trace 10.10.6.6

Type escape sequence to abort.
Tracing the route to 10.10.6.6

  1 10.10.35.3 [MPLS: Labels 23 Exp 0]
  2 10.10.13.1 [MPLS: Label 26 Exp 0]
  3 10.10.12.2 [MPLS: Label 25 Exp 0]
  4 10.10.24.4 
  5 10.10.46.6

Dynamic Path Configuration:

 

interface Tunnel1000
ip unnumbered Loopback0
tunnel destination 10.10.4.4
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth  100
 tunnel mpls traffic-eng path-option 10 dynamic
!

R3(config-if)#do sh mpls traf tu

Name: R3_t1000                    (Tunnel1000) Destination: 10.10.4.4
  Status:
    Admin: up     Oper: up     Path: valid       Signalling: connected

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

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

  InLabel  :  –
  OutLabel : FastEthernet0/1, implicit-null
  RSVP Signalling Info:
       Src 10.10.3.3, Dst 10.10.4.4, Tun_Id 1000, Tun_Instance 178
    RSVP Path Info:
      My Address: 10.10.34.3  
      Explicit Route: 10.10.34.4 10.10.4.4
      Record   Route:   NONE
   

R5#trace 10.10.6.6

Type escape sequence to abort.
Tracing the route to 10.10.6.6

  1 10.10.35.3 [MPLS: Labels 23 Exp 0]
  2 10.10.34.4 
  3 10.10.46.6

R3(config-if)#int fa 0/1
R3(config-if)#no mpls tra tun

R3#sh mpls tra tun

Name: R3_t1000                            (Tunnel1000) Destination: 10.10.4.4
  Status:
    Admin: up     Oper: up     Path: valid       Signalling: connected

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

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

  InLabel  :  –
  OutLabel : ATM2/0, 26
  RSVP Signalling Info:
       Src 10.10.3.3, Dst 10.10.4.4, Tun_Id 1000, Tun_Instance 180
    RSVP Path Info:
      My Address: 10.10.13.3  
      Explicit Route: 10.10.13.1 10.10.12.1 10.10.12.2 10.10.24.4
                      10.10.4.4
      Record   Route:   NONE
      Tspec: ave rate=100 kbits, burst=1000 bytes, peak rate=100 kbits
    RSVP Resv Info:
      Record   Route:   NONE
      Fspec: ave rate=100 kbits, burst=1000 bytes, peak rate=100 kbits
  History:
    Tunnel:
      Time since created: 2 hours, 42 minutes
      Time since path change: 12 seconds
    Current LSP:
      Uptime: 12 seconds
    Prior LSP:
      ID: path option 10 [179]
      Removal Trigger: tunnel shutdown

LSP Tunnel R4_t1000 is signalled, connection is up
  InLabel  : ATM2/0, implicit-null
  OutLabel :  –
  RSVP Signalling Info:
       Src 10.10.4.4, Dst 10.10.3.3, Tun_Id 1000, Tun_Instance 136


2 responses to this post.

  1. Posted by Heibatian on July 13, 2010 at 11:19 pm

    Dear friend
    Would you please send me an configuration for cisco routers related to Class-Based-Tunnel Selection concept, if any. I got some problem with this configuration , after classification based on the DSCP and also mapping to the EXP ,all traffic just select one tunnel regardless of the EXP bits. I checked documents and books related to this topic . all of them follow the same way that I did. But I need one practical example with IOS version and so on.
    BR, Mohammd Heibatian

    Reply

  2. Its a very good document: http://www.cisco.com/en/US/docs/ios/12_0s/feature/guide/gscbts.html#wp1054453

    if you’re experiencing weired behavior, check your IOS.
    have you read Eric Osborne book? Traffic Engineering with MPLS thats a good reference for TE…

    Reply

Respond to this post