netlab: a Virtual Networking Labbing Tool

netlab will help you be more proficient once you decide to drop GUI-based virtual networking labs and build your labs using CLI and infrastructure-as-code principles.

Using netlab you can:

  • Describe high-level lab topology in YAML format without worrying about the specific implementation details

  • Use the same lab topology with multiple virtualization providers (KVM/libvirt, Docker containers, or physical devices)

  • Create Vagrant- and containerlab configuration files and Ansible inventory from the lab topology

  • Configure IP addressing, routing protocols, VLANs, VRFs, and other networking technologies in your lab

Based on your lab topology the netlab up command will:

  • Create IPv4 and IPv6 addressing plan and OSPFv2, OSPFv3, EIGRP, IS-IS, RIPv2/RIPng, BGP, MPLS/VPN, and EVPN routing design

  • Prepare all the necessary configuration files to start the lab

  • Start the lab using Vagrant or containerlab

  • Create additional virtual networking infrastructure needed to support your lab

  • Deploy initial configurations (interfaces, IPv4 and IPv6 addresses, usernames…) to your lab devices

  • Configure VLANs, VRFs, VXLAN, LLDP, LAG (including MLAG and Linux link bonding), STP, BFD, OSPFv2, OSPFv3, EIGRP, RIPv2, RIPng, IS-IS, BGP, VRRP, anycast gateways, DHCP clients and servers, MPLS, BGP-LU, L3VPN (VPNv4 + VPNv6), 6PE, EVPN, SR-MPLS, or SRv6 on your lab devices.

  • Configure static routes, prefix lists, AS-path filters, BGP community filters, route maps, route redistribution, and default route origination.

  • Start external network management tools specified in lab topology like Graphite, SuzieQ, or Cisco NSO.

When the lab is fully configured, you can use:

Before shutting down your lab with the netlab down command, you might want to run the netlab collect command to save the configuration changes you made.

Getting Started

More information