Skip to main content

A lightweight container-based network emulation tool.

Project description

Kathará

License: GPL v3

What is it?

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.

How does it work?

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.

Installation

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.

Quick Example

  • Install Kathará by following the Installation section.
  • Download and unpack the network scenario of a "Small Internet" from here (network topology can be found here).
  • cd inside small-internet-with-dns-webserver and run kathara lstart.
  • Kathará will read the configuration of the scenario from lab.conf and the various *.startup files and start the devices, opening terminal windows to interact with them.
  • After you're done experimenting, simply run kathara lclean and wait until the network scenario closes.

Publications and Presentations

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:

External Tools

  • Netkit Lab Generator, a GUI that allows the easy creation of a network scenario configuration and the visualization of its network topology.
  • VFTGen, a tool that allows to create three levels Fat Tree topologies (single-plane or multi-planes) and automatically configure them to run on Kathará.
  • Tacatá, a lightweight Python script which creates Netkit and Kathará labs using an enriched version of the lab.conf file with a simple syntax.
  • net-vis, a tool that parses (and generates) the lab.conf file and all the .startup files to visualize the network.
  • kathara-lab-starter, an easy and extensible tool to get a kathara lab started. Utilizing JSON input files, it accelerates setup, while minimizing configuration redundancies.

Success Stories

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!

Join 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á!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kathara-3.7.5.tar.gz (175.4 kB view details)

Uploaded Source

Built Distribution

kathara-3.7.5-py3-none-any.whl (212.8 kB view details)

Uploaded Python 3

File details

Details for the file kathara-3.7.5.tar.gz.

File metadata

  • Download URL: kathara-3.7.5.tar.gz
  • Upload date:
  • Size: 175.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.0rc1

File hashes

Hashes for kathara-3.7.5.tar.gz
Algorithm Hash digest
SHA256 6c54fa6729a9611b0760e01bb2a30627684d607cafa37324f6a3a8da5520adec
MD5 3f30d0a486321b5d06f882e07112978d
BLAKE2b-256 e31c1eaadbada8237bc567a61d47a705a24dc57b54a9e5ca6a7a13b24c1c2e54

See more details on using hashes here.

File details

Details for the file kathara-3.7.5-py3-none-any.whl.

File metadata

  • Download URL: kathara-3.7.5-py3-none-any.whl
  • Upload date:
  • Size: 212.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.0rc1

File hashes

Hashes for kathara-3.7.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e452fb8036e6578dd23cb781240cb4dcb84596734fcc12976315266208786df0
MD5 c7de706bbc886d96cfb9e4948104ec6a
BLAKE2b-256 39ed260ab005d7d36584be1c9a4a5d6d4314c83aca4fd114903f9130ae1cff3d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page