{"id":15130096,"url":"https://github.com/katharaframework/kathara","last_synced_at":"2025-05-14T19:08:50.758Z","repository":{"id":26500688,"uuid":"86825917","full_name":"KatharaFramework/Kathara","owner":"KatharaFramework","description":"A lightweight container-based network emulation system.","archived":false,"fork":false,"pushed_at":"2025-05-13T09:38:34.000Z","size":4616,"stargazers_count":512,"open_issues_count":14,"forks_count":69,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-05-13T09:38:42.573Z","etag":null,"topics":["bgp","computer-networks","containers","dns-server","docker","k8s","kubernetes","netkit","network-emulation","network-emulator","network-engineering","nfv","ospf","p4","p4-language","p4language","python","rip","sdn","virtual-network"],"latest_commit_sha":null,"homepage":"https://www.kathara.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KatharaFramework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-03-31T14:07:48.000Z","updated_at":"2025-05-03T19:22:59.000Z","dependencies_parsed_at":"2023-09-26T18:37:03.106Z","dependency_job_id":"c72c5c64-c7f3-4b73-a92e-63e99edb9007","html_url":"https://github.com/KatharaFramework/Kathara","commit_stats":null,"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatharaFramework%2FKathara","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatharaFramework%2FKathara/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatharaFramework%2FKathara/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatharaFramework%2FKathara/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KatharaFramework","download_url":"https://codeload.github.com/KatharaFramework/Kathara/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254209859,"owners_count":22032897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bgp","computer-networks","containers","dns-server","docker","k8s","kubernetes","netkit","network-emulation","network-emulator","network-engineering","nfv","ospf","p4","p4-language","p4language","python","rip","sdn","virtual-network"],"created_at":"2024-09-26T02:29:44.370Z","updated_at":"2025-05-14T19:08:48.757Z","avatar_url":"https://github.com/KatharaFramework.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.kathara.org\"\u003e\n        \u003cimg src=\"https://github.com/KatharaFramework/Kathara/wiki/logo_kathara_small.png\" alt=\"Kathará\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"right\"\u003e\n    \u003ca href=\"https://github.com/KatharaFramework/Kathara/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/KatharaFramework/Kathara\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/KatharaFramework/Kathara/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release-date/KatharaFramework/Kathara\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/KatharaFramework/Kathara/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/KatharaFramework/Kathara/total\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/KatharaFramework/Kathara/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/KatharaFramework/Kathara\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/KatharaFramework/Kathara/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/KatharaFramework/Kathara\" alt=\"License: GPL v3\" target=\"_blank\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://www.kathara.org\"\u003eOfficial Website\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#what-is-it\"\u003eWhat is it?\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#how-does-it-work\"\u003eHow does it work?\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#quick-example\"\u003eQuick Example\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#publications\"\u003ePublications\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#external-tools\"\u003eExternal Tools\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#success-stories\"\u003eSuccess Stories\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#join-us\"\u003eJoin Us\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://github.com/KatharaFramework/Docker-Images\"\u003eDocker Images and Dockerfiles\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://github.com/KatharaFramework/Kathara-Labs\"\u003eExamples and Tutorials\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://github.com/KatharaFramework/Kathara-Labs/tree/main/tutorials/python-api\"\u003ePython APIs\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://www.kathara.org/man-pages/kathara.1.html\"\u003eMan Pages\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n## What is it?\n**Kathará** (from the Greek Καθαρά, _purely_) is a lightweight network emulation system based on Docker containers.\nIt can be really helpful in showing interactive demos/lessons, testing production networks in a sandbox environment, or developing new network protocols.\n\nKathará is the spiritual successor of the notorious [Netkit](https://www.netkit.org/), hence it is cross-compatible, and inherits its language and features.\n\n## How does it work?\n\nEach network device is emulated by a container. \nVirtual network devices are interconnected by virtual L2 LANs.\n\nEach 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.\nFor more information about Kathará images please visit the dedicated [repository](https://github.com/KatharaFramework/Docker-Images).\n\nKathará 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.\n\nKathará emulates network scenarios using either Docker or Kubernetes as backend virtualization system.\n\n## Installation\nInstall Docker and then run the installer specific for your Operating System. For a step-by-step guide check the [Wiki](https://github.com/KatharaFramework/Kathara/wiki).\n\nFor further information on how to use Kathará on Kubernetes (**Megalos**) please refer to the [Wiki Page](https://github.com/KatharaFramework/Kathara/wiki/Megalos-(Kathara-over-Kubernetes)).\n\nKathará also provides a set of Python APIs.\nSee the [Python APIs Tutorial](https://github.com/KatharaFramework/Kathara-Labs/tree/main/tutorials/python-api) and the [docs](https://github.com/KatharaFramework/Kathara/wiki/Kathara-API-Docs).\n\n## Quick Example\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"100%\" src=\"https://raw.githubusercontent.com/wiki/KatharaFramework/Kathara/lstart-example.gif\" /\u003e\n\u003c/p\u003e\n\n* Install Kathará by following the Installation section.\n* Download and unpack the network scenario of a \"Small Internet\" from [here](https://github.com/KatharaFramework/Kathara-Labs/blob/main/main-labs/labs-integrating-several-technologies/small-internet-with-dns-and-web-server/kathara-lab_small-internet-with-dns-and-web-server.zip) \n(network topology can be found [here](https://github.com/KatharaFramework/Kathara-Labs/blob/main/main-labs/labs-integrating-several-technologies/small-internet-with-dns-and-web-server/kathara-lab_small-internet-with-dns-and-web-server.pdf)).\n* `cd` inside `small-internet-with-dns-webserver` and run `kathara lstart`.\n* 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.\n* After you're done experimenting, simply run `kathara lclean` and wait until the network scenario closes.\n\n## Publications and Presentations\nKathará is developed by [Roma Tre Computer Networks and Security Research Group](https://compunet.ing.uniroma3.it/). \n\nSeveral publications are related to the tool:\n- \u003ca href=\"https://ieeexplore.ieee.org/abstract/document/8406267/\" target=\"_blank\"\u003e **Kathará: A container-based framework for implementing network function virtualization and software defined networks**\u003c/a\u003e (at NOMS 2018)\n  - \u003ca href=\"https://www.slideshare.net/GaetanoBonofiglio/kathar-noms-2018-106743047\" target=\"_blank\"\u003ePresentation\u003c/a\u003e\n- \u003ca href=\"https://ieeexplore.ieee.org/document/9110288\" target=\"_blank\"\u003e **Megalos: A Scalable Architecture for the Virtualization of Network Scenarios** \u003c/a\u003e (at NOMS 2020)\n  - \u003ca href=\"https://www.youtube.com/watch?v=XvInh-kujrA\" target=\"_blank\"\u003ePresentation\u003c/a\u003e\n- \u003ca href=\"https://ieeexplore.ieee.org/document/9110351\" target=\"_blank\"\u003e **Kathará: A Lightweight Network Emulation System** \u003c/a\u003e (at NOMS 2020)\n  - \u003ca href=\"https://www.youtube.com/watch?v=ionEpKjv3Vk\" target=\"_blank\"\u003ePresentation\u003c/a\u003e\n  - \u003ca href=\"https://www.kathara.org/assets/images/awards/NOMS2020_TPC_awards_signed.V2_Page_2_%20Best%20Nemo%20.jpg\" target=\"_blank\"\u003eBest Demo Paper Award\u003c/a\u003e\n- \u003ca href=\"https://www.mdpi.com/1999-5903/13/9/227\" target=\"_blank\"\u003e **Megalos: A Scalable Architecture for the Virtualization of Large Network Scenarios** \u003c/a\u003e (in MDPI Future Internet Journal 2021)\n- \u003ca href=\"https://ieeexplore.ieee.org/document/9789876\"\u003e**Sibyl: a Framework for Evaluating the Implementation of Routing Protocols in Fat-Trees**\u003c/a\u003e (at NOMS 2022)\n  - \u003ca href=\"https://www.youtube.com/watch?v=FZjHjLZzXCY\"\u003eNOMS2022 Presentation\u003c/a\u003e\n  - \u003ca href=\"https://www.youtube.com/watch?v=FfjdqP8eKW8\u0026t=3376s\"\u003eRTGWG Session at IETF114\u003c/a\u003e\n\nKathará has been also presented in meetings and workshops:\n- \u003ca href=\"https://datatracker.ietf.org/meeting/interim-2020-rift-01/materials/slides-interim-2020-rift-01-sessa-tools-for-experimenting-routing-in-dc-00\" target=\"_blank\"\u003eRIFT Working Group Meeting\u003c/a\u003e (IETF 107 - March 2020)\n- \u003ca href=\"https://www.youtube.com/watch?v=GVBOdNzwhBA\" target=\"_blank\"\u003eKathará: A Lightweight Network Emulation System (Italian Audio)\u003c/a\u003e (GraphRM - June 2022)\n- \u003ca href=\"https://ripe85.ripe.net/archives/video/941/\" target=\"_blank\"\u003eKathará: A Lightweight and Scalable Network Emulation System\u003c/a\u003e (RIPE 85 - October 2022)\n\n## External Tools\n\n- [Netkit Lab Generator](https://github.com/KatharaFramework/Netkit-Lab-Generator), a GUI that allows the easy creation of a network scenario configuration and the visualization of its network topology.\n- [VFTGen](https://github.com/KatharaFramework/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á.\n- [Tacatá](https://github.com/damiano-massarelli/Tacata), a lightweight Python script which creates Netkit and Kathará labs using an enriched version of the lab.conf file with a simple syntax.\n- [net-vis](https://github.com/Friscobuffo/net-vis-localhost), a tool that parses (and generates) the `lab.conf` file and all the `.startup` files to visualize the network.\n- [kathara-lab-starter](https://github.com/BuonHobo/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.\n\n## Success Stories\nAs far as we know, Kathará is currently being used in many [courses and projects](https://www.kathara.org/stories.html). \n \nWe encourage you to tell us your story! \n\nWe are also collecting network scenarios from the community. If you want to be added to the [list](https://github.com/KatharaFramework/Kathara-Labs/tree/main/community-labs), please contact us!\n\n## Join Us\n\nKathará is an open source project. \nFeel free to download the code, play with it, and submit feature requests, notify bugs, or open pull requests!\n\nThanks to everyone who has contributed to the development of Kathará!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatharaframework%2Fkathara","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkatharaframework%2Fkathara","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatharaframework%2Fkathara/lists"}