{"id":18678212,"url":"https://github.com/srl-labs/nokia-evpn-lab","last_synced_at":"2025-06-15T14:39:03.964Z","repository":{"id":110641485,"uuid":"527972922","full_name":"srl-labs/nokia-evpn-lab","owner":"srl-labs","description":null,"archived":false,"fork":false,"pushed_at":"2022-08-31T12:16:44.000Z","size":1298,"stargazers_count":6,"open_issues_count":2,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-09T14:17:36.564Z","etag":null,"topics":["clab-topo"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/srl-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-23T12:07:16.000Z","updated_at":"2025-04-11T14:57:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"50871c8d-f43e-4b61-ae7b-e37007b825a3","html_url":"https://github.com/srl-labs/nokia-evpn-lab","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/srl-labs/nokia-evpn-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srl-labs%2Fnokia-evpn-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srl-labs%2Fnokia-evpn-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srl-labs%2Fnokia-evpn-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srl-labs%2Fnokia-evpn-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/srl-labs","download_url":"https://codeload.github.com/srl-labs/nokia-evpn-lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srl-labs%2Fnokia-evpn-lab/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259991183,"owners_count":22942581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clab-topo"],"created_at":"2024-11-07T09:36:23.185Z","updated_at":"2025-06-15T14:39:03.926Z","avatar_url":"https://github.com/srl-labs.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EVPN interoperability between SR Linux and SROS\nEthernet VPN proposes a unified model for VPNs and cloud-based services, by providing a control plane framework that can deliver any type of VPN services. SR Linux and SROS, network operating systems developed by Nokia, implement this protocol. This lab provides an interoperability use case between those two systems, in a data center context.  \n\nA Clos fabric, traditional architecture for data centers, will be deployed, as represented below. It includes a fabric made of SR Linux routers, along with two 7750 SR-1 routers acting as Data Center Gateways.\n\n![](underlay.png)\n\n## Deploying the lab\nThe lab is deployed with [containerlab](https://containerlab.dev) project where [`nokia-evpn.clab.yml`](nokia-evpn.clab.yml) file declaratively describes the lab topology.\n\n```bash\n# deploy the lab\ncontainerlab deploy \n```\n\nOnce the lab is completed, it can be removed with the destroy command.\n\n```bash\n# destroy the lab\ncontainerlab destroy \n```\n\n## Accessing the network elements\nAfter deploying the lab, the nodes will be accessible. To access a network element, simply use its hostname as described in the table displayed after execution of the deploy command.\n```\nssh admin@clab-evpn-leaf1\nssh admin@clab-evpn-dcgw1\n```\nThe Linux CE clients don't have SSH enabled. In order to access them, use `docker exec`.\n```\ndocker exec -it clab-evpn-client1 bash\n```\n\n## Configuration\nAll nodes come preconfigured thanks to startup-config setting in the topology file [`nokia-evpn.clab.yml`](nokia-evpn.clab.yml). Those configuration files can be found in [`configs`](/configs). \n\n### Underlay\neBGP is used to provide underlay connectivity between the routers. The routes exchanged over those BGP sessions can be seen by executing the commands below.\n\n#### Leaf 1 (SR Linux)\n\u003cpre\u003e\nA:leaf1# show network-instance default protocols bgp routes ipv4 summary\n----------------------------------------------------------------------------------------\nShow report for the BGP route table of network-instance \"default\"\n----------------------------------------------------------------------------------------\nStatus codes: u=used, *=valid, \u003e=best, x=stale\nOrigin codes: i=IGP, e=EGP, ?=incomplete\n----------------------------------------------------------------------------------------\n+-----+--------------+--------------------+-----+-----+--------------------------------+\n| Sta |   Network    |      Next Hop      | MED | Loc |            Path Val            |\n| tus |              |                    |     | Pre |                                |\n|     |              |                    |     |  f  |                                |\n+=====+==============+====================+=====+=====+================================+\n| u*\u003e | 10.0.0.11/32 | 0.0.0.0            | -   | 100 |  i                             |\n| u*\u003e | 10.0.0.12/32 | 100.21.11.1        | -   | 100 | [65020, 65012] i               |\n| *   | 10.0.0.12/32 | 100.22.11.1        | -   | 100 | [65020, 65012] i               |\n| u*\u003e | 10.0.0.13/32 | 100.21.11.1        | -   | 100 | [65020, 65013] i               |\n| *   | 10.0.0.13/32 | 100.22.11.1        | -   | 100 | [65020, 65013] i               |\n| u*\u003e | 10.0.0.14/32 | 100.21.11.1        | -   | 100 | [65020, 65014] i               |\n| *   | 10.0.0.14/32 | 100.22.11.1        | -   | 100 | [65020, 65014] i               |\n| u*\u003e | 10.0.0.21/32 | 100.21.11.1        | -   | 100 | [65020] i                      |\n| u*\u003e | 10.0.0.22/32 | 100.22.11.1        | -   | 100 | [65020] i                      |\n| u*\u003e | 10.0.0.31/32 | 100.21.11.1        | -   | 100 | [65020, 65030] i               |\n| *   | 10.0.0.31/32 | 100.22.11.1        | -   | 100 | [65020, 65030] i               |\n| u*\u003e | 10.0.0.32/32 | 100.21.11.1        | -   | 100 | [65020, 65030] i               |\n| *   | 10.0.0.32/32 | 100.22.11.1        | -   | 100 | [65020, 65030] i               |\n| u*\u003e | 100.21.11.0/ | 0.0.0.0            | -   | 100 |  i                             |\n|     | 30           |                    |     |     |                                |\n| u*\u003e | 100.22.11.0/ | 0.0.0.0            | -   | 100 |  i                             |\n|     | 30           |                    |     |     |                                |\n+-----+--------------+--------------------+-----+-----+--------------------------------+\n----------------------------------------------------------------------------------------\n15 received BGP routes: 10 used, 15 valid, 0 stale\n10 available destinations: 5 with ECMP multipaths\n----------------------------------------------------------------------------------------\n\u003c/pre\u003e\n\n#### DCGW 1 (SROS)\n\u003cpre\u003e\nA:admin@dcgw1# show router bgp routes ipv4 brief\n===============================================================================\n BGP Router ID:10.0.0.31        AS:65030       Local AS:65030\n===============================================================================\n Legend -\n Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid\n                 l - leaked, x - stale, \u003e - best, b - backup, p - purge\n Origin codes  : i - IGP, e - EGP, ? - incomplete\n\n===============================================================================\nBGP IPv4 Routes\n===============================================================================\nFlag  Network\n-------------------------------------------------------------------------------\nu*\u003ei  10.0.0.11/32\n*i    10.0.0.11/32\nu*\u003ei  10.0.0.12/32\n*i    10.0.0.12/32\nu*\u003ei  10.0.0.13/32\n*i    10.0.0.13/32\nu*\u003ei  10.0.0.14/32\n*i    10.0.0.14/32\nu*\u003ei  10.0.0.21/32\nu*\u003ei  10.0.0.22/32\ni     10.0.0.32/32\ni     10.0.0.32/32\n-------------------------------------------------------------------------------\nRoutes : 12\n===============================================================================\n\u003c/pre\u003e\n\n\n### Overlay\nMP-BGP is used to provide overlay connectivity between the routers, and to therefore exchange EVPN routes. A Layer-2 service is defined on the leafs, it gives access to two multi-homed nodes. Multi-homing with EVPN requires the advertisement of Ethernet Auto-Discovery routes between leafs and up to the DCGWs. Those routes can be seen with the commands provided below.\n\n#### Leaf 1 (SR Linux)\n\u003cpre\u003e\nA:leaf1# /show network-instance default protocols bgp routes evpn route-type 1 summary\n--------------------------------------------------------------------------------------------------------\nShow report for the BGP route table of network-instance \"default\"\n--------------------------------------------------------------------------------------------------------\nStatus codes: u=used, *=valid, \u003e=best, x=stale\nOrigin codes: i=IGP, e=EGP, ?=incomplete\n--------------------------------------------------------------------------------------------------------\nBGP Router ID: 10.0.0.11      AS: 65011      Local AS: 65011\n--------------------------------------------------------------------------------------------------------\n--------------------------------------------------------------------------------------------------------\nType 1 Ethernet Auto-Discovery Routes\n+--------+-----------+--------------------------------+------------+-----------+-----------+-----------+\n| Status | Route-dis |              ESI               |   Tag-ID   | neighbor  | Next-hop  |    VNI    |\n|        | tinguishe |                                |            |           |           |           |\n|        |     r     |                                |            |           |           |           |\n+========+===========+================================+============+===========+===========+===========+\n| u*\u003e    | 1:12      | 01:01:01:01:01:01:01:01:01:01  | 0          | 10.0.0.21 | 10.0.0.12 | 1         |\n| *      | 1:12      | 01:01:01:01:01:01:01:01:01:01  | 0          | 10.0.0.22 | 10.0.0.12 | 1         |\n| u*\u003e    | 1:12      | 01:01:01:01:01:01:01:01:01:01  | 4294967295 | 10.0.0.21 | 10.0.0.12 | -         |\n| *      | 1:12      | 01:01:01:01:01:01:01:01:01:01  | 4294967295 | 10.0.0.22 | 10.0.0.12 | -         |\n| u*\u003e    | 1:13      | 02:02:02:02:02:02:02:02:02:02  | 0          | 10.0.0.21 | 10.0.0.13 | 1         |\n| *      | 1:13      | 02:02:02:02:02:02:02:02:02:02  | 0          | 10.0.0.22 | 10.0.0.13 | 1         |\n| u*\u003e    | 1:13      | 02:02:02:02:02:02:02:02:02:02  | 4294967295 | 10.0.0.21 | 10.0.0.13 | -         |\n| *      | 1:13      | 02:02:02:02:02:02:02:02:02:02  | 4294967295 | 10.0.0.22 | 10.0.0.13 | -         |\n| u*\u003e    | 1:14      | 02:02:02:02:02:02:02:02:02:02  | 0          | 10.0.0.21 | 10.0.0.14 | 1         |\n| *      | 1:14      | 02:02:02:02:02:02:02:02:02:02  | 0          | 10.0.0.22 | 10.0.0.14 | 1         |\n| u*\u003e    | 1:14      | 02:02:02:02:02:02:02:02:02:02  | 4294967295 | 10.0.0.21 | 10.0.0.14 | -         |\n| *      | 1:14      | 02:02:02:02:02:02:02:02:02:02  | 4294967295 | 10.0.0.22 | 10.0.0.14 | -         |\n+--------+-----------+--------------------------------+------------+-----------+-----------+-----------+\n12 Ethernet Auto-Discovery routes 6 used, 12 valid\n--------------------------------------------------------------------------------------------------------\n\u003c/pre\u003e\n\n#### DCGW 1 (SROS)\n\u003cpre\u003e\nA:admin@dcgw1# show router bgp routes evpn auto-disc\n===============================================================================\n BGP Router ID:10.0.0.31        AS:65030       Local AS:65030\n===============================================================================\n Legend -\n Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid\n                 l - leaked, x - stale, \u003e - best, b - backup, p - purge\n Origin codes  : i - IGP, e - EGP, ? - incomplete\n\n===============================================================================\nBGP EVPN Auto-Disc Routes\n===============================================================================\nFlag  Route Dist.         ESI                           NextHop\n      Tag                                               Label\n-------------------------------------------------------------------------------\nu*\u003ei  1:11                01:01:01:01:01:01:01:01:01:01 10.0.0.11\n      0                                                 VNI 1\n\n*i    1:11                01:01:01:01:01:01:01:01:01:01 10.0.0.11\n      0                                                 VNI 1\n\nu*\u003ei  1:11                01:01:01:01:01:01:01:01:01:01 10.0.0.11\n      MAX-ET                                            VNI 0\n\n*i    1:11                01:01:01:01:01:01:01:01:01:01 10.0.0.11\n      MAX-ET                                            VNI 0\n\nu*\u003ei  1:12                01:01:01:01:01:01:01:01:01:01 10.0.0.12\n      0                                                 VNI 1\n\n*i    1:12                01:01:01:01:01:01:01:01:01:01 10.0.0.12\n      0                                                 VNI 1\n\nu*\u003ei  1:12                01:01:01:01:01:01:01:01:01:01 10.0.0.12\n      MAX-ET                                            VNI 0\n\n*i    1:12                01:01:01:01:01:01:01:01:01:01 10.0.0.12\n      MAX-ET                                            VNI 0\n\nu*\u003ei  1:13                02:02:02:02:02:02:02:02:02:02 10.0.0.13\n      0                                                 VNI 1\n\n*i    1:13                02:02:02:02:02:02:02:02:02:02 10.0.0.13\n      0                                                 VNI 1\n\nu*\u003ei  1:13                02:02:02:02:02:02:02:02:02:02 10.0.0.13\n      MAX-ET                                            VNI 0\n\n*i    1:13                02:02:02:02:02:02:02:02:02:02 10.0.0.13\n      MAX-ET                                            VNI 0\n\nu*\u003ei  1:14                02:02:02:02:02:02:02:02:02:02 10.0.0.14\n      0                                                 VNI 1\n\n*i    1:14                02:02:02:02:02:02:02:02:02:02 10.0.0.14\n      0                                                 VNI 1\n\nu*\u003ei  1:14                02:02:02:02:02:02:02:02:02:02 10.0.0.14\n      MAX-ET                                            VNI 0\n\n*i    1:14                02:02:02:02:02:02:02:02:02:02 10.0.0.14\n      MAX-ET                                            VNI 0\n\n-------------------------------------------------------------------------------\nRoutes : 16\n===============================================================================\n\u003c/pre\u003e\n\n\n### Advertising a MAC-IP route in the fabric\nOn both DCGWs, a routed VPLS is defined and is connected to a VPRN instance, which contains a routed interface. This is illustrated on the figure below. With an interface on both DCGWs, we can use the clients to send traffic through the fabric. This will therefore create an EVPN MAC-IP route containing the MAC address of both clients. Note that MAC-IP entries are already advertised for the routed interface on the DCGWs : this is expected since those interfaces are statically defined. \n\nTo send traffic from one of the client, connect to one of those and execute the following command.\n\n```bash\nping 192.168.1.31\n```\n\n![overlay](traffic.png)\n\nAfter execution, the MAC-IP route related to the client should be displayed, containing the MAC address along with the Ethernet Segment Identifier.\n\n\u003cpre\u003e\nA:admin@dcgw1# show router bgp routes evpn mac\n===============================================================================\n BGP Router ID:10.0.0.31        AS:65030       Local AS:65030\n===============================================================================\n Legend -\n Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid\n                 l - leaked, x - stale, \u003e - best, b - backup, p - purge\n Origin codes  : i - IGP, e - EGP, ? - incomplete\n\n===============================================================================\nBGP EVPN MAC Routes\n===============================================================================\nFlag  Route Dist.         MacAddr           ESI\n      Tag                 Mac Mobility      Label1\n                          Ip Address\n                          NextHop\n-------------------------------------------------------------------------------\nu*\u003ei  1:11                aa:c1:ab:8b:7b:c9 01:01:01:01:01:01:01:01:01:01\n      0                   Seq:0             VNI 1\n                          n/a\n                          10.0.0.11\n\n*i    1:11                aa:c1:ab:8b:7b:c9 01:01:01:01:01:01:01:01:01:01\n      0                   Seq:0             VNI 1\n                          n/a\n                          10.0.0.11\n\nu*\u003ei  1:12                aa:c1:ab:8b:7b:c9 01:01:01:01:01:01:01:01:01:01\n      0                   Seq:0             VNI 1\n                          n/a\n                          10.0.0.12\n\n*i    1:12                aa:c1:ab:8b:7b:c9 01:01:01:01:01:01:01:01:01:01\n      0                   Seq:0             VNI 1\n                          n/a\n                          10.0.0.12\n\nu*\u003ei  1:32                52:54:00:6a:23:3e ESI-0\n      0                   Static            VNI 1\n                          192.168.1.32\n                          10.0.0.32\n\n*i    1:32                52:54:00:6a:23:3e ESI-0\n      0                   Static            VNI 1\n                          192.168.1.32\n                          10.0.0.32\n\n-------------------------------------------------------------------------------\nRoutes : 6\n===============================================================================\n\u003c/pre\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrl-labs%2Fnokia-evpn-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrl-labs%2Fnokia-evpn-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrl-labs%2Fnokia-evpn-lab/lists"}