Skip to content

andywhitaker/sr-flexalgo-lab

Repository files navigation

Segment Routing with EVPN and FlexAlgo Lab

Deploying the Segment Routing with EVPN and FlexAlgo lab

We will deploy a multi-node lab with SROS routers running Segment Routing with EVPN and Flex Algo.

This is how the topology will look: topology

In order to deploy the lab you will need to have a copy of the SR-SIM 25.7.R1 image. This can be imported into docker using the following command:

sudo docker load -i srsim.tar.gz

To validate the image has been loaded you can run:

docker image list

You should see the following:

REPOSITORY                                    TAG           IMAGE ID       CREATED         SIZE
registry.srlinux.dev/pub/nokia_srsim          25.7.R1       8c69dafa63f8   2 days ago      1.97GB

Once the correct SROS image has been loaded you must ensure you have the license file called srsim25.lic downloaded and loaded into the project folder.

With the image and license file correctly loaded, to deploy the lab type:

sudo clab deploy -c

The deployment will wait for the SR OS nodes to boot up.

At the end of the deployment, the following table will be displayed. Wait for the sros boot to be completed (see next section), before trying to login to sros.

╭─────────────┬──────────────────────────────────────────────┬─────────┬───────────────────╮
│     Name    │                  Kind/Image                  │  State  │   IPv4/6 Address  │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ chi1        │ nokia_srsim                                  │ running │ 172.20.20.4       │
│             │ registry.srlinux.dev/pub/nokia_srsim:25.7.R1 │         │ 3fff:172:20:20::4 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ chi2        │ nokia_srsim                                  │ running │ 172.20.20.3       │
│             │ registry.srlinux.dev/pub/nokia_srsim:25.7.R1 │         │ 3fff:172:20:20::3 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ client-chi1 │ linux                                        │ running │ 172.20.20.9       │
│             │ ghcr.io/srl-labs/network-multitool           │         │ 3fff:172:20:20::9 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ client-chi2 │ linux                                        │ running │ 172.20.20.13      │
│             │ ghcr.io/srl-labs/network-multitool           │         │ 3fff:172:20:20::d │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ client-dal1 │ linux                                        │ running │ 172.20.20.10      │
│             │ ghcr.io/srl-labs/network-multitool           │         │ 3fff:172:20:20::a │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ client-dal2 │ linux                                        │ running │ 172.20.20.5       │
│             │ ghcr.io/srl-labs/network-multitool           │         │ 3fff:172:20:20::5 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ client-nyc1 │ linux                                        │ running │ 172.20.20.12      │
│             │ ghcr.io/srl-labs/network-multitool           │         │ 3fff:172:20:20::c │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ client-nyc2 │ linux                                        │ running │ 172.20.20.7       │
│             │ ghcr.io/srl-labs/network-multitool           │         │ 3fff:172:20:20::7 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ dal1        │ nokia_srsim                                  │ running │ 172.20.20.2       │
│             │ registry.srlinux.dev/pub/nokia_srsim:25.7.R1 │         │ 3fff:172:20:20::2 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ dal2        │ nokia_srsim                                  │ running │ 172.20.20.8       │
│             │ registry.srlinux.dev/pub/nokia_srsim:25.7.R1 │         │ 3fff:172:20:20::8 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ nyc1        │ nokia_srsim                                  │ running │ 172.20.20.6       │
│             │ registry.srlinux.dev/pub/nokia_srsim:25.7.R1 │         │ 3fff:172:20:20::6 │
├─────────────┼──────────────────────────────────────────────┼─────────┼───────────────────┤
│ nyc2        │ nokia_srsim                                  │ running │ 172.20.20.11      │
│             │ registry.srlinux.dev/pub/nokia_srsim:25.7.R1 │         │ 3fff:172:20:20::b │
╰─────────────┴──────────────────────────────────────────────┴─────────┴───────────────────╯

Monitoring the boot process

To monitor the boot process of SR OS nodes, you can open a new terminal and run the following command:

sudo docker logs -f chi1

Connecting to the nodes

To connect to an SROS node:

ssh admin@chi1

To connect to a linux client node:

docker exec -it client-chi1 sh

Verifying interface status

After the lab is deployed, let's start verifying the configuration.

Check the interface status on CHI1 (SROS):

show router interface

Expected output:

===============================================================================
Interface Table (Router: Base)
===============================================================================
Interface-Name                   Adm       Opr(v4/v6)  Mode    Port/SapId
   IP-Address                                                  PfxState
-------------------------------------------------------------------------------
To-CHI2                          Up        Up/Down     Network 1/1/c4/1
   10.21.22.21/24                                              n/a
To-DAL1                          Up        Up/Down     Network 1/1/c1/1
   10.11.21.21/24                                              n/a
To-NYC1                          Up        Up/Down     Network 1/1/c2/1
   10.21.31.21/24                                              n/a
system                           Up        Up/Down     Network system
   21.21.21.21/32                                              n/a
-------------------------------------------------------------------------------
Interfaces : 4
===============================================================================

Verifying IS-IS

