CLASS BASED TUNNEL SELECTION (CBTS)

Class-based Tunnel Selection (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.


Consider the diagram below:



 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.


 

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

 

Scenario2:

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 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).


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.