January 16, 2017
- Mininet-Wifi now emulates Vehicular Ad Hoc Networks (VANETs). Users may use the Mininet-WiFi python API to create cars that move around in virtual space in an SDN network emulation. See Chapter 5.7 of the Mininet-WiFi user manual for more information.
- GNS3 version 2.0 beta 2 released.
Jan 3, 2017
- New York University recently released an open source end-to-end network simulator for 5G mmWave cellular networks based on the NS-3 simulator. See the article on the NYU Wireless web site. Also the project is hosted on GitHub. Now it just needs a cool name!
- LENA, the LTE-EPC Network Simulator, is also based on NS-3 and allows users to design and test Self Organized Network (SON) algorithms and solutions.
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.
LINE Network Emulator
LINE emulates IP networks using real Linux network stacks. It is developed and used by researchers at the École Ploytechnique Fédérale de Lausanne in Switzerland.
LINE delivers realistic performance, reproducible results, and powerful measurement capabilities. To achieve this, it uses a setup comprised of three dedicated computers, each performing one of the following roles: Control Center, Traffic Generator, and Network Emulator. The user must set up each computer and connect them together according to the LINE hardware requirements.
LINE appears to be very complex to set up and use. It offers a lot of parameters and options for configuring a test networks. When experiments are running, LINE offers a lot of different reporting options. Unfortunately, the documentation is very sparse. The project’s web site offers detailed installation instructions and a few videos that show how to use LINE.
Line network emulator web site: http://wiki.epfl.ch/line/documents/line.html
Marionnet is called a “virtual network laboratory” on its website. It allows users to define, configure and run complex computer networks on a host computer. It can simulate an Ethernet network complete with computers, routers, hubs, switchs, cables, and more. Marionnet seems designed to be used as an education tool and has an attractive graphical user interface, and some sample practice lab configurations. Marionnet does not provide a user manual but the user interface is fairly intuitive.
Marionnet web site: http://www.marionnet.org/EN/
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/
OFNet is a new software-defined network (SDN) emulator that offers functionality similar to the Mininet network emulator and adds some useful tools for generating traffic and monitoring OpenFlow messages and evaluating SDN controller performance.
I am currently writing a post about OFNet.
OFNet web site: http://sdninsights.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.
Psimulator2 is a basic graphical network simulator that may be used to demonstrate basic IP networking concepts to students. It is not a fully-functional simulator because only a small sub-set of normal networking functionality is supported on each emulated node.
It will run on any system that supports Java; including Windows, Mac OS, and Linux. It offers the ability to “capture” and “play back” data traffic generated by the simulation. The packets are displayed on the GUI as envelopes that move through the network.
Psimulator2 web site: http://code.google.com/p/psimulator/. The Google Code web site is now read-only. Another, more recent, fork of Psimulator2 is available at https://github.com/rkuebert/psimulator.
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/
Unified Networking Lab (UNetLab) is network emulator that supports virtualized commercial router images (such as Cisco and NOKIA) and open-source routers. It uses Dynamips and IOS-on-Linux to support Cisco router and switch images, and KVM/QEMU to support all other devices. It 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. Eve-NG — also known as Emulated Virtual Environment Next Generation — is currently part of an Indiegogo crowd-funding campaign to raise funds to support development.
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