Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 2.47 KB

README.md

File metadata and controls

63 lines (47 loc) · 2.47 KB

The runtopo Network Simulation Tool

Go Reference

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.

What runtopo Is Not

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.

Installation

go get [-u] slrz.net/runtopo

Configuration

Coming soon.

Supported DOT Attributes

The following attributes are supported on nodes and edges, respectively. If not supplied, a (possibly configurable) default is used.

Node Attributes

  • 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

Edge Attributes

  • left_mac/right_mac -- explicitly specify MAC address for interface
  • left_pxe/right_pxe -- configure interface for PXE boot

Defaults

Coming soon.