Skip to content

Commit b8344e2

Browse files
committed
add cvx05 lab
1 parent cee8a52 commit b8344e2

File tree

16 files changed

+1413
-0
lines changed

16 files changed

+1413
-0
lines changed

diagrams/cvx05.drawio

Lines changed: 276 additions & 0 deletions
Large diffs are not rendered by default.

docs/rs/cvx05.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
| | |
2+
| ----------------------------- | -------------------------------------------------------------------- |
3+
| **Description** | Cumulus Linux VX with leaf and spine topology |
4+
| **Components** | [Cumulus Linux][cvx] |
5+
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 4 <br/>:fontawesome-solid-memory: 5 GB |
6+
| **Topology file** | [topo.clab.yml][topofile] |
7+
| **Name** | cvx05 |
8+
| **Version information**[^2] | `cvx:5.3.0` `Docker version 25.0.3, build 4debf41` |
9+
10+
## Description
11+
12+
The lab consists of Cumulus Linux 5.3 fabric composed of 2 borders, 2 spines and 2 leafs. The topology demonstrate a EVPN VXLAN BGP configuration.
13+
The topology is additionally equipped with a Linux container connected to leaves to facilitate use cases which require access side emulation.
14+
15+
<div class="mxgraph" style="max-width:100%;border:1px solid transparent;margin:0 auto; display:block;" data-mxgraph="{&quot;page&quot;:1,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/hellt/clabs/main/diagrams/cvx05.drawio&quot;}"></div>
16+
17+
## Configuration
18+
19+
The custom docker image need to be built locally before running the deployment
20+
```
21+
docker build \
22+
--force-rm=true \
23+
-t cx_ebtables:5.3.0 \
24+
-f cx_ebtables.Dockerfile .
25+
```
26+
27+
All nodes have been provided with a startup configuration and should come up with all their interfaces fully configured.
28+
29+
Once the lab is started, the nodes will be able to ping each other on their vlan interfaces:
30+
31+
```
32+
# ping leaf interface
33+
root@border-1:/# ping 10.162.0.14
34+
PING 10.162.0.14 (10.162.0.14) 56(84) bytes of data.
35+
64 bytes from 10.162.0.14: icmp_seq=1 ttl=64 time=0.262 ms
36+
64 bytes from 10.162.0.14: icmp_seq=2 ttl=64 time=0.256 ms
37+
^C
38+
--- 10.162.0.14 ping statistics ---
39+
2 packets transmitted, 2 received, 0% packet loss, time 34ms
40+
```
41+
42+
Logs of the NVUE process are placed in `/root/nvue.log`.
43+
44+
## Use cases
45+
46+
* Demonstrate how a `cvx` can run with a EVPN VXLAN BGP fabric
47+
* Demonstrate Cumulus Linux Leaf and spine with NVUE configuration (introduced in version 5.X)
48+
* Verify vlan trunking and access on connected host to a leaf
49+
50+
[cvx]: https://www.nvidia.com/en-gb/networking/ethernet-switching/cumulus-vx/
51+
[topofile]: https://github.com/hellt/clabs/tree/main/labs/cvx05/topo.clab.yml
52+
53+
[^1]: Resource requirements are provisional. Consult with the installation guides for additional information.
54+
[^2]: The lab has been validated using these versions of the required tools/components. Using versions other than stated might lead to a non-operational setup process.
55+
56+
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js" async></script>

labs/cvx05/01-common/apply-nvue.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
3+
# Function to check if the nvued process is running
4+
check_process() {
5+
nv config show > /dev/null
6+
return $?
7+
}
8+
9+
# Wait loop
10+
echo "Waiting for the process to start..."
11+
while ! check_process; do
12+
sleep 1
13+
done
14+
15+
echo "Process started. Applying NVUE config..."
16+
/usr/bin/nv config replace /home/cumulus/nvue.yml
17+
/usr/bin/nv config apply --assume-yes
18+
19+
echo "nv config applied:"
20+
echo "#####################################"
21+
/usr/bin/nv config show
22+
echo "#####################################"