Check IS-IS status on CHI1 (SROS):

show router isis status

Expected output:

===============================================================================
Rtr Base ISIS Instance 0 Status
===============================================================================
ISIS Cfg System Id           : 0000.0000.0000
ISIS Oper System Id          : 0210.2102.1021
ISIS Cfg Router Id           : 0.0.0.0
ISIS Oper Router Id          : 21.21.21.21
ISIS Cfg IPv6 Router Id      : ::
ISIS Oper IPv6 Router Id     : ::
ASN                          : 0
Admin State                  : Up
Oper State                   : Up
Ipv4 Routing                 : Enabled
Ipv6 Routing                 : Disabled
<snip>
===============================================================================

Check IS-IS adjacency on CHI1 (SROS)

show router isis adjacency

Expected output:

===============================================================================
Rtr Base ISIS Instance 0 Adjacency
===============================================================================
System ID                Usage State Hold Interface                     MT-ID
-------------------------------------------------------------------------------
chi2-sr1                 L1L2  Up    20   To-CHI2                       0
dal1-sr1                 L1L2  Up    19   To-DAL1                       0
nyc1-sr1                 L1L2  Up    19   To-NYC1                       0
-------------------------------------------------------------------------------
Adjacencies : 3
===============================================================================

Verifying Segment Routing

Check tunnel table on CHI1 (SROS):

show router tunnel-table

Expected output:

A:admin@chi1# show router tunnel-table

===============================================================================
IPv4 Tunnel Table (Router: Base)
===============================================================================
Destination           Owner     Encap TunnelId  Pref   Nexthop        Metric
   Color                                                              
-------------------------------------------------------------------------------
10.11.21.11/32        isis (0)  MPLS  524289    11     10.11.21.11    0
10.21.22.22/32        isis (0)  MPLS  524295    11     10.21.22.22    0
10.21.31.31/32        isis (0)  MPLS  524290    11     10.21.31.31    0
11.11.11.11/32        isis (0)  MPLS  524294    11     10.11.21.11    10
11.11.11.11/32        isis (0)  MPLS  524292    11     10.21.22.22    30000
12.12.12.12/32        isis (0)  MPLS  524301    11     10.11.21.11    20
12.12.12.12/32        isis (0)  MPLS  524298    11     10.21.22.22    20000
22.22.22.22/32        isis (0)  MPLS  524299    11     10.21.22.22    10
22.22.22.22/32        isis (0)  MPLS  524296    11     10.21.22.22    10000
31.31.31.31/32        isis (0)  MPLS  524293    11     10.21.31.31    10
31.31.31.31/32        isis (0)  MPLS  524291    11     10.21.22.22    30000
32.32.32.32/32        isis (0)  MPLS  524300    11     10.21.22.22    20
32.32.32.32/32        isis (0)  MPLS  524297    11     10.21.22.22    20000
-------------------------------------------------------------------------------
Flags: B = BGP or MPLS backup hop available
       L = Loop-Free Alternate (LFA) hop available
       E = Inactive best-external BGP route
       k = RIB-API or Forwarding Policy backup hop
===============================================================================

Verifying BGP

Check BGP status on CHI1 (SROS)

show router bgp summary

Expected output:

===============================================================================
 BGP Router ID:21.21.21.21      AS:65500       Local AS:65500
===============================================================================
BGP Admin State         : Up          BGP Oper State              : Up
Total Peer Groups       : 1           Total Peers                 : 5
<snip>
===============================================================================
BGP Summary
===============================================================================
Legend : D - Dynamic Neighbor
===============================================================================
Neighbor
Description
                   AS PktRcvd InQ  Up/Down   State|Rcv/Act/Sent (Addr Family)
                      PktSent OutQ
-------------------------------------------------------------------------------
11.11.11.11
                65500     967    0 07h59m24s 2/2/2 (Evpn)
                          966    0
12.12.12.12
                65500     967    0 07h59m24s 2/2/2 (Evpn)
                          966    0
22.22.22.22
                65500     966    0 07h59m24s 2/2/2 (Evpn)
                          967    0
31.31.31.31
                65500     966    0 07h59m24s 2/2/2 (Evpn)
                          966    0
32.32.32.32
                65500     966    0 07h59m24s 2/2/2 (Evpn)
                          967    0
-------------------------------------------------------------------------------

Check BGP EVPN routes on CHI1 (SROS)

show router bgp routes evpn ip-prefix

Expected output:

===============================================================================
 BGP Router ID:21.21.21.21      AS:65500       Local AS:65500
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP EVPN IP-Prefix Routes
===============================================================================
Flag  Route Dist.         Prefix
      Tag                 Gw Address
                          NextHop
                          Label
                          ESI
-------------------------------------------------------------------------------
u*>i  11.11.11.11:200     192.168.11.0/24
      0                   00:00:00:00:00:00
                          11.11.11.11
                          LABEL 524287
                          ESI-0

u*>i  11.11.11.11:200     192.168.11.254/32
      0                   00:00:00:00:00:00
                          11.11.11.11
                          LABEL 524287
                          ESI-0

