Runtopo simulates a network topology described using the DOT graph description language. Network elements and hosts are simulated using virtual machines, wired up to represent the provided topology file.
It is similar to (and somewhat compatible with) Cumulus Networks' topology_converter but doesn't rely on Vagrant. Instead, runtopo interacts directly with libvirt. This makes it more flexible (at least potentially) and allows for a faithful simulation of additional scenarios that are either hard or infeasible to realize while accomodating Vagrant's requirements.
If you want to run a simulated topology on your laptop (possibly running a non-Linux OS like Windows or macOS) you should stay with topology_converter. Runtopo currently only supports libvirt using the QEMU driver. There are no plans for supporting VirtualBox or similar.
go get [-u] slrz.net/runtopo
Coming soon.
The following attributes are supported on nodes and edges, respectively. If not supplied, a (possibly configurable) default is used.
- os -- sets the operating system image to use for the device. Should be a URL referring to a QCOW2 image. NOTE: this differs from topology_converter which wants a Vagrant box specified here.
- config -- a provisioning script executed in the context of the device
- cpu -- number of VCPUs to assign to device
- memory -- device memory size in MiB
- disk -- device disk size in GiB
- tunnelip -- IP address for libvirt UDP tunnels associated with this device
- mgmt_ip -- creates DHCP reservation when AutoMgmtNetwork is enabled
- no_mgmt -- do not create management interface even when AutoMgmtNetwork is enabled
- bmc -- if non-empty, create a virtual BMC to provide an IPMI interface for the device
- efi -- if non-empty, configure the device for UEFI boot
- function -- one of [oob-server, oob-switch, exit, superspine, spine, leaf, tor, host] or fake to not simulate the device at all but still make links appear as up to the remote side
- left_mac/right_mac -- explicitly specify MAC address for interface
- left_pxe/right_pxe -- configure interface for PXE boot
Coming soon.