A network you can draw, on one machine.

Cloonix runs virtual machines and containers on a Linux host and wires them together through Open vSwitch. You get the topology on a canvas in your browser, a root shell in any node, and a packet capture on any cable.

Get started Downloads What you can learn Documentation

AGPLv3 · version 100 · Linux host, any browser

What it is

Two kinds of node

kvm is a QEMU/KVM machine with its own kernel. cnt is a crun container sharing the host kernel. Both take the same commands and appear the same way on the canvas.

Real switching

Links are Open vSwitch ports in a private net namespace. The packets are ethernet frames on a bridge, so routing daemons, DHCP and wifi emulation behave as they do on hardware.

Nothing installed

Cloonix ships its own QEMU, Open vSwitch, crun and passt, and loads no library from the host. The host needs none of them.

The canvas

The graphical interface is a web page served by cloonix itself. There is nothing to install on the machine you browse from.

https://127.0.0.1:4444, user nemo, password nemoclown: not secret, they are in /usr/libexec/cloonix/cloonfs/etc/cloonix.cfg, where they can be changed.

Your browser canvas shell in any node packet capture one linux host cloonix-main-server open vswitch private net namespace kvm qemu machine own kernel cnt crun container host kernel lan, tap, nat c2c to another cloonix, wifi

The items, and how they cable together

An item owns one or more ports. Each port carries one connection, drawn as a line to a crossroad called a lan — which is an Open vSwitch bridge. Everything on this list plugs into everything else the same way.

lan an openvswitch bridge: a frame in on one port leaves by the others kvm a qemu machine cnt a crun container nat a way to the internet a2b loss, delay, rate c2c to another cloonix tap, phy out to the host

What you do with it

Test routing

Sixty FRR routers in a spider topology start in about a minute. Watch OSPF converge, cut a cable, watch it reconverge.

Read the wire

Double-click a green interface dot to capture it. The dissection engine is wireshark's, the viewer is a web page — no Qt, no X forwarding.

Reproduce a bug

A topology is a python file of a few lines. Send it to somebody and they get the same network.

Or learn what a network does

demos/ holds subject areas, and under each one python file per demo: a running topology, every cloonix command printed as it is typed, and the packet that shows the protocol at work.

cloonixcloonix under itselfa2b c2c cnt cntkvmwifi cntwifi kvm kvmwifi limit mount nat nginx phy realnet snf systemd
switchingone wire, several networksovn stp vlan vxlan
routinghow a packet finds a waybabel batman bird frrmix frrspider frrspider_bgp isis
addressan address, a namedhcp dns ipv6 knot ntp unbound
securitytunnels, filters, who is let inarp ebpf ipsec nftables openvpn radius suricata tinc tls wg
servicesthe machines in the middleasterisk mqtt proxy smtp squid
availabilitystaying up when one stopscluster vrrp
watchingwhat the path carries, and what it costsperf
wifithe air, before the ip stackcnt_open cnt_wpa2 cnt_wpa3 cnt_bridge cnt_roaming cnt_mesh, their kvm_ twins, cntkvm_home cntkvm_enterprise cntkvm_roaming cntkvm_monitor
windows.pya guest with no agentthe firewall rule everyone forgets
freebsd.pya guest that is not linuxthe agent on a disc of its own
cisco.pya guest driven over its consolethree ios-xe routers in ospf

What you can learn

Two ways to install

The toy

A tarball you extract as a normal user. Cloonix runs inside a container it brings with it. No root, nothing written outside the directory, and deleting the directory removes it.

Everything on this page works in the toy.

The bundle

An installation under /usr/libexec/cloonix, done once as root. Several users share it, each running their own networks.

One installation serves every user of the machine.

Get started

Downloads

cloonix-toy.tar.gz

Cloonix inside its own container. No root, nothing installed; delete the directory and it is gone. Get started uses it.

cloonix-bundle.tar.gz

The compiled run-time, installed once as root under /usr/libexec/cloonix, for a machine several people share.

cloonix-source-100.tar.gz

The source tree: cloonix, the demos, the image builders, the tests, the two books. It compiles from cloonix-targz_store-100.tar.gz, the open sources it rebuilds, extracted at its root first.

Guest images, for /var/lib/cloonix/bulk

cnt_bulk8 container images: alpine, debian trixie, ubuntu, rocky, fedora, arch, tumbleweed, and trixie with systemd
kvm_bulk15 machine images: the same seven distributions, and eight desktops
cnt_demo_bulk29 container images, one per subject of the demos: frr, wireguard, dns, dhcp, mqtt, …
kvm_demo_bulkthe machine image of the demos that run the cloonix client in a guest

Every file, what it holds and how to put it in place.