Spine Layer — Route Reflectors · AS 65100
SRL
spine1
10.255.0.1
AS 65100 · RR
Nokia SR Linux
cEOS
spine2
10.255.0.2
AS 65100 · RR
Arista EOS
FRR
spine3
10.255.0.3
AS 65100 · RR
FRR (Cisco-style)
▼ eBGP underlay (18 P2P /31 links) + iBGP EVPN overlay (loopback peering) ▼
Leaf Layer — VTEPs · VXLAN Tunnel Endpoints
cEOS
leaf1
10.255.1.1 · VTEP .100.1
AS 65001 · Rack-1
VLAN 10 · VNI 10010
SRL
leaf2
10.255.1.2 · VTEP .100.2
AS 65002 · Rack-1
VLAN 10 · VNI 10010
FRR
leaf3
10.255.1.3 · VTEP .100.3
AS 65003 · Rack-2
VLAN 20 · VNI 10020
cEOS
leaf4
10.255.1.4 · VTEP .100.4
AS 65004 · Rack-2
VLAN 20 · VNI 10020
SRL
leaf5
10.255.1.5 · VTEP .100.5
AS 65005 · Rack-3
VLAN 30 · VNI 10030
FRR
leaf6
10.255.1.6 · VTEP .100.6
AS 65006 · Rack-3
VLAN 30 · VNI 10030
▼ VXLAN tunnels (VNI 10010/10020/10030) + Anycast gateway 10.10.x.254 ▼
Host Layer — End Devices · Traffic Sources
HOST
host1
10.10.10.1/24
VLAN 10 → leaf1
HOST
host2
10.10.10.2/24
VLAN 10 → leaf2
HOST
host3
10.10.20.1/24
VLAN 20 → leaf3
HOST
host4
10.10.20.2/24
VLAN 20 → leaf4
HOST
host5
10.10.30.1/24
VLAN 30 → leaf5
HOST
host6
10.10.30.2/24
VLAN 30 → leaf6
Protocols Supported
STP/RSTP
LACP
802.1Q VLAN
ARP
MAC Learning
eBGP RFC7938
iBGP EVPN
OSPF
BFD
ECMP
VRRP
VXLAN
EVPN Type-2
EVPN Type-3
EVPN Type-5
Symmetric IRB
ARP Suppression
gNMI Telemetry
NETCONF/YANG
REST API
SSH/CLI
Vendor Distribution
| Vendor | Image | RAM/Node | Nodes |
| Nokia SR Linux | ghcr.io/nokia/srlinux | ~1.5GB | 3 |
| Arista cEOS | ceosimage:4.33.1F | ~1.5GB | 3 |
| FRR | frrouting/frr:v10.3 | ~0.2GB | 3 |
| Linux Hosts | network-multitool | ~0.05GB | 6 |
Available Topologies
| Name | Nodes | Focus |
| clos-evpn | 15 | DC Fabric · EVPN-VXLAN |
| 3tier-enterprise | 12 | Campus · OSPF · STP |
| minimal | 6 | Quick Test · No cEOS |
AI Tool Integration
| Tool | Function | Integration |
| AI Network Tool | CLI config + compliance | ai-bridge.py |
| netlog-ai | Log analysis + anomaly | docker logs |
| multivendor-lab | Health gate + SoT drift | REST API |
| Grafana | gNMI dashboards | :3000 |
Vendor Driver Layer (src/drivers/)
Deterministic per-vendor drivers collect data (no LLM guesses CLI syntax);
the LLM only synthesizes on the structured result. Single source of truth
for commands + parsers, consumed by both the health dashboard and the
telemetry collector.
| Vendor | Driver | CLI |
| Nokia SRL | SRLDriver | sr_cli -d |
| Arista cEOS | EOSDriver | Cli -p 15 -c … | json |
| FRR | FRRDriver | vtysh -c … json |
| Juniper | JunosDriver | cli -c … | display json |
BaseNetworkDriver (ABC) → DriverResult (.normalized dict + .raw text) ·
Transport: DockerExec / SSHRunner / Scrapli · 65/65 tests pass ·
full diagram in portal.html → Driver Layer.
Quick Commands
| Action | Command |
| Setup | ./scripts/setup.sh |
| Deploy | ./scripts/deploy.sh clos-evpn |
| Verify | ./scripts/verify.sh |
| Connect | ./scripts/connect.sh spine1 |
| Inventory | python3 scripts/ai-bridge.py |
| Destroy | ./scripts/destroy.sh clos-evpn |