Overview
netlab is bringing infrastructure-as-code concepts to networking labs. You’ll describe your high-level network topology and routing design in a YAML file, and the tools in this repository will
- Create Vagrantfile configuration file for libvirt or VirtualBox environment
- Create containerlab configuration file
- Create Ansible inventory and configuration file
- Create IPv4 and IPv6 addressing plan and OSPFv2, OSPFv3, EIGRP, IS-IS, RIPv2, RIPng, and BGP routing design
- Configure IPv4, IPv6, DHCP, DHCPv6, VLANs, VRFs, VXLAN, LLDP, BFD, OSPFv2, OSPFv3, EIGRP, IS-IS, BGP, RIPv2, RIPng, VRRP, LACP, LAG, MLAG, link bonding, STP, anycast gateways, static routes, route maps, prefix lists, AS-path prefix lists, route redistribution, default route origination, MPLS, BGP-LU, L3VPN (VPNv4 + VPNv6), 6PE, EVPN, SR-MPLS, or SRv6 on your lab devices.
Instead of wasting time creating lab topology in a GUI and configuring boring details, you’ll start with a lab preconfigured according to your specifications.
Interested? Read the documentation and installation guidelines.
Releases
The latest release is release 1.9.4-post2. It should be pretty stable, but if you encounter bugs, please report them as GitHub issues and use release 1.9.2-post1.
An Overview of CLI Commands
- netlab up
- Uses netlab create to create configuration files, starts the virtual lab, and uses netlab initial to deploy device configurations, including IP addressing, LLDP, OSPF, BGP, IS-IS, EIGRP, VRRP, VLANs, VRFs, MPLS, SR-MPLS, VXLAN, EVPN and SRv6. More details
- netlab down
- Destroys the virtual lab. More details
- netlab restart
- Restart and/or reconfigure the virtual lab. More details
- netlab config
- Applies additional Jinja2 configuration templates to network devices.
- netlab collect
- Using Ansible fact gathering or other device-specific Ansible modules, collects device configurations and saves them in the specified directory (default: config).
- netlab connect
- Use SSH or docker exec to connect to a lab device using device names, management network IP addresses (ansible_host), SSH port, and username/passwords specified in lab topology or netlab device defaults.
- netlab exec
- Use SSH or docker exec to execute a command on one or more network devices using device names, management network IP addresses (ansible_host), SSH port, and username/passwords specified in lab topology or netlab device defaults.
- netlab capture
- Perform packet capture on VM- and container interfaces
- netlab report
- Creates a report from the transformed lab topology data. More details
- netlab graph
- Creates a lab topology graph description in Graphviz or D2 format. More details
- netlab show
- Display system settings in tabular, text, or YAML format. More details