u*>i  12.12.12.12:200     192.168.12.0/24
      0                   00:00:00:00:00:00
                          12.12.12.12
                          LABEL 524287
                          ESI-0

u*>i  12.12.12.12:200     192.168.12.254/32
      0                   00:00:00:00:00:00
                          12.12.12.12
                          LABEL 524287
                          ESI-0

u*>i  22.22.22.22:200     192.168.22.0/24
      0                   00:00:00:00:00:00
                          22.22.22.22
                          LABEL 524287
                          ESI-0

u*>i  22.22.22.22:200     192.168.22.254/32
      0                   00:00:00:00:00:00
                          22.22.22.22
                          LABEL 524287
                          ESI-0

u*>i  31.31.31.31:200     192.168.31.0/24
      0                   00:00:00:00:00:00
                          31.31.31.31
                          LABEL 524287
                          ESI-0

u*>i  31.31.31.31:200     192.168.31.254/32
      0                   00:00:00:00:00:00
                          31.31.31.31
                          LABEL 524287
                          ESI-0

u*>i  32.32.32.32:200     192.168.32.0/24
      0                   00:00:00:00:00:00
                          32.32.32.32
                          LABEL 524287
                          ESI-0

u*>i  32.32.32.32:200     192.168.32.254/32
      0                   00:00:00:00:00:00
                          32.32.32.32
                          LABEL 524287
                          ESI-0

-------------------------------------------------------------------------------
Routes : 10
===============================================================================

Verifying EVPN-MPLS service

Check service status on CHI1 (SROS)

show service id "tenant1" base

Expected output:

===============================================================================
Service Basic Information
===============================================================================
Service Id        : 200                 Vpn Id            : 0
Service Type      : VPRN
MACSec enabled    : no
Name              : tenant1
Description       : (Not Specified)
Customer Id       : 200                 Creation Origin   : manual
Last Status Change: 07/09/2025 22:01:41
Last Mgmt Change  : 07/09/2025 22:01:41
Admin State       : Up                  Oper State        : Up
<snip>
-------------------------------------------------------------------------------
Service Access & Destination Points
-------------------------------------------------------------------------------
Identifier                               Type         AdmMTU  OprMTU  Adm  Opr
-------------------------------------------------------------------------------
sap:1/1/c6/1                            null         1514    1514    Up   Up
===============================================================================

Ping client-nyc2

Login to client-dal1

docker exec -it client-dal1 bash

Ping client-nyc2 IP from client-dal1

ping -c 3 192.168.32.32

Expected output

PING 192.168.32.32 (192.168.32.32) 56(84) bytes of data.
64 bytes from 192.168.32.32: icmp_seq=1 ttl=62 time=5.54 ms
64 bytes from 192.168.32.32: icmp_seq=2 ttl=62 time=6.16 ms
64 bytes from 192.168.32.32: icmp_seq=3 ttl=62 time=5.52 ms

--- 192.168.32.32 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 5.521/5.740/6.160/0.296 ms

Client Machine IPs

Client IP Address
client-dal1 192.168.11.11
client-dal2 192.168.12.12
client-chi1 192.168.21.21
client-chi2 192.168.22.22
client-nyc1 192.168.31.31
client-nyc2 192.168.32.32

OAM LSP-Trace from DAL1 to NYC1

This lab has IS-IS FlexAlgo enabled based on delay and we have increased the link delay between DAL1 and CHI1 and also between CHI1 and NYC1. This demonstrates we can influence traffic from client-dal1 to client-nyc1 along the longer path across the bottom of the topology (dal1 -> dal2 -> chi2 -> nyc2 -> nyc1) rather than the shortest path (dal1 -> chi1 -> nyc1) based on FlexAlgo metrics. To validate the traffic path you can do an OAM LSP-Trace on DAL1 to the loopback on NYC1:

A:admin@dal1# oam lsp-trace sr-isis prefix 31.31.31.31/32 source-ip-address 11.11.11.11 flex-algo 128 
lsp-trace to 31.31.31.31/32: 1 hops min, 30 hops max, 104 byte packets
1  12.12.12.12  rtt=2.85ms rc=8(DSRtrMatchLabel) rsc=1  
2  22.22.22.22  rtt=3.17ms rc=8(DSRtrMatchLabel) rsc=1  
3  32.32.32.32  rtt=7.08ms rc=8(DSRtrMatchLabel) rsc=1  
4  31.31.31.31  rtt=4.69ms rc=3(EgressRtr) rsc=1 

To validate the path traffic would take without FlexAlgo you can run this command:

A:admin@dal1# oam lsp-trace sr-isis prefix 31.31.31.31/32 source-ip-address 11.11.11.11               
lsp-trace to 31.31.31.31/32: 1 hops min, 30 hops max, 104 byte packets
1  21.21.21.21  rtt=4.35ms rc=8(DSRtrMatchLabel) rsc=1  
2  31.31.31.31  rtt=5.92ms rc=3(EgressRtr) rsc=1 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published