Netkit is a lightweight network emulator based on open source software. It offers an easy-to-use interface to set up emulated network experiences (labs) with little effort, thus enabling users to experiment with several networking technologies at low cost, with no impact on operational networks, and without the hassle of dealing with tricky emulation parameters instead of configuring the network itself. Netkit also provides users with tools to support sharing preconfigured virtual labs with others, in such a way that "replaying" a lab is as simple as typing a single command. Netkit is also accompanied by a corpus of ready-to-use labs and lecture slides that can be used to learn, teach, or experiment with different networking topics.
Netkit makes use of User-mode Linux (UML), a port of the Linux kernel that is designed to run as a userspace process. Network devices are emulated in Netkit as UML virtual machines that run a full-fledged Debian GNU/Linux distribution. A virtual machine can be turned to a specific network device (e.g., a router) by running appropriate software (e.g., zebra). Virtual machines are interconnected on a virtual network by means of a virtual hub software running on the host. Optionally, the virtual hub can be connected to an external network, for example in order to gain access to the Internet from the virtual machines. The setup of virtual machines and virtual hubs is automatically performed by the Netkit user space tools.
Netkit ships with a variety of supported networking tools and technologies. Should it be needed, additional software can also be installed inside the virtual machines in order to enable particular features that are required for specific experiments. The following is a partial list of the currently supported technologies: