Saturday, December 22, 2012

MPLS TE with Explicit Paths




Issue

In this example we will go through MPLS L3VPN using RSVP as our label protocol as well as going through TE and how we will control our traffic as needed using explicit paths and using dynamic path option as our backup in case of link failure inside the backbone
The IGP inside the network used is ISIS and static routing is PE-CE routing protocols

Configuration

R1

R1#sh run int f1/0
interface FastEthernet1/0
 ip address 192.1.12.1 255.255.255.0
 speed 100
 duplex full

R1#sh run int lo0
interface Loopback0
 ip address 1.1.1.1 255.255.255.255

R1#sh run | sec ip route
ip route 0.0.0.0 0.0.0.0 192.1.12.2

R2

R2#sh run int f1/0
interface FastEthernet1/0
 vrf forwarding MSSK
 ip address 192.1.12.2 255.255.255.0
 speed 100
 duplex full

R2#sh run int f1/1
interface FastEthernet1/1
 ip address 192.1.23.2 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 isis metric 20
 ip rsvp bandwidth

R2#sh run int f2/0
interface FastEthernet2/0
 ip address 192.1.25.2 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R2#sh run int lo0
interface Loopback0
 ip address 2.2.2.2 255.255.255.255

R2#sh run int tun0
tunnel mode mpls traffic-eng
ip unnumbered loopback0
tunnel destination 4.4.4.4
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng path-option 1 explicit name PATH
tunnel mpls traffic-eng path-option 2 dynamic

R2#sh run | sec ip route
ip route vrf MSSK 1.1.1.1 255.255.255.255 192.1.12.1

R2#sh run | sec vrf def
vrf definition MSSK
 rd 100:1
 route-target export 100:1
 route-target import 100:1
 !
 address-family ipv4
 exit-address-family

R2#sh run | sec router isis
router isis 1
 net 49.0001.0000.0000.0002.00
 is-type level-2-only
 metric-style wide
 passive-interface Loopback0
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2

R2#sh run | sec router bgp
router bgp 100
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 4.4.4.4 remote-as 100
 neighbor 4.4.4.4 update-source Loopback0
 !
 address-family ipv4
 exit-address-family
 !
 address-family vpnv4
  neighbor 4.4.4.4 activate
  neighbor 4.4.4.4 send-community both
 exit-address-family
 !
 address-family ipv4 vrf MSSK
  network 1.1.1.1 mask 255.255.255.255
  network 192.1.12.0
 exit-address-family

R2#sh run | inc mpls
mpls traffic-eng tunnels

ip explicit-paths name PATH
next-address 192.1.23.3
next-address 192.1.35.5
next-address 192.1.45.4
next-address 4.4.4.4

R3

R3#sh run int f1/0
interface FastEthernet1/0
 ip address 192.1.23.3 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R3#sh run int f1/1
interface FastEthernet1/1
 ip address 192.1.34.3 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R3#sh run int f2/0
interface FastEthernet2/0
 ip address 192.1.35.3 255.255.255.0
 ip router isis 1
 shutdown
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R3#sh run int lo0
interface Loopback0
 ip address 3.3.3.3 255.255.255.255

R3#sh run | sec router isis
router isis 1
 net 49.0001.0000.0000.0003.00
 is-type level-2-only
 metric-style wide
 passive-interface Loopback0
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2

R3#sh run | inc mpls
mpls traffic-eng tunnels

R4

R4#sh run int f1/0
interface FastEthernet1/0
 vrf forwarding MSSK
 ip address 192.1.46.4 255.255.255.0
 speed 100
 duplex full

R4#sh run int f1/1
interface FastEthernet1/1
 ip address 192.1.34.4 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R4#sh run int f2/0
interface FastEthernet2/0
 ip address 192.1.45.4 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R4#sh run int lo0
interface Loopback0
 ip address 4.4.4.4 255.255.255.255

R4#sh run int tun0
tunnel mode mpls traffic-eng
ip unnumbered loopback0
tunnel destination 2.2.2.2
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng path-option 1 explicit name PATH
tunnel mpls traffic-eng path-option 2 dynamic

R4#sh run | sec router isis
router isis 1
 net 49.0001.0000.0000.0004.00
 is-type level-2-only
 metric-style wide
 passive-interface Loopback0
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2

