{"id":15776652,"url":"https://github.com/jbemmel/sros-l2-services","last_synced_at":"2026-01-08T17:07:02.698Z","repository":{"id":196035136,"uuid":"694206780","full_name":"jbemmel/sros-l2-services","owner":"jbemmel","description":"Virtual lab showcasing various L2 services and how to configure them","archived":false,"fork":false,"pushed_at":"2024-05-31T17:51:20.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-05T17:22:58.475Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbemmel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-09-20T14:34:00.000Z","updated_at":"2024-05-31T17:51:23.000Z","dependencies_parsed_at":"2024-05-31T12:44:30.254Z","dependency_job_id":"32d222f1-08ea-475c-854e-9d5da7b7b076","html_url":"https://github.com/jbemmel/sros-l2-services","commit_stats":null,"previous_names":["jbemmel/sros-l2-services"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbemmel%2Fsros-l2-services","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbemmel%2Fsros-l2-services/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbemmel%2Fsros-l2-services/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbemmel%2Fsros-l2-services/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbemmel","download_url":"https://codeload.github.com/jbemmel/sros-l2-services/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237547534,"owners_count":19327871,"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":[],"created_at":"2024-10-04T17:23:07.999Z","updated_at":"2026-01-08T17:07:02.686Z","avatar_url":"https://github.com/jbemmel.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sros-l2-services\nVirtual lab showcasing various L2 services and how to configure them\n\nInspired by the [Advanced Solutions Guide](https://documentation.nokia.com/cgi-bin/dbaccessfilename.cgi/3HE14991AAAITQZZA01_V1_Advanced%20Configuration%20Guide%20Part%20II%20for%20Releases%20Up%20To%2022.10.R3.pdf) around page 102\n\n![image](https://github.com/jbemmel/sros-l2-services/assets/2031627/dc195830-c6bf-4923-b0b8-0402580eec69)\n\n## Getting started\nThis lab uses [Netlab](https://github.com/ipspace/netlab) to bring up the initial topology:\n```\nnetlab up\n```\nNotes:\n* assumes you have built a vrnetlab SR OS image, see https://containerlab.dev/manual/vrnetlab/\n* requires a license for VSR\n\n## Testing services\nLog in to the nodes to see services:\n```\nssh admin@clab-L2-services-r1\nshow service service-using\n```\n```\nA:admin@r1# /show service service-using \n\n===============================================================================\nServices \n===============================================================================\nServiceId    Type      Adm  Opr  CustomerId Service Name\n-------------------------------------------------------------------------------\n1            VPLS      Up   Up   1          VPLS-1\n2            Epipe     Up   Up   1          Epipe-2\n3            VPLS      Up   Up   1          BGP-VPLS-3\n4            VPLS      Up   Up   1          BGP-AD-VPLS-4\n5            Epipe     Up   Up   1          BGP-VPWS-5\n6            Epipe     Up   Up   1          BGP-EVPN-VPWS\n11           VPRN      Up   Up   1          client-1\n12           VPRN      Up   Up   1          client-2\n13           VPRN      Up   Up   1          client-3\n14           VPRN      Up   Up   1          client-4\n15           VPRN      Up   Up   1          client-5\n16           VPRN      Up   Up   1          client-6\n2147483648   IES       Up   Down 1          _tmnx_InternalIesService\n2147483649   intVpls   Up   Down 1          _tmnx_InternalVplsService\n-------------------------------------------------------------------------------\nMatching Services : 14\n-------------------------------------------------------------------------------\n```\n\nFor example, to test service Epipe-2:\n```\nA:admin@r1# ping 10.0.12.22 router-instance \"client-2\" \nPING 10.0.12.22 56 data bytes\n64 bytes from 10.0.12.22: icmp_seq=1 ttl=64 time=5.48ms.\n64 bytes from 10.0.12.22: icmp_seq=2 ttl=64 time=1.89ms.\n64 bytes from 10.0.12.22: icmp_seq=3 ttl=64 time=2.74ms.\nping aborted by user\n\n```\n\n## Status (on SR-1)\n\n|     Case      |   Working?  |  Command\n| ------------- | ----------- | ---------------------------------------------\n|  VPLS-1       |     ✅      |  `ping 10.0.11.21 router-instance \"client-1\"`\n|  Epipe-2      |     ✅      |  `ping 10.0.12.22 router-instance \"client-2\"`\n|  BGP-VPLS-3   |     ✅      |  `ping 10.0.13.23 router-instance \"client-3\"`, requires SDP local/far end to match BGP peering addresses\n| BGP-AD-VPLS-4 |     ✅      |  `ping 10.0.14.24 router-instance \"client-4\"`, SDP local/far match *and* GRE loopback IP must match iBGP peering IP\n|  BGP-VPWS-5   |     ✅      |  `ping 10.0.15.25 router-instance \"client-5\"`, requires SDP local/far end to match BGP peering addresses\n| BGP-EVPN-VPWS |     ✅      |  `ping 10.0.16.26 router-instance \"client-6\"`\n\n## Status (on IXR-ec)\n\nThe configuration for the services is similar, with a few key differences:\n* IXR-ec does not support GRE to/from a non-system loopback, or pxc (cross-connect) ports; those are FP4/FP5 specific features\n* IXR-ec uses ECMP profiles, not absolute values. So \"ecmp: 2\" refers to profile #2 (MPLS)\n\n|     Case      |   Working?  |  Command\n| ------------- | ----------- | ------------------------------------------------------\n|  VPLS-1       |     ✅      |  `docker exec -it clab-L2-services-h1 ping 172.16.1.7`\n|  Epipe-2      |     ✅      |  `docker exec -it clab-L2-services-h1 ping 172.16.2.7`\n|  BGP-VPLS-3   |     ✅      |  `docker exec -it clab-L2-services-h1 ping 172.16.3.7`\n| BGP-AD-VPLS-4 |     ✅      |  `docker exec -it clab-L2-services-h1 ping 172.16.4.7`\n|  BGP-VPWS-5   |     ✅      |  `docker exec -it clab-L2-services-h1 ping 172.16.5.7`\n| BGP-EVPN-VPWS |     ✅      |  `docker exec -it clab-L2-services-h1 ping 172.16.6.7`\n\nSee the [7750 Release Notes](https://documentation.nokia.com/aces/cgi-bin/dbaccessfilename.cgi/3HE192690005TQZZA01_V1_SR%20OS%2023.7.R2%20Software%20Release%20Notes.pdf) section 12 for details on \"SR OS features not supported on IXR\"\n\n### BGP l2-vpn status\n\n```\nA:admin@r1# /show router bgp neighbor \"10.0.0.1\" received-routes l2-vpn\n===============================================================================\n BGP Router ID:10.0.0.2         AS:65000       Local AS:65000      \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 L2VPN Routes\n===============================================================================\nFlag  RouteType                   Prefix                             MED\n      RD                          SiteId                             Label\n      Nexthop                     VeId                   BlockSize   LocalPref\n      As-Path                     BaseOffset             vplsLabelBa \n                                                         se          \n-------------------------------------------------------------------------------\ni     AutoDiscovery               10.0.0.2               -           0\n      10.0.0.2:60000              -                                  -\n      10.0.0.2                    -                      -           100\n      No As-Path                  -                      -            \ni     VPLS                        -                      -           0\n      10.0.0.2:60001              -                                  -\n      10.0.0.2                    1                      8           100\n      No As-Path                  1                      524271       \ni     VPWS                        -                      -           0\n      10.0.0.2:60002              -                                  -\n      10.0.0.2                    1                      1           100\n      No As-Path                  2                      524284       \nu*\u003ei  AutoDiscovery               10.0.0.3               -           0\n      10.0.0.3:60000              -                                  -\n      10.0.0.3                    -                      -           100\n      No As-Path                  -                      -            \nu*\u003ei  VPLS                        -                      -           0\n      10.0.0.3:60001              -                                  -\n      10.0.0.3                    2                      8           100\n      No As-Path                  1                      524271       \nu*\u003ei  VPWS                        -                      -           0\n      10.0.0.3:60002              -                                  -\n      10.0.0.3                    2                      1           100\n      No As-Path                  1                      524282       \n-------------------------------------------------------------------------------\nRoutes : 6\n===============================================================================\n\nA:admin@r1# /show router tunnel-table \n\n===============================================================================\nIPv4 Tunnel Table (Router: Base)\n===============================================================================\nDestination           Owner     Encap TunnelId  Pref   Nexthop        Metric\n   Color                                                              \n-------------------------------------------------------------------------------\n10.0.0.1/32           ldp       MPLS  65538     9      10.11.0.17     1\n10.0.0.3/32           ldp       MPLS  65537     9      10.11.0.2      1\n10.0.0.4/32           ldp       MPLS  65540     9      10.11.0.6      1\n10.0.0.5/32           ldp       MPLS  65539     9      10.11.0.2      2\n10.0.2.1/32           sdp       GRE   120       5      10.0.2.1       0\n10.0.2.1/32           sdp       GRE   121       5      10.0.2.1       0\n10.11.0.2/32          rsvp      MPLS  1         7      10.11.0.2      16777215\n-------------------------------------------------------------------------------\nFlags: B = BGP or MPLS backup hop available\n       L = Loop-Free Alternate (LFA) hop available\n       E = Inactive best-external BGP route\n       k = RIB-API or Forwarding Policy backup hop\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbemmel%2Fsros-l2-services","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbemmel%2Fsros-l2-services","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbemmel%2Fsros-l2-services/lists"}