Search This Blog

Friday, December 7, 2012

MPLS-TE explicit vs. dynamic



Using the same topology and configuration from the previous MPLS-TEbasic configuration lab



As you may recall I have configured the path R3->R6->R7 with RSVP bandwidth of 50Kbps while the path R3->R4->R5->R7 has been configured with 100Kbps, and because the MPLS-TE tunnel has a constrain which required a 100Kbps path this path wasn’t valid and both tunnels were going through R3->R4->R5->R7 path.

So now I configured path R3->R6->R7 with 100Kbps, what will happen to the tunnels?

R3#sh mpls traffic-eng tunnels        

Name: R3_t37                              (Tunnel37) Destination: 7.7.7.7
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 1, type dynamic (Basis for Setup, path weight 3)

  Config Parameters:
    Bandwidth: 100      kbps (Global)  Priority: 0  0   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    AutoRoute:  enabled   LockDown: disabled  Loadshare: 100      bw-based
    auto-bw: disabled
  Active Path Option Parameters:
    State: dynamic path option 1 is active
    BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled


  InLabel  :  -
  OutLabel : FastEthernet2/0, 24
  RSVP Signalling Info:
       Src 3.3.3.3, Dst 7.7.7.7, Tun_Id 37, Tun_Instance 1
    RSVP Path Info:
      My Address: 10.1.34.3  
      Explicit Route: 10.1.34.4 10.1.45.4 10.1.45.5 10.1.57.5
                      10.1.57.7 7.7.7.7
      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: 1 hours, 41 minutes
      Time since path change: 1 hours, 41 minutes
      Number of LSP IDs (Tun_Instances) used: 1
    Current LSP:
      Uptime: 1 hours, 41 minutes

LSP Tunnel R7_t37 is signalled, connection is up
  InLabel  : FastEthernet2/0, implicit-null
  OutLabel :  -
  RSVP Signalling Info:
       Src 7.7.7.7, Dst 3.3.3.3, Tun_Id 37, Tun_Instance 1
    RSVP Path Info:
      My Address: 3.3.3.3  
      Explicit Route:  NONE
      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

R3#sh mpls traffic-eng tunnels summary
Signalling Summary:
    LSP Tunnels Process:            running
    Passive LSP Listener:           running
    RSVP Process:                   running
    Forwarding:                     enabled
    Head: 1 interfaces, 1 active signalling attempts, 1 established
          1 activations, 0 deactivations
          0 SSO recovery attempts, 0 SSO recovered
    Midpoints: 0, Tails: 1
    Periodic reoptimization:        every 3600 seconds, next in 64 seconds
    Periodic FRR Promotion:         Not Running
    Periodic auto-bw collection:    every 300 seconds, next in 64 seconds

You can see that tunnel re-optimization occurs once in every 1 hour so only after that period of time the tunnel will recalculate the LSP and choose best new one:

R3#sh mpls traffic-eng tunnels        

Name: R3_t37                              (Tunnel37) Destination: 7.7.7.7
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 1, type dynamic (Basis for Setup, path weight 2)

  Config Parameters:
    Bandwidth: 100      kbps (Global)  Priority: 0  0   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    AutoRoute:  enabled   LockDown: disabled  Loadshare: 100      bw-based
    auto-bw: disabled
  Active Path Option Parameters:
    State: dynamic path option 1 is active
    BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled


  InLabel  :  -
  OutLabel : FastEthernet2/1, 20
  RSVP Signalling Info:
       Src 3.3.3.3, Dst 7.7.7.7, Tun_Id 37, Tun_Instance 3
    RSVP Path Info:
      My Address: 10.1.36.3   
      Explicit Route: 10.1.36.6 10.1.67.6 10.1.67.7 7.7.7.7
      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: 1 hours, 51 minutes
      Time since path change: 8 minutes, 7 seconds
      Number of LSP IDs (Tun_Instances) used: 3
    Current LSP:
      Uptime: 8 minutes, 10 seconds
      Selection: reoptimization
    Prior LSP:
      ID: path option 1 [1]
      Removal Trigger: reoptimization completed

LSP Tunnel R7_t37 is signalled, connection is up
  InLabel  : FastEthernet2/1, implicit-null
  OutLabel :  -
  RSVP Signalling Info:
       Src 7.7.7.7, Dst 3.3.3.3, Tun_Id 37, Tun_Instance 3
    RSVP Path Info:
      My Address: 3.3.3.3  
      Explicit Route:  NONE
      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

We can set the re-optimization period by issue the following command:

R3(config)#mpls traffic-eng reoptimize timers frequency 60



Or initiate a re-optimization manually by issuing the command in privilege mode:

R3#mpls traffic-eng reoptimize tunnel 37

Now both tunnels, tunnel 37 and tunnel 73 are going in the same LSP through R3->R6->R7, but what if I want to do load balance between both (physical) paths?

Let’s configure an explicit path for tunnel 37 on R3:

ip explicit-path name TUN37-PATH
  next-address 10.1.34.4
  next-address 10.1.45.5
  next-address 10.1.57.7
