From the Greek Καθαρά. Implementation of the notorious Netkit using Python and Docker. 10 times faster than Netkit and more than 100 times lighter, allows easy configuration and deploy of arbitrary virtual networks with for SDN, NFV and traditional routing protocols.
Kathará comes with P4, OpenVSwitch, Quagga, Bind, and more, but can also be extended with your own container images.
Thanks to Docker, the framework has the performances to run in production and our images can emulate most network equipments.
- To run Kathará you first need to install Docker and Python 2.x. For Linux users I suggest installing Docker from https://get.docker.com while for Windows and Mac it's easier to use https://download.docker.com.
- Download all the files to a directory of your choice (from a release or
git clone
). - Add the environment variable
NETKIT_HOME
to your system pointing to the bin folder:- Linux:
export NETKIT_HOME=/home/foo/kathara/bin
(you can also do this permanently by adding it to~/.bashrc
). - Windows: System > Advanced settings > Environment Variables > New > ...
- Variable name:
NETKIT_HOME
, Variable value:DRIVE:\path\to\kathara\bin
. - You'll also need to share the drive that will contain the labs and the drive with your user folder (it can be done from Docker settings, from the tray icon), as shown here (note that you may have/need different drives).
- Variable name:
- Linux:
- Run the installer:
- Linux:
$NETKIT_HOME/install
(optionally--skip-p4
to avoid pre-downloading the P4 image, that may not be needed, and--admin
removes the wrapper (unsafe/admin mode)). - Windows:
%NETKIT_HOME%\install
(completely optional, it only pre-downloads images).
- Linux:
- You can optionally add NETKIT_HOME to your PATH, but the
NETKIT_HOME
variable is still required.
A list of the Docker images we provided can be found at this page in the Docker Hub.
You can download both Kathará and the GUI by cloning recursively using
git clone --recursive https://github.com/Kidel/Kathara.git
Or by downloading the compiled version from the releases page.
Being based on Netkit, all previous tools still work. In particular we suggest Netkit Lab Generator, a GUI that allows the easy creation of a lab configuration and the visualization of its network topology.
The interface of Kathará is basically the same we used for Netkit, and it's available here: Man page of NETKIT.
The main difference is the way we specify the interfaces in the vstart
command (now requiring --eth 0:A --eth 1:B ...
) but why would you ever use vstart
when you have lstart
?
Also the subnet 172.0.0.0/8
(basically any IP starting with 172
) is reserved and should not be used when configuring links.
- Installa Kathará by following the installation steps above
- Download and unpack MARACAS_lab from here.
- The topology of this lab can be found here.
cd
inside MARACAS_lab and runlstart
:- Linux:
$NETKIT_HOME/lstart
- Windows:
%NETKIT_HOME%\lstart
- Linux:
- Kathará will read the configuration of the lab from
lab.conf
,lab.dep
and the various*.startup
files and start the containers, opening terminal windows to interact with the virtual network nodes. - After you're done experimenting, simply run
lclean
:- Linux:
$NETKIT_HOME/lclean
- Windows:
%NETKIT_HOME%\lclean
- Linux:
- This will kill and remove any container.