Coder Social home page Coder Social logo

giuseppevalentinobaldi / kathara Goto Github PK

View Code? Open in Web Editor NEW

This project forked from katharaframework/kathara

0.0 1.0 0.0 324 KB

Implementation of the notorious Netkit using Python and Docker, allowing for SDN, NFV and traditional routing protocols.

License: GNU General Public License v3.0

Shell 10.18% Batchfile 3.18% Python 24.86% C 3.06% P4 58.72%

kathara's Introduction

Kathará

License: GPL v3

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.

Installation

  • 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).
  • 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).
  • You can optionally add NETKIT_HOME to your PATH, but the NETKIT_HOME variable is still required.

Provided Docker Images

A list of the Docker images we provided can be found at this page in the Docker Hub.

Graphical User Interface

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. Netkit Lab Generator

Manual

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.

Example

  • 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 run lstart:
    • Linux: $NETKIT_HOME/lstart
    • Windows: %NETKIT_HOME%\lstart
  • 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
  • This will kill and remove any container.

kathara's People

Contributors

kidel avatar neejayanglea avatar

Watchers

Giuseppe Valentino Baldi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.