diff --git a/.gitignore b/.gitignore index b69978c..f24d6d7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ venv/* __pycache__ test/* -launch.json -lab-examples/** \ No newline at end of file +launch.json \ No newline at end of file diff --git a/lab-examples/.gitignore b/lab-examples/.gitignore deleted file mode 100644 index c40091c..0000000 --- a/lab-examples/.gitignore +++ /dev/null @@ -1 +0,0 @@ -clab-* \ No newline at end of file diff --git a/lab-examples/anysec.clab.drawio b/lab-examples/anysec.clab.drawio new file mode 100644 index 0000000..893528e --- /dev/null +++ b/lab-examples/anysec.clab.drawio @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/anysec.clab.mod.drawio b/lab-examples/anysec.clab.mod.drawio new file mode 100644 index 0000000..9764045 --- /dev/null +++ b/lab-examples/anysec.clab.mod.drawio @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/anysec.clab.mod.yml b/lab-examples/anysec.clab.mod.yml new file mode 100644 index 0000000..4cd7dde --- /dev/null +++ b/lab-examples/anysec.clab.mod.yml @@ -0,0 +1,158 @@ +name: anysec-macsec +prefix: '' +mgmt: + network: anysec + ipv4-subnet: 172.50.50.0/24 +topology: + kinds: + nokia_sros: + type: sr-1x-48d + image: registry.srlinux.dev/pub/vr-sros:24.3.R2-1 + license: ${SROS_LIC_PATH:-/opt/nokia/sros/r24_license.key} + linux: + image: ghcr.io/srl-labs/network-multitool + env: + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + no_proxy: pe1,pe2,p3,p4,ce5,ce6,client7,client8,gnmic,prometheus,grafana,localhost,172.50.50.0/24 + nodes: + pe1: + kind: nokia_sros + mgmt-ipv4: 172.50.50.11 + startup-config: configs/core/pe1.partial.cfg + labels: + graph-level: 3 + graph-icon: router + pe2: + kind: nokia_sros + mgmt-ipv4: 172.50.50.12 + startup-config: configs/core/pe2.partial.cfg + labels: + graph-level: 5 + graph-icon: router + p3: + kind: nokia_sros + mgmt-ipv4: 172.50.50.13 + type: SR-1 + startup-config: configs/core/p3.partial.cfg + labels: + graph-level: 4 + graph-icon: router + p4: + kind: nokia_sros + mgmt-ipv4: 172.50.50.14 + type: SR-1 + startup-config: configs/core/p4.partial.cfg + labels: + graph-level: 4 + graph-icon: router + ce5: + kind: nokia_sros + mgmt-ipv4: 172.50.50.51 + startup-config: configs/core/ce5.partial.cfg + labels: + graph-level: 2 + graph-icon: router + ce6: + kind: nokia_sros + mgmt-ipv4: 172.50.50.52 + startup-config: configs/core/ce6.partial.cfg + labels: + graph-level: 6 + graph-icon: router + client7: + kind: linux + mgmt-ipv4: 172.50.50.31 + binds: + - configs/clients/client7/setup-client7.sh:/config/setup-client7.sh + exec: + - bash /config/setup-client7.sh + group: server + labels: + graph-level: 1 + graph-icon: host + client8: + kind: linux + mgmt-ipv4: 172.50.50.32 + binds: + - configs/clients/client8/setup-client8.sh:/config/setup-client8.sh + exec: + - bash /config/setup-client8.sh + group: server + labels: + graph-level: 7 + graph-icon: host + gnmic: + kind: linux + mgmt-ipv4: 172.50.50.21 + image: ghcr.io/openconfig/gnmic:0.38.1 + binds: + - configs/gnmic/gnmic-config.yml:/gnmic-config.yml:ro + cmd: --config /gnmic-config.yml --log subscribe + group: '10' + prometheus: + kind: linux + mgmt-ipv4: 172.50.50.22 + image: prom/prometheus:v2.51.2 + binds: + - configs/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + cmd: --config.file=/etc/prometheus/prometheus.yml + ports: + - 9090:9090 + group: '10' + grafana: + kind: linux + mgmt-ipv4: 172.50.50.23 + image: grafana/grafana:10.3.5 + binds: + - configs/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yaml:ro + - configs/grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yaml:ro + - configs/grafana/dashboards:/var/lib/grafana/dashboards + ports: + - 3000:3000 + env: + HTTPS_PROXY: ${http_proxy} + GF_INSTALL_PLUGINS: https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-1.0.0d.220606199-SNAPSHOT.zip;agenty-flowcharting-panel,https://github.com/cloudspout/cloudspout-button-panel/releases/download/7.0.23/cloudspout-button-panel.zip;cloudspout-button-panel + GF_ORG_ROLE: Editor + GF_ORG_NAME: Main Org. + GF_AUTH_ANONYMOUS_ENABLED: 'true' + GF_AUTH_ANONYMOUS: 'true' + GF_SECURITY_ALLOW_EMBEDDING: 'true' + GF_DASHBOARDS_MIN_REFRESH_INTERVAL: 2s + group: '10' + panel: + kind: linux + mgmt-ipv4: 172.50.50.33 + image: ghcr.io/srl-labs/sros-anysec-macsec-lab/panel + image-pull-policy: always + ports: ['54173:4173', '55173:5173'] + binds: + - /etc/hosts:/etc/hosts:ro + stages: + create: + wait-for: + - node: pe1 + stage: healthy + - node: pe2 + stage: healthy + - node: p3 + stage: healthy + - node: p4 + stage: healthy + links: + - endpoints: ['ce5:eth7', 'pe1:eth3'] + - endpoints: ['ce6:eth7', 'pe2:eth3'] + - endpoints: ['pe1:eth1', 'p3:eth2'] + - endpoints: ['pe1:eth2', 'p4:eth2'] + - endpoints: ['pe2:eth1', 'p3:eth3'] + - endpoints: ['pe2:eth2', 'p4:eth3'] + - endpoints: ['p3:eth1', 'p4:eth1'] + - endpoints: ['client7:eth1', 'ce5:eth1'] + - endpoints: ['client7:eth2', 'ce5:eth2'] + - endpoints: ['client7:eth3', 'ce5:eth3'] + - endpoints: ['client8:eth1', 'ce6:eth1'] + - endpoints: ['client8:eth2', 'ce6:eth2'] + - endpoints: ['client8:eth3', 'ce6:eth3'] + - endpoints: ['pe1:eth6', 'ce6:eth6'] + - endpoints: ['pe2:eth5', 'ce6:eth5'] + - endpoints: ['ce6:eth10', 'ce6:eth11'] diff --git a/lab-examples/anysec.clab.yml b/lab-examples/anysec.clab.yml new file mode 100644 index 0000000..f0c55c7 --- /dev/null +++ b/lab-examples/anysec.clab.yml @@ -0,0 +1,168 @@ +name: anysec-macsec +prefix: "" +mgmt: + network: anysec + ipv4-subnet: 172.50.50.0/24 + +topology: + kinds: + nokia_sros: + type: sr-1x-48d + image: registry.srlinux.dev/pub/vr-sros:24.3.R2-1 + license: ${SROS_LIC_PATH:-/opt/nokia/sros/r24_license.key} + linux: + image: ghcr.io/srl-labs/network-multitool + env: + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + no_proxy: pe1,pe2,p3,p4,ce5,ce6,client7,client8,gnmic,prometheus,grafana,localhost,172.50.50.0/24 + + nodes: + ### CORE FP5 and FP4### + # FP5 + pe1: + kind: nokia_sros + mgmt-ipv4: 172.50.50.11 + startup-config: configs/core/pe1.partial.cfg + + # FP5 + pe2: + kind: nokia_sros + mgmt-ipv4: 172.50.50.12 + startup-config: configs/core/pe2.partial.cfg + + # FP4 + p3: + kind: nokia_sros + mgmt-ipv4: 172.50.50.13 + type: SR-1 + startup-config: configs/core/p3.partial.cfg + + # FP4 + p4: + kind: nokia_sros + mgmt-ipv4: 172.50.50.14 + type: SR-1 + startup-config: configs/core/p4.partial.cfg + + ### CEs ### + # FP5 + ce5: + kind: nokia_sros + mgmt-ipv4: 172.50.50.51 + startup-config: configs/core/ce5.partial.cfg + + # FP5 + ce6: + kind: nokia_sros + mgmt-ipv4: 172.50.50.52 + startup-config: configs/core/ce6.partial.cfg + + ### CLIENTS & Automation Stack ### + client7: + kind: linux + mgmt-ipv4: 172.50.50.31 + binds: + - configs/clients/client7/setup-client7.sh:/config/setup-client7.sh + exec: + - bash /config/setup-client7.sh + group: server + + client8: + kind: linux + mgmt-ipv4: 172.50.50.32 + binds: + - configs/clients/client8/setup-client8.sh:/config/setup-client8.sh + exec: + - bash /config/setup-client8.sh + group: server + + ### TELEMETRY STACK ### + gnmic: + kind: linux + mgmt-ipv4: 172.50.50.21 + image: ghcr.io/openconfig/gnmic:0.38.1 + binds: + - configs/gnmic/gnmic-config.yml:/gnmic-config.yml:ro + cmd: --config /gnmic-config.yml --log subscribe + group: "10" # group 10 is assigned to the nodes of a telemetry stack + + prometheus: + kind: linux + mgmt-ipv4: 172.50.50.22 + image: prom/prometheus:v2.51.2 + binds: + - configs/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + cmd: --config.file=/etc/prometheus/prometheus.yml + ports: + - 9090:9090 + group: "10" + + grafana: + kind: linux + mgmt-ipv4: 172.50.50.23 + image: grafana/grafana:10.3.5 + binds: + - configs/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yaml:ro + - configs/grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yaml:ro + - configs/grafana/dashboards:/var/lib/grafana/dashboards + ports: + - 3000:3000 + env: + HTTPS_PROXY: ${http_proxy} + GF_INSTALL_PLUGINS: https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-1.0.0d.220606199-SNAPSHOT.zip;agenty-flowcharting-panel,https://github.com/cloudspout/cloudspout-button-panel/releases/download/7.0.23/cloudspout-button-panel.zip;cloudspout-button-panel + GF_ORG_ROLE: "Editor" + GF_ORG_NAME: "Main Org." + GF_AUTH_ANONYMOUS_ENABLED: "true" + GF_AUTH_ANONYMOUS: "true" + GF_SECURITY_ALLOW_EMBEDDING: "true" + GF_DASHBOARDS_MIN_REFRESH_INTERVAL: 2s + group: "10" + + ### AUTOMATION PANEL ### + panel: + kind: linux + mgmt-ipv4: 172.50.50.33 + image: ghcr.io/srl-labs/sros-anysec-macsec-lab/panel + image-pull-policy: always + ports: + - 54173:4173 # prod port + - 55173:5173 # dev port + binds: + # to allow the frontend to resolve the public hostname + # of the hosting server (e.g. tailscale machine name) + - /etc/hosts:/etc/hosts:ro + stages: + # automation panel subscribes to the pe1, pe2, p3, p4 nodes, + # thus we want to start the panel node after the above nodes are healthy + create: + wait-for: + - node: pe1 + stage: healthy + - node: pe2 + stage: healthy + - node: p3 + stage: healthy + - node: p4 + stage: healthy + + links: + - endpoints: ["ce5:eth7", "pe1:eth3"] + - endpoints: ["ce6:eth7", "pe2:eth3"] + - endpoints: ["pe1:eth1", "p3:eth2"] + - endpoints: ["pe1:eth2", "p4:eth2"] + - endpoints: ["pe2:eth1", "p3:eth3"] + - endpoints: ["pe2:eth2", "p4:eth3"] + - endpoints: ["p3:eth1", "p4:eth1"] + # Client7 + - endpoints: ["client7:eth1", "ce5:eth1"] + - endpoints: ["client7:eth2", "ce5:eth2"] + - endpoints: ["client7:eth3", "ce5:eth3"] + # Client8 + - endpoints: ["client8:eth1", "ce6:eth1"] + - endpoints: ["client8:eth2", "ce6:eth2"] + - endpoints: ["client8:eth3", "ce6:eth3"] + # Mirror - For Advanced TShoot, disabled by default + - endpoints: ["pe1:eth6", "ce6:eth6"] + - endpoints: ["pe2:eth5", "ce6:eth5"] + - endpoints: ["ce6:eth10", "ce6:eth11"] ### mirror dest is eth10 to allow single point of capture \ No newline at end of file diff --git a/lab-examples/br01.clab.drawio b/lab-examples/br01.clab.drawio new file mode 100644 index 0000000..cfd50cb --- /dev/null +++ b/lab-examples/br01.clab.drawio @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/br01/br01.clab.yml b/lab-examples/br01.clab.yml similarity index 100% rename from lab-examples/br01/br01.clab.yml rename to lab-examples/br01.clab.yml diff --git a/lab-examples/cfg-clos.clab.drawio b/lab-examples/cfg-clos.clab.drawio new file mode 100644 index 0000000..2c5749e --- /dev/null +++ b/lab-examples/cfg-clos.clab.drawio @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/clos01.clab.drawio b/lab-examples/clos01.clab.drawio new file mode 100644 index 0000000..4c7df7a --- /dev/null +++ b/lab-examples/clos01.clab.drawio @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/clos01/clos01.clab.yml b/lab-examples/clos01.clab.yml similarity index 100% rename from lab-examples/clos01/clos01.clab.yml rename to lab-examples/clos01.clab.yml diff --git a/lab-examples/clos02.clab.drawio b/lab-examples/clos02.clab.drawio new file mode 100644 index 0000000..a41a02f --- /dev/null +++ b/lab-examples/clos02.clab.drawio @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/clos02/README.md b/lab-examples/clos02/README.md deleted file mode 100644 index 4c7aa84..0000000 --- a/lab-examples/clos02/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# SRL Containerlab (clos02) - -### 5-stage CLOS -https://containerlab.dev/lab-examples/min-5clos/ - -### Execution -``` -$ containerlab deploy --topo setup.clos02.clab.yml - -$ chmod +x setup.sh -$ ./setup.sh -``` - -!!!note - The setup script needs [gnmic](https://gnmic.openconfig.net/) - -### Setup Configures -1. NEs with Management, System and Ethernet IP Addresses. -2. Clients with eth0 (Management) and eth1 interface. -3. NEs and Clients with both IPv4 and IPv6 addresses. -4. NEs with BGP, ISIS & OSPF Network Interface (under default). - -### IP Connectivity - -| Source | Interface | Towards | IPv4 | IPv4 Prefix | IPv6 | IPv6 Prefix | -| ----------- | -------------- | ----------- | ---------------- | ----------- | ---------------------- | ----------- | -| leaf1 | mgmt0.0 | - | `172.100.100.2 ` | 24 | `2001:172:100:100::2 ` | 64 | -| | system0.0 | - | `30.0.0.1 ` | 32 | `3000:30:0:0::1 ` | 128 | -| | ethernet-1/1.0 | spine1 | `10.0.0.0 ` | 31 | `1000:10:0:0::0 ` | 127 | -| | ethernet-1/2.0 | spine2 | `10.0.0.2 ` | 31 | `1000:10:0:0::2 ` | 127 | -| | ethernet-1/3.0 | client1 | `10.0.0.24 ` | 31 | `1000:10:0:0::24 ` | 127 | -| leaf2 | mgmt0.0 | - | `172.100.100.3 ` | 24 | `2001:172:100:100::3 ` | 64 | -| | system0.0 | - | `30.0.0.2 ` | 32 | `3000:30:0:0::2 ` | 128 | -| | ethernet-1/1.0 | spine1 | `10.0.0.4 ` | 31 | `1000:10:0:0::4 ` | 127 | -| | ethernet-1/2.0 | spine2 | `10.0.0.6 ` | 31 | `1000:10:0:0::6 ` | 127 | -| | ethernet-1/3.0 | client2 | `10.0.0.26 ` | 31 | `1000:10:0:0::26 ` | 127 | -| leaf3 | mgmt0.0 | - | `172.100.100.4 ` | 24 | `2001:172:100:100::4 ` | 64 | -| | system0.0 | - | `30.0.0.3 ` | 32 | `3000:30:0:0::3 ` | 128 | -| | ethernet-1/1.0 | spine3 | `10.0.0.12 ` | 31 | `1000:10:0:0::12 ` | 127 | -| | ethernet-1/2.0 | spine4 | `10.0.0.14 ` | 31 | `1000:10:0:0::14 ` | 127 | -| | ethernet-1/3.0 | client3 | `10.0.0.28 ` | 31 | `1000:10:0:0::28 ` | 127 | -| leaf4 | mgmt0.0 | - | `172.100.100.5 ` | 24 | `2001:172:100:100::5 ` | 64 | -| | system0.0 | - | `30.0.0.4 ` | 32 | `3000:30:0:0::4 ` | 128 | -| | ethernet-1/1.0 | spine3 | `10.0.0.16 ` | 31 | `1000:10:0:0::16 ` | 127 | -| | ethernet-1/2.0 | spine4 | `10.0.0.18 ` | 31 | `1000:10:0:0::18 ` | 127 | -| | ethernet-1/3.0 | client4 | `10.0.0.30 ` | 31 | `1000:10:0:0::30 ` | 127 | -| spine1 | mgmt0.0 | - | `172.100.100.6 ` | 24 | `2001:172:100:100::6 ` | 64 | -| | system0.0 | - | `30.0.0.5 ` | 32 | `3000:30:0:0::5 ` | 128 | -| | ethernet-1/1.0 | leaf1 | `10.0.0.1 ` | 31 | `1000:10:0:0::1 ` | 127 | -| | ethernet-1/2.0 | leaf2 | `10.0.0.5 ` | 31 | `1000:10:0:0::5 ` | 127 | -| | ethernet-1/3.0 | superspine1 | `10.0.0.8 ` | 31 | `1000:10:0:0::8 ` | 127 | -| spine2 | mgmt0.0 | - | `172.100.100.7 ` | 24 | `2001:172:100:100::7 ` | 64 | -| | system0.0 | - | `30.0.0.6 ` | 32 | `3000:30:0:0::6 ` | 128 | -| | ethernet-1/1.0 | leaf1 | `10.0.0.3 ` | 31 | `1000:10:0:0::3 ` | 127 | -| | ethernet-1/2.0 | leaf2 | `10.0.0.7 ` | 31 | `1000:10:0:0::7 ` | 127 | -| | ethernet-1/3.0 | superspine2 | `10.0.0.10 ` | 31 | `1000:10:0:0::10 ` | 127 | -| spine3 | mgmt0.0 | - | `172.100.100.8 ` | 24 | `2001:172:100:100::8 ` | 64 | -| | system0.0 | - | `30.0.0.7 ` | 32 | `3000:30:0:0::7 ` | 128 | -| | ethernet-1/1.0 | leaf3 | `10.0.0.13 ` | 31 | `1000:10:0:0::13 ` | 127 | -| | ethernet-1/2.0 | leaf4 | `10.0.0.17 ` | 31 | `1000:10:0:0::17 ` | 127 | -| | ethernet-1/3.0 | superspine1 | `10.0.0.20 ` | 31 | `1000:10:0:0::20 ` | 127 | -| spine4 | mgmt0.0 | - | `172.100.100.9 ` | 24 | `2001:172:100:100::9 ` | 64 | -| | system0.0 | - | `30.0.0.8 ` | 32 | `3000:30:0:0::8 ` | 128 | -| | ethernet-1/1.0 | leaf3 | `10.0.0.15 ` | 31 | `1000:10:0:0::15 ` | 127 | -| | ethernet-1/2.0 | leaf4 | `10.0.0.19 ` | 31 | `1000:10:0:0::19 ` | 127 | -| | ethernet-1/3.0 | superspine2 | `10.0.0.22 ` | 31 | `1000:10:0:0::22 ` | 127 | -| superspine1 | mgmt0.0 | - | `172.100.100.10` | 24 | `2001:172:100:100::10` | 64 | -| | system0.0 | - | `30.0.0.9 ` | 32 | `3000:30:0:0::9 ` | 128 | -| | ethernet-1/1.0 | spine1 | `10.0.0.9 ` | 31 | `1000:10:0:0::9 ` | 127 | -| | ethernet-1/2.0 | spine3 | `10.0.0.21 ` | 31 | `1000:10:0:0::21 ` | 127 | -| superspine2 | mgmt0.0 | - | `172.100.100.11` | 24 | `2001:172:100:100::11` | 64 | -| | system0.0 | - | `30.0.0.10 ` | 32 | `3000:30:0:0::10 ` | 128 | -| | ethernet-1/1.0 | spine2 | `10.0.0.11 ` | 31 | `1000:10:0:0::11 ` | 127 | -| | ethernet-1/2.0 | spine4 | `10.0.0.23 ` | 31 | `1000:10:0:0::23 ` | 127 | -| client1 | eth0 | - | `172.100.100.12` | 24 | `2001:172:100:100::12` | 64 | -| | eth1 | leaf1 | `10.0.0.25 ` | 31 | `1000:10:0:0::25 ` | 127 | -| client2 | eth0 | - | `172.100.100.13` | 24 | `2001:172:100:100::13` | 64 | -| | eth1 | leaf2 | `10.0.0.27 ` | 31 | `1000:10:0:0::27 ` | 127 | -| client3 | eth0 | - | `172.100.100.14` | 24 | `2001:172:100:100::14` | 64 | -| | eth1 | leaf3 | `10.0.0.29 ` | 31 | `1000:10:0:0::29 ` | 127 | -| client4 | eth0 | - | `172.100.100.15` | 24 | `2001:172:100:100::15` | 64 | -| | eth1 | leaf4 | `10.0.0.31 ` | 31 | `1000:10:0:0::31 ` | 127 | diff --git a/lab-examples/clos02/clos02.clab.yml b/lab-examples/clos02/clos02.clab.yml deleted file mode 100644 index 0d0222d..0000000 --- a/lab-examples/clos02/clos02.clab.yml +++ /dev/null @@ -1,72 +0,0 @@ -# topology documentation: http://containerlab.dev/lab-examples/min-5clos/ -name: clos02 - -topology: - kinds: - nokia_srlinux: - image: ghcr.io/nokia/srlinux - linux: - image: ghcr.io/hellt/network-multitool - nodes: - leaf1: - kind: nokia_srlinux - leaf2: - kind: nokia_srlinux - leaf3: - kind: nokia_srlinux - leaf4: - kind: nokia_srlinux - - spine1: - kind: nokia_srlinux - type: ixrd3 - spine2: - kind: nokia_srlinux - type: ixrd3 - spine3: - kind: nokia_srlinux - type: ixrd3 - spine4: - kind: nokia_srlinux - type: ixrd3 - - superspine1: - kind: nokia_srlinux - type: ixrd3 - superspine2: - kind: nokia_srlinux - type: ixrd3 - - client1: - kind: linux - client2: - kind: linux - client3: - kind: linux - client4: - kind: linux - - links: - # leaf to spine links POD1 - - endpoints: ["leaf1:e1-1", "spine1:e1-1"] - - endpoints: ["leaf1:e1-2", "spine2:e1-1"] - - endpoints: ["leaf2:e1-1", "spine1:e1-2"] - - endpoints: ["leaf2:e1-2", "spine2:e1-2"] - # spine to superspine links POD1 - - endpoints: ["spine1:e1-3", "superspine1:e1-1"] - - endpoints: ["spine2:e1-3", "superspine2:e1-1"] - - # leaf to spine links POD2 - - endpoints: ["leaf3:e1-1", "spine3:e1-1"] - - endpoints: ["leaf3:e1-2", "spine4:e1-1"] - - endpoints: ["leaf4:e1-1", "spine3:e1-2"] - - endpoints: ["leaf4:e1-2", "spine4:e1-2"] - # spine to superspine links POD2 - - endpoints: ["spine3:e1-3", "superspine1:e1-2"] - - endpoints: ["spine4:e1-3", "superspine2:e1-2"] - - # client connection links - - endpoints: ["client1:eth1", "leaf1:e1-3"] - - endpoints: ["client2:eth1", "leaf2:e1-3"] - - endpoints: ["client3:eth1", "leaf3:e1-3"] - - endpoints: ["client4:eth1", "leaf4:e1-3"] diff --git a/lab-examples/clos02/configs/client1.sh b/lab-examples/clos02/configs/client1.sh deleted file mode 100644 index e8a642f..0000000 --- a/lab-examples/clos02/configs/client1.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -cat > /etc/network/interfaces << EOF -auto eth1 - -iface eth1 inet static - address 10.0.0.25 - netmask 255.255.255.254 - -iface eth1 inet6 static - address 1000:10:0:0::25 - netmask 127 - pre-up echo 0 > /proc/sys/net/ipv6/conf/eth1/accept_ra -EOF - -ifup eth1 diff --git a/lab-examples/clos02/configs/client2.sh b/lab-examples/clos02/configs/client2.sh deleted file mode 100644 index 7ed9b66..0000000 --- a/lab-examples/clos02/configs/client2.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -cat > /etc/network/interfaces << EOF -auto eth1 - -iface eth1 inet static - address 10.0.0.27 - netmask 255.255.255.254 - -iface eth1 inet6 static - address 1000:10:0:0::27 - netmask 127 - pre-up echo 0 > /proc/sys/net/ipv6/conf/eth1/accept_ra -EOF - -ifup eth1 diff --git a/lab-examples/clos02/configs/client3.sh b/lab-examples/clos02/configs/client3.sh deleted file mode 100644 index 0d227e4..0000000 --- a/lab-examples/clos02/configs/client3.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -cat > /etc/network/interfaces << EOF -auto eth1 - -iface eth1 inet static - address 10.0.0.29 - netmask 255.255.255.254 - -iface eth1 inet6 static - address 1000:10:0:0::29 - netmask 127 - pre-up echo 0 > /proc/sys/net/ipv6/conf/eth1/accept_ra -EOF - -ifup eth1 diff --git a/lab-examples/clos02/configs/client4.sh b/lab-examples/clos02/configs/client4.sh deleted file mode 100644 index b40adea..0000000 --- a/lab-examples/clos02/configs/client4.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -cat > /etc/network/interfaces << EOF -auto eth1 - -iface eth1 inet static - address 10.0.0.31 - netmask 255.255.255.254 - -iface eth1 inet6 static - address 1000:10:0:0::31 - netmask 127 - pre-up echo 0 > /proc/sys/net/ipv6/conf/eth1/accept_ra -EOF - -ifup eth1 diff --git a/lab-examples/clos02/configs/leaf1.yaml b/lab-examples/clos02/configs/leaf1.yaml deleted file mode 100644 index 7135239..0000000 --- a/lab-examples/clos02/configs/leaf1.yaml +++ /dev/null @@ -1,109 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.0/31 - ipv6: - admin-state: enable - address: - - ip-prefix: '1000:10::/127' - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.2/31 - ipv6: - admin-state: enable - address: - - ip-prefix: '1000:10::2/127' - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.24/31 - ipv6: - admin-state: enable - address: - - ip-prefix: '1000:10::24/127' - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.1/32 - ipv6: - address: - - ip-prefix: '3000:30::1/128' - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65001 - router-id: 30.0.0.1 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.1 - peer-as: 65056 - peer-group: clos02 - - peer-address: 10.0.0.3 - peer-as: 65056 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0001.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.1 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/leaf2.yaml b/lab-examples/clos02/configs/leaf2.yaml deleted file mode 100644 index f5be2ca..0000000 --- a/lab-examples/clos02/configs/leaf2.yaml +++ /dev/null @@ -1,109 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.4/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::4/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.6/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::6/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.26/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::26/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.2/32 - ipv6: - address: - - ip-prefix: 3000:30::2/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65002 - router-id: 30.0.0.2 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.5 - peer-as: 65056 - peer-group: clos02 - - peer-address: 10.0.0.7 - peer-as: 65056 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0002.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.2 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/leaf3.yaml b/lab-examples/clos02/configs/leaf3.yaml deleted file mode 100644 index d8a1678..0000000 --- a/lab-examples/clos02/configs/leaf3.yaml +++ /dev/null @@ -1,109 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.12/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::12/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.14/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::14/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.28/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::28/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.3/32 - ipv6: - address: - - ip-prefix: 3000:30::3/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65003 - router-id: 30.0.0.3 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.13 - peer-as: 65078 - peer-group: clos02 - - peer-address: 10.0.0.15 - peer-as: 65078 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0003.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.3 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/leaf4.yaml b/lab-examples/clos02/configs/leaf4.yaml deleted file mode 100644 index 8144964..0000000 --- a/lab-examples/clos02/configs/leaf4.yaml +++ /dev/null @@ -1,109 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.16/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::16/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.18/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::18/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.30/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::30/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.4/32 - ipv6: - address: - - ip-prefix: 3000:30::4/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65004 - router-id: 30.0.0.4 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.17 - peer-as: 65078 - peer-group: clos02 - - peer-address: 10.0.0.19 - peer-as: 65078 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0004.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.4 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/spine1.yaml b/lab-examples/clos02/configs/spine1.yaml deleted file mode 100644 index 99e2259..0000000 --- a/lab-examples/clos02/configs/spine1.yaml +++ /dev/null @@ -1,112 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.1/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::1/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.5/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::5/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.8/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::8/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.5/32 - ipv6: - address: - - ip-prefix: 3000:30::5/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65056 - router-id: 30.0.0.5 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.0 - peer-as: 65001 - peer-group: clos02 - - peer-address: 10.0.0.4 - peer-as: 65002 - peer-group: clos02 - - peer-address: 10.0.0.9 - peer-as: 65910 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0005.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.5 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/spine2.yaml b/lab-examples/clos02/configs/spine2.yaml deleted file mode 100644 index d05fe5b..0000000 --- a/lab-examples/clos02/configs/spine2.yaml +++ /dev/null @@ -1,112 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.3/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::3/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.7/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::7/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.10/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::10/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.6/32 - ipv6: - address: - - ip-prefix: 3000:30::6/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65056 - router-id: 30.0.0.6 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.2 - peer-as: 65001 - peer-group: clos02 - - peer-address: 10.0.0.6 - peer-as: 65002 - peer-group: clos02 - - peer-address: 10.0.0.11 - peer-as: 65910 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0006.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.6 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/spine3.yaml b/lab-examples/clos02/configs/spine3.yaml deleted file mode 100644 index e8b5e81..0000000 --- a/lab-examples/clos02/configs/spine3.yaml +++ /dev/null @@ -1,112 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.13/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::13/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.17/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::17/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.20/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::20/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.7/32 - ipv6: - address: - - ip-prefix: 3000:30::7/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65078 - router-id: 30.0.0.7 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.12 - peer-as: 65003 - peer-group: clos02 - - peer-address: 10.0.0.16 - peer-as: 65004 - peer-group: clos02 - - peer-address: 10.0.0.21 - peer-as: 65910 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0007.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.7 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/spine4.yaml b/lab-examples/clos02/configs/spine4.yaml deleted file mode 100644 index 5faee95..0000000 --- a/lab-examples/clos02/configs/spine4.yaml +++ /dev/null @@ -1,112 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.15/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::15/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.19/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::19/127 - - name: ethernet-1/3 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.22/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::22/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.8/32 - ipv6: - address: - - ip-prefix: 3000:30::8/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: ethernet-1/3.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65078 - router-id: 30.0.0.8 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.14 - peer-as: 65003 - peer-group: clos02 - - peer-address: 10.0.0.18 - peer-as: 65004 - peer-group: clos02 - - peer-address: 10.0.0.23 - peer-as: 65910 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0008.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: ethernet-1/3.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.8 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: ethernet-1/3.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/superspine1.yaml b/lab-examples/clos02/configs/superspine1.yaml deleted file mode 100644 index 482365d..0000000 --- a/lab-examples/clos02/configs/superspine1.yaml +++ /dev/null @@ -1,92 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.9/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::9/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.21/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::21/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.9/32 - ipv6: - address: - - ip-prefix: 3000:30::9/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65910 - router-id: 30.0.0.9 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.8 - peer-as: 65056 - peer-group: clos02 - - peer-address: 10.0.0.20 - peer-as: 65078 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0009.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.9 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/configs/superspine2.yaml b/lab-examples/clos02/configs/superspine2.yaml deleted file mode 100644 index 94a7f68..0000000 --- a/lab-examples/clos02/configs/superspine2.yaml +++ /dev/null @@ -1,92 +0,0 @@ -srl_nokia-interfaces:interface: - - name: ethernet-1/1 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.11/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::11/127 - - name: ethernet-1/2 - admin-state: enable - subinterface: - - index: 0 - ipv4: - admin-state: enable - address: - - ip-prefix: 10.0.0.23/31 - ipv6: - admin-state: enable - address: - - ip-prefix: 1000:10::23/127 - - name: system0 - admin-state: enable - subinterface: - - index: 0 - ipv4: - address: - - ip-prefix: 30.0.0.10/32 - ipv6: - address: - - ip-prefix: 3000:30::10/128 - -srl_nokia-network-instance:network-instance: - - name: default - admin-state: enable - interface: - - name: ethernet-1/1.0 - - name: ethernet-1/2.0 - - name: system0.0 - protocols: - srl_nokia-bgp:bgp: - autonomous-system: 65910 - router-id: 30.0.0.10 - afi-safi: - - afi-safi-name: ipv4-unicast - admin-state: enable - - afi-safi-name: ipv6-unicast - admin-state: enable - group: - - group-name: clos02 - admin-state: enable - neighbor: - - peer-address: 10.0.0.10 - peer-as: 65056 - peer-group: clos02 - - peer-address: 10.0.0.22 - peer-as: 65078 - peer-group: clos02 - srl_nokia-isis:isis: - instance: - - name: default - admin-state: enable - level-capability: L2 - net: - - 49.0001.3000.0000.0010.00 - interface: - - interface-name: ethernet-1/1.0 - circuit-type: point-to-point - - interface-name: ethernet-1/2.0 - circuit-type: point-to-point - - interface-name: system0.0 - level: - - level-number: 2 - metric-style: wide - srl_nokia-ospf:ospf: - instance: - - name: default - admin-state: enable - version: ospf-v2 - router-id: 30.0.0.10 - area: - - area-id: 0.0.0.0 - interface: - - interface-name: ethernet-1/1.0 - interface-type: point-to-point - - interface-name: ethernet-1/2.0 - interface-type: point-to-point - - interface-name: system0.0 diff --git a/lab-examples/clos02/setup.clos02.clab.yml b/lab-examples/clos02/setup.clos02.clab.yml deleted file mode 100644 index 893449f..0000000 --- a/lab-examples/clos02/setup.clos02.clab.yml +++ /dev/null @@ -1,101 +0,0 @@ -name: clos02 - -mgmt: - network: br-clos02 - ipv4-subnet: 172.100.100.0/24 - ipv6-subnet: 2001:172:100:100::0/64 - -topology: - kinds: - nokia_srlinux: - image: ghcr.io/nokia/srlinux:23.3.3 - linux: - image: ghcr.io/hellt/network-multitool - nodes: - leaf1: - kind: nokia_srlinux - mgmt-ipv4: 172.100.100.2 - mgmt-ipv6: 2001:172:100:100::2 - leaf2: - kind: nokia_srlinux - mgmt-ipv4: 172.100.100.3 - mgmt-ipv6: 2001:172:100:100::3 - leaf3: - kind: nokia_srlinux - mgmt-ipv4: 172.100.100.4 - mgmt-ipv6: 2001:172:100:100::4 - leaf4: - kind: nokia_srlinux - mgmt-ipv4: 172.100.100.5 - mgmt-ipv6: 2001:172:100:100::5 - - spine1: - kind: nokia_srlinux - type: ixrd3 - mgmt-ipv4: 172.100.100.6 - mgmt-ipv6: 2001:172:100:100::6 - spine2: - kind: nokia_srlinux - type: ixrd3 - mgmt-ipv4: 172.100.100.7 - mgmt-ipv6: 2001:172:100:100::7 - spine3: - kind: nokia_srlinux - type: ixrd3 - mgmt-ipv4: 172.100.100.8 - mgmt-ipv6: 2001:172:100:100::8 - spine4: - kind: nokia_srlinux - type: ixrd3 - mgmt-ipv4: 172.100.100.9 - mgmt-ipv6: 2001:172:100:100::9 - - superspine1: - kind: nokia_srlinux - type: ixrd3 - mgmt-ipv4: 172.100.100.10 - mgmt-ipv6: 2001:172:100:100::10 - superspine2: - kind: nokia_srlinux - type: ixrd3 - mgmt-ipv4: 172.100.100.11 - mgmt-ipv6: 2001:172:100:100::11 - - client1: - kind: linux - mgmt-ipv4: 172.100.100.12 - mgmt-ipv6: 2001:172:100:100::12 - client2: - kind: linux - mgmt-ipv4: 172.100.100.13 - mgmt-ipv6: 2001:172:100:100::13 - client3: - kind: linux - mgmt-ipv4: 172.100.100.14 - mgmt-ipv6: 2001:172:100:100::14 - client4: - kind: linux - mgmt-ipv4: 172.100.100.15 - mgmt-ipv6: 2001:172:100:100::15 - - links: - - endpoints: ["leaf1:e1-1", "spine1:e1-1"] - - endpoints: ["leaf1:e1-2", "spine2:e1-1"] - - endpoints: ["leaf2:e1-1", "spine1:e1-2"] - - endpoints: ["leaf2:e1-2", "spine2:e1-2"] - - - endpoints: ["spine1:e1-3", "superspine1:e1-1"] - - endpoints: ["spine2:e1-3", "superspine2:e1-1"] - - - endpoints: ["leaf3:e1-1", "spine3:e1-1"] - - endpoints: ["leaf3:e1-2", "spine4:e1-1"] - - endpoints: ["leaf4:e1-1", "spine3:e1-2"] - - endpoints: ["leaf4:e1-2", "spine4:e1-2"] - - - endpoints: ["spine3:e1-3", "superspine1:e1-2"] - - endpoints: ["spine4:e1-3", "superspine2:e1-2"] - - - endpoints: ["client1:eth1", "leaf1:e1-3"] - - endpoints: ["client2:eth1", "leaf2:e1-3"] - - endpoints: ["client3:eth1", "leaf3:e1-3"] - - endpoints: ["client4:eth1", "leaf4:e1-3"] diff --git a/lab-examples/clos02/setup.sh b/lab-examples/clos02/setup.sh deleted file mode 100644 index 6f88cf5..0000000 --- a/lab-examples/clos02/setup.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -CFG_DIR=./configs -SRL_PASSWORD=NokiaSrl1! - -configure_SRL() { - OUT=$(gnmic -a clab-clos02-$1 --timeout 30s -u admin -p $SRL_PASSWORD -e json_ietf --skip-verify set --update-path / --update-file $CFG_DIR/$1.yaml 2>&1) - echo $OUT | grep -q -e '\"operation\": \"UPDATE\"' - if [ $? -eq 0 ]; then - docker exec clab-clos02-$1 sr_cli "save startup" > /dev/null - else - echo "Error: Unable to push config into clab-clos02-$1." - fi - echo $OUT > /dev/null -} - -configure_CLIENT() { - docker cp $CFG_DIR/$1.sh clab-clos02-$1:/tmp/ - docker exec clab-clos02-$1 bash /tmp/$1.sh 2>/dev/null -} - -echo -PIDS="" -NE=("leaf1" "leaf2" "leaf3" "leaf4" "spine1" "spine2" "spine3" "spine4" "superspine1" "superspine2") -CLIENT=("client1" "client2" "client3" "client4") - -for VARIANT in ${NE[@]}; do - ( configure_SRL $VARIANT ) & - REF=$! - echo "[$REF] Configuring $VARIANT..." - PIDS+=" $REF" -done - -for VARIANT in ${CLIENT[@]}; do - ( configure_CLIENT $VARIANT ) & - REF=$! - echo "[$REF] Configuring $VARIANT..." - PIDS+=" $REF" -done - -echo -for p in $PIDS; do - if wait $p; then - echo "Process $p success" - else - echo "Process $p fail" - fi -done -echo \ No newline at end of file diff --git a/lab-examples/clos03/README.md b/lab-examples/clos03/README.md deleted file mode 100644 index 2e065f2..0000000 --- a/lab-examples/clos03/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Tier-2 CLOS with Config Engine (cfg-clos) -For detailed information on this example, please refer to : https://containerlab.dev/lab-examples/clos03/ - -### Execution -``` -# Deploy the topology -$ containerlab deploy --topo cfg-clos.topo.yml - -# Generate and apply the configuration from the templates -$ containerlab config --topo cfg-clos.topo.yml -p . -l cfg-clos -``` \ No newline at end of file diff --git a/lab-examples/clos03/cfg-clos.clab.yml b/lab-examples/clos03/cfg-clos.clab.yml deleted file mode 100644 index 94d6973..0000000 --- a/lab-examples/clos03/cfg-clos.clab.yml +++ /dev/null @@ -1,186 +0,0 @@ -### 4 Leaf - 2 Spine - 2 DCGW -name: cfg-clos - -######### Global Variables for Config Engine ######### -topology: - defaults: - config: - vars: - overlay_as: 65555 - #----------------------------------------------------# - kinds: - nokia_srlinux: - image: ghcr.io/nokia/srlinux:21.6.2-67 - vr-sros: - image: vrnetlab/vr-sros:21.7.R1 # internal image, external users should build/use their own image - license: ./license_sr.key # license file must be obtained from Nokia - - ####################################################### - nodes: - #-----------------------------------------------------# - dcgw1: - kind: vr-sros - type: sr-1 - config: - vars: - system_ip: 10.0.0.31 - as: 65030 - #-----------------------------------------------------# - dcgw2: - kind: vr-sros - type: sr-1 - config: - vars: - system_ip: 10.0.0.32 - as: 65030 - #-----------------------------------------------------# - spine1: - kind: nokia_srlinux - type: ixrd3 - config: - vars: - system_ip: 10.0.0.21 - as: 65020 - cluster_id: 10.10.10.10 - #-----------------------------------------------------# - spine2: - kind: nokia_srlinux - type: ixrd3 - config: - vars: - system_ip: 10.0.0.22 - as: 65020 - cluster_id: 10.10.10.10 - #-----------------------------------------------------# - leaf1: - kind: nokia_srlinux - type: ixrd2 - config: - vars: - system_ip: 10.0.0.11 - as: 65011 - #-----------------------------------------------------# - leaf2: - kind: nokia_srlinux - type: ixrd2 - config: - vars: - system_ip: 10.0.0.12 - as: 65012 - #-----------------------------------------------------# - leaf3: - kind: nokia_srlinux - type: ixrd2 - config: - vars: - system_ip: 10.0.0.13 - as: 65013 - #-----------------------------------------------------# - leaf4: - kind: nokia_srlinux - type: ixrd2 - config: - vars: - system_ip: 10.0.0.14 - as: 65014 - #-----------------------------------------------------# - sros-client: - kind: vr-sros - type: sr-1 - #-----------------------------------------------------# - - links: - ####################################################### - ################## DCGW - Spine ####################### - ####################################################### - - endpoints: ["dcgw1:eth1", "spine1:e1-31"] - vars: - port: [1/1/c1, ethernet-1/31] - clab_link_ip: 100.31.21.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["dcgw1:eth2", "spine2:e1-31"] - vars: - port: [1/1/c2, ethernet-1/31] - clab_link_ip: 100.31.22.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["dcgw2:eth1", "spine1:e1-32"] - vars: - port: [1/1/c1, ethernet-1/32] - clab_link_ip: 100.32.21.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["dcgw2:eth2", "spine2:e1-32"] - vars: - port: [1/1/c2, ethernet-1/32] - clab_link_ip: 100.32.22.1/30 - bgp_underlay: true - - ####################################################### - ################## Spine 1 - Leafs #################### - ####################################################### - - endpoints: ["spine1:e1-11", "leaf1:e1-51"] - vars: - port: [ethernet-1/11, ethernet-1/51] - clab_link_ip: 100.21.11.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["spine1:e1-12", "leaf2:e1-51"] - vars: - port: [ethernet-1/12, ethernet-1/51] - clab_link_ip: 100.21.12.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["spine1:e1-13", "leaf3:e1-51"] - vars: - port: [ethernet-1/13, ethernet-1/51] - clab_link_ip: 100.21.13.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["spine1:e1-14", "leaf4:e1-51"] - vars: - port: [ethernet-1/14, ethernet-1/51] - clab_link_ip: 100.21.14.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - ####################################################### - ################## Spine 2 - Leafs #################### - ####################################################### - - endpoints: ["spine2:e1-11", "leaf1:e1-52"] - vars: - port: [ethernet-1/11, ethernet-1/52] - clab_link_ip: 100.22.11.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["spine2:e1-12", "leaf2:e1-52"] - vars: - port: [ethernet-1/12, ethernet-1/52] - clab_link_ip: 100.22.12.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["spine2:e1-13", "leaf3:e1-52"] - vars: - port: [ethernet-1/13, ethernet-1/52] - clab_link_ip: 100.22.13.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - endpoints: ["spine2:e1-14", "leaf4:e1-52"] - vars: - port: [ethernet-1/14, ethernet-1/52] - clab_link_ip: 100.22.14.1/30 - bgp_underlay: true - #-----------------------------------------------------# - - ####################################################### - ################ Leaf - Client/Host ################### - ####################################################### - - endpoints: ["leaf1:e1-1", "sros-client:eth1"] - - endpoints: ["leaf1:e1-2", "sros-client:eth2"] - - endpoints: ["leaf2:e1-1", "sros-client:eth3"] - - endpoints: ["leaf2:e1-2", "sros-client:eth4"] - - endpoints: ["leaf3:e1-1", "sros-client:eth5"] - - endpoints: ["leaf3:e1-2", "sros-client:eth6"] - - endpoints: ["leaf4:e1-1", "sros-client:eth7"] - - endpoints: ["leaf4:e1-2", "sros-client:eth8"] diff --git a/lab-examples/clos03/cfg-clos__srl.tmpl b/lab-examples/clos03/cfg-clos__srl.tmpl deleted file mode 100644 index 4eea36e..0000000 --- a/lab-examples/clos03/cfg-clos__srl.tmpl +++ /dev/null @@ -1,65 +0,0 @@ -{{/* Configure P-to-P interfaces */}} - -{{ range $name, $link := .clab_links }} -{{ if $link.port }} -/ interface {{ $link.port }} subinterface 0 ipv4 address {{ $link.clab_link_ip }} -/ interface {{ $link.port }} subinterface 0 description {{ $link.clab_link_name }} -/ network-instance default interface {{ $link.port }}.0 -{{- end }} -{{- end }} - -{{/* Configure system interface */}} -/ interface system0 admin-state enable subinterface 0 ipv4 address {{ .system_ip }}/32 -/ network-instance default type default -/ network-instance default interface system0.0 - -{{/* policy to allow system ip */}} -/ routing-policy -/ routing-policy prefix-set system_ip -/ routing-policy prefix-set system_ip prefix {{ .system_ip }}/32 mask-length-range exact -/ routing-policy policy system_ip -/ routing-policy policy system_ip statement 10 -/ routing-policy policy system_ip statement 10 match prefix-set system_ip -/ routing-policy policy system_ip statement 10 action accept - -{{/* Underlay Config */}} -/ network-instance default protocols bgp router-id {{ .system_ip }} -/ network-instance default protocols bgp autonomous-system {{ .as }} -/ network-instance default protocols bgp ebgp-default-policy import-reject-all false -/ network-instance default protocols bgp ebgp-default-policy export-reject-all false -/ network-instance default protocols bgp group underlay timers connect-retry 1 -/ network-instance default protocols bgp group underlay timers minimum-advertisement-interval 1 -/ network-instance default protocols bgp group underlay ipv4-unicast admin-state enable -/ network-instance default protocols bgp group underlay export-policy system_ip - -{{/* If the bgp_underlay flag specified under the link then configure underlay ebgp on links */}} -{{- range $name, $link := .clab_links -}} - {{- if .bgp_underlay }} -/ network-instance default protocols bgp neighbor {{ ip $link.clab_far.clab_link_ip }} peer-group underlay -/ network-instance default protocols bgp neighbor {{ ip $link.clab_far.clab_link_ip }} peer-as {{(index $.clab_nodes $link.clab_far.clab_node).as}} - {{- end }} -{{- end -}} - - - -{{/* Overlay Config */}} -/ network-instance default protocols bgp group overlay timers connect-retry 1 -/ network-instance default protocols bgp group overlay timers minimum-advertisement-interval 1 -/ network-instance default protocols bgp group overlay evpn admin-state enable -/ network-instance default protocols bgp group overlay ipv4-unicast admin-state disable -/ network-instance default protocols bgp group overlay transport local-address {{ .system_ip }} -/ network-instance default protocols bgp group overlay peer-as {{ $.overlay_as }} -/ network-instance default protocols bgp group overlay local-as {{ $.overlay_as }} - -{{- if not .cluster_id }} - {{- range $name, $node := $.clab_nodes }} - {{- if .cluster_id }} -/ network-instance default protocols bgp neighbor {{ $node.system_ip }} peer-group overlay - {{- end -}} - {{- end -}} -{{- end -}} -{{- if .cluster_id }} -/ network-instance default protocols bgp group overlay route-reflector client true -/ network-instance default protocols bgp group overlay route-reflector cluster-id {{ .cluster_id }} -/ network-instance default protocols bgp dynamic-neighbors accept match 0.0.0.0/0 peer-group overlay -{{- end -}} \ No newline at end of file diff --git a/lab-examples/clos03/cfg-clos__vr-sros.tmpl b/lab-examples/clos03/cfg-clos__vr-sros.tmpl deleted file mode 100644 index 1943fa3..0000000 --- a/lab-examples/clos03/cfg-clos__vr-sros.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -{{/* Configure P-to-P interfaces */}} - -{{ range $name, $link := .clab_links }} -{{- if $link.port }} -/ configure port {{ $link.port}} connector breakout c1-100g -/ configure port {{ $link.port}} admin-state enable -/ configure port {{ $link.port}}/1 admin-state enable -/ configure router interface {{ $link.clab_link_name }} port {{ $link.port}}/1 -{{- if $link.clab_link_ip }} -/ configure router interface {{ $link.clab_link_name }} ipv4 primary address {{ ip $link.clab_link_ip }} prefix-length {{ ipmask $link.clab_link_ip }} -{{- end }} -{{- end }} -{{- end -}} - -{{/* Configure system interface */}} -{{- if .system_ip }} -/ configure router interface system ipv4 primary address {{ .system_ip }} -/ configure router interface system ipv4 primary prefix-length 32 - -{{/* policy to allow system ip */}} -/ configure policy-options prefix-list system_ip prefix {{ .system_ip }}/32 type exact -/ configure policy-options policy-statement system_ip entry 10 from prefix-list system_ip -/ configure policy-options policy-statement system_ip entry 10 action action-type accept -{{- end }} - -{{- if .as }} -{{/* Underlay Config */}} -/ configure router autonomous-system {{ .as }} -/ configure router bgp ebgp-default-reject-policy import false -/ configure router bgp ebgp-default-reject-policy export false -/ configure router bgp min-route-advertisement 1 -/ configure router bgp rapid-update evpn true -/ configure router bgp group underlay family ipv4 true -/ configure router bgp group underlay export policy system_ip -{{- end }} - -{{/* If the bgp_underlay flag specified under the link then configure underlay ebgp on links */}} -{{- range $name, $link := .clab_links }} - {{- if .bgp_underlay }} -/ configure router bgp neighbor {{ ip $link.clab_far.clab_link_ip }} group underlay -/ configure router bgp neighbor {{ ip $link.clab_far.clab_link_ip }} peer-as {{(index $.clab_nodes $link.clab_far.clab_node).as}} - {{- end -}} -{{- end -}} - -{{/* Overlay Config */}} -/ configure router bgp group overlay family evpn true -/ configure router bgp group overlay peer-as {{ $.overlay_as }} -/ configure router bgp group overlay local-as as-number {{ $.overlay_as }} -{{- range $name, $node := $.clab_nodes }} -{{- if .cluster_id }} -/ configure router bgp neighbor {{ $node.system_ip }} group overlay -{{- end -}} -{{- end -}} diff --git a/lab-examples/dci.clab.drawio b/lab-examples/dci.clab.drawio new file mode 100644 index 0000000..ce4d794 --- /dev/null +++ b/lab-examples/dci.clab.drawio @@ -0,0 +1,477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/dci.clab.mod.yml b/lab-examples/dci.clab.mod.yml new file mode 100644 index 0000000..099cb46 --- /dev/null +++ b/lab-examples/dci.clab.mod.yml @@ -0,0 +1,203 @@ +name: dci +mgmt: + network: dci + ipv4-subnet: 172.0.200.0/24 +topology: + kinds: + nokia_sros: + image: registry.srlinux.dev/pub/vr-sros:24.3.R1 + type: sr-1s + license: /opt/srexperts/license-sros24.txt + nokia_srlinux: + image: registry.srlinux.dev/pub/srlinux:24.3.1 + type: ixrd3 + nodes: + p1: + kind: nokia_sros + startup-config: configs/p1.partial.cfg + labels: + graph-level: 1 + graph-icon: router + dcgw1-dc1: + kind: nokia_sros + startup-config: configs/dcgw1-dc1.partial.cfg + labels: + graph-level: 2 + graph-icon: router + dcgw2-dc1: + kind: nokia_sros + startup-config: configs/dcgw2-dc1.partial.cfg + labels: + graph-level: 2 + graph-icon: router + spine1-dc1: + kind: nokia_srlinux + startup-config: configs/spine1-dc1.cfg + labels: + graph-level: 3 + graph-icon: switch + spine2-dc1: + kind: nokia_srlinux + startup-config: configs/spine2-dc1.cfg + labels: + graph-level: 3 + graph-icon: switch + leaf1-dc1: + kind: nokia_srlinux + startup-config: configs/leaf1-dc1.cfg + labels: + graph-level: 4 + graph-icon: switch + leaf2-dc1: + kind: nokia_srlinux + startup-config: configs/leaf2-dc1.cfg + labels: + graph-level: 4 + graph-icon: switch + leaf3-dc1: + kind: nokia_srlinux + startup-config: configs/leaf3-dc1.cfg + labels: + graph-level: 4 + graph-icon: switch + leaf4-dc1: + kind: nokia_srlinux + startup-config: configs/leaf4-dc1.cfg + labels: + graph-level: 4 + graph-icon: switch + client1-dc1: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc1 1" + labels: + graph-level: 5 + graph-icon: host + client2-dc1: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc1 4" + labels: + graph-level: 5 + graph-icon: host + dcgw1-dc2: + kind: nokia_sros + startup-config: configs/dcgw1-dc2.partial.cfg + stages: + create: + wait-for: + - node: dcgw1-dc1 + stage: healthy + - node: dcgw2-dc1 + stage: healthy + labels: + graph-level: 2 + graph-icon: router + dcgw2-dc2: + kind: nokia_sros + startup-config: configs/dcgw2-dc2.partial.cfg + stages: + create: + wait-for: + - node: dcgw1-dc1 + stage: healthy + - node: dcgw2-dc1 + stage: healthy + labels: + graph-level: 2 + graph-icon: router + spine1-dc2: + kind: nokia_srlinux + startup-config: configs/spine1-dc2.cfg + labels: + graph-level: 3 + graph-icon: switch + spine2-dc2: + kind: nokia_srlinux + startup-config: configs/spine2-dc2.cfg + labels: + graph-level: 3 + graph-icon: switch + leaf1-dc2: + kind: nokia_srlinux + startup-config: configs/leaf1-dc2.cfg + labels: + graph-level: 4 + graph-icon: switch + leaf2-dc2: + kind: nokia_srlinux + startup-config: configs/leaf2-dc2.cfg + labels: + graph-level: 4 + graph-icon: switch + leaf3-dc2: + kind: nokia_srlinux + startup-config: configs/leaf3-dc2.cfg + labels: + graph-level: 4 + graph-icon: switch + leaf4-dc2: + kind: nokia_srlinux + startup-config: configs/leaf4-dc2.cfg + labels: + graph-level: 4 + graph-icon: switch + client3-dc2: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc2 1" + labels: + graph-level: 5 + graph-icon: host + client4-dc2: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc2 4" + labels: + graph-level: 5 + graph-icon: host + links: + - endpoints: ['dcgw1-dc1:eth1', 'p1:eth5'] + - endpoints: ['dcgw2-dc1:eth1', 'p1:eth6'] + - endpoints: ['spine1-dc1:e1-31', 'dcgw1-dc1:eth3'] + - endpoints: ['spine1-dc1:e1-32', 'dcgw2-dc1:eth3'] + - endpoints: ['spine2-dc1:e1-31', 'dcgw1-dc1:eth2'] + - endpoints: ['spine2-dc1:e1-32', 'dcgw2-dc1:eth2'] + - endpoints: ['spine1-dc1:e1-3', 'leaf1-dc1:e1-31'] + - endpoints: ['spine1-dc1:e1-4', 'leaf2-dc1:e1-31'] + - endpoints: ['spine1-dc1:e1-5', 'leaf3-dc1:e1-31'] + - endpoints: ['spine1-dc1:e1-6', 'leaf4-dc1:e1-31'] + - endpoints: ['spine2-dc1:e1-3', 'leaf1-dc1:e1-32'] + - endpoints: ['spine2-dc1:e1-4', 'leaf2-dc1:e1-32'] + - endpoints: ['spine2-dc1:e1-5', 'leaf3-dc1:e1-32'] + - endpoints: ['spine2-dc1:e1-6', 'leaf4-dc1:e1-32'] + - endpoints: ['client1-dc1:eth1', 'leaf1-dc1:e1-1'] + - endpoints: ['client2-dc1:eth1', 'leaf4-dc1:e1-1'] + - endpoints: ['dcgw1-dc2:eth1', 'p1:eth1'] + - endpoints: ['dcgw2-dc2:eth1', 'p1:eth2'] + - endpoints: ['spine1-dc2:e1-31', 'dcgw1-dc2:eth3'] + - endpoints: ['spine1-dc2:e1-32', 'dcgw2-dc2:eth3'] + - endpoints: ['spine2-dc2:e1-31', 'dcgw1-dc2:eth2'] + - endpoints: ['spine2-dc2:e1-32', 'dcgw2-dc2:eth2'] + - endpoints: ['spine1-dc2:e1-3', 'leaf1-dc2:e1-31'] + - endpoints: ['spine1-dc2:e1-4', 'leaf2-dc2:e1-31'] + - endpoints: ['spine1-dc2:e1-5', 'leaf3-dc2:e1-31'] + - endpoints: ['spine1-dc2:e1-6', 'leaf4-dc2:e1-31'] + - endpoints: ['spine2-dc2:e1-3', 'leaf1-dc2:e1-32'] + - endpoints: ['spine2-dc2:e1-4', 'leaf2-dc2:e1-32'] + - endpoints: ['spine2-dc2:e1-5', 'leaf3-dc2:e1-32'] + - endpoints: ['spine2-dc2:e1-6', 'leaf4-dc2:e1-32'] + - endpoints: ['client3-dc2:eth1', 'leaf1-dc2:e1-1'] + - endpoints: ['client4-dc2:eth1', 'leaf4-dc2:e1-1'] diff --git a/lab-examples/dci.clab.yml b/lab-examples/dci.clab.yml new file mode 100644 index 0000000..e8516a2 --- /dev/null +++ b/lab-examples/dci.clab.yml @@ -0,0 +1,178 @@ +name: dci + +mgmt: + network: dci + ipv4-subnet: 172.0.200.0/24 + +topology: + kinds: + nokia_sros: + image: registry.srlinux.dev/pub/vr-sros:24.3.R1 + type: sr-1s + license: /opt/srexperts/license-sros24.txt + nokia_srlinux: + image: registry.srlinux.dev/pub/srlinux:24.3.1 + type: ixrd3 + nodes: + ############## CORE ############## + p1: + kind: nokia_sros + startup-config: configs/p1.partial.cfg + + ############## DC 1 ############## + dcgw1-dc1: + kind: nokia_sros + startup-config: configs/dcgw1-dc1.partial.cfg + + dcgw2-dc1: + kind: nokia_sros + startup-config: configs/dcgw2-dc1.partial.cfg + + spine1-dc1: + kind: nokia_srlinux + startup-config: configs/spine1-dc1.cfg + + spine2-dc1: + kind: nokia_srlinux + startup-config: configs/spine2-dc1.cfg + + leaf1-dc1: + kind: nokia_srlinux + startup-config: configs/leaf1-dc1.cfg + + leaf2-dc1: + kind: nokia_srlinux + startup-config: configs/leaf2-dc1.cfg + + leaf3-dc1: + kind: nokia_srlinux + startup-config: configs/leaf3-dc1.cfg + + leaf4-dc1: + kind: nokia_srlinux + startup-config: configs/leaf4-dc1.cfg + + client1-dc1: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc1 1" + + client2-dc1: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc1 4" + + ############## DC 2 ############## + dcgw1-dc2: + kind: nokia_sros + startup-config: configs/dcgw1-dc2.partial.cfg + stages: + create: + wait-for: + - node: dcgw1-dc1 + stage: healthy + - node: dcgw2-dc1 + stage: healthy + + dcgw2-dc2: + kind: nokia_sros + startup-config: configs/dcgw2-dc2.partial.cfg + stages: + create: + wait-for: + - node: dcgw1-dc1 + stage: healthy + - node: dcgw2-dc1 + stage: healthy + + spine1-dc2: + kind: nokia_srlinux + startup-config: configs/spine1-dc2.cfg + + spine2-dc2: + kind: nokia_srlinux + startup-config: configs/spine2-dc2.cfg + + leaf1-dc2: + kind: nokia_srlinux + startup-config: configs/leaf1-dc2.cfg + + leaf2-dc2: + kind: nokia_srlinux + startup-config: configs/leaf2-dc2.cfg + + leaf3-dc2: + kind: nokia_srlinux + startup-config: configs/leaf3-dc2.cfg + + leaf4-dc2: + kind: nokia_srlinux + startup-config: configs/leaf4-dc2.cfg + + client3-dc2: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc2 1" + client4-dc2: + kind: linux + image: ghcr.io/hellt/network-multitool + binds: + - configs/client.sh:/client.sh + exec: + - bash -c "/client.sh dc2 4" + + links: + ############## DC 1 ############## + ## DCGW - CORE + - endpoints: ["dcgw1-dc1:eth1", "p1:eth5"] + - endpoints: ["dcgw2-dc1:eth1", "p1:eth6"] + ## DCGW - Spine + - endpoints: ["spine1-dc1:e1-31", "dcgw1-dc1:eth3"] + - endpoints: ["spine1-dc1:e1-32", "dcgw2-dc1:eth3"] + - endpoints: ["spine2-dc1:e1-31", "dcgw1-dc1:eth2"] + - endpoints: ["spine2-dc1:e1-32", "dcgw2-dc1:eth2"] + ## Spine 1 - Leafs + - endpoints: ["spine1-dc1:e1-3", "leaf1-dc1:e1-31"] + - endpoints: ["spine1-dc1:e1-4", "leaf2-dc1:e1-31"] + - endpoints: ["spine1-dc1:e1-5", "leaf3-dc1:e1-31"] + - endpoints: ["spine1-dc1:e1-6", "leaf4-dc1:e1-31"] + ## Spine 2 - Leafs + - endpoints: ["spine2-dc1:e1-3", "leaf1-dc1:e1-32"] + - endpoints: ["spine2-dc1:e1-4", "leaf2-dc1:e1-32"] + - endpoints: ["spine2-dc1:e1-5", "leaf3-dc1:e1-32"] + - endpoints: ["spine2-dc1:e1-6", "leaf4-dc1:e1-32"] + ## Clients - Leafs + - endpoints: ["client1-dc1:eth1", "leaf1-dc1:e1-1"] + - endpoints: ["client2-dc1:eth1", "leaf4-dc1:e1-1"] + + ############## DC 2 ############## + ## DCGW - CORE + - endpoints: ["dcgw1-dc2:eth1", "p1:eth1"] + - endpoints: ["dcgw2-dc2:eth1", "p1:eth2"] + ## DCGW - Spine + - endpoints: ["spine1-dc2:e1-31", "dcgw1-dc2:eth3"] + - endpoints: ["spine1-dc2:e1-32", "dcgw2-dc2:eth3"] + - endpoints: ["spine2-dc2:e1-31", "dcgw1-dc2:eth2"] + - endpoints: ["spine2-dc2:e1-32", "dcgw2-dc2:eth2"] + ## Spine 1 - Leafs + - endpoints: ["spine1-dc2:e1-3", "leaf1-dc2:e1-31"] + - endpoints: ["spine1-dc2:e1-4", "leaf2-dc2:e1-31"] + - endpoints: ["spine1-dc2:e1-5", "leaf3-dc2:e1-31"] + - endpoints: ["spine1-dc2:e1-6", "leaf4-dc2:e1-31"] + ## Spine 2 - Leafs + - endpoints: ["spine2-dc2:e1-3", "leaf1-dc2:e1-32"] + - endpoints: ["spine2-dc2:e1-4", "leaf2-dc2:e1-32"] + - endpoints: ["spine2-dc2:e1-5", "leaf3-dc2:e1-32"] + - endpoints: ["spine2-dc2:e1-6", "leaf4-dc2:e1-32"] + ## Clients - Leafs + - endpoints: ["client3-dc2:eth1", "leaf1-dc2:e1-1"] + - endpoints: ["client4-dc2:eth1", "leaf4-dc2:e1-1"] \ No newline at end of file diff --git a/lab-examples/frr01.clab.drawio b/lab-examples/frr01.clab.drawio new file mode 100644 index 0000000..94ba2b0 --- /dev/null +++ b/lab-examples/frr01.clab.drawio @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/frr01/PC-interfaces.sh b/lab-examples/frr01/PC-interfaces.sh deleted file mode 100755 index de22ca6..0000000 --- a/lab-examples/frr01/PC-interfaces.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -sudo docker exec -d clab-frr01-PC1 ip link set eth1 up -sudo docker exec -d clab-frr01-PC1 ip addr add 192.168.11.2/24 dev eth1 -sudo docker exec -d clab-frr01-PC1 ip route add 192.168.0.0/16 via 192.168.11.1 dev eth1 -sudo docker exec -d clab-frr01-PC1 ip route add 10.10.10.0/24 via 192.168.11.1 dev eth1 - -sudo docker exec -d clab-frr01-PC2 ip link set eth1 up -sudo docker exec -d clab-frr01-PC2 ip addr add 192.168.12.2/24 dev eth1 -sudo docker exec -d clab-frr01-PC2 ip route add 192.168.0.0/16 via 192.168.12.1 dev eth1 -sudo docker exec -d clab-frr01-PC2 ip route add 10.10.10.0/24 via 192.168.12.1 dev eth1 - -sudo docker exec -d clab-frr01-PC3 ip link set eth1 up -sudo docker exec -d clab-frr01-PC3 ip addr add 192.168.13.2/24 dev eth1 -sudo docker exec -d clab-frr01-PC3 ip route add 192.168.0.0/16 via 192.168.13.1 dev eth1 -sudo docker exec -d clab-frr01-PC3 ip route add 10.10.10.0/24 via 192.168.13.1 dev eth1 diff --git a/lab-examples/frr01/README.md b/lab-examples/frr01/README.md deleted file mode 100644 index 7990d08..0000000 --- a/lab-examples/frr01/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Simple OSPF lab using FRR - -This lab example consists of three FRR routers connected in a ring topology. Each router has one PC connected to it. - -This is also an example of how to pre-configure lab nodes on "linux" node types in Containerlab. - -To start this lab, run the *run.sh* script, which will run the containerlab deploy commands, and then configure the PC interfaces. - -The lab configuration is documented in detail at: https://www.brianlinkletter.com/2021/05/use-containerlab-to-emulate-open-source-routers/ - diff --git a/lab-examples/frr01/frr01.clab.yml b/lab-examples/frr01/frr01.clab.yml deleted file mode 100644 index 482aa6c..0000000 --- a/lab-examples/frr01/frr01.clab.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: frr01 - -topology: - nodes: - router1: - kind: linux - image: frrouting/frr:v7.5.1 - binds: - - router1/daemons:/etc/frr/daemons - - router1/frr.conf:/etc/frr/frr.conf - router2: - kind: linux - image: frrouting/frr:v7.5.1 - binds: - - router2/daemons:/etc/frr/daemons - - router2/frr.conf:/etc/frr/frr.conf - router3: - kind: linux - image: frrouting/frr:v7.5.1 - binds: - - router3/daemons:/etc/frr/daemons - - router3/frr.conf:/etc/frr/frr.conf - PC1: - kind: linux - image: praqma/network-multitool:latest - PC2: - kind: linux - image: praqma/network-multitool:latest - PC3: - kind: linux - image: praqma/network-multitool:latest - - links: - - endpoints: ["router1:eth1", "router2:eth1"] - - endpoints: ["router1:eth2", "router3:eth1"] - - endpoints: ["router2:eth2", "router3:eth2"] - - endpoints: ["PC1:eth1", "router1:eth3"] - - endpoints: ["PC2:eth1", "router2:eth3"] - - endpoints: ["PC3:eth1", "router3:eth3"] diff --git a/lab-examples/frr01/router1/daemons b/lab-examples/frr01/router1/daemons deleted file mode 100644 index 3400905..0000000 --- a/lab-examples/frr01/router1/daemons +++ /dev/null @@ -1,36 +0,0 @@ -zebra=yes -bgpd=no -ospfd=yes -ospf6d=no -ripd=no -ripngd=no -isisd=no -pimd=no -ldpd=yes -nhrpd=no -eigrpd=no -babeld=no -sharpd=no -staticd=no -pbrd=no -bfdd=no -fabricd=no - -vtysh_enable=yes -zebra_options=" -s 90000000 --daemon -A 127.0.0.1" -bgpd_options=" --daemon -A 127.0.0.1" -ospfd_options=" --daemon -A 127.0.0.1" -ospf6d_options=" --daemon -A ::1" -ripd_options=" --daemon -A 127.0.0.1" -ripngd_options=" --daemon -A ::1" -isisd_options=" --daemon -A 127.0.0.1" -pimd_options=" --daemon -A 127.0.0.1" -ldpd_options=" --daemon -A 127.0.0.1" -nhrpd_options=" --daemon -A 127.0.0.1" -eigrpd_options=" --daemon -A 127.0.0.1" -babeld_options=" --daemon -A 127.0.0.1" -sharpd_options=" --daemon -A 127.0.0.1" -staticd_options=" --daemon -A 127.0.0.1" -pbrd_options=" --daemon -A 127.0.0.1" -bfdd_options=" --daemon -A 127.0.0.1" -fabricd_options=" --daemon -A 127.0.0.1" diff --git a/lab-examples/frr01/router1/frr.conf b/lab-examples/frr01/router1/frr.conf deleted file mode 100644 index 9ed9e5c..0000000 --- a/lab-examples/frr01/router1/frr.conf +++ /dev/null @@ -1,25 +0,0 @@ -frr version 7.5.1_git -frr defaults traditional -hostname router1 -no ipv6 forwarding -! -interface eth1 - ip address 192.168.1.1/24 -! -interface eth2 - ip address 192.168.2.1/24 -! -interface eth3 - ip address 192.168.11.1/24 -! -interface lo - ip address 10.10.10.1/32 -! -router ospf - passive-interface eth3 - network 192.168.1.0/24 area 0.0.0.0 - network 192.168.2.0/24 area 0.0.0.0 - network 192.168.11.0/24 area 0.0.0.0 -! -line vty -! diff --git a/lab-examples/frr01/router2/daemons b/lab-examples/frr01/router2/daemons deleted file mode 100644 index 3400905..0000000 --- a/lab-examples/frr01/router2/daemons +++ /dev/null @@ -1,36 +0,0 @@ -zebra=yes -bgpd=no -ospfd=yes -ospf6d=no -ripd=no -ripngd=no -isisd=no -pimd=no -ldpd=yes -nhrpd=no -eigrpd=no -babeld=no -sharpd=no -staticd=no -pbrd=no -bfdd=no -fabricd=no - -vtysh_enable=yes -zebra_options=" -s 90000000 --daemon -A 127.0.0.1" -bgpd_options=" --daemon -A 127.0.0.1" -ospfd_options=" --daemon -A 127.0.0.1" -ospf6d_options=" --daemon -A ::1" -ripd_options=" --daemon -A 127.0.0.1" -ripngd_options=" --daemon -A ::1" -isisd_options=" --daemon -A 127.0.0.1" -pimd_options=" --daemon -A 127.0.0.1" -ldpd_options=" --daemon -A 127.0.0.1" -nhrpd_options=" --daemon -A 127.0.0.1" -eigrpd_options=" --daemon -A 127.0.0.1" -babeld_options=" --daemon -A 127.0.0.1" -sharpd_options=" --daemon -A 127.0.0.1" -staticd_options=" --daemon -A 127.0.0.1" -pbrd_options=" --daemon -A 127.0.0.1" -bfdd_options=" --daemon -A 127.0.0.1" -fabricd_options=" --daemon -A 127.0.0.1" diff --git a/lab-examples/frr01/router2/frr.conf b/lab-examples/frr01/router2/frr.conf deleted file mode 100644 index 233a6b9..0000000 --- a/lab-examples/frr01/router2/frr.conf +++ /dev/null @@ -1,26 +0,0 @@ -frr version 7.5.1_git -frr defaults traditional -hostname router2 -no ipv6 forwarding -! -interface eth1 - ip address 192.168.1.2/24 -! -interface eth2 - ip address 192.168.3.1/24 -! -interface eth3 - ip address 192.168.12.1/24 -! -interface lo - ip address 10.10.10.2/32 -! -router ospf - passive-interface eth3 - network 192.168.1.0/24 area 0.0.0.0 - - network 192.168.3.0/24 area 0.0.0.0 - network 192.168.12.0/24 area 0.0.0.0 -! -line vty -! diff --git a/lab-examples/frr01/router3/daemons b/lab-examples/frr01/router3/daemons deleted file mode 100644 index 3400905..0000000 --- a/lab-examples/frr01/router3/daemons +++ /dev/null @@ -1,36 +0,0 @@ -zebra=yes -bgpd=no -ospfd=yes -ospf6d=no -ripd=no -ripngd=no -isisd=no -pimd=no -ldpd=yes -nhrpd=no -eigrpd=no -babeld=no -sharpd=no -staticd=no -pbrd=no -bfdd=no -fabricd=no - -vtysh_enable=yes -zebra_options=" -s 90000000 --daemon -A 127.0.0.1" -bgpd_options=" --daemon -A 127.0.0.1" -ospfd_options=" --daemon -A 127.0.0.1" -ospf6d_options=" --daemon -A ::1" -ripd_options=" --daemon -A 127.0.0.1" -ripngd_options=" --daemon -A ::1" -isisd_options=" --daemon -A 127.0.0.1" -pimd_options=" --daemon -A 127.0.0.1" -ldpd_options=" --daemon -A 127.0.0.1" -nhrpd_options=" --daemon -A 127.0.0.1" -eigrpd_options=" --daemon -A 127.0.0.1" -babeld_options=" --daemon -A 127.0.0.1" -sharpd_options=" --daemon -A 127.0.0.1" -staticd_options=" --daemon -A 127.0.0.1" -pbrd_options=" --daemon -A 127.0.0.1" -bfdd_options=" --daemon -A 127.0.0.1" -fabricd_options=" --daemon -A 127.0.0.1" diff --git a/lab-examples/frr01/router3/frr.conf b/lab-examples/frr01/router3/frr.conf deleted file mode 100644 index d2bc9cc..0000000 --- a/lab-examples/frr01/router3/frr.conf +++ /dev/null @@ -1,25 +0,0 @@ -frr version 7.5.1_git -frr defaults traditional -hostname router3 -no ipv6 forwarding -! -interface eth1 - ip address 192.168.2.2/24 -! -interface eth2 - ip address 192.168.3.2/24 -! -interface eth3 - ip address 192.168.13.1/24 -! -interface lo - ip address 10.10.10.3/32 -! -router ospf - passive-interface eth3 - network 192.168.2.0/24 area 0.0.0.0 - network 192.168.3.0/24 area 0.0.0.0 - network 192.168.13.0/24 area 0.0.0.0 -! -line vty -! diff --git a/lab-examples/frr01/run.sh b/lab-examples/frr01/run.sh deleted file mode 100644 index 65cdc6a..0000000 --- a/lab-examples/frr01/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -clab deploy --topo frr01.clab.yml -./PC-interfaces.sh diff --git a/lab-examples/hori.clab.drawio b/lab-examples/hori.clab.drawio new file mode 100644 index 0000000..7a027a0 --- /dev/null +++ b/lab-examples/hori.clab.drawio @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/horizontal_lab/hori.clab.yml b/lab-examples/hori.clab.yml similarity index 100% rename from lab-examples/horizontal_lab/hori.clab.yml rename to lab-examples/hori.clab.yml diff --git a/lab-examples/sr.clab.drawio b/lab-examples/sr.clab.drawio new file mode 100644 index 0000000..a074e33 --- /dev/null +++ b/lab-examples/sr.clab.drawio @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/sr.clab.mod.drawio b/lab-examples/sr.clab.mod.drawio new file mode 100644 index 0000000..8c16775 --- /dev/null +++ b/lab-examples/sr.clab.mod.drawio @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/srl03.clab.drawio b/lab-examples/srl03.clab.drawio new file mode 100644 index 0000000..fc16862 --- /dev/null +++ b/lab-examples/srl03.clab.drawio @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/srl03/srl03.clab.yml b/lab-examples/srl03/srl03.clab.yml deleted file mode 100644 index 510a68b..0000000 --- a/lab-examples/srl03/srl03.clab.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: srl03 - -topology: - kinds: - nokia_srlinux: - type: ixrd3 - image: ghcr.io/nokia/srlinux - linux: - image: ghcr.io/hellt/network-multitool - nodes: - wan1: - kind: nokia_srlinux - wan2: - kind: nokia_srlinux - wan3: - kind: nokia_srlinux - wan4: - kind: nokia_srlinux - client1: - kind: "linux" - client2: - kind: "linux" - client3: - kind: "linux" - client4: - kind: "linux" - - links: - # wan1 <-> wan2 connections - - endpoints: ["wan1:e1-1", "wan2:e1-1"] - - endpoints: ["wan1:e1-2", "wan2:e1-2"] - - endpoints: ["wan1:e1-3", "wan2:e1-3"] - - endpoints: ["wan1:e1-4", "wan2:e1-4"] - - # wan1 <-> wan3 connections - - endpoints: ["wan1:e1-5", "wan3:e1-1"] - - endpoints: ["wan1:e1-6", "wan3:e1-2"] - - # wan1 <-> wan4 connections - - endpoints: ["wan1:e1-7", "wan4:e1-1"] - - endpoints: ["wan1:e1-8", "wan4:e1-2"] - - # wan2 <-> wan3 connections - - endpoints: ["wan2:e1-5", "wan3:e1-3"] - - endpoints: ["wan2:e1-6", "wan3:e1-4"] - - # wan2 <-> wan4 connections - - endpoints: ["wan2:e1-7", "wan4:e1-3"] - - endpoints: ["wan2:e1-8", "wan4:e1-4"] - - # wan3 <-> wan4 connections - - endpoints: ["wan3:e1-5", "wan4:e1-5"] - - endpoints: ["wan3:e1-6", "wan4:e1-6"] - - # client connections - - endpoints: ["client1:eth1", "wan1:e1-9"] - - endpoints: ["client2:eth1", "wan2:e1-9"] - - endpoints: ["client3:eth1", "wan3:e1-7"] - - endpoints: ["client4:eth1", "wan4:e1-7"] diff --git a/lab-examples/sros4.clab.drawio b/lab-examples/sros4.clab.drawio new file mode 100644 index 0000000..157067e --- /dev/null +++ b/lab-examples/sros4.clab.drawio @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/vr05/sros4.clab.yml b/lab-examples/sros4.clab.yml similarity index 100% rename from lab-examples/vr05/sros4.clab.yml rename to lab-examples/sros4.clab.yml diff --git a/lab-examples/st.clab.drawio b/lab-examples/st.clab.drawio new file mode 100644 index 0000000..ced0ae2 --- /dev/null +++ b/lab-examples/st.clab.drawio @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/st.clab.yml b/lab-examples/st.clab.yml new file mode 100644 index 0000000..bb42d4a --- /dev/null +++ b/lab-examples/st.clab.yml @@ -0,0 +1,151 @@ +# Copyright 2020 Nokia +# Licensed under the BSD 3-Clause License. +# SPDX-License-Identifier: BSD-3-Clause + +name: st # short for streaming telemetry ;) +prefix: "" + +mgmt: + network: st + ipv4-subnet: 172.80.80.0/24 + +topology: + defaults: + kind: nokia_srlinux + + kinds: + nokia_srlinux: + image: ghcr.io/nokia/srlinux:24.10.1 + type: ixrd2l + linux: + image: ghcr.io/srl-labs/network-multitool + + nodes: + ### SPINES ### + spine1: + type: ixrd3l + group: spine + startup-config: configs/fabric/spine1.cfg + mgmt-ipv4: 172.80.80.21 + spine2: + type: ixrd3l + group: spine + startup-config: configs/fabric/spine2.cfg + mgmt-ipv4: 172.80.80.22 + + ### LEAFS ### + leaf1: + startup-config: configs/fabric/leaf1.cfg + mgmt-ipv4: 172.80.80.11 + group: leaf + leaf2: + startup-config: configs/fabric/leaf2.cfg + mgmt-ipv4: 172.80.80.12 + group: leaf + leaf3: + startup-config: configs/fabric/leaf3.cfg + mgmt-ipv4: 172.80.80.13 + group: leaf + + ### CLIENTS ### + client1: + kind: linux + mgmt-ipv4: 172.80.80.31 + exec: + - ip address add 172.17.0.1/24 dev eth1 + - ip -6 address add 2002::172:17:0:1/96 dev eth1 + - iperf3 -s -p 5201 -D > iperf3_1.log + - iperf3 -s -p 5202 -D > iperf3_2.log + group: server + client2: + kind: linux + mgmt-ipv4: 172.80.80.32 + binds: + - configs/client2:/config + exec: + - ip address add 172.17.0.2/24 dev eth1 + - ip -6 address add 2002::172:17:0:2/96 dev eth1 + group: server + client3: + kind: linux + mgmt-ipv4: 172.80.80.33 + binds: + - configs/client3:/config + exec: + - ip address add 172.17.0.3/24 dev eth1 + - ip -6 address add 2002::172:17:0:3/96 dev eth1 + group: server + + ### TELEMETRY STACK ### + gnmic: + kind: linux + mgmt-ipv4: 172.80.80.41 + image: ghcr.io/openconfig/gnmic:0.39.1 + binds: + - configs/gnmic/gnmic-config.yml:/gnmic-config.yml:ro + cmd: --config /gnmic-config.yml --log subscribe + group: "10" # group 10 is assigned to the nodes of a telemetry stack + + prometheus: + kind: linux + mgmt-ipv4: 172.80.80.42 + image: quay.io/prometheus/prometheus:v2.54.1 + binds: + - configs/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + cmd: --config.file=/etc/prometheus/prometheus.yml + ports: + - 9090:9090 + group: "10" + + grafana: + kind: linux + mgmt-ipv4: 172.80.80.43 + image: grafana/grafana:11.2.0 + binds: + - configs/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yaml:ro + - configs/grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yaml:ro + - configs/grafana/dashboards:/var/lib/grafana/dashboards + ports: + - 3000:3000 + env: + GF_INSTALL_PLUGINS: "andrewbmchugh-flow-panel" + # env vars to enable anonymous access + GF_ORG_ROLE: "Admin" + GF_ORG_NAME: "Main Org" + GF_AUTH_ANONYMOUS_ENABLED: "true" + GF_AUTH_ANONYMOUS_ORG_ROLE: Admin + GF_AUTH_ANONYMOUS: "true" + GF_AUTH_OAUTH_AUTO_LOGIN: "true" + group: "10" + + ### LOGGING STACK ### + promtail: + kind: linux + mgmt-ipv4: 172.80.80.45 + image: grafana/promtail:3.2.0 + binds: + - configs/promtail:/etc/promtail + cmd: --config.file=/etc/promtail/promtail-config.yml + ports: + - 9080:9080 + + loki: + kind: linux + mgmt-ipv4: 172.80.80.46 + image: grafana/loki:3.2.0 + binds: + - configs/loki:/etc/loki + cmd: --config.file=/etc/loki/loki-config.yml + ports: + - 3100:3100 + + links: + - endpoints: ["spine1:e1-1", "leaf1:e1-49"] + - endpoints: ["spine1:e1-2", "leaf2:e1-49"] + - endpoints: ["spine1:e1-3", "leaf3:e1-49"] + - endpoints: ["spine2:e1-1", "leaf1:e1-50"] + - endpoints: ["spine2:e1-2", "leaf2:e1-50"] + - endpoints: ["spine2:e1-3", "leaf3:e1-50"] + - endpoints: ["leaf1:e1-1", "client1:eth1"] + - endpoints: ["leaf2:e1-1", "client2:eth1"] + - endpoints: ["leaf3:e1-1", "client3:eth1"] \ No newline at end of file diff --git a/lab-examples/topo_with_sros.clab.drawio b/lab-examples/topo_with_sros.clab.drawio new file mode 100644 index 0000000..07cc3ce --- /dev/null +++ b/lab-examples/topo_with_sros.clab.drawio @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab-examples/topo_with_sros.clab.yml b/lab-examples/topo_with_sros.clab.yml new file mode 100644 index 0000000..685440f --- /dev/null +++ b/lab-examples/topo_with_sros.clab.yml @@ -0,0 +1,180 @@ +name: 4l2s + +mgmt: + network: intent-lab + ipv4-subnet: 172.20.21.0/24 + +topology: + kinds: + srl: + image: ghcr.io/nokia/srlinux:24.3.2 + #image: ghcr.io/nokia/srlinux:23.10.2 + linux: + image: ghcr.io/hellt/network-multitool + vr-sros: + image: registry.srlinux.dev/pub/vr-sros:23.7.R1 + type: sr-1s + license: license.txt + nodes: + d1: + kind: vr-sros + mgmt-ipv4: 172.20.21.21 + labels: + role: dcgw + fabric: yes + d2: + kind: vr-sros + mgmt-ipv4: 172.20.21.22 + labels: + role: dcgw + fabric: yes + l1: + kind: srl + type: ixrd2 + mgmt-ipv4: 172.20.21.11 + labels: + role: leaf + fabric: yes + l2: + kind: srl + type: ixrd2 + mgmt-ipv4: 172.20.21.12 + labels: + role: leaf + fabric: yes + l3: + kind: srl + type: ixrd2 + mgmt-ipv4: 172.20.21.13 + labels: + role: leaf + fabric: yes + l4: + kind: srl + type: ixrd2 + mgmt-ipv4: 172.20.21.14 + labels: + role: leaf + fabric: yes + s1: + kind: srl + type: ixrd3l +# type: ixrh2 + mgmt-ipv4: 172.20.21.101 + labels: + role: spine + fabric: yes + s2: + kind: srl + type: ixrd3l +# type: ixrh2 + mgmt-ipv4: 172.20.21.102 + labels: + role: spine + fabric: yes + + ce121: + kind: srl + type: ixrd2 + mgmt-ipv4: 172.20.21.150 + labels: + role: ce + fabric: no + ce341: + kind: srl + type: ixrd2 + mgmt-ipv4: 172.20.21.151 + labels: + role: ce + fabric: no + cl121: + kind: linux + mgmt-ipv4: 172.20.21.133 + exec: + - ip link add bond0 type bond mode 802.3ad + - ip link set addr 00:c1:ab:00:01:21 dev bond0 + - ip link add link bond0 name bond0.100 type vlan id 100 + - ip addr add 10.0.1.2/24 dev bond0.100 + - ip link set eth1 down + - ip link set eth2 down + - ip link set eth1 master bond0 + - ip link set eth2 master bond0 + - ip link set eth1 up + - ip link set eth2 up + - ip link set bond0 up + - ip route add 10.0.0.0/8 via 10.0.1.254 + cl122: + kind: linux + mgmt-ipv4: 172.20.21.134 + exec: + - ip link add bond0 type bond mode 802.3ad + - ip link set addr 00:c1:ab:00:01:22 dev bond0 + - ip link add link bond0 name bond0.200 type vlan id 200 + - ip addr add 10.0.2.2/24 dev bond0.200 + - ip link set eth1 down + - ip link set eth2 down + - ip link set eth1 master bond0 + - ip link set eth2 master bond0 + - ip link set eth1 up + - ip link set eth2 up + - ip link set bond0 up + - ip route add 10.0.0.0/8 via 10.0.2.254 + cl341: + kind: linux + mgmt-ipv4: 172.20.21.136 + exec: + - ip link add bond0 type bond mode 802.3ad + - ip link set addr 00:c1:ab:00:03:41 dev bond0 + - ip link add link bond0 name bond0.200 type vlan id 200 + - ip addr add 10.0.2.3/24 dev bond0.200 + - ip link set eth1 down + - ip link set eth2 down + - ip link set eth1 master bond0 + - ip link set eth2 master bond0 + - ip link set eth1 up + - ip link set eth2 up + - ip link set bond0 up + - ip route add 10.0.0.0/8 via 10.0.2.254 + cl342: + kind: linux + mgmt-ipv4: 172.20.21.137 + exec: + - ip link add bond0 type bond mode 802.3ad + - ip link set addr 00:c1:ab:00:03:42 dev bond0 + - ip link add link bond0 name bond0.300 type vlan id 300 + - ip addr add 10.0.3.2/24 dev bond0.300 + - ip link set eth1 down + - ip link set eth2 down + - ip link set eth1 master bond0 + - ip link set eth2 master bond0 + - ip link set eth1 up + - ip link set eth2 up + - ip link set bond0 up + - ip route add 10.0.0.0/8 via 10.0.3.254 + links: + - endpoints: ["s1:e1-32", "d1:eth3"] + - endpoints: ["s1:e1-31", "d2:eth3"] + - endpoints: ["s2:e1-32", "d1:eth2"] + - endpoints: ["s2:e1-31", "d2:eth2"] + - endpoints: ["l1:e1-50", "s1:e1-1"] + - endpoints: ["l1:e1-49", "s2:e1-1"] + - endpoints: ["l2:e1-50", "s1:e1-2"] + - endpoints: ["l2:e1-49", "s2:e1-2"] + - endpoints: ["l3:e1-50", "s1:e1-3"] + - endpoints: ["l3:e1-49", "s2:e1-3"] + - endpoints: ["l4:e1-50", "s1:e1-4"] + - endpoints: ["l4:e1-49", "s2:e1-4"] + - endpoints: ["cl121:eth1", "l1:e1-20"] + - endpoints: ["cl121:eth2", "l2:e1-20"] + - endpoints: ["cl122:eth1", "l1:e1-21"] + - endpoints: ["cl122:eth2", "l2:e1-21"] + - endpoints: ["cl341:eth1", "l3:e1-20"] + - endpoints: ["cl341:eth2", "l4:e1-20"] + - endpoints: ["cl342:eth1", "l3:e1-21"] + - endpoints: ["cl342:eth2", "l4:e1-21"] + - endpoints: ["ce121:e1-1", "l1:e1-30"] + - endpoints: ["ce121:e1-2", "l2:e1-30"] + - endpoints: ["ce121:e1-3", "l1:e1-31"] + - endpoints: ["ce121:e1-4", "l2:e1-31"] + - endpoints: ["ce341:e1-1", "l3:e1-30"] + - endpoints: ["ce341:e1-2", "l4:e1-30"] \ No newline at end of file