!
interface tunnel 37
  tunnel mpls traffic-eng path-option 1 explicit name TUN37-PATH

By this I have instructed explicitly, to tunnel 37, the path it should go to the tailend – R7.
Now let’s look and tunnel 37 path:

R3#show mpls traffic-eng tunnels tunnel 37

Name: R3_t37                              (Tunnel37) Destination: 7.7.7.7
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 1, type explicit TUN37-PATH (Basis for Setup, path weight 3)

  Config Parameters:
    Bandwidth: 100      kbps (Global)  Priority: 0  0   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    AutoRoute:  enabled   LockDown: disabled  Loadshare: 100      bw-based
    auto-bw: disabled
  Active Path Option Parameters:
    State: explicit path option 1 is active
    BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled


  InLabel  :  -
  OutLabel : FastEthernet2/0, 23
  RSVP Signalling Info:
       Src 3.3.3.3, Dst 7.7.7.7, Tun_Id 37, Tun_Instance 114
    RSVP Path Info:
      My Address: 10.1.34.3  
      Explicit Route: 10.1.34.4 10.1.45.4 10.1.45.5 10.1.57.5
                      10.1.57.7 7.7.7.7
      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
  Shortest Unconstrained Path Info:
    Path Weight: 2 (TE)
    Explicit Route: 10.1.36.3 10.1.36.6 10.1.67.6 10.1.67.7
                    7.7.7.7
  History:
    Tunnel:
      Time since created: 3 hours, 50 minutes
      Time since path change: 6 minutes, 40 seconds
      Number of LSP IDs (Tun_Instances) used: 114
    Current LSP:
      Uptime: 6 minutes, 40 seconds
    Prior LSP:
      ID: path option 1 [3]
      Removal Trigger: configuration changed

And verify the tunnel path and reachability:

R3#ping mpls traffic-eng tunnel 37                     
Sending 5, 100-byte MPLS Echos to Tunnel37,
     timeout is 2 seconds, send interval is 0 msec:

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 72/87/112 ms

R3#traceroute mpls traffic-eng tunnel 37
Tracing MPLS TE Label Switched Path on Tunnel37, timeout is 2 seconds

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 10.1.34.3 MRU 1500 [Labels: 23 Exp: 0]
L 1 10.1.34.4 MRU 1500 [Labels: 23 Exp: 0] 88 ms
L 2 10.1.45.5 MRU 1504 [Labels: implicit-null Exp: 0] 60 ms
! 3 10.1.57.7 84 ms

Now we have two tunnels, 37 and 73, where 37 goes through R3->R4->R5->R7 using explicit path while 73 goes through R3->R6->R7 using dynamic path. Looking on the routing table of R3 toward R7:

R3#sh ip route 7.7.7.7
Routing entry for 7.7.7.7/32
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 7.7.7.7 on Tunnel37, 04:00:35 ago
  Routing Descriptor Blocks:
  * 7.7.7.7, from 7.7.7.7, 04:00:35 ago, via Tunnel37
      Route metric is 3, traffic share count is 1
    7.7.7.7, from 7.7.7.7, 04:00:35 ago, via Tunnel73
      Route metric is 3, traffic share count is 1

We can see that tunnel 37 is the best route and that’s because of the tunnel priority:

R3#sh running-config interface tunnel 37
Building configuration...

Current configuration : 323 bytes
!
interface Tunnel37
 ip unnumbered Loopback0
 mpls ip
 tunnel destination 7.7.7.7
 tunnel mode mpls traffic-eng
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 0 0
 tunnel mpls traffic-eng bandwidth 100
 tunnel mpls traffic-eng path-option 1 explicit name TUN37-PATH
 no routing dynamic
end

R3#sh running-config interface tunnel 73
Building configuration...

Current configuration : 332 bytes
!
interface Tunnel73
 ip unnumbered Loopback0
 mpls traffic-eng tunnels
 mpls ip
 tunnel destination 7.7.7.7
 tunnel mode mpls traffic-eng
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 1 1
 tunnel mpls traffic-eng bandwidth 100
 tunnel mpls traffic-eng path-option 1 dynamic
 no routing dynamic
end

We can change the priority between the tunnels to choose the preferred tunnel to use, remember lower is better.

R3(config)#interface tunnel 37
R3(config-if)#tunnel mpls traffic-eng priority 2 2

And the result:

R3#sh ip route 7.7.7.7
Routing entry for 7.7.7.7/32
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 7.7.7.7 on Tunnel73, 00:01:13 ago
  Routing Descriptor Blocks:
  * 7.7.7.7, from 7.7.7.7, 00:01:13 ago, via Tunnel73
      Route metric is 3, traffic share count is 1
    7.7.7.7, from 7.7.7.7, 00:01:13 ago, via Tunnel37
      Route metric is 3, traffic share count is 1

Don’t forget that the tunnels are unidirectional so we need to change the same on R7 else we will have asymmetric route.

No comments:

Post a Comment