From ef79717ebe267e9a5f560d1de54b0f1ee6d6e9c4 Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 4 May 2025 12:24:26 +0200 Subject: [PATCH] Add a simple containerlab --- .gitignore | 2 ++ config/vpp1/bird-local.conf | 19 +++++++++++++++++ config/vpp1/vppcfg.yaml | 16 ++++++++++++++ config/vpp2/bird-local.conf | 19 +++++++++++++++++ config/vpp2/vppcfg.yaml | 16 ++++++++++++++ vpp.clab.yml | 42 +++++++++++++++++++++++++++++++++++++ 6 files changed, 114 insertions(+) create mode 100644 .gitignore create mode 100644 config/vpp1/bird-local.conf create mode 100644 config/vpp1/vppcfg.yaml create mode 100644 config/vpp2/bird-local.conf create mode 100644 config/vpp2/vppcfg.yaml create mode 100644 vpp.clab.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..894a9f8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +clab-* +**/*.bak diff --git a/config/vpp1/bird-local.conf b/config/vpp1/bird-local.conf new file mode 100644 index 0000000..e7eae3a --- /dev/null +++ b/config/vpp1/bird-local.conf @@ -0,0 +1,19 @@ +protocol bfd bfd1 { + interface "eth2" { interval 100 ms; multiplier 30; }; +} + +protocol ospf v2 ospf4 { + ipv4 { import all; export all; }; + area 0 { + interface "loop0" { stub yes; }; + interface "eth2" { type pointopoint; cost 10; bfd on; }; + }; +} + +protocol ospf v3 ospf6 { + ipv6 { import all; export all; }; + area 0 { + interface "loop0" { stub yes; }; + interface "eth2" { type pointopoint; cost 10; bfd on; }; + }; +} diff --git a/config/vpp1/vppcfg.yaml b/config/vpp1/vppcfg.yaml new file mode 100644 index 0000000..8e27268 --- /dev/null +++ b/config/vpp1/vppcfg.yaml @@ -0,0 +1,16 @@ +interfaces: + eth1: + description: 'To client1' + mtu: 1500 + lcp: eth1 + addresses: [ 10.82.98.65/28, 2001:db8:8298:101::1/64 ] + eth2: + description: 'To vpp2' + mtu: 9000 + lcp: eth2 + addresses: [ 10.82.98.16/31, 2001:db8:8298:1::1/64 ] +loopbacks: + loop0: + description: 'vpp1' + lcp: loop0 + addresses: [ 10.82.98.0/32, 2001:db8:8298::/128 ] diff --git a/config/vpp2/bird-local.conf b/config/vpp2/bird-local.conf new file mode 100644 index 0000000..e7eae3a --- /dev/null +++ b/config/vpp2/bird-local.conf @@ -0,0 +1,19 @@ +protocol bfd bfd1 { + interface "eth2" { interval 100 ms; multiplier 30; }; +} + +protocol ospf v2 ospf4 { + ipv4 { import all; export all; }; + area 0 { + interface "loop0" { stub yes; }; + interface "eth2" { type pointopoint; cost 10; bfd on; }; + }; +} + +protocol ospf v3 ospf6 { + ipv6 { import all; export all; }; + area 0 { + interface "loop0" { stub yes; }; + interface "eth2" { type pointopoint; cost 10; bfd on; }; + }; +} diff --git a/config/vpp2/vppcfg.yaml b/config/vpp2/vppcfg.yaml new file mode 100644 index 0000000..038702d --- /dev/null +++ b/config/vpp2/vppcfg.yaml @@ -0,0 +1,16 @@ +interfaces: + eth1: + description: 'To client2' + mtu: 1500 + lcp: eth1 + addresses: [ 10.82.98.81/28, 2001:db8:8298:102::1/64 ] + eth2: + description: 'To vpp1' + mtu: 9000 + lcp: eth2 + addresses: [ 10.82.98.17/31, 2001:db8:8298:1::2/64 ] +loopbacks: + loop0: + description: 'vpp2' + lcp: loop0 + addresses: [ 10.82.98.1/32, 2001:db8:8298::1/128 ] diff --git a/vpp.clab.yml b/vpp.clab.yml new file mode 100644 index 0000000..4da50e5 --- /dev/null +++ b/vpp.clab.yml @@ -0,0 +1,42 @@ +name: learn-vpp +prefix: "" + +topology: + kinds: + fdio_vpp: + image: git.ipng.ch/ipng/vpp-containerlab:latest + linux: + image: alpine:latest + + nodes: + vpp1: + kind: fdio_vpp + binds: + - config/vpp1/vppcfg.yaml:/etc/vpp/vppcfg.yaml:ro + - config/vpp1/bird-local.conf:/etc/bird/bird-local.conf:ro + vpp2: + kind: fdio_vpp + binds: + - config/vpp2/vppcfg.yaml:/etc/vpp/vppcfg.yaml:ro + - config/vpp2/bird-local.conf:/etc/bird/bird-local.conf:ro + client1: + kind: linux + exec: + - ip link set address 00:c1:ab:00:00:01 dev eth1 + - ip addr add 10.82.98.66/28 dev eth1 + - ip route add 10.82.98.0/24 via 10.82.98.65 + - ip addr add 2001:db8:8298:101::2/64 dev eth1 + - ip route add 2001:db8:8298::/48 via 2001:db8:8298:101::1 + client2: + kind: linux + exec: + - ip link set address 00:c1:ab:00:00:02 dev eth1 + - ip addr add 10.82.98.82/28 dev eth1 + - ip route add 10.82.98.0/24 via 10.82.98.81 + - ip addr add 2001:db8:8298:102::2/64 dev eth1 + - ip route add 2001:db8:8298::/48 via 2001:db8:8298:102::1 + + links: + - endpoints: ["vpp1:eth2", "vpp2:eth2"] + - endpoints: ["client1:eth1", "vpp1:eth1"] + - endpoints: ["client2:eth1", "vpp2:eth1"]