Hello,
I’m attempting to setup a basic leaf/spine network by hand to learn the nuts and bolts of basic networking. The basic goal (for now) is just to setup two VLANs among four nodes in a simple leaf/spine topology. After that I’ll work on VXLAN, then VXLAN/EVPN.
Repo for the topology is at: MergeTB / DevOps / VTE / leaf-spine · GitLab
I have a simple rvn model that is
INFO[0001] nodes
INFO[0001] x0 running success 172.22.3.28
INFO[0001] y0 running success 172.22.3.92
INFO[0001] x1 running success 172.22.3.163
INFO[0001] y1 running success 172.22.3.84
INFO[0001] switches
INFO[0001] spine running success 172.22.3.115
INFO[0001] leaf0 running success 172.22.3.117
INFO[0001] leaf1 running success 172.22.3.211
INFO[0001] external links
topo = {
name: "basic_" + Math.random().toString().substr(-6),
nodes: [...["x0", "y0", "x1", "y1"].map((x) => node(x))],
switches: [cumulus("leaf0"), cumulus("leaf1"), cumulus("spine")],
links: [
v2v("x0", 1, "leaf0", 1, { mac: { x0: "04:80:00:00:00:01", leaf0: "04:60:00:00:00:02" }, }),
v2v("y0", 1, "leaf0", 2, { mac: { x1: "04:81:00:00:00:01", leaf0: "04:60:00:00:00:03" }, }),
v2v("x1", 1, "leaf1", 1, { mac: { x0: "04:82:00:00:00:01", leaf1: "04:60:00:00:00:02" }, }),
v2v("y1", 1, "leaf1", 2, { mac: { x1: "04:83:00:00:00:01", leaf1: "04:60:00:00:00:03" }, }),
v2v("leaf0", 3, "spine", 1, { mac: { leaf0: "04:60:00:00:00:01", spine: "04:50:00:00:00:01" }, }),
v2v("leaf1", 3, "spine", 2, { mac: { leaf1: "04:70:00:00:00:01", spine: "04:50:00:00:00:02" }, }),
],
};
This is two nodes, x0 and y0, connected to leaf0 two other nodes x1 and y1 connected to leaf1. Then two leaf switches connected to a spine switch. Connections are
x0/eth1 <=> leaf0/swp1y0/eth1 <=> leaf0/swp2x1/eth1 <=> leaf1/swp1y2/eth1 <=> leaf1/swp2leaf0/swp3 <=> spine/swp1leaf1/swp3 <=> spine/swp2
Am I right in assuming: leaf0 swp 1 and 2 and leaf1 swp 1 and 2 are configured for access mode as they are connected to machines, leaf0 swp3, leaf1 swp3 and spine swp1 and swp2 are configured to be trunks as they are connected to switches?
This is what I have for configuration in ansible at the moment for leaf0 and leaf1
nv set interface swp1-3 bridge domain br_default
nv set bridge domain br_default vlan 10,20
nv set interface swp1 bridge domain br_default access 10
nv set interface swp2 bridge domain br_default access 20
nv set interface swp3 bridge domain br_default vlan 10,20
nv set system hostname leaf0
nv config apply -y
I’m seeing conflicting information about setting up spine to just trunk the two ports. So any help here would be appreciated. As would any pointers to documentation about this which is not aimed at setting up a data center and is 9238472 pages long.
The switches are all running cumulus 5.12.1.1000. I can be available for zoom if that’s easier.
edit: It looks like I can just read the canopy code to get all the vtysh commands to do this. So I will do that.