labs/cvx05/01-common/entrypoint.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/bash
2+
3+
# apply nvue config in background
4+
setsid ./root/apply-nvue.sh > /root/nvue.log &
5+
6+
# run systemd services
7+
exec /sbin/init
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
auto lo
2+
iface lo inet loopback
3+
4+
auto mgmt
5+
iface mgmt
6+
vrf-table auto
7+
8+
auto eth0
9+
iface eth0
10+
vrf mgmt
11+
12+
auto swp1s0
13+
iface swp1s0
14+
15+
auto swp1s1
16+
iface swp1s1
17+
18+
auto swp27
19+
iface swp27
20+
21+
auto swp28
22+
iface swp28
23+
24+
auto swp29
25+
iface swp29
26+
27+
auto swp30
28+
iface swp30
29+
30+
auto swp31
31+
iface swp31
32+
33+
auto swp32
34+
iface swp32

labs/cvx05/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Example of how to run `cvx` nodes with a leaf and spine topology.

labs/cvx05/border-1/nvue.yml

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#
2+
# Ansible managed
3+
#
4+
- set:
5+
system:
6+
hostname: border-1
7+
timezone: Europe/Paris
8+
message:
9+
pre-login: |
10+
#####################################################################################
11+
# Welcome to NVIDIA Cumulus VX (TM)
12+
#####################################################################################
13+
14+
post-login: |
15+
#####################################################################################
16+
# You are successfully logged in to: border-1
17+
#####################################################################################
18+
19+
bridge:
20+
domain:
21+
br_default:
22+
type: vlan-aware
23+
vlan:
24+
'165':
25+
vni:
26+
'165': {}
27+
'167':
28+
vni:
29+
'167': {}
30+
'2':
31+
vni:
32+
'2': {}
33+
interface:
34+
lo:
35+
type: loopback
36+
ip:
37+
address:
38+
127.0.0.1/8: {}
39+
172.30.0.1/32: {}
40+
vlan165:
41+
type: svi
42+
vlan: 165
43+
ip:
44+
address:
45+
10.162.0.10/20: {}
46+
vlan167:
47+
type: svi
48+
vlan: 167
49+
ip:
50+
address:
51+
10.162.24.10/21: {}
52+
53+
peerlink:
54+
bond:
55+
member:
56+
swp30: {}
57+
swp29: {}
58+
type: peerlink
59+
bridge:
60+
domain:
61+
br_default: {}
62+
peerlink.4094:
63+
type: sub
64+
base-interface: peerlink
65+
vlan: 4094
66+
evpn:
67+
enable: on
68+
route-advertise:
69+
svi-ip: on
70+
default-gateway: on
71+
router:
72+
bgp:
73+
enable: on
74+
vrr:
75+
enable: on
76+
vrf:
77+
default:
78+
router:
79+
bgp:
80+
router-id: 172.30.0.1
81+
autonomous-system: 65101
82+
neighbor:
83+
peerlink.4094:
84+
peer-group: underlay
85+
type: unnumbered
86+
swp27:
87+
peer-group: underlay
88+
type: unnumbered
89+
swp28:
90+
peer-group: underlay
91+
type: unnumbered
92+
enable: on
93+
peer-group:
94+
underlay:
95+
remote-as: external
96+
address-family:
97+
l2vpn-evpn:
98+
enable: on
99+
address-family:
100+
ipv4-unicast:
101+
redistribute:
102+
connected:
103+
enable: on
104+
enable: on
105+
l2vpn-evpn:
106+
enable: on
107+
nve:
108+
vxlan:
109+
enable: on
110+
source:
111+
address: 172.30.0.1
112+
mlag:
113+
shared-address: 172.31.0.1
114+
arp-nd-suppress: on
115+
service:
116+
dns:
117+
mgmt:
118+
server:
119+
16.110.135.51: {}
120+
16.110.135.52: {}
121+
ntp:
122+
mgmt:
123+
server:
124+
ntp.hpecorp.net:
125+
iburst: on
126+
g1w9300.americas.hpqcorp.net:
127+
iburst: on
128+
g1w8781g.emea.hpqcorp.net:
129+
iburst: on
130+
mlag:
131+
peer-ip: linklocal
132+
priority: 32768
133+
mac-address: 44:38:39:ff:00:10
134+
backup:
135+
172.30.0.2: {}
136+
init-delay: 10

0 commit comments

Comments
 (0)