Useful Articles

25/recent/ticker-posts

CLASS BASED TUNNEL SELECTION - CBTS

Class Based Tunnel Selection - CBTS

CBTS is feature that enables you to route the traffic in core backbone with different class of service (Precedence/DSCP/EXP) values onto different TE tunnels between Head end and Tail End routers. When you want to route CoS traffic onto these tunnels for one destination, you must route all the traffic for this destination onto these tunnels. In other words, if you have traffic for a destination PE routed onto the CBTS tunnels, you cannot have a part of the traffic for the same destination forwarded outside of these tunnels on an LSP or as IP traffic. Basically, the LSR checks the IP precedence bits or the EXP bits value of the incoming label. Based on the value, the LSR routes the packet onto one TE tunnel that is enabled with CBTS. Because the administrator might want to change the EXP bits value of the incoming packet to a different value (for example, with MQC), the EXP bits value is checked after the MQC operation when making a decision about what TE tunnel is the next hop for the traffic.

You can directly apply the CBTS feature on TE tunnels with a PE router as the head end router and the incoming traffic from a virtual routing/forwarding (VRF) interface. You can map each EXP bits value to a particular TE tunnel. Three bits for the EXP bits give you eight levels of QoS, so you can even use eight TE tunnels between a pair of LSRs and map each EXP bits value to a different TE tunnel.

Command Syntax to assign CBTS to a Member TE Tunnel

Router(config)#int Tunnel 10
Router(config-if)tunnel mpls traffic-eng exp [list-of-exp-values] [default]
 

Steps to configure CBTS

Configure the Member Tunnels
Configure the Master Tunnel
Map Member Tunnels under the Master Tunnel
 

CBTS Lab Example

Class Based Tunnel Selection - CBTS

Aim: We need to have the connectivity b/w two customer sites of customer “xyz”

As shown in the image above, the primary path in the core backbone for CE1 to reach CE2 is CE1(R8)–R1–R2–R3–R7–CE2(R9).

Let’s see taking below scenarios how CBTS will work. We will test CBTS functioning by initiating the ping from CE1 to CE2 using various TOS values.

We have configured two Member tunnels Tunnel10 and Tunnel20 on R1. The Tunnels 10 and 20 are mapped under a Master Tunnel 100. Below is the reference configuration:

R1#
interface Tunnel10
ip unnumbered Loopback0
mpls ip
tunnel mode mpls traffic-eng
tunnel destination 9.9.0.7
tunnel mpls traffic-eng path-option 1 dynamic
tunnel mpls traffic-eng exp 5 6 7

interface Tunnel20
ip unnumbered Loopback0
mpls ip
tunnel mode mpls traffic-eng
tunnel destination 9.9.0.7
tunnel mpls traffic-eng path-option 1 explicit name path_tunnel20
tunnel mpls traffic-eng exp 0 1 2 3 4

interface Tunnel100
ip unnumbered Loopback0
mpls ip
tunnel mode mpls traffic-eng
tunnel destination 9.9.0.7
tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng exp-bundle master
 tunnel mpls traffic-eng exp-bundle member Tunnel10
 tunnel mpls traffic-eng exp-bundle member Tunnel20

ip explicit-path name path_tunnel20 enable
exclude-address 9.9.16.6

Note:  9.9.16.0/24 is link b/w R1-R6 with .1/24 on R1 and .6/24 on R6 respectively.



Class Based Tunnel Selection - Scenerio1

If primary path is up(as show by green marker in the diagram above), the ping from CE1 to CE2 with all precedence values will go via primary path. Let’s ping from CE1 to CE2 using few precedence values say 0, 3, and 7.

We have enabled “debug mpls packet” on routers to check the status.

Ping from CE1(Loopack 0/9.9.0.8/32) towards CE2 (Loopack0/9.9.0.9/32)using precedence value=0

