Skip to main content
v0.38.1 · Apache-2.0 · Go 1.27 ·

A network load target
for the monitoring tools
you're building.

nl6 simulates up to 30,000 network devices, GPU servers, storage systems and Linux hosts on a single Linux host — each with its own IP, SNMP listener, SSH server, HTTPS REST endpoint and flow exporter. Built on TUN interfaces and network namespaces.

noc@laptop — ~ — 132×36
noc@laptop:~$ 
devices / host
30,000max
device types
28in 8 cat.
mem / device
~1KB
parallel workers
500max
01

quick start

build from source · install a package · or pull with docker
01 · clonegit
$git clone https://github.com/labmonkeys-space/nl6.git
$cd nl6
02 · buildmake · go 1.26+
$make tidy
$make build
03 · runneeds root
$sudo ./go/nl6/nl6 -auto-start-ip 10.0.0.1 -auto-count 100
or install a package
01 · download & install.deb / .rpm · from releases
$curl -LO https://github.com/labmonkeys-space/nl6/releases/download/v0.38.1/nl6_0.38.1_amd64.deb
$sudo apt install ./nl6_0.38.1_amd64.deb
$curl -LO https://github.com/labmonkeys-space/nl6/releases/download/v0.38.1/nl6-0.38.1-1.x86_64.rpm
$sudo dnf install ./nl6-0.38.1-1.x86_64.rpm
02 · configure & startsystemd · needs root
$sudoedit /etc/nl6/nl6.conf
$sudo systemctl enable --now nl6
or on nixos · declarative flake
01 · enable the moduleservices.nl6
#services.nl6.enable = true;
02 · prebuilt cachenix.settings · no cli
#substituters = [ "https://nl6.cachix.org" ];
#trusted-public-keys = [ "nl6.cachix.org-1:nfaq8JEbMcARjzc/oPyNIrcQrXKe13phUtMg0RucnLA=" ];
or with docker
01 · pullno toolchain
$docker pull ghcr.io/labmonkeys-space/nl6:latest
02 · runneeds --cap-add=net_admin
$docker run --rm -it \ --cap-add=NET_ADMIN \ --device=/dev/net/tun \ --network=host \ ghcr.io/labmonkeys-space/nl6:latest \ -auto-start-ip 10.0.0.1 -auto-count 100
02

what's in the box

six pillars
01
30,000 devices

Tested scale on a single host. Parallel TUN pre-allocation, lock-free sync.Map for O(1) OID lookups, pre-computed next-OID mappings.

02
Protocols

SNMP v1/v2c/v3 (MD5/SHA1 · DES/AES128) with opt-in SET, SSH with VT100, HTTPS REST, gNMI (OpenConfig plus per-type catalogues), NETCONF on Catalyst 9500 and MX10004, LLDP topology. Push exporters: NetFlow v5 / v9 / IPFIX with NBAR2, sFlow v5 (experimental), SNMP traps/informs, syslog over UDP/TCP/TLS, gNMI dial-out.

03
Load-test fidelity

Arm → run a bounded push experiment over 7 protocols → get an exact sent-ledger. Diff it against your monitor to localize missed or duplicated telemetry. Fidelity mode, loss localization, run tagging, nl6-reconcile CLI, HTML report.

04
31 device types

Routers, switches, firewalls, servers, GPU servers (DGX/HGX), storage systems and optical transport, across 9 categories.

05
GPU simulation

NVIDIA DGX-A100 / H100 / HGX-H200 with per-GPU DCGM OIDs — utilization, VRAM, temp, power, fan, SM/memory clocks.

06
Namespace isolation

Each device runs in the dedicated nl6sim network namespace with its own TUN interface and IP.

07
Dynamic metrics

100-point sine-wave cycling for CPU, memory, temperature; full IF-MIB counter set (octets, ucast / mcast / bcast packets, errors, discards) with per-device error scenarios; per-GPU DCGM OIDs.

03

device catalog

31 types · 9 categories
core routers7
  • ›Cisco ASR9K · 48
  • ›Cisco ASR 9902 · 50
  • ›Cisco CRS-X · 144
  • ›Huawei NE8000 · 96
  • ›Nokia 7750 SR-12 · 72
  • ›Juniper MX960 · 80
  • ›Juniper MX10004 · 80
edge routers2
  • ›Juniper MX240 · 24
  • ›NEC IX3315 · 48
dc switches2
  • ›Cisco Nexus 9500 · 64
  • ›Arista 7280R3 · 32
campus switches4
  • ›Cisco Catalyst 9500 · 48
  • ›Extreme VSP4450 · 48
  • ›D-Link DGS-3630 · 52
  • ›Cisco IOS · 4
firewalls4
  • ›Palo Alto PA-3220 · 16
  • ›Fortinet FortiGate-600E · 20
  • ›SonicWall NSa 6700 · 16
  • ›Check Point 15600 · 24
servers4
  • ›Dell PowerEdge R750
  • ›HPE ProLiant DL380
  • ›IBM Power S922
  • ›Linux Server · Ubuntu 24.04
gpu servers3
  • ›NVIDIA DGX-A100 · 8×80GB
  • ›NVIDIA DGX-H100 · 8×80GB
  • ›NVIDIA HGX-H200 · 8×141GB
storage4
  • ›AWS S3
  • ›Pure Storage FlashArray
  • ›NetApp ONTAP
  • ›Dell EMC Unity
optical1
  • ›Ciena Waveserver 5
04

status & scale

what works · how big
stable12
  • ■SNMP v1/v2c/v3 + SET
  • ■SSH (VT100)
  • ■HTTPS REST (storage)
  • ■NetFlow v5/v9/IPFIX + NBAR2
  • ■gNMI (dial-in + dial-out)
  • ■NETCONF (Catalyst 9500, MX10004)
  • ■SNMP trap + syslog export
  • ■LLDP topology
  • ■DNS + Prometheus service discovery
  • ■Load-test scenarios
  • ■TUN + netns isolation
  • ■Web UI + REST API
experimental1
  • ■sFlow v5 (synthetic)
tested scale3
  • ■30,000 concurrent devices / host
  • ■~50 MB base + ~1 KB / device
  • ■CPU: minimal in steady state
concurrent devices
30,000tested
device types
28
resource files
341json
world cities
98sysLocation
ssh commands
36+linux
05

documentation map

jump in
getting started
ops

Scale to 30k devices, tune the nl6sim namespace, troubleshoot, profile, and run exports and load tests.

reference

CLI flags, REST API, device data, SNMP, gNMI, NETCONF, export wire formats, optical, discovery and GPU simulation.

explanation

Why it is built this way: architecture, Kubernetes, SNMP data fidelity, collector ceilings.

→ get started

Spin up tens of thousands of devices in seconds.

Apache-2.0. No agents, no cloud, no per-device fees. Just TUN interfaces and a little Go.