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 (Virtualbox, KVM/libvirt, Docker containers)

  • 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, BFD, OSPFv2, OSPFv3, EIGRP, RIPv2, RIPng, IS-IS, BGP, VRRP, anycast gateways, MPLS, BGP-LU, L3VPN (VPNv4 + VPNv6), 6PE, EVPN, SR-MPLS, or SRv6 on your lab devices.

  • Configure 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 or SuzieQ

When the lab is fully configured, you can use the:

  • netlab connect command to connect to network devices via SSH or docker exec

  • netlab config command to deploy custom configuration snippets

  • netlab capture command to capture packets on VM- or container interfaces

  • netlab exec command to execute arbitrary commands on one or more network devices

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