R8#ping ip
Target IP address: 9.9.0.9
Extended commands [n]: y
Source address or interface: 9.9.0.8
Type of service [0]: 0
Sending 5, 100-byte ICMP Echos to 9.9.0.9, timeout is 2 seconds:
Packet sent with a source address of 9.9.0.8
!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 84/112/160 ms

R2#debug mpls packet
*Aug  1 21:23:26.203: MPLS turbo: Fa1/0: rx: Len 122 Stack {29 0 254} {27 0 254} – ipv4 data
*Aug  1 21:23:26.207: MPLS turbo: Fa2/0: tx: Len 122 Stack {29 0 253} {27 0 254} – ipv4 data
*Aug  1 21:23:26.275: MPLS turbo: Fa2/0: rx: Len 122 Stack {31 0 253} {28 0 254} – ipv4 data
*Aug  1 21:23:26.347: MPLS turbo: Fa1/0: rx: Len 122 Stack {29 0 254} {27 0 254} – ipv4 data
*Aug  1 21:23:26.351: MPLS turbo: Fa2/0: tx: Len 122 Stack {29 0 253} {27 0 254} – ipv4 data



Class Based Tunnel Selection - Scenerio2

If primary path(say R1-R2 link) is down. We have manually shut R1-R2 link for testing.The ping from CE1 to CE2 with precedence values 5,6, and 7  will go via 1st backup path-TE Tunnel10 (as show by Red marker in the diagram above), and the ping with precedence values 0-4 will go via the 2nd backup path-TE Tunnel20(as shown by Blue marker in the topolgy diagram above).

Let’s ping from CE1 to CE2 using few precedence values say 7 (TOS value 224).

R8#ping ip
Target IP address: 9.9.0.9
Extended commands [n]: y
Source address or interface: 9.9.0.8
Type of service [0]: 224
Sending 5, 100-byte ICMP Echos to 9.9.0.9, timeout is 2 seconds:
Packet sent with a source address of 9.9.0.8
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/84/132 ms

R6#debug mpls packet
*Aug  1 21:37:08.583: MPLS turbo: Fa1/0: rx: Len 122 Stack {16 7 254} {27 7 254} – ipv4 data
*Aug  1 21:37:08.587: MPLS turbo: Fa2/0: tx: Len 118 Stack {27 7 253} – ipv4 data
*Aug  1 21:37:08.651: MPLS turbo: Fa2/0: rx: Len 122 Stack {29 7 254} {28 7 254} – ipv4 data
*Aug  1 21:37:08.655: MPLS turbo: Fa1/0: tx: Len 118 Stack {28 7 253} – ipv4 data

Let’s ping from CE1 to CE2 using few precedence values say 3 (TOS value 96).

R8#ping ip
Target IP address: 9.9.0.9
Extended commands [n]: y
Source address or interface: 9.9.0.8
Type of service [0]: 96
Sending 5, 100-byte ICMP Echos to 9.9.0.9, timeout is 2 seconds:
Packet sent with a source address of 9.9.0.8
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 72/112/180 ms

R4#debug mpls packet
*Aug  1 21:51:23.811: MPLS turbo: Fa1/0: rx: Len 122 Stack {25 3 254} {27 3 254} – ipv4 data
*Aug  1 21:51:23.815: MPLS turbo: Fa2/0: tx: Len 122 Stack {16 3 253} {27 3 254} – ipv4 data
*Aug  1 21:51:23.935: MPLS turbo: Fa2/0: rx: Len 122 Stack {29 3 253} {28 3 254} – ipv4 data

If we’ll restore the primary path again,  the data with all precedence values will again start flowing through the primary path (Green marker in the topology diagram).

CBTS is only meant to be run on Cisco IOS-XE Platform. We cannot run CBTS on IOS-XR platform nodes. We have to use another version of CBTS named Policy Based Tunnel Selection(PBTS)

Hope you have enjoyed reading this Post. Please share your feedback if you liked this post. You can also write to us on networkurge@gmail.com.