Skip to content

NetLoom

Network Lab Topology Orchestrator

NetLoom is a command-line utility for creating and managing network topologies for educational labs. It automates the provisioning of VirtualBox VMs, network configuration generation, and topology deployment.

Key Features

  • Declarative Topology Definition - Define your entire network lab in a single YAML file
  • VirtualBox Integration - Automated VM cloning, network setup, and lifecycle management
  • Template-Based Configuration - Generate networkd, routing, and service configs from Jinja2 templates
  • Multi-Role Support - Configure routers, switches, and hosts with role-specific settings
  • Routing Protocol Support - Built-in support for BIRD and FRR routing daemons with OSPF
  • Config Persistence - Save and restore VM configurations between sessions

Quick Start

# Install NetLoom
uv add netloom

# Deploy a topology
netloom --topology lab.yaml init      # Import base VM
netloom --topology lab.yaml create    # Create VM clones
netloom --topology lab.yaml gen       # Generate configs
netloom --topology lab.yaml attach    # Attach configs to VMs
netloom --topology lab.yaml start     # Start all VMs

Documentation

  • Getting Started

Installation, prerequisites, and your first topology deployment

Getting started

  • CLI Reference

Complete reference for all commands and options

Reference

  • Topology Schema

YAML schema reference for defining network topologies

Schema

  • Architecture

Internal design and component overview

Architecture

  • Configuration

Workdir structure and customization options

Configuration

Example Topology

meta:
  id: "simple-lab"
  name: "Simple Network Lab"

networks:
  - name: r1-r2
  - name: r1-h1

nodes:
  - name: R1
    role: router
    interfaces:
      eth1:
        network: r1-r2
        ip: "10.0.1.1/24"
      eth2:
        network: r1-h1
        ip: "192.168.1.1/24"

  - name: R2
    role: router
    interfaces:
      eth1:
        network: r1-r2
        ip: "10.0.1.2/24"

  - name: H1
    role: host
    interfaces:
      eth1:
        network: r1-h1
        ip: "192.168.1.10/24"
        gateway: "192.168.1.1"

License

NetLoom is open source software. See the GitHub repository for details.