R4#sh run | sec router bgp
router bgp 100
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 2.2.2.2 remote-as 100
 neighbor 2.2.2.2 update-source Loopback0
 !
 address-family ipv4
 exit-address-family
 !
 address-family vpnv4
  neighbor 2.2.2.2 activate
  neighbor 2.2.2.2 send-community both
 exit-address-family
 !
 address-family ipv4 vrf MSSK
  network 6.6.6.6 mask 255.255.255.255
  network 192.1.46.0
 exit-address-family

R4#sh run | inc mpls
mpls traffic-eng tunnels

R4#sh run | inc ip route
ip route vrf MSSK 6.6.6.6 255.255.255.255 192.1.46.6

ip explicit-paths name PATH
next-address 192.1.45.5
next-address 192.1.35.3
next-address 192.1.23.2
next-address 2.2.2.2

R5

R5#sh run int f1/0
interface FastEthernet1/0
 ip address 192.1.25.5 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R5#sh run int f1/1
interface FastEthernet1/1
 ip address 192.1.45.5 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R5#sh run int f2/0
interface FastEthernet2/0
 ip address 192.1.35.5 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

R5#sh run int lo0
interface Loopback0
 ip address 5.5.5.5 255.255.255.255

R5#sh run | sec router isis
router isis 1
 net 49.0001.0000.0000.0005.00
 is-type level-2-only
 metric-style wide
 passive-interface Loopback0
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2

R5#sh run | inc mpls
mpls traffic-eng tunnels

R6

R6#sh run int f1/0
interface FastEthernet1/0
 ip address 192.1.46.6 255.255.255.0
 speed 100
 duplex full

R6#sh run int lo0
interface Loopback0
 ip address 6.6.6.6 255.255.255.255

R6#sh run | inc ip route
ip route 0.0.0.0 0.0.0.0 192.1.46.4

Verification

Testing reachablity between our CEs

R1#ping 6.6.6.6 source 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/22/28 ms
R1#traceroute 6.6.6.6 source lo0
Type escape sequence to abort.
Tracing the route to 6.6.6.6
VRF info: (vrf in name/id, vrf out name/id)
  1 192.1.12.2 4 msec 4 msec 4 msec
  2 192.1.23.3 [MPLS: Labels 16/16 Exp 0] 28 msec 20 msec 20 msec
  3 192.1.35.5 [MPLS: Labels 17/16 Exp 0] 24 msec 20 msec 20 msec
  4 192.1.46.4 [MPLS: Label 16 Exp 0] 20 msec 16 msec 16 msec
  5 192.1.46.6 20 msec 20 msec *

Checking our explicit path configured

R2#sh ip explicit-paths
PATH PATH (strict source route, path complete, generation 13)
    1: next-address 192.1.23.3
    2: next-address 192.1.35.5
    3: next-address 192.1.45.4
    4: next-address 4.4.4.4

R6#traceroute 1.1.1.1 sou lo0
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
  1 192.1.46.4 8 msec 0 msec 4 msec
  2 192.1.45.5 [MPLS: Labels 19/16 Exp 0] 24 msec 20 msec 20 msec
  3 192.1.35.3 [MPLS: Labels 18/16 Exp 0] 20 msec 20 msec 20 msec
  4 192.1.12.2 [MPLS: Label 16 Exp 0] 20 msec 16 msec 16 msec
  5 192.1.12.1 20 msec 20 msec *

R4#sh ip explicit-paths
PATH PATH (strict source route, path complete, generation 11)
    1: next-address 192.1.45.5
    2: next-address 192.1.35.3
    3: next-address 192.1.23.2
    4: next-address 2.2.2.2
R2#sh mpls traffic-eng tunnels

P2P TUNNELS/LSPs:

Name: R2_t0                               (Tunnel0) Destination: 4.4.4.4
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 1, type explicit PATH (Basis for Setup, path weight 40)

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


  InLabel  :  -
  OutLabel : FastEthernet1/1, 16
  Next Hop : 192.1.23.3
  RSVP Signalling Info:
       Src 2.2.2.2, Dst 4.4.4.4, Tun_Id 0, Tun_Instance 8812
    RSVP Path Info:
      My Address: 192.1.23.2  
      Explicit Route: 192.1.23.3 192.1.35.3 192.1.35.5 192.1.45.5
                      192.1.45.4 4.4.4.4
      Record   Route:   NONE
      Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
    RSVP Resv Info:
      Record   Route:   NONE
      Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
  History:
    Tunnel:
      Time since created: 3 days, 59 minutes
      Time since path change: 5 minutes, 8 seconds
      Number of LSP IDs (Tun_Instances) used: 8812
    Current LSP: [ID: 8812]
      Uptime: 4 minutes, 58 seconds
      Selection: reoptimization
    Prior LSP: [ID: 8811]
      ID: path option unknown
      Removal Trigger: configuration changed

