Understanding computer networks without performing practical experiments is really difficult, not to say it is almost impossible. Unfortunately, setting up a networking lab can be very expensive.
Netkit is an environment for setting up and performing networking experiments at low cost and with little effort. It allows to "create" several virtual network devices (full-fledged routers, switches, computers, etc.) that can be easily interconnected in order to form a network on a single PC. Networking equipments are virtual but feature many of the characteristics of the real ones, including the configuration interface.
Emulating a network with Netkit is a matter of writing a simple file describing the link-level topology of the network to be emulated and some configuration files that are identical to those used by real world networking tools. Netkit then takes care of starting (emulated) network devices and of interconnecting them as required. Alternatively, networks can be described by using an XML-based language known as NetML. Starting from a network description in NetML, it is possible to automatically obtain configuration files which can be used with real routers, or Netkit scripts which can be used to emulate the described network.
Netkit exploits open source software (mostly licensed under GPL) and is heavily based on the User Mode Linux (UML) variant of the Linux kernel. The purpose of this project is to solve many of the difficulties and technicalities that a user could have in using UML for networking. We offer the users an easy-to-use-and-install package, which at the same time implements effective network emulation. Further, we provide a corpus of teaching material that can be used for courses at different levels.