Kathará (from the Greek Καθαρά, purely) is a lightweight network emulation system based on Docker containers. It can be really helpful in showing interactive demos/lessons, testing production networks in a sandbox environment, or developing new network protocols.
Kathará is the spiritual successor of the notorious Netkit, hence it is cross-compatible, and inherits its language and features.
Each network device is emulated by a container. Virtual network devices are interconnected by virtual L2 LANs.
Each container can potentially run a different Docker image. Built-in images include Quagga, FRRouting, Bind, P4, OpenVSwitch, and more, but you can also use your own container images. For more information about Kathará images please visit the dedicated repository.
Kathará extremely simplifies the creation of complex networks using the concept of network scenario: a directory containing a file with the network topology, and, foreach device, files and folders containing the configuration of that device.
Kathará emulates network scenarios using either Docker or Kubernetes as backend virtualization system.
Install Docker and then run the installer specific for your Operating System. For a step-by-step guide check the Wiki.
For further information on how to use Kathará on Kubernetes (Megalos) please refer to the Wiki Page.
Kathará also provides a set of Python APIs. See the Python APIs Tutorial and the docs.
cd
inside small-internet-with-dns-webserver
and run kathara lstart
.lab.conf
and the various *.startup
files and start the devices, opening terminal windows to interact with them.kathara lclean
and wait until the network scenario closes.Kathará is developed by Roma Tre Computer Networks and Security Research Group.
Several publications are related to the tool:
Kathará has been also presented in meetings and workshops:
lab.conf
file and all the .startup
files to visualize the network.As far as we know, Kathará is currently being used in many courses and projects.
We encourage you to tell us your story!
We are also collecting network scenarios from the community. If you want to be added to the list, please contact us!
Kathará is an open source project. Feel free to download the code, play with it, and submit feature requests, notify bugs, or open pull requests!
Thanks to everyone who has contributed to the development of Kathará!