LSP Tunnel R4_t0 is signalled, connection is up
  InLabel  : FastEthernet1/1, implicit-null
  Prev Hop : 192.1.23.3
  OutLabel :  -
  RSVP Signalling Info:
       Src 4.4.4.4, Dst 2.2.2.2, Tun_Id 0, Tun_Instance 8805
    RSVP Path Info:
      My Address: 2.2.2.2  
      Explicit Route:  NONE
      Record   Route:   NONE
      Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
    RSVP Resv Info:
      Record   Route:   NONE
      Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits

P2MP TUNNELS:

P2MP SUB-LSPS:
R2#sh mpls forwarding-table
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop   
Label      Label      or Tunnel Id     Switched      interface             
16         No Label   1.1.1.1/32[V]    12776         Fa1/0      192.1.12.1 
17         No Label   192.1.12.0/24[V] 0             aggregate/MSSK
R3#sh mpls forwarding-table
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop   
Label      Label      or Tunnel Id     Switched      interface             
16         17         2.2.2.2 0 [8812] 3934          Fa2/0      192.1.35.5 
18         Pop Label  4.4.4.4 0 [8805] 4152          Fa1/0      192.1.23.2

Now, we want to configure backup using lower priority path option

R2(config)#int tun0
R2(config-if)#tunnel mpls traffic-eng path-option 2 dynamic

R4(config)#int tun0
R4(config-if)#tunnel mpls traffic-eng path-option 2 dynamic

Now, shutting down one of the links across the explicit path
R3#conf t   
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#int f2/0
R3(config-if)#shutdown

R2#sh mpls traffic-eng tunnels

P2P TUNNELS/LSPs:

Name: R2_t0                               (Tunnel0) Destination: 4.4.4.4
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 2, type dynamic (Basis for Setup, path weight 20)
    path option 1, type explicit PATH

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


  InLabel  :  -
  OutLabel : FastEthernet2/0, 18
  Next Hop : 192.1.25.5
  RSVP Signalling Info:
       Src 2.2.2.2, Dst 4.4.4.4, Tun_Id 0, Tun_Instance 8814
    RSVP Path Info:
      My Address: 192.1.25.2  
      Explicit Route: 192.1.25.5 192.1.45.5 192.1.45.4 4.4.4.4
      Record   Route:   NONE
      Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
    RSVP Resv Info:
      Record   Route:   NONE
      Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
  History:
    Tunnel:
      Time since created: 3 days, 1 hours, 3 minutes
      Time since path change: 59 seconds
      Number of LSP IDs (Tun_Instances) used: 8814
    Current LSP: [ID: 8814]
      Uptime: 59 seconds
      Selection: reoptimization
    Prior LSP: [ID: 8812]
      ID: path option unknown
      Removal Trigger: path error

LSP Tunnel R4_t0 is signalled, connection is up
  InLabel  : FastEthernet1/1, implicit-null
  Prev Hop : 192.1.23.3
  OutLabel :  -
  RSVP Signalling Info:
       Src 4.4.4.4, Dst 2.2.2.2, Tun_Id 0, Tun_Instance 8807
    RSVP Path Info:
      My Address: 2.2.2.2  
      Explicit Route:  NONE
      Record   Route:   NONE
      Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
    RSVP Resv Info:
      Record   Route:   NONE
      Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits

P2MP TUNNELS:

P2MP SUB-LSPS:

R1#traceroute 6.6.6.6 source lo0
Type escape sequence to abort.
Tracing the route to 6.6.6.6
VRF info: (vrf in name/id, vrf out name/id)
  1 192.1.12.2 4 msec 0 msec 4 msec
  2 192.1.25.5 [MPLS: Labels 18/16 Exp 0] 20 msec 16 msec 16 msec
  3 192.1.46.4 [MPLS: Label 16 Exp 0] 24 msec 8 msec 12 msec
  4 192.1.46.6 16 msec 16 msec *

As we can see end to end reachability is maintained but the path now is different as we are using the dynamic one

No comments: