November 13, 2017
- Vincent Bernat’s blog describes his method for creating a network emulation scenario using QEMU/KVM, among many other interesting Linux networking topics. See Vincent’s GitHub repository for his network emulation scripts.
- Microsoft announced CrystalNet, an in-house network emulator designed to test cloud-scale network technologies. The last paragraph of their announcement suggests they may make the project available to researchers in the future.
- I moved the Marionnet network emulator to “Older Projects”. It has not been updated since 2011 and is based on UML, an OS virtualization technology that is not used much, any more.
October 13, 2017
- The Etherium Go team created a document that describes how to emulate a private Ethereum network. It looks like the procedure is applicable to any Ethereum implementation.
Older news is archived on the Network Simulator News page.
List of Network Simulators and Emulators
This is a list of open-source network simulators and network emulators that run on Linux or BSD. Please post a comment on this page to let me know about any other open-source network simulation tools I did not include in this list.
The Cloonix network simulator provides a relatively easy-to-use graphical user interface. Cloonix uses QEMU/KVM to create virtual machines. Cloonix provides a wide variety of pre-built filesystems that can be used as virtual machines and provides simple instructions for creating other virtual machine root filesystems. Cloonix has an active development team, who update the tool every two or three months and who are very responsive to user input.
Cloonix web site: http://clownix.net
The Common Open Research Emulator (CORE) provides a GUI interface and uses the Network Namespaces functionality in Linux Containers (LXC) as a virtualization technology. This allows CORE to start up a large number of virtual machines quickly. CORE supports the simulation of fixed and mobile networks.
CORE will run on Linux and on FreeBSD. CORE is a fork of the IMUNES network simulator, and it adds some new functionality compared to IMUNES.
CORE web site: http://cs.itd.nrl.navy.mil/work/core/index.php
GNS3 is a graphical network simulator focused mostly on supporting Cisco and Juniper software. GNS3 has a large user base, made up mostly of people studying for Cisco exams, and there is a lot of information freely available on the web about using GNS3 to simulate Cisco equipment.
GNS3 can also be used to simulate a network composed exclusively of VirtualBox and/or Qemu virtual machines running open-source software. GNS3 provides a variety of prepared open-source virtual appliances, and users can create their own.
GNS3 web site: http://www.gns3.com
A team of researchers at the University of Zagreb developed the Integrated Multi-protocol Network Emulator/Simulator (IMUNES) for use as a network research tool. IMUNES runs on both the FreeBSD and Linux operating systems. It uses the kernel-level network stack virtualization technology provided by FreeBSD. It uses Docker containers and Open vSwitch on Linux.
IMUNES supports a graphical user interface. It works well and offers good performance, even when running IMUNES in a VirtualBox virtual machine.
Mininet is designed to support research in Software Defined Networking technologies. It uses Linux network namespaces as its virtualization technology to create virtual nodes. The web site indicates that the tool can support thousands of virtual nodes on a single operating system. Mininet is most useful to researchers who are building SDN controllers and need a tool to verify the behavior and performance of SDN controllers. Knowledge of the Python scripting language is very useful when using Mininet.
The Mininet project provides excellent documentation and, judging from the activity on the Mininet mailing list, the project is actively used by a large community of researchers.
Some researchers have created forks of Mininet that focus on specific technologies. I list projects based on Mininet below:
Mininet web site: http://www.mininet.org
Netkit is a command-line based simulation tool that uses user-mode Linux to create the virtual machines. A full Linux OS can run on each machine. It has good documentation and the project’s web site has a long list of interesting lab scenarios to practice, with documentation for each scenario. It also appears to be actively supported by a small community and was last updated in 2011.
Netkit web site: http://wiki.netkit.org
NS-3 is a discrete-event open-source network simulator for Internet systems, used primarily for research and educational use. NS-3 is a complex tool that runs simulations described by code created by users, so you may need programming skills to use it.
NS-3 can run real software on simulated nodes using its Direct Code Execution feature. This allows researchers to test real software like Quagga or web servers in a discreet-event network simulation to produce repeatable experiments.
NS-3 is meant to replace NS-2, a previous version of the network simulator. NS-2 is no longer actively maintained but is still used by some researchers.
I have not used NS-3, yet.
NS-3 web site: https://www.nsnam.org/
OpenStack all-in-one (DevStack, etc.)
OpenStack all-in-one refers to scripts that help set up an OpenStack installation on a single machine, such as a laptop or a virtual machine. The best known tool is DevStack but most vendor’s OpenStack deployment tools offer a way to install an all-in-one OpenStack system. In a way, any of these all-in-one systems can serve as an OpenStack simulator for students and researchers interested in experimenting with cloud systems.
Shadow is an open-source network simulator/emulator hybrid that runs real applications like Tor and Bitcoin over a simulated Internet topology on a single Linux computer, and also on a pre-configured AMI instance on Amazon EC2. Users run a simulation by creating an XML file to describe the network topology and plugins to link their application code to nodes in the simulation. They see the results of their experiments in log files generated by Shadow.
Shadow operates as a discrete-event simulator so experimental results are repeatable. Shadow can also run real software on its virtual nodes, using plugins created by the user. This combination of features — discreet-event simulation coupled with real software emulation — makes Shadow a unique tool.
I have not yet used Shadow. It seems to be useful to developers who want to test the performance of distributed or peer-to-peer applications like TOR and Bitcoin.
Shadow network simulator web site: https://shadow.github.io/
UNetLab and EVE-NG are network emulators that support virtualized commercial router images (such as Cisco and NOKIA) and open-source routers. They use Dynamips and IOS-on-Linux to support Cisco router and switch images, and KVM/QEMU to support all other devices. Each is available as a virtual machine image and may also be installed on a dedicated server running Ubuntu Linux.
EVE-NG is the next-generation of UNetlab. It is currently part of a crowd-funding campaign to raise funds to support development. UNetLab is the “stable” version and EVE.NG is available as an “alpha” version.
UNetLaB/EVE-NG web site: http://www.unetlab.com/
VNX and VNUML
VNX supports two different virtualization techniques and uses an XML-style scripting language to define the virtual network. It also supports chaining multiple physical workstations together to support distributed virtual labs that operate across multiple physical workstations. It is supported by a small community and has been updated within the past year.
VNX replaces VNUML. The old VNUML web site still has sample labs and other content that would be useful when using VNX.
VNX web site: http://www.dit.upm.es/vnx
Other Emulators and Simulators
I list projects below that are either very new or that are older with low development activity.
New projects (on the radar)
NetMirage is a network emulator developed at the University of Waterloo in Canada. It is currently available as an open beta. Similar to other network emulators, NetMirage allows users to run real code to test IP applications. The NetMirage developers are currently using it to construct large-scale virtual Tor networks.
LStacker is a new project that builds virtual networks consisting of containers and bridges. It supports both LXC and Docker containers.
ESCAPE (Extensible Service ChAin Prototyping Environment) is a framework which supports the development of several parts of the service chaining architecture including VNF implementation, traffic steering, virtual network embedding, etc.
Older projects (low activity)
DockEMU is a network emulator that uses Docker Containers and Linux Bridging to emulate IP network functionality and NS-3 to emulate Ethernet and physical networking functionality. It seems like an effort to create a “best of both worlds” network emulator. After releasing the first version, it has not been updated in two years.
Marionnet allows users to define, configure and run complex computer networks on a host computer. Marionnet seems designed to be used as an education tool and has an attractive graphical user interface, and some sample practice lab configurations. The Marionnet software has not been updated since 2011, but the Marionnet web site was redesigned more recently, in 2016.
Psimulator2 is a Java-based network simulator useful for basic networking education. It is an old project, recently forked a couple of times by different developers so, hopefully, we will see some active development in the future. The Psimulator2 Google Code web site is now read-only and there appears to be a new version (or it may just be an archive of the current version) at https://gitlab.fit.cvut.cz/psimulator2/Psimulator2. Another developer forked Psimulator and made his updated code available at https://github.com/rkuebert/psimulator.
OFNet is a relatively new SDN network emulator but, after releasing the first version, the developer has gone quiet. Hopefully we will see some new development in the future. The OFNet web site is http://sdninsights.org.
LINE is a network emulator that emulates IP networks and supports detailed analysis and reporting. It has not been updated in three years.