GNS3 LAB Cisco : Segment Routing traffic engineering configuration on IOS-XE routers.

This is the second blog in segment routing series. Please check other segment routing blogs here:

GNS3 LAB: Segment Routing Configuration on Cisco IOS-XE and IOS-XR routers.

GNS3 Cisco Lab : Segment routing Traffic engineering(SRTE) explicit and dynamic path configuration on IOS-XR.

In this blog I will discuss about the Segment routing based traffic engineering with the MPLS data plane. You already know that in order to run MPLS traffic engineering we need to enable RSVP end to end which helps in label distribution and signalling.But in segment routing the label distribution part is taken care by IGP (ISIS TLVs or OSPF opaque LSA) in MPLS data plane and in IPv6 extension headers in case of SRv6. In this blog I will cover MPLS data plane using ISIS as the IGP.

In Segment routing traffic engineering we use source routing which means that TE headend will know the end to end path which it will put on the packet as label stack while sending packets out. something like below examples…

Juniper’s Ron Bonica’s example:

I found this example over the internet, where Ron talks about a kindergarten kid who needs to go to his home and he doesn’t know the path. At every road intersection, we have a guard who can help the kid. But the kid needs to carry the path info and it is done with the help of sticking labels on the kid’s cap. The kid has a cap with the labels which indicate direction something like below and now the guard needs to read the label and pop it and send the kid to the label indicated direction.

In this example, the best part is that the guard doesn’t need to remember the path for each kid.

Cisco’s baggage transfer example :

Baggage tags generally hold the complete route info and are placed on the bags at the beginning of the trip. By this, every transit airport knows where to send the baggage next.

The above two examples give an excellent clue on how the traffic is steered over the segment routing path in MPLS TE.

Configuration:

Before the configuration lets see the network diag.

Check the below diag, here I have configured TE tunnels between R1-XE router with R5-XE.

Before we begin I assume that you will check my previous segment routing blog for the basic configuration needed before we enable traffic engineering. GNS3 LAB: Segment Routing Configuration on Cisco IOS-XE and IOS-XR routers.

Basically below is what the configuration flow will look like.

  • Configure link state IGP
  • Enable segment routing
  • Enable traffic engineering on each router and also core facing interfaces.
  • Configure TE tunnels.

Note : On Cisco IOS-XE routers when ISIS is used as IGP we need to make the core facing interfaces point-to-point. As the traffic engineering is not supported over the broadcast interface.

R1-XE Config (Tunnel headend) : 

!
mpls traffic-eng tunnels
!
interface GigabitEthernet1
 ip address 10.10.10.1 255.255.255.252
 ip router isis LAB
 mpls traffic-eng tunnels
 isis circuit-type level-1
 isis network point-to-point
!
router isis LAB
 net 49.0000.0000.0000.0001.00
 is-type level-1
 metric-style wide
 segment-routing mpls
 mpls traffic-eng router-id Loopback1
 mpls traffic-eng level-1
!
segment-routing mpls
 !
 connected-prefix-sid-map
  address-family ipv4
   1.1.1.1/32 index 1 range 1
  exit-address-family
 !
interface Tunnel1
 ip unnumbered Loopback1
 tunnel mode mpls traffic-eng
 tunnel destination 5.5.5.5
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 6 6
 tunnel mpls traffic-eng path-option 10 explicit name SR-PATH segment-routing
!
ip explicit-path name SR-PATH enable
 index 1 next-label 16002
 index 2 next-label 16004
 index 3 next-label 16005
!


R5-XE configuration(Tunnel Tail end):

!
mpls traffic-eng tunnels
!
interface GigabitEthernet1
 ip address 10.10.10.14 255.255.255.252
 ip router isis LAB
 mpls traffic-eng tunnels
 isis circuit-type level-1
 isis network point-to-point
!
!
interface GigabitEthernet2
 ip address 10.10.10.18 255.255.255.252
 ip router isis LAB
 mpls traffic-eng tunnels
 isis circuit-type level-1
 isis network point-to-point
!
router isis LAB
 net 49.0000.0000.0000.0005.00
 is-type level-1
 metric-style wide
 segment-routing mpls
 mpls traffic-eng router-id Loopback1
 mpls traffic-eng level-1
!
segment-routing mpls
 !
 connected-prefix-sid-map
  address-family ipv4
   5.5.5.5/32 index 5 range 1
  exit-address-family
 !
!
interface Tunnel1
 ip unnumbered Loopback1
 tunnel mode mpls traffic-eng
 tunnel destination 1.1.1.1
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 6 6
 tunnel mpls traffic-eng path-option 10 explicit name SR-PATH segment-routing
!
ip explicit-path name SR-PATH enable
 index 1 next-label 16004
 index 2 next-label 16002
 index 3 next-label 16001
!


Verification

For verification purpose I have configured a loopback on both of these routers. I am routing these loopbacks traffic over the tunnel with the help of static route. Check out the config below…

R1-XE:

!
interface Loopback2
 ip address 192.168.10.1 255.255.255.255
!
ip route 192.168.20.1 255.255.255.255 Tunnel1

R5-XE:

!
interface Loopback2
 ip address 192.168.20.1 255.255.255.255
!
ip route 192.168.10.1 255.255.255.255 Tunnel1
!

Lets check if ping and traces are working. Notice two labels in traceroute, 16004 and 16005 which is inserted at the beginning of the network.

R1-XE#ping 192.168.20.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/3 ms

R1-XE#traceroute 192.168.20.1
Type escape sequence to abort.
Tracing the route to 192.168.20.1
VRF info: (vrf in name/id, vrf out name/id)
  1 10.10.10.2 [MPLS: Labels 16004/16005 Exp 0] 2 msec 2 msec 2 msec
  2 10.10.10.10 [MPLS: Label 16005 Exp 0] 1 msec 3 msec 2 msec
  3 10.10.10.18 2 msec *  4 msec

R1-XE#sh mpls traffic-eng tunnels tun 1

Name: R1-XE_t1                            (Tunnel1) Destination: 5.5.5.5
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 10, (SEGMENT-ROUTING) type explicit SR-PATH (Basis for Setup)

  Config Parameters:
    Bandwidth: 0        kbps (Global)  Priority: 6  6   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    Path Selection:
     Protection: any (default)
    Path-selection Tiebreaker:
      Global: not set   Tunnel Specific: not set   Effective: min-fill (default)
    Hop Limit: disabled [ignore: Explicit Path Option with all Strict Hops]
    Cost Limit: disabled
    Path-invalidation timeout: 10000 msec (default), Action: Tear
    AutoRoute: enabled  LockDown: disabled Loadshare: 0 [0] bw-based
    auto-bw: disabled
    Fault-OAM: disabled, Wrap-Protection: disabled, Wrap-Capable: No
  Active Path Option Parameters:
    State: explicit path option 10 is active
    BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled

  History:
    Tunnel:
      Time since created: 24 minutes
      Time since path change: 22 minutes, 34 seconds
      Number of LSP IDs (Tun_Instances) used: 16
    Current LSP: [ID: 16]
      Uptime: 22 minutes, 34 seconds
  Tun_Instance: 16
  Segment-Routing Path Info (isis  level-1)
    Segment0[Node]: 2.2.2.2, Label: 16002
    Segment1[Node]: 4.4.4.4, Label: 16004
    Segment2[Node]: 5.5.5.5, Label: 16005
R1-XE#

Conclusion :

So much is remaining to discuss for SRTE, my next blog will discuss SRTE configurations on IOS-XR with the help of segment routing polices. On top of that, TE discussion is not complete if we don’t discuss ti-LFA. Stay tuned keep reading. Thanks.

Leave a Reply