nl
netlld
Living network design docs — AVD → LLD + diagrams
▶ How it works ▶ Choosing your design 🎤 Design workshop 🔒 Your data ready
Arista EVPN/VXLAN · free open preview

The network you run, as the document you owe

Point netlld at AVD variables, at the running-configs off your switches, or at a live fabric over eAPI. Get the Low-Level Design, topology diagrams, a bill of materials, a design review, a Statement of Work and a project plan — plus the Ansible and device configuration to build it back.

Footage: Dima Krivoy / Pexels

topology_physical.svg Physical cabling
  1. Readconfigs, AVD vars, eAPI
  2. Modelone vendor-neutral fabric
  3. DocumentLLD, diagrams, BOM, SOW
  4. ConfigureAVD project, device configs
Real output — all three topology diagrams from the 12-node example fabric, redrawn as netlld draws them.
✓ Tested against Arista AVD 6.3.0
✓ AVD vars, configs, eAPI or a form
✓ Nothing invented, ever

Four ways in, one model out

Every source becomes the same vendor-neutral fabric model, so the document, the diagrams and the configuration all come from one place.

01

AVD variables

A repo of group_vars or structured_config. The design is already machine-readable, so netlld reads it as it stands.

02

Running-configs

Drop in show running-config from each switch. No AVD repo needed — this is the brownfield case, and the one nothing else answers.

03

A live fabric

Point it at the switches over eAPI, or let CloudVision supply the inventory. The document describes what is actually running.

04

A form

No fabric yet? Describe spines, leaf groups, tenants and addressing, and get the design document before anything is racked.

⚡Sample fabric
🛠️Build a fabric
⬆️Upload configs or AVD
🎤Design workshop
🧠GPU fabric
🗺️Topology map

Generate a full LLD from a built-in Arista fabric — no input needed. Pick the scenario: a straightforward leaf-spine, a three-tier multi-pod with super-spines, or a fabric with border leaves facing a WAN. Each is a real AVD structured_config in the repo, so this is the same pipeline your own files would take.

Adds serials, rack positions and cable records, and shows what a disagreement looks like: the sample NetBox has one cable on the wrong port and one missing.

No AVD file needed — define the fabric here. Pre-filled with a working example you can edit freely.

Design (the one thing netlld cannot read for you — on every other input path the design is detected from your files, not chosen here)
Addressing (optional — leave blank to use the tool's defaults)
Base services (optional — NTP, DNS, AAA and syslog. Anything left blank is reported as missing in the design review, not silently assumed)
Optics (optional — netlld counts your ports; the part number has to come from you, because neither speed nor reach is in a fabric definition)
Quick build (every leaf always uplinks to every spine — that's automatic; this just generates the rows below for the counts you want)

"Generate LLD now" builds straight from these two numbers — same one-click simplicity as the Sample tab, no services or endpoints needed. Use "Fill in the rows below" instead if you also want to add tenants or endpoints first.

Spines
Leaf groups (comma-separate leaf names; a 2-leaf group becomes an MLAG pair)
Services (one row per SVI; rows sharing a tenant+VRF are grouped)
Endpoints (connections as switch:port, switch:port)
Branding & template (applied to the generated LLD)

Document a fabric you already run. Upload Arista EOS running-configs (show running-config, one file per switch), or AVD structured_config / fabric.yml files. netlld works out which one you gave it.

No configs handy? Try six sample EOS running-configs from a fabric with no AVD behind it.
📄
Drag & drop config or YAML files here
.cfg · .conf · .txt · .yml — or
Cross-check against NetBox (optional)

Reads serials, rack positions, cables and management addresses for the uploaded switches only, and lists every place NetBox and the configs disagree. The NetBox must be reachable over https from the internet; for an internal NetBox, use the command-line tool (build.py --netbox). The token is used for this one build and never stored — use a read-only token.

Uploaded files are deleted as soon as the document is built, and every value that looks like a password, key or SNMP community is removed from them before they are read. The document itself is deleted after 24 hours, or straight away with the Delete button beside it. Two things worth knowing before you upload a production config: strip passwords and SNMP communities first, and note that this is an open preview — anyone holding the link to your generated document can open it, so treat it as shareable. For sensitive networks, run the command-line tool on your own machine instead.

Design the back-end network for a GPU cluster: a rail-optimised, two-tier routed Clos where GPU r in every server cables to rail leaf r. You declare the GPUs, the switches (port count, speed, interface naming, breakout lanes), the RoCE settings on both switches and NICs, the address pools and the optics. netlld works out the switch counts, every cable, every address and ASN, checks that the NIC and switch halves of the lossless class agree, and writes the LLD, cable schedule, EOS configs and an ANTA catalog. Nothing platform-specific is assumed: a value the spec doesn't give is an error or shown as "not declared".

See it first? 256 GPUs on 7060X6 leaves and spines, with an as-built LLDP snapshot that has two uplinks swapped.
or upload one:
Check the as-built cabling against an LLDP snapshot (optional)

YAML or JSON in the shape {switch: [{port, neighbor, neighbor_port}]}. Every port is compared with the cable map, and the LLD gets an As-built section listing what is wrong, missing or unexpected.

or upload it:

Two-tier designs only, up to 8,192 GPU links in the browser. A bigger cluster, or one that needs a super-spine tier, is refused with the largest size that fits; the command-line tool (build_ai.py) takes the same spec. Port counts, ECN thresholds and part numbers vary by platform and release: check them against the datasheet for the SKU you're ordering. The documents are deleted after 24 hours, or straight away with the Delete button.

Map any vendor's network from the one thing every switch can tell you: who it's plugged into. Upload saved show lldp neighbors or show cdp neighbors output (brief or detail) from Cisco IOS/IOS-XE/NX-OS, Arista EOS, Juniper Junos or HPE Aruba AOS-CX. You get a diagram, a cable map and the problems a neighbour table exposes. A link counts as confirmed only when both ends report it; one-way and conflicting reports, native-VLAN and duplex mismatches, and ports with several neighbours are listed as findings.

No captures handy? Six devices across five vendors' output formats, with planted problems to find.
🗺️
Drag & drop neighbour-table captures here
one file per device · .txt · .log · .out — or

Uploads are read in memory and never saved; only what the parsers pick out (device names, ports, platforms) reaches the report. Anyone holding the link to the report can open it until it is deleted after 24 hours, or straight away with the Delete button.

Answer the questions you'd ask on a customer discovery call — rack count, redundancy, environments, hardware preference. No ASNs, VLANs, or IP math required up front; netlld fills in the engineering detail and generates the full LLD at the end.

Who's this for?

The customer/organization name and site — these appear on the cover of the generated document.

How big, and how redundant?

Every leaf always uplinks to every spine — that's automatic. These answers just size it.

What separate environments do you need?

Each becomes its own tenant / VRF — fully isolated at layer 3. VLANs and subnets can be filled in later once addressing is finalized.

Any hardware preference?

Pick from common Arista platforms, or specify your own if you already know the model.

Does the customer have an existing IP scheme?

Underlay point-to-point links, loopbacks, and VTEP addressing. If they don't know yet, netlld assigns sensible defaults.

Anything for the document itself?

Optional — applied to the generated LLD's cover page and footer.

Ready to generate

This is exactly what gets built — go back to any step to change an answer.

Building fabric model, rendering diagrams, running design review…
📘 Generated LLD —
Design review
Bill of materials
Diagrams
Back to configuration

Statement of work

Project plan

Full document preview
LLD_.htmlread-only preview

One build, from one fabric

These are the real figures from the 12-node example above — DC2, four 7280R3A spines and eight leaves across 7050X3 and 7060DX5. Nothing here is typed in; every number is counted off the fabric model.

0devices
0fabric links
0switch ports
0tenants
0endpoints
0diagrams
0device configs
0findings

Plus the LLD as Word and HTML, a bill of materials, a Statement of Work, a project plan, and a runnable Ansible + AVD project.

And configuration back out

The document is half the round trip. The same fabric model writes the configuration that builds it, two ways — and the addressing a live fabric already has is pinned, so nothing renumbers an underlay that is carrying traffic.

CFG

Device configs, directly

One Arista EOS .cfg per switch, straight from the design. No Ansible, no AVD collection, nothing to install — the configuration the LLD describes, ready to read. build.py --configs, or inside the zip from any build here.

AVD

A runnable AVD project

Inventory, playbook, group_vars and an ASSUMPTIONS.md for anything inferred. ansible-playbook playbook.yml and AVD builds the same fabric its own way.

CHK

Then check it landed

compare.py proves what AVD built matches what was documented, and drift.py checks the design against the live network over a file, eAPI or CloudVision.

⚠

Review before you apply

Generated configs are what the design implies, not a replacement for what a switch runs today. Every file opens with a banner saying exactly that.

Real racks. Real cabling. Documented from the source.

Every fabric below came out of its own AVD variables or its own running-configs. Nothing on this page was drawn by hand, and nothing in the documents was inferred from a picture.

Footage: Pexels

Fabrics netlld has documented

Six Arista fabrics, three views each — two leaf-spine pods, a three-tier multi-pod with super-spines, a border-leaf WAN edge, a plain L3LS Clos with no overlay, and a collapsed MLAG pair. Every one generated by the tool, not drawn by hand. The slides advance on their own; hover to hold one still.

  • DC1 Physical cabling topology_physical.svg
    fabric DC1 — Physical Cabling (L1) dc1-spine1 dc1-spine1 7280R3A dc1-leaf1a dc1-leaf1a 7050X3 dc1-spine1->dc1-leaf1a dc1-leaf1b dc1-leaf1b 7050X3 dc1-spine1->dc1-leaf1b dc1-leaf2a dc1-leaf2a 7050X3 dc1-spine1->dc1-leaf2a dc1-leaf2b dc1-leaf2b 7050X3 dc1-spine1->dc1-leaf2b dc1-spine2 dc1-spine2 7280R3A dc1-spine2->dc1-leaf1a dc1-spine2->dc1-leaf1b dc1-spine2->dc1-leaf2a dc1-spine2->dc1-leaf2b cablenote Every leaf uplinks to every spine. Per-port detail in the cabling table.
    6 devices · 8 links · 31 switch ports2 × 7280R3A spine, 4 × 7050X3 leaf
  • DC1 Underlay routing topology_underlay.svg
    fabric DC1 — Underlay (eBGP / L3 /31) dc1-spine1 dc1-spine1 AS 65001 lo0 10.255.0.1 dc1-leaf1a dc1-leaf1a AS 65101 lo0 10.255.0.11 dc1-spine1->dc1-leaf1a 172.31.255.0/31 dc1-leaf1b dc1-leaf1b AS 65101 lo0 10.255.0.12 dc1-spine1->dc1-leaf1b 172.31.255.4/31 dc1-leaf2a dc1-leaf2a AS 65102 lo0 10.255.0.21 dc1-spine1->dc1-leaf2a 172.31.255.8/31 dc1-leaf2b dc1-leaf2b AS 65102 lo0 10.255.0.22 dc1-spine1->dc1-leaf2b 172.31.255.12/31 dc1-spine2 dc1-spine2 AS 65001 lo0 10.255.0.2 dc1-spine2->dc1-leaf1a 172.31.255.2/31 dc1-spine2->dc1-leaf1b 172.31.255.6/31 dc1-spine2->dc1-leaf2a 172.31.255.10/31 dc1-spine2->dc1-leaf2b 172.31.255.14/31
    eBGP, /31 point-to-pointEvery leaf uplinks to every spine
  • DC1 EVPN overlay topology_overlay.svg
    fabric DC1 — EVPN Overlay (VXLAN VTEPs) dc1-spine1 dc1-spine1 EVPN route server AS 65001 dc1-leaf1a dc1-leaf1a VTEP 10.255.1.11 [POD1] dc1-spine1->dc1-leaf1a dc1-leaf1b dc1-leaf1b VTEP 10.255.1.11 [POD1] dc1-spine1->dc1-leaf1b dc1-leaf2a dc1-leaf2a VTEP 10.255.1.21 [POD2] dc1-spine1->dc1-leaf2a dc1-leaf2b dc1-leaf2b VTEP 10.255.1.21 [POD2] dc1-spine1->dc1-leaf2b dc1-spine2 dc1-spine2 EVPN route server AS 65001 dc1-spine2->dc1-leaf1a dc1-spine2->dc1-leaf1b dc1-spine2->dc1-leaf2a dc1-spine2->dc1-leaf2b overlaybadge eBGP EVPN sessions (dashed). MLAG pairs share a common VTEP source.
    2 tenants · 4 endpointsVTEPs shared per MLAG pair
  • DC2 Physical cabling topology_physical.svg
    fabric DC2 — Physical Cabling (L1) dc2-spine1 dc2-spine1 7280R3A dc2-leaf1a dc2-leaf1a 7050X3 dc2-spine1->dc2-leaf1a dc2-leaf1b dc2-leaf1b 7050X3 dc2-spine1->dc2-leaf1b dc2-leaf2a dc2-leaf2a 7050X3 dc2-spine1->dc2-leaf2a dc2-leaf2b dc2-leaf2b 7050X3 dc2-spine1->dc2-leaf2b dc2-leaf3a dc2-leaf3a 7060DX5 dc2-spine1->dc2-leaf3a dc2-leaf3b dc2-leaf3b 7060DX5 dc2-spine1->dc2-leaf3b dc2-leaf4a dc2-leaf4a 7060DX5 dc2-spine1->dc2-leaf4a dc2-leaf4b dc2-leaf4b 7060DX5 dc2-spine1->dc2-leaf4b dc2-spine2 dc2-spine2 7280R3A dc2-spine2->dc2-leaf1a dc2-spine2->dc2-leaf1b dc2-spine2->dc2-leaf2a dc2-spine2->dc2-leaf2b dc2-spine2->dc2-leaf3a dc2-spine2->dc2-leaf3b dc2-spine2->dc2-leaf4a dc2-spine2->dc2-leaf4b dc2-spine3 dc2-spine3 7280R3A dc2-spine3->dc2-leaf1a dc2-spine3->dc2-leaf1b dc2-spine3->dc2-leaf2a dc2-spine3->dc2-leaf2b dc2-spine3->dc2-leaf3a dc2-spine3->dc2-leaf3b dc2-spine3->dc2-leaf4a dc2-spine3->dc2-leaf4b dc2-spine4 dc2-spine4 7280R3A dc2-spine4->dc2-leaf1a dc2-spine4->dc2-leaf1b dc2-spine4->dc2-leaf2a dc2-spine4->dc2-leaf2b dc2-spine4->dc2-leaf3a dc2-spine4->dc2-leaf3b dc2-spine4->dc2-leaf4a dc2-spine4->dc2-leaf4b cablenote Every leaf uplinks to every spine. Per-port detail in the cabling table.
    12 devices · 32 links · 91 switch ports4 × 7280R3A spine, 7050X3 + 7060DX5 leaf
  • DC2 Underlay routing topology_underlay.svg
    fabric DC2 — Underlay (eBGP / L3 /31) dc2-spine1 dc2-spine1 AS 65001 lo0 10.255.0.1 dc2-leaf1a dc2-leaf1a AS 65101 lo0 10.255.0.11 dc2-spine1->dc2-leaf1a 172.31.255.0/31 dc2-leaf1b dc2-leaf1b AS 65101 lo0 10.255.0.12 dc2-spine1->dc2-leaf1b 172.31.255.8/31 dc2-leaf2a dc2-leaf2a AS 65102 lo0 10.255.0.21 dc2-spine1->dc2-leaf2a 172.31.255.16/31 dc2-leaf2b dc2-leaf2b AS 65102 lo0 10.255.0.22 dc2-spine1->dc2-leaf2b 172.31.255.24/31 dc2-leaf3a dc2-leaf3a AS 65103 lo0 10.255.0.31 dc2-spine1->dc2-leaf3a 172.31.255.32/31 dc2-leaf3b dc2-leaf3b AS 65103 lo0 10.255.0.32 dc2-spine1->dc2-leaf3b 172.31.255.40/31 dc2-leaf4a dc2-leaf4a AS 65104 lo0 10.255.0.41 dc2-spine1->dc2-leaf4a 172.31.255.48/31 dc2-leaf4b dc2-leaf4b AS 65104 lo0 10.255.0.42 dc2-spine1->dc2-leaf4b 172.31.255.56/31 dc2-spine2 dc2-spine2 AS 65001 lo0 10.255.0.2 dc2-spine2->dc2-leaf1a 172.31.255.2/31 dc2-spine2->dc2-leaf1b 172.31.255.10/31 dc2-spine2->dc2-leaf2a 172.31.255.18/31 dc2-spine2->dc2-leaf2b 172.31.255.26/31 dc2-spine2->dc2-leaf3a 172.31.255.34/31 dc2-spine2->dc2-leaf3b 172.31.255.42/31 dc2-spine2->dc2-leaf4a 172.31.255.50/31 dc2-spine2->dc2-leaf4b 172.31.255.58/31 dc2-spine3 dc2-spine3 AS 65001 lo0 10.255.0.3 dc2-spine3->dc2-leaf1a 172.31.255.4/31 dc2-spine3->dc2-leaf1b 172.31.255.12/31 dc2-spine3->dc2-leaf2a 172.31.255.20/31 dc2-spine3->dc2-leaf2b 172.31.255.28/31 dc2-spine3->dc2-leaf3a 172.31.255.36/31 dc2-spine3->dc2-leaf3b 172.31.255.44/31 dc2-spine3->dc2-leaf4a 172.31.255.52/31 dc2-spine3->dc2-leaf4b 172.31.255.60/31 dc2-spine4 dc2-spine4 AS 65001 lo0 10.255.0.4 dc2-spine4->dc2-leaf1a 172.31.255.6/31 dc2-spine4->dc2-leaf1b 172.31.255.14/31 dc2-spine4->dc2-leaf2a 172.31.255.22/31 dc2-spine4->dc2-leaf2b 172.31.255.30/31 dc2-spine4->dc2-leaf3a 172.31.255.38/31 dc2-spine4->dc2-leaf3b 172.31.255.46/31 dc2-spine4->dc2-leaf4a 172.31.255.54/31 dc2-spine4->dc2-leaf4b 172.31.255.62/31
    eBGP, one AS per leaf groupNon-blocking Clos, ECMP throughout
  • DC2 EVPN overlay topology_overlay.svg
    fabric DC2 — EVPN Overlay (VXLAN VTEPs) dc2-spine1 dc2-spine1 EVPN route server AS 65001 dc2-leaf1a dc2-leaf1a VTEP 10.255.1.11 [POD1] dc2-spine1->dc2-leaf1a dc2-leaf1b dc2-leaf1b VTEP 10.255.1.11 [POD1] dc2-spine1->dc2-leaf1b dc2-leaf2a dc2-leaf2a VTEP 10.255.1.21 [POD2] dc2-spine1->dc2-leaf2a dc2-leaf2b dc2-leaf2b VTEP 10.255.1.21 [POD2] dc2-spine1->dc2-leaf2b dc2-leaf3a dc2-leaf3a VTEP 10.255.1.31 [POD3] dc2-spine1->dc2-leaf3a dc2-leaf3b dc2-leaf3b VTEP 10.255.1.31 [POD3] dc2-spine1->dc2-leaf3b dc2-leaf4a dc2-leaf4a VTEP 10.255.1.41 [POD4] dc2-spine1->dc2-leaf4a dc2-leaf4b dc2-leaf4b VTEP 10.255.1.41 [POD4] dc2-spine1->dc2-leaf4b dc2-spine2 dc2-spine2 EVPN route server AS 65001 dc2-spine2->dc2-leaf1a dc2-spine2->dc2-leaf1b dc2-spine2->dc2-leaf2a dc2-spine2->dc2-leaf2b dc2-spine2->dc2-leaf3a dc2-spine2->dc2-leaf3b dc2-spine2->dc2-leaf4a dc2-spine2->dc2-leaf4b dc2-spine3 dc2-spine3 EVPN route server AS 65001 dc2-spine3->dc2-leaf1a dc2-spine3->dc2-leaf1b dc2-spine3->dc2-leaf2a dc2-spine3->dc2-leaf2b dc2-spine3->dc2-leaf3a dc2-spine3->dc2-leaf3b dc2-spine3->dc2-leaf4a dc2-spine3->dc2-leaf4b dc2-spine4 dc2-spine4 EVPN route server AS 65001 dc2-spine4->dc2-leaf1a dc2-spine4->dc2-leaf1b dc2-spine4->dc2-leaf2a dc2-spine4->dc2-leaf2b dc2-spine4->dc2-leaf3a dc2-spine4->dc2-leaf3b dc2-spine4->dc2-leaf4a dc2-spine4->dc2-leaf4b overlaybadge eBGP EVPN sessions (dashed). MLAG pairs share a common VTEP source.
    3 tenants · 6 endpointsType-2 and Type-5 routes across the fabric
  • DC3 Three tiers, two pods topology_physical.svg
    fabric DC3 — Physical Cabling (L1) dc3-ss1 dc3-ss1 7800R3 dc3-p1-spine1 dc3-p1-spine1 7280R3A dc3-ss1->dc3-p1-spine1 dc3-p1-spine2 dc3-p1-spine2 7280R3A dc3-ss1->dc3-p1-spine2 dc3-p2-spine1 dc3-p2-spine1 7280R3A dc3-ss1->dc3-p2-spine1 dc3-p2-spine2 dc3-p2-spine2 7280R3A dc3-ss1->dc3-p2-spine2 dc3-ss2 dc3-ss2 7800R3 dc3-ss2->dc3-p1-spine1 dc3-ss2->dc3-p1-spine2 dc3-ss2->dc3-p2-spine1 dc3-ss2->dc3-p2-spine2 dc3-p1-leaf1 dc3-p1-leaf1 7050X3 dc3-p1-spine1->dc3-p1-leaf1 dc3-p1-leaf2 dc3-p1-leaf2 7050X3 dc3-p1-spine1->dc3-p1-leaf2 dc3-p1-spine2->dc3-p1-leaf1 dc3-p1-spine2->dc3-p1-leaf2 dc3-p2-leaf1 dc3-p2-leaf1 7050X3 dc3-p2-spine1->dc3-p2-leaf1 dc3-p2-leaf2 dc3-p2-leaf2 7050X3 dc3-p2-spine1->dc3-p2-leaf2 dc3-p2-spine2->dc3-p2-leaf1 dc3-p2-spine2->dc3-p2-leaf2 cablenote Leaves uplink to their pod's spines; spines uplink to the super-spines. Per-port detail in the cabling table.
    10 devices · 16 links · 40 switch ports2 × 7800R3 super-spine over 4 × 7280R3A spine, 4 × 7050X3 leaf
  • DC3 Underlay across the pods topology_underlay.svg
    fabric DC3 — Underlay (eBGP / L3 /31) dc3-ss1 dc3-ss1 AS 65000 lo0 10.255.0.1 dc3-p1-spine1 dc3-p1-spine1 AS 65101 lo0 10.255.0.11 dc3-ss1->dc3-p1-spine1 172.31.255.0/31 dc3-p1-spine2 dc3-p1-spine2 AS 65101 lo0 10.255.0.12 dc3-ss1->dc3-p1-spine2 172.31.255.4/31 dc3-p2-spine1 dc3-p2-spine1 AS 65102 lo0 10.255.0.21 dc3-ss1->dc3-p2-spine1 172.31.255.16/31 dc3-p2-spine2 dc3-p2-spine2 AS 65102 lo0 10.255.0.22 dc3-ss1->dc3-p2-spine2 172.31.255.20/31 dc3-ss2 dc3-ss2 AS 65000 lo0 10.255.0.2 dc3-ss2->dc3-p1-spine1 172.31.255.2/31 dc3-ss2->dc3-p1-spine2 172.31.255.6/31 dc3-ss2->dc3-p2-spine1 172.31.255.18/31 dc3-ss2->dc3-p2-spine2 172.31.255.22/31 dc3-p1-leaf1 dc3-p1-leaf1 AS 65201 lo0 10.255.0.111 dc3-p1-spine1->dc3-p1-leaf1 172.31.255.8/31 dc3-p1-leaf2 dc3-p1-leaf2 AS 65201 lo0 10.255.0.112 dc3-p1-spine1->dc3-p1-leaf2 172.31.255.12/31 dc3-p1-spine2->dc3-p1-leaf1 172.31.255.10/31 dc3-p1-spine2->dc3-p1-leaf2 172.31.255.14/31 dc3-p2-leaf1 dc3-p2-leaf1 AS 65202 lo0 10.255.0.113 dc3-p2-spine1->dc3-p2-leaf1 172.31.255.24/31 dc3-p2-leaf2 dc3-p2-leaf2 AS 65202 lo0 10.255.0.114 dc3-p2-spine1->dc3-p2-leaf2 172.31.255.28/31 dc3-p2-spine2->dc3-p2-leaf1 172.31.255.26/31 dc3-p2-spine2->dc3-p2-leaf2 172.31.255.30/31
    eBGP, one AS per tierLeaves reach the other pod through the super-spines
  • DC3 A tenant per pod topology_overlay.svg
    fabric DC3 — EVPN Overlay (VXLAN VTEPs) dc3-ss1 dc3-ss1 EVPN route server AS 65000 dc3-p1-spine1 dc3-p1-spine1 EVPN route server AS 65101 dc3-ss1->dc3-p1-spine1 dc3-p1-spine2 dc3-p1-spine2 EVPN route server AS 65101 dc3-ss1->dc3-p1-spine2 dc3-p2-spine1 dc3-p2-spine1 EVPN route server AS 65102 dc3-ss1->dc3-p2-spine1 dc3-p2-spine2 dc3-p2-spine2 EVPN route server AS 65102 dc3-ss1->dc3-p2-spine2 dc3-ss2 dc3-ss2 EVPN route server AS 65000 dc3-ss2->dc3-p1-spine1 dc3-ss2->dc3-p1-spine2 dc3-ss2->dc3-p2-spine1 dc3-ss2->dc3-p2-spine2 dc3-p1-leaf1 dc3-p1-leaf1 VTEP 10.255.1.11 [POD1] dc3-p1-spine1->dc3-p1-leaf1 dc3-p1-leaf2 dc3-p1-leaf2 VTEP 10.255.1.11 [POD1] dc3-p1-spine1->dc3-p1-leaf2 dc3-p1-spine2->dc3-p1-leaf1 dc3-p1-spine2->dc3-p1-leaf2 dc3-p2-leaf1 dc3-p2-leaf1 VTEP 10.255.1.21 [POD2] dc3-p2-spine1->dc3-p2-leaf1 dc3-p2-leaf2 dc3-p2-leaf2 VTEP 10.255.1.21 [POD2] dc3-p2-spine1->dc3-p2-leaf2 dc3-p2-spine2->dc3-p2-leaf1 dc3-p2-spine2->dc3-p2-leaf2 overlaybadge eBGP EVPN sessions (dashed). MLAG pairs share a common VTEP source. Super-spines reflect EVPN between pods.
    2 tenants · 2 VRFsPods detected from the topology, not declared
  • DC4 Border leaves at the edge topology_physical.svg
    fabric DC4 — Physical Cabling (L1) dc4-spine1 dc4-spine1 7280R3A dc4-border1 dc4-border1 7280R3A dc4-spine1->dc4-border1 dc4-border2 dc4-border2 7280R3A dc4-spine1->dc4-border2 dc4-leaf1 dc4-leaf1 7050X3 dc4-spine1->dc4-leaf1 dc4-leaf2 dc4-leaf2 7050X3 dc4-spine1->dc4-leaf2 dc4-spine2 dc4-spine2 7280R3A dc4-spine2->dc4-border1 dc4-spine2->dc4-border2 dc4-spine2->dc4-leaf1 dc4-spine2->dc4-leaf2 dc4-dci-rtr1 dc4-dci-rtr1 (external) dc4-border1->dc4-dci-rtr1 fw-cluster1 fw-cluster1 (external) dc4-border1->fw-cluster1 wan-edge1 wan-edge1 (external) dc4-border2->wan-edge1 cablenote Every leaf uplinks to every spine. Dashed = links leaving the fabric. Per-port detail in the cabling table.
    6 devices · 11 links · 27 switch ports2 × 7280R3A spine, 2 × 7050X3 leaf, 2 × 7280R3A border-leaf
  • DC4 Where the fabric ends topology_underlay.svg
    fabric DC4 — Underlay (eBGP / L3 /31) dc4-spine1 dc4-spine1 AS 65001 lo0 10.255.0.1 dc4-border1 dc4-border1 AS 65102 lo0 10.255.0.21 dc4-spine1->dc4-border1 172.31.254.4/31 dc4-border2 dc4-border2 AS 65102 lo0 10.255.0.22 dc4-spine1->dc4-border2 172.31.254.6/31 dc4-leaf1 dc4-leaf1 AS 65101 lo0 10.255.0.11 dc4-spine1->dc4-leaf1 172.31.254.0/31 dc4-leaf2 dc4-leaf2 AS 65101 lo0 10.255.0.12 dc4-spine1->dc4-leaf2 172.31.254.2/31 dc4-spine2 dc4-spine2 AS 65001 lo0 10.255.0.2 dc4-spine2->dc4-border1 172.31.254.12/31 dc4-spine2->dc4-border2 172.31.254.14/31 dc4-spine2->dc4-leaf1 172.31.254.8/31 dc4-spine2->dc4-leaf2 172.31.254.10/31 dc4-dci-rtr1 dc4-dci-rtr1 (external) dc4-border1->dc4-dci-rtr1 10.99.0.0/31 fw-cluster1 fw-cluster1 (external) dc4-border1->fw-cluster1 10.99.0.6/31 wan-edge1 wan-edge1 (external) dc4-border2->wan-edge1 10.99.0.2/31
    3 external linksDCI, WAN and firewall, outside the Clos
  • DC4 Tenant and transit topology_overlay.svg
    fabric DC4 — EVPN Overlay (VXLAN VTEPs) dc4-spine1 dc4-spine1 EVPN route server AS 65001 dc4-border1 dc4-border1 VTEP 10.255.1.21 [BORDER] dc4-spine1->dc4-border1 dc4-border2 dc4-border2 VTEP 10.255.1.21 [BORDER] dc4-spine1->dc4-border2 dc4-leaf1 dc4-leaf1 VTEP 10.255.1.11 [POD1] dc4-spine1->dc4-leaf1 dc4-leaf2 dc4-leaf2 VTEP 10.255.1.11 [POD1] dc4-spine1->dc4-leaf2 dc4-spine2 dc4-spine2 EVPN route server AS 65001 dc4-spine2->dc4-border1 dc4-spine2->dc4-border2 dc4-spine2->dc4-leaf1 dc4-spine2->dc4-leaf2 overlaybadge eBGP EVPN sessions (dashed). MLAG pairs share a common VTEP source.
    2 tenants · 2 VRFsA separate EDGE VRF on the border pair
  • DC5 Plain L3LS Clos topology_physical.svg
    fabric DC5 — Physical Cabling (L1) dc5-spine1 dc5-spine1 7280R3A dc5-leaf1 dc5-leaf1 7060DX5 dc5-spine1->dc5-leaf1 dc5-leaf2 dc5-leaf2 7060DX5 dc5-spine1->dc5-leaf2 dc5-leaf3 dc5-leaf3 7060DX5 dc5-spine1->dc5-leaf3 dc5-leaf4 dc5-leaf4 7060DX5 dc5-spine1->dc5-leaf4 dc5-leaf5 dc5-leaf5 7060DX5 dc5-spine1->dc5-leaf5 dc5-leaf6 dc5-leaf6 7060DX5 dc5-spine1->dc5-leaf6 dc5-spine2 dc5-spine2 7280R3A dc5-spine2->dc5-leaf1 dc5-spine2->dc5-leaf2 dc5-spine2->dc5-leaf3 dc5-spine2->dc5-leaf4 dc5-spine2->dc5-leaf5 dc5-spine2->dc5-leaf6 dc5-spine3 dc5-spine3 7280R3A dc5-spine3->dc5-leaf1 dc5-spine3->dc5-leaf2 dc5-spine3->dc5-leaf3 dc5-spine3->dc5-leaf4 dc5-spine3->dc5-leaf5 dc5-spine3->dc5-leaf6 dc5-spine4 dc5-spine4 7280R3A dc5-spine4->dc5-leaf1 dc5-spine4->dc5-leaf2 dc5-spine4->dc5-leaf3 dc5-spine4->dc5-leaf4 dc5-spine4->dc5-leaf5 dc5-spine4->dc5-leaf6 cablenote Every leaf uplinks to every spine. Per-port detail in the cabling table.
    10 devices · 24 links · no overlay4 × 7280R3A spine, 6 × 7060DX5 leaf — routed east-west, nothing tunnelled
  • DC5 ECMP across four spines topology_underlay.svg
    fabric DC5 — Underlay (eBGP / L3 /31) dc5-spine1 dc5-spine1 AS 65001 lo0 10.255.0.1 dc5-leaf1 dc5-leaf1 AS 65101 lo0 10.255.0.101 dc5-spine1->dc5-leaf1 172.31.253.0/31 dc5-leaf2 dc5-leaf2 AS 65102 lo0 10.255.0.102 dc5-spine1->dc5-leaf2 172.31.253.2/31 dc5-leaf3 dc5-leaf3 AS 65103 lo0 10.255.0.103 dc5-spine1->dc5-leaf3 172.31.253.4/31 dc5-leaf4 dc5-leaf4 AS 65104 lo0 10.255.0.104 dc5-spine1->dc5-leaf4 172.31.253.6/31 dc5-leaf5 dc5-leaf5 AS 65105 lo0 10.255.0.105 dc5-spine1->dc5-leaf5 172.31.253.8/31 dc5-leaf6 dc5-leaf6 AS 65106 lo0 10.255.0.106 dc5-spine1->dc5-leaf6 172.31.253.10/31 dc5-spine2 dc5-spine2 AS 65001 lo0 10.255.0.2 dc5-spine2->dc5-leaf1 172.31.253.12/31 dc5-spine2->dc5-leaf2 172.31.253.14/31 dc5-spine2->dc5-leaf3 172.31.253.16/31 dc5-spine2->dc5-leaf4 172.31.253.18/31 dc5-spine2->dc5-leaf5 172.31.253.20/31 dc5-spine2->dc5-leaf6 172.31.253.22/31 dc5-spine3 dc5-spine3 AS 65001 lo0 10.255.0.3 dc5-spine3->dc5-leaf1 172.31.253.24/31 dc5-spine3->dc5-leaf2 172.31.253.26/31 dc5-spine3->dc5-leaf3 172.31.253.28/31 dc5-spine3->dc5-leaf4 172.31.253.30/31 dc5-spine3->dc5-leaf5 172.31.253.32/31 dc5-spine3->dc5-leaf6 172.31.253.34/31 dc5-spine4 dc5-spine4 AS 65001 lo0 10.255.0.4 dc5-spine4->dc5-leaf1 172.31.253.36/31 dc5-spine4->dc5-leaf2 172.31.253.38/31 dc5-spine4->dc5-leaf3 172.31.253.40/31 dc5-spine4->dc5-leaf4 172.31.253.42/31 dc5-spine4->dc5-leaf5 172.31.253.44/31 dc5-spine4->dc5-leaf6 172.31.253.46/31
    eBGP, one AS per leafEvery leaf has four equal-cost paths to every other
  • DC5 No overlay, by design no topology_overlay.svg
    No overlay diagram There is no EVPN control plane and no VXLAN data plane to draw. Every prefix in DC5 is routed hop by hop in the underlay above.
    0 tenants · 0 VNIsThe document says so rather than inventing one
  • DC6 Collapsed MLAG pair topology_physical.svg
    fabric DC6 — Physical Cabling (L1) dc6-sw1 dc6-sw1 7050X3 dc6-sw2 dc6-sw2 7050X3 cablenote Every leaf uplinks to every spine. Per-port detail in the cabling table.
    2 devices · 0 fabric linksTwo switches acting as one — a DR site or a small room
  • DC6 No fabric to route topology_underlay.svg
    fabric DC6 — Underlay (eBGP / L3 /31) dc6-sw1 dc6-sw1 AS 0 lo0 10.255.0.1 dc6-sw2 dc6-sw2 AS 0 lo0 10.255.0.2
    no BGP, no spine tierRedundancy comes from the pair, not uplink diversity
  • DC6 Switched services no topology_overlay.svg
    No overlay diagram There is no EVPN control plane and no VXLAN data plane to draw. The pair switches locally; there is no fabric to tunnel across.
    3 VLANs · 1 VRFLayer 2 without EVPN, which is the point of this design

The flow, end to end

The same diagrams that live in the repo under diagrams/, generated from mermaid sources. Pick one; it draws itself.

4. Back to the network3. Deliver2. Generate1. Start fromdeploybuilt configslive stateWeb appsample, quick build, formdesign workshop, AVDuploadCommand lineAVD group_vars,structured_configrunning-config from theswitchesAdaptersread or rebuild the designFabric modelvendor-neutralLLD documentWord, HTML, PDF3 diagramsphysical, underlay, overlayFindings, BOMexecutive summarySOW andproject planDownloadfrom the web appConfluence, Slack/TeamsCI rebuild, audit packAVD exportaddresses keptAnsible + AVDbuild configsArista fabricswitchesComparebuilt = designed?Drift checkfile, eAPI, CloudVision
Where a fabric comes from, and where it goes: source to model to documents, then back out through AVD to the switches, with compare and drift closing the loop.
overunderNETLLD_NARRATIVE=llmdiscardedkeptBrowserform · upload · sampleRate limit30/hour per IPCommand linebuild.pysources.pywhich format is this?429Adaptersgroup_vars ·structured_configrunning-config · eAPI/CVPFabric IRvendor-neutralnarrative.pydeterministic draftgrounded?Renderersdocx · html · pdf · diagramsfindings · BOM · SOW ·planruns volumedeleted after 7 daysDownload/runs/[id]/observability.py/adminHTTP Basic
What happens between a click and a document. The branch worth reading is the narrative one — the deterministic draft renders unless an LLM rewrite passes the grounding check, and a discarded rewrite falls back to that same draft.
under limitover limit7 days, or 800MBcorrectwrong or absentAnyonewith the linkWeb app/ and /workshopno sign-up, no passwordBuild endpointsgenerate, uploadsample, sample-configsRate limit30/hour per IPBuild the LLDdiagrams, BOMSOW, project plan429Retry-AfterDownload/runs/[id]/DeletedOwnerHTTP BasicADMIN_PASSWORD/adminusage, errorsdisk, tokens401challenge
The builder and the four build endpoints are open to anyone with the link, rate limited per IP. /admin alone sits behind HTTP Basic, and generated documents are deleted after 24 hours.

Where netlld fits next to AVD

AVD already generates fabric documentation, free, from Arista. If you run AVD and a Markdown reference is what you need, use it. netlld is for the two things it cannot reach: a fabric with no AVD repo, and a document someone signs off on.

AVD self-documentationnetlld
InputAVD variables only AVD vars, running-configs, live eAPI/CloudVision, or a form
OutputMarkdown and CSV Word, HTML and PDF — the format a contract names
Fabric with no AVD repoNot possible Documented from its running-configs
Beyond the document— Design review, BOM with optics, SOW, project plan
Back to configuration— AVD project and device configs, addressing pinned
Checks against the live network— Drift, over file, eAPI or CloudVision
CostFree, and maintained by Arista Free open preview

What it does not do

It does not invent. Interface speeds, optic part numbers and anycast MACs are not in a fabric definition, so netlld asks for them or leaves them out — never a plausible guess in a document you order hardware from.
It models L3LS-EVPN. Other designs are read honestly and labelled as what they are, but the document sections are written around leaf-spine EVPN.
Generated configs need review. They are the configuration your design implies, not a drop-in replacement for what a switch runs today.
It is a preview. No accounts, no SLA, and anything generated is reachable by anyone holding its link for 24 hours, unless you delete it sooner. See how your data is handled.