Sunday, January 15, 2017

MPLS CBTS


We are going to examine MPLS Class Based Tunnel Selection (CBTS)
This feature aims to allow certian traffic which associated with different precedence (EXP) values to follow specfic tunnels (we are using MPLS TE in order to maintain connectivity between the CEs with RIPv2 is the PE-CE routing protocol)
Tunnel 1 is supposed to handle precedences 0 , 1 , 2 , 4 , 6 and 7
Tunnel 2 is supposed to handle precedence 3
Tunnel 3 is supposed to handle precedence 5

Configurations:

R1
interface Loopback0
 ip address 1.1.1.1 255.255.255.255

interface FastEthernet1/0
 ip address 192.168.12.1 255.255.255.0
 speed 100
 duplex full

router rip
 version 2
 network 1.0.0.0
 network 192.168.12.0
 no auto-summary


R2
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
 ip router isis 1

 mpls traffic-eng tunnels

interface FastEthernet1/0
 ip address 192.168.23.2 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

interface FastEthernet1/1
 ip address 192.168.24.2 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

ip vrf MSSK
rd 1:1
route-target import 1:1
route-target export 1:1

interface FastEthernet2/0
 ip vrf forwarding MSSK
 ip address 192.168.12.2 255.255.255.0
 speed 100
 duplex full

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

router rip
 address-family ipv4 vrf MSSK
  redistribute bgp 1 metric 2
  network 192.168.12.0
  no auto-summary
  version 2
 exit-address-family

router bgp 1
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 5.5.5.5 remote-as 1
 neighbor 5.5.5.5 update-source Loopback0

 address-family vpnv4
  neighbor 5.5.5.5 activate
  neighbor 5.5.5.5 send-community both
 exit-address-family

 address-family ipv4 vrf MSSK
  redistribute rip
 exit-address-family

R3

interface Loopback0
 ip address 3.3.3.3 255.255.255.255
 ip router isis 1

 mpls traffic-eng tunnels

interface FastEthernet1/0
 ip address 192.168.23.3 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

interface FastEthernet1/1
 ip address 192.168.35.3 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

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


R4
interface Loopback0
 ip address 4.4.4.4 255.255.255.255
 ip router isis 1

 mpls traffic-eng tunnels

interface FastEthernet1/0
 ip address 192.168.24.4 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

interface FastEthernet1/1
 ip address 192.168.45.4 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

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



R5

interface Loopback0
 ip address 5.5.5.5 255.255.255.255
 ip router isis 1


 mpls traffic-eng tunnels

interface FastEthernet1/0
 ip address 192.168.35.5 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth

interface FastEthernet1/1
 ip address 192.168.45.5 255.255.255.0
 ip router isis 1
 speed 100
 duplex full
 mpls traffic-eng tunnels
 ip rsvp bandwidth


ip vrf MSSK
rd 1:1
route-target import 1:1
route-target export 1:1

interface FastEthernet2/0
 ip vrf forwarding MSSK
 ip address 192.168.56.5 255.255.255.0
 speed 100
 duplex full

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

router rip
 address-family ipv4 vrf MSSK
  redistribute bgp 1 metric 2
  network 192.168.56.0
  no auto-summary
  version 2
 exit-address-family

router bgp 1
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 2.2.2.2 remote-as 1
 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
  redistribute rip
 exit-address-family
 

R6
interface Loopback0
 ip address 6.6.6.6 255.255.255.255

interface FastEthernet1/0
 ip address 192.168.56.6 255.255.255.0
 speed 100
 duplex full

router rip
 version 2
 network 6.0.0.0
 network 192.168.56.0
 no auto-summary


The relevant Tunnels configurations:

R2
ip explicit-path name TUN1_PATH enable
 next-address 192.168.23.3
 next-address 192.168.35.5
 next-address 5.5.5.5


ip explicit-path name TUN2_PATH enable
 next-address 192.168.25.5
 next-address 5.5.5.5


ip explicit-path name TUN3_PATH enable
 next-address 192.168.24.4
 next-address 192.168.45.5
 next-address 5.5.5.5
 

interface Tunnel1
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 5.5.5.5
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng path-option 1 explicit name TUN1_PATH
 tunnel mpls traffic-eng exp 0

interface Tunnel2
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 5.5.5.5
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng path-option 1 explicit name TUN2_PATH
 tunnel mpls traffic-eng exp 3

interface Tunnel3
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 5.5.5.5
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng path-option 1 explicit name TUN3_PATH
 tunnel mpls traffic-eng exp 5
 

 And we have to configure what so called the master tunnel interface:

interface Tunnel0
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 5.5.5.5
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng exp-bundle master
 tunnel mpls traffic-eng exp-bundle member Tunnel1
 tunnel mpls traffic-eng exp-bundle member Tunnel2
 tunnel mpls traffic-eng exp-bundle member Tunnel3


Verifications:

R2#show mpls traffic-eng exp

Destination: 5.5.5.5

   Master: Tunnel0              Status: up

   Members         Status               Conf Exp        Actual Exp
   Tunnel1         up  (Active)         0               0 1 2 4 6 7
   Tunnel2         up  (Active)         3               3
   Tunnel3         up  (Active)         5               5


(D) : Destination is different
(NE): Exp values not configured on tunnel


Let us now check connectivity between CEs:

R1#ping 6.6.6.6 source lo0
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 = 80/104/124 ms


Let us now turn on debug for MPLS packets on three routers (R2 , R3 and R4)

R2#debug mpls packet
Packet debugging is on


R3#debug mpls packet
Packet debugging is on


R4#debug mpls packet
Packet debugging is on


R1#ping 6.6.6.6 source lo0
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 = 72/108/140 ms

R3#
*Jan 15 15:02:10.451: MPLS turbo: Fa1/0: rx: Len 122 Stack {16 0 254} {19 0 254} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.455: MPLS turbo: Fa1/1: tx: Len 118 Stack {19 0 253} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.511: MPLS turbo: Fa1/1: rx: Len 122 Stack {17 0 254} {18 0 254} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.515: MPLS turbo: Fa1/0: tx: Len 118 Stack {18 0 253} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.615: MPLS turbo: Fa1/0: rx: Len 122 Stack {16 0 254} {19 0 254} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.619: MPLS turbo: Fa1/1: tx: Len 118 Stack {19 0 253} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.675: MPLS turbo: Fa1/1: rx: Len 122 Stack {17 0 254} {18 0 254} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:0 prot:1
*Jan 15 15:02:10.679: MPLS turbo: Fa1/0: tx: Len 118 Stack {18 0 253} - ipv4 data s:6


R1#ping 6.6.6.6 source lo0 tos 32
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 = 76/87/100 ms


R3#
*Jan 15 15:02:24.239: MPLS turbo: Fa1/0: tx: Len 118 Stack {18 1 253} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:20 prot:1
*Jan 15 15:02:24.327: MPLS turbo: Fa1/0: rx: Len 122 Stack {16 1 254} {19 1 254} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:20 prot:1
*Jan 15 15:02:24.331: MPLS turbo: Fa1/1: tx: Len 118 Stack {19 1 253} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:20 prot:1
*Jan 15 15:02:24.407: MPLS turbo: Fa1/1: rx: Len 122 Stack {17 1 254} {18 1 254} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:20 prot:1
*Jan 15 15:02:24.411: MPLS turbo: Fa1/0: tx: Len 118 Stack {18 1 253} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:20 prot:1


R1#ping 6.6.6.6 source lo0 tos 96
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 = 72/85/104 ms


R2#555: MPLS turbo: Fa2/1: rx: Len 118 Stack {18 3 254} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:60 prot:1

R1#ping 6.6.6.6 source lo0 tos 160
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 = 72/87/112 ms


R4# Fa1/0: tx: Len 118 Stack {18 5 253} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:A0 prot:1
*Jan 15 15:02:54.707: MPLS turbo: Fa1/0: rx: Len 122 Stack {16 5 254} {19 5 254} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:A0 prot:1
*Jan 15 15:02:54.711: MPLS turbo: Fa1/1: tx: Len 118 Stack {19 5 253} - ipv4 data s:1.1.1.1 d:6.6.6.6 ttl:254 tos:A0 prot:1
*Jan 15 15:02:54.791: MPLS turbo: Fa1/1: rx: Len 122 Stack {17 5 254} {18 5 254} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:A0 prot:1
*Jan 15 15:02:54.795: MPLS turbo: Fa1/0: tx: Len 118 Stack {18 5 253} - ipv4 data s:6.6.6.6 d:1.1.1.1 ttl:254 tos:A0 prot:1


We can also check by doing traceroute MPLS command on R2 as below:

R2#traceroute mpls traffic-eng tunnel 1 exp 0
Tracing MPLS TE Label Switched Path on Tunnel1, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.23.2 MRU 1500 [Labels: 16 Exp: 0]
L 1 192.168.23.3 MRU 1504 [Labels: implicit-null Exp: 0] 56 ms
! 2 192.168.35.5 68 ms


R2#traceroute mpls traffic-eng tunnel 1 exp 1
Tracing MPLS TE Label Switched Path on Tunnel1, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.23.2 MRU 1500 [Labels: 16 Exp: 1]
L 1 192.168.23.3 MRU 1504 [Labels: implicit-null Exp: 1] 68 ms
! 2 192.168.35.5 64 ms


R2#traceroute mpls traffic-eng tunnel 1 exp 2
Tracing MPLS TE Label Switched Path on Tunnel1, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.23.2 MRU 1500 [Labels: 16 Exp: 2]
L 1 192.168.23.3 MRU 1504 [Labels: implicit-null Exp: 2] 68 ms
! 2 192.168.35.5 84 ms


R2#traceroute mpls traffic-eng tunnel 1 exp 4
Tracing MPLS TE Label Switched Path on Tunnel1, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.23.2 MRU 1500 [Labels: 16 Exp: 4]
L 1 192.168.23.3 MRU 1504 [Labels: implicit-null Exp: 4] 76 ms
! 2 192.168.35.5 68 ms

R2#traceroute mpls traffic-eng tunnel 1 exp 6
Tracing MPLS TE Label Switched Path on Tunnel1, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.23.2 MRU 1500 [Labels: 16 Exp: 6]
L 1 192.168.23.3 MRU 1504 [Labels: implicit-null Exp: 6] 68 ms
! 2 192.168.35.5 104 ms


R2#traceroute mpls traffic-eng tunnel 1 exp 7
Tracing MPLS TE Label Switched Path on Tunnel1, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.23.2 MRU 1500 [Labels: 16 Exp: 7]
L 1 192.168.23.3 MRU 1504 [Labels: implicit-null Exp: 7] 60 ms
! 2 192.168.35.5 64 ms


R2#traceroute mpls traffic-eng tunnel 2 exp 3
Tracing MPLS TE Label Switched Path on Tunnel2, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.25.2 MRU 1500 [Labels: implicit-null Exp: 3]
! 1 192.168.25.5 92 ms


R2#traceroute mpls traffic-eng tunnel 3 exp 5
Tracing MPLS TE Label Switched Path on Tunnel3, 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,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0

Type escape sequence to abort.
  0 192.168.24.2 MRU 1500 [Labels: 16 Exp: 5]
L 1 192.168.24.4 MRU 1504 [Labels: implicit-null Exp: 5] 68 ms
! 2 192.168.45.5 88 ms


 

No comments: