Open-Source Network Simulators

Latest News

June 21, 2016

  • The Cloonix network emulator has been updated to v30. This new release includes a new client mode — cloonix_zor — that will search for running cloonix servers. It also replaces the slirp_lan object with a NAT object, and lays the groundwork for a new A2B object, which will enable users to specificity the attributes of a link.

June 16, 2016

  • Cumulus Networks’ Topology Converter may be used to create network emulation scenarios using VirtualBox VMs and Vagrant. It simplifies network emulation if you want to use tools like VirtualBox, Vagrant and/or libvirt.

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.

Cloonix

Cloonixv26-002

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.

Please click here to see my posts about Cloonix.

Cloonix web site: http://clownix.net

CORE

CORE desktop

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.

Please click here to see my posts about the CORE Network Emulator.

CORE web site: http://cs.itd.nrl.navy.mil/work/core/index.php

GNS3

Open-source Linux GNS3 simulation

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.

Please click here to see my posts about GNS3.

GNS3 web site: http://www.gns3.com

IMUNES

IMUNES open-source network routing simulator

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.

Please click here to see my posts about IMUNES.

IMUNES web site: http://www.imunes.net or https://github.com/imunes

LINE Network Emulator

LINE3-kraken

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

Marionnet Linux network simulator emulator

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.

Please click here to see my posts about the Marionnet network simulator.

Marionnet web site: http://www.marionnet.org/EN/

Mininet

MiniEdit-503b

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.

Please click here to see my posts about Mininet.

Mininet web site: http://www.mininet.org

Netkit

Netkit open source single-area OSPF pre-configured lab

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.

Please click here to see my posts about Netkit.

Netkit web site: http://wiki.netkit.org

NS-3

Ns-3-logo

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.)

devstack2

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.

Links to single-node installers:
DevStack single-node install
Ubuntu OpenStack Autopilot single-node install
Red Hat RDO single-node install
Openstack on Ansible single-node-install

Psimulator2

Psimulator Linux Open-Source Graphical Network Simulator

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.

Please click here to see my posts about Psimulator2.

Psimulator2 web site: http://code.google.com/p/psimulator/. The Google Code web site is now read-only and there appears to be a new version of Psimulator2 at https://gitlab.fit.cvut.cz/psimulator2/Psimulator2.

Shadow

Shadow

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 (UNL or UNetLab)

UNL

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.

UNetLab uses a graphical user interface running in a web browser. This makes it easy for users to run the GUI on a remote machine and run actual labs on a dedicated server. It also makes it possible to run the Unified Networking Lab GUI on any operating system. Users do not need to install client software.

UNetLab is open-source and posts its source code on GitHub. I have not yet evaluated UNetLab.

UNetLaB web site: http://www.unetlab.com/

VNX and VNUML

VNX linux open-source network simulator

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.

Please click here to see my posts about VNX and VNUML.

VNX web site: http://www.dit.upm.es/vnx

120 responses to Open-Source Network Simulators

  1. Vincent Perrier March 18, 2013 at 5:13 am

    I cannot wait for all the missing evaluations, this web site does exactly what I wanted to do but failed to find the time for it.
    The wording: “simulation” could be replaced by “emulation”, it would be good to add details about the difference between network “simulations” (based on ns3 for example) that change the time base (1 mn simulation is done in a much longer duration) and the network “emulation” that are based on virtualisation and work in real time.
    I am not even sure about my own vision of these word definitions (emulation, and simulation), clearer definitions could be put on this web site. I like simulation more than emulation, so it may be a good thing to keep calling the “network emulation” “network simulation”, in the end the technical meaning of the word will cover both real time and non-real time way to simulate.
    Hit “ns3+opnet+time+simulation” in google to see about usual meaning of simulation.

    • Hi Vincent,

      You are correct that the tools I am working with are mostly related to “emulation”, not “simulation”. Looking at the Google Analytics information for this site, I see that the search terms most people use to find this site are the terms, “network simulation” or “network simulator”. Very few people seem use the search term, “network emulation”.

      I agree with you that using the term “network simulation” to describe both “emulation” and “simulation” is an acceptable way to make this topic more accessible to searchers, even if it is not really an accurate way to describe the tools.

      Thanks,
      Brian

      • I wonder how many of the people that find this site using ‘simulation’ actually wanted to find this site…ie using the ‘wrong’ word might increase traffic, but is it traffic you actually *want* to attract (I’m sure you don’t just want *any* traffic – there are much ‘better’ words to use ;)).

    • christian erick oundo June 2, 2015 at 8:19 am

      i like this much , i have been struggling to practice routing and switching configurations. this site will help me a great deal, i hope to keep in touch with you guyz for more support.

  2. Vincent Perrier April 17, 2013 at 4:09 am

    The official “simulation” has for main goal to reduce the cpu/ram resources use in the study of large scale topologies. The cpu and ram will not be a problem in a few years and “emulation” will probably replace simulation in the end, the merge has already began:

    So I agree, the word simulation should cover both methods.

  3. Brian — this is a very interesting roundup of open source systems you’ve got here. I was really intrigued by Marionet, but… my problem is that I want to build a course that needs to deal with students who are most likely running Windows based machines (I can’t help it.)

    Other than GNS3… do you know of a system that seems straightforward, friendly, and not so tied to a particular vendor’s certification training, that can be used in an introductory networks course?

    Thanks!

    • Hi Mike,

      Thanks for your question.

      Based on what I know about all the tools in this list, I think that GNS3 is the only system that will work on Windows. However, I was able to run most of the tools I reviewed (and I’ve reviewed about half the tools in this list so far) in a virtual machine and the virtual machine will run on VirtualBox in Windows.

      For the case you describe, and assuming you want a tool that has a GUI, I would also recommend either IMUNES or the CORE Network Emulator running on a FreeBSD system in a VirtualBox virtual machine on MS Windows. The instructor will have to do some work to create the system and simplify the desktop setup so that the complexities of using an unfamiliar operating system are hidden from the students but as soon as IMUNES or CORE is started, the students will be using the application and not worrying about running Unix BSD Unix commands. While this solution is not really straightforward and simple, I believe that the instructor can set it up so that, from the students’ point of view, it appears to be acceptably straightforward and simple.

      Thanks,
      Brian

  4. Vijay Murugesan March 15, 2014 at 7:45 pm

    This is a great article and information for people who are like me (Developers by nature but still want to have a edge on the networking concepts). I’m going to recommend this to all my team. I feel bad I have missed it for so long.

    • Hi Vijay,
      Thanks for your interest in this blog. I have almost completed my survey of open-source network simulators so, over the next few months, I will begin discussing examples of simulated networking scenarios. I hope you and your team will find this blog to be useful.
      –Brian

  5. Hi,

    Have you tested Live Raizo, an Linux environnement based on GNS3 ? (http://sourceforge.net/projects/live-raizo/)

    • Hi David,
      Yes, I tried Live Raizo. It offers GNS3 installed on a basic Linux system in a Live USB or Live CD disk image. It also offers a useful selection of other Linux software and tools pre-installed.
      Thanks,
      Brian

      • I have tested it. It does a little more 😉 There has several VirtualBox Linux whose are completely integrated with gns3, and these VMs have already many networks tools installed.

      • Hi,

        I will wish just your feedbacks on Live Raizo.

        With your little description, i believe that you think that Raizo is just a Live where GNS3/Qemu/VirtualBox are already installed and if you want use it, you must configured a lot of things.

        But, Live Raizo can do more : 18 Debian Linux VM are created and fully integrated into GNS3/VirtualBox. These VM have same softwares that NetKit (which was installed on the first releases of Raizo).

        Without configuring anything, you can do the same things that with Cloonix or NetKit (with VisualNetkit).

        One of its advantages is that nothing is installed, modified or deleted on your own OS.
        One of its drawbacks is that all is lost if you don’t save.

        David

        PS : I think that your contact email on privacy-policy page doesn’t work.

        • Hi David,

          Thanks. I fixed my contact e-mail address. And, thanks for the extra information about Live Raizo.

          I think Live Raizo is a good project. Projects like Live Razio and GNS3 Workbench provide an installation of GNS3 along with supporting filesystems (with all necessary software pre-installed) and prepared lab scenarios are a great way for people to become familiar with using GNS3 without having to install and configure GNS3 on their PC. They also make it easier to use GNS3 to build simulation scenarios.

          I notice the both Live Raizo and GNS3 Workbench are prominently featured on the GNS3 web site.

          Thanks,
          Brian

  6. Brian:
    You have a great resource here. Thanks for making all this info available. I’ve been looking for an open source network emulator to suit my needs and was hoping I could get your opinion. I want to connect openNMS to an emulator and then have the emulator run simple scenarios that present a network admin with various types of problems to diagnose and correct. Any suggestions would be most appreciated.
    Thanks
    Larry

    • Hi Larry,
      Thanks for your question.
      I think you should use a network emulator that runs either KVM or user-mode linux. So use either Cloonix or Netkit. These emulators will let you install the software you need on each virtual machine (especially an SNMP agent and MIBs).
      Thanks,
      Brian

      • Brian:
        Thanks for the feedback. I had been thinking about trying CORE but I will take a close look at Cloonix and Netkit as you suggest. I’ll let you know how it goes.
        Thanks again
        Larry

        • Larry,
          Thanks.
          I think the main issue is virtualization of the file system. I’ve not had to set up MIBs on a lInux box so I do not know if CORE creates a namespace for the directories used by SNMP. Cloonix and Netkit use KVM and user-mode-linux, respectively and those technologies virtualize the full filesystem and allow you to save the changes to the files for future use.
          Brian

          • Hi,

            You can use also GNS3 who can easily incorporate your own VirtualBox VMs. You don’t need IOS Cisco to use GNS3.

          • Good point, David! GNS3 would also be a good tool for this case. I have a few posts on using open-source routers in GNS3. Click on the GNS3 tag to find them.
            –Brian

  7. Brian/David:
    Thanks for all the feedback. I had posted the same question on an openNMS forum and gotten zero responses so I really appreciate the info being provided here.
    Regarding GNS3, I was under the impression it’s main focus is providing a high-fidelity replication of Cisco and Juniper routers and enterprise-level WANs. By “high-fidelity” I mean something detailed enough that it can be used as a study aide for somebody trying to get certified by Cisco or Juniper. I think for my needs the best fit will be something that is fairly broad in scope (e.g. can emulate anything from SOHO LAN to a global grid) but where fidelity is less important than flexibility and ease of use. The idea is to get a basic network emulation going and than interface to it via openNMS. I wondering if using GNS3 may force me to go deeper into IOS and/or JUNOS that I want.
    My understanding is that Cloonix is pretty easy to set up and use, allows the use of standard Linux networking tools (e.g., ping, traceroute, etc) and, if desired, has support for emulating cisco routers with some reasonable fidelity. If that is correct, I’m thinking I’ll try it first.

    – Larry

    • Hi Larry,

      I prefer cloonix for working with open-source routers, in the case where full-stack virtualization is needed (using KVM).

      GNS3 will work with open-source routers but, as you observed, it’s primary purpose is to support Cisco router images and it’s management of open-source routers relies on VirtualBox (which is OK but takes more steps to set up each unique virtual machine disk image).

      Both cloonix and GNS3 provide high-fidelity network simulation because they allow you to work with virtual machines running real networking software. Cloonix is more streamlined for use with open-source routers and other open-source software, which I think fits better with your use-case for working with OpenNMS.

      Thanks for your questions!

      Brian

    • Hi,

      You don’t need to install or/and configure Cisco/Juniper to use GNS3 🙂
      Look the first screen of “Live Raizo” here (http://sourceforge.net/projects/live-raizo/) which uses GNS3, it is only Debian Linux.
      And i think that GNS’s interface is more beautiful than Cloonix’s interface 😉

  8. Hi Brian,
    Thanks for this great article. I test access multiplexers and would like to create a network of 24-96 guest hosts, each with their own IP. The purpose of this is to try to congest multiplexer-under-test with TCP traffic. There will be a simulated PC for each of the modems connected to a multiplexer-under-test (that supports between 24-96 modems). I would then like to set up a packet (TCP) generator or an FTP server on the uplink of the multiplexer, where the 24-96 guest hosts would then simultaneously download files from the server. Other than 2 high performing server blades with 10G ports, which virtualization software and/or network simulator do I need?

    • You need to do some testing to determine which options work best for you. In my opinion, you need a hypervisor like Xen, KVM, of VMWare) or you can use Linux containers (maybe use Docker), which use less systme resources than full VMs and may allow you to run more virtual test nodes per host machine. Set up your VMs and connect them all to the 10G port. You don’t need a network simulation emulation tool, unless it helps with your automation requirements (for example: Cloonix for KVM, CORE for Linux containers). Even then, I would recommend other tools like chef or puppet (or use shell scripts) instead of a network simulator for your test system because it seems you will need more functionality related to virtual server setup automation instead of simulating different network topologies.

      • Thanks for quick reply, Brian. I mostly use python for automation scripting. As I’ve not use either KVM or Linux containers before, do they have a master controller that I can use to manage all the test nodes? Like installing FTP clients and initiate the downloads/uploads? Or do I use tools like Jmeter? Another question is, how do I calculate the max number of nodes the host can handle if I need each node’s unidirectional transfer rate to be at around 100 Mbps?

        • I don’t know all the tools available to automate virtual server setup and configuration but I would expect some of them support a Python API so I suggest you do some searches to find what would be suitable. I don’t know how to calculate the expected performance or throughput per virtual server, but I think 100 Mbps is asking for a lot, unless you have a very powerful host machine. You will have to do some testing, I think.

          To get started quickly, try using the [CORE Network Emulator](http://www.brianlinkletter.com/tag/core/). CORE is implemented in Python and has a documented Python API. You can create a set of virtual servers that all connect to the external Ethernet interface on the host machine. You can create a custom service type that supports starting an FTP client and then running some download commands. When you save the network scenario, you can re-load it at a later date to run the same test again. I plan to post some information on customizing services in the CORE Network Emulator in a few days.

          But, I do not know what kind of performance you will get.

          For master controllers, Linux offers the *[libvirt](http://libvirt.org/)* tool (which supports KVM, Linux containers, and other types of virtualization) and I am sure there are other open-source virtual machine configuration and controller tools you can use.

          You can also use *[Virtualbox](https://www.virtualbox.org/)*, which is an easy-to-use VM manager with a GUI (and excellent documentation).

  9. Hello everyone, I need some advice!

    I’m a networking student (BSc) in my final year of Uni and I have chosen to base my final year project on simulating an Indoor Positioning System (IPS). Is there any free network simulator software that I can use as a tool to develop and demonstrate a working IPS within a simulation?

    I appreciate any advice you give me!

    • Hi Adam,
      Thanks for your question. What protocols do you intend to use in your solution? If you can describe your needs in terms of the technology you need to emulate, you may be more successful in finding answers.
      Brian

  10. Hello Brian!

    We are working on implementing communication network testbed for a smart grid system. We are planning to emulate ADSL and LTE/GPRS communication technologies in combination with network traffic generation. the experiment also need to be analyzed which means the experiment output need to be captured. Can you please recommend an emulation tool with realistic performance and which is not complicated to configure?

    • I think your requirements exceed the capabilities that the open-source tools that I know about can provide.
      I’ve seen some research papers that discuss using NS-3 to simulate LTE packet core networks (but if you may find NS-3 to be a complicated solution).
      I think you’ll be looking for a commercial solution. Sorry I can’t be more helpful.
      –Brian

  11. I have working in research about detecting a malicious router that can attack autonomous system
    (AS) so I want to simulate simple AS with some routers and simulate a malicious router that drop the traffic maliciously
    I want to select the simulator to use it in this research , some ones advice me to use NS2 simulator

    thank you for help

    • I think you will want to run real software on virtual nodes in this scenario so I recommend you use a network emulator for your project.

      Most of the software projects I list on this page are actually “network emulators”. You should choose a network emulator that uses virtualization technology and scripting languages you are comfortable using.

      If you need a recommendation I can say that CORE and Cloonix are easy to use and should meet your requirement to run BGP routing software on different nodes in an emulated network. But any of the other emulators (except for Psimulator) will also work for you.

      If you really need to use a “network simulator”, you may want to use the NS-3 network simulator. I have no practical experience with NS-3 but it I understand that it supports a feature called “Direct Code Execution” (DCE) that can run real networking software, such as quagga. See http://www.nsnam.org/overview/projects/direct-code-execution/ and http://www.nsnam.org/~thehajime/ns-3-dce-quagga/index.html

      I hope that helps.
      –Brian

  12. thank you very mush for responded and for guides about my issues and I think , I will use DCE in the simulator NS-3 that can maintain multiple implementations of a single protocol

    thank you

  13. hello for everyone

    I am research student. I want make simulation about surveillance camera in WIMAX , can you help me which program can be effective and easy to use . help me please
    thank to all

    numking

  14. Thanks for this overview. Have you known about the WANem network simulator http://wanem.sourceforge.net/ ? I have not used it yet but it was recommended and seems to have won a few awards in 2008. A new beta is quite current.
    Cheers
    Christian

    • HI Christian,
      Yes I should look at WANem. I considered it to be more of a “black box” emulator that I would run on a node in a simulation if I wanted to simulate performance issues on a linke (such as delay, error rates, etc). So, I did not list it among the set of open-source simulators on this page. I’ll consider adding some posts about WANem in the future.
      Thanks for you post.
      Brian

  15. Hello Brian I have to use Network CORE for a college project, in which I have to install software on one of the node, Example Apache server.
    The thing is i don’t know how to install applications on to a node within the Core environment, any help would be greatly appreciated.

    Regards desperate Dave

    • Hi David,
      CORE uses Linux Namespaces as its method to create virtual nodes. This means that each node does not have its own filesystem upon which you can install apps. You need to install applications on your host computer, like I do in my post about installing CORE services. Then, when you start a virtual node in the CORE Network Emulator, that node can run the app in a separate process namespace. Also you need to be aware of how CORE sets up configuration files in the filesystem for each service that runs, especially if you will create your own custom services. Remember, you should not just start a process on a CORE node. USe the “Services” dialogue box to start the programs you need and if the program you need is not already listed in the “Services” dialogue box, create a custom service. I suggest you read the rest of my posts about using the CORE Network Emulator. I encountered the same problems I suspect you will encounter.
      Thanks,
      Brian

  16. Hi,
    We’re running an experiment where we need to simulate a TCP/IP environment for testing purposes. We should be able to introduce heavy errors for retransmission such as packet drop, congestion, etc. Which of these will be a better fit?
    Someone from work recommended ns-3. I’m not sure about that. Please help.
    Thank you
    Sean

    • Hi Sean,
      If you need results that are consistently reproducible, you should use a discreet-event network simulator like NS-3. If you can accept some variability in measured performance then it is much easier to use a simulator like those listed on this page.

  17. Great work. Im a Phd student. You blog really helped me. Thx

  18. Hi there,

    Thanks for this list of NS. It contribute and simplify the work of find a suitable tool for networking teaching. Best work

  19. Gabriel Babajide May 31, 2015 at 8:35 am

    Hi, I’m an undergrad looking to apply SDN to WCDMA network.. please which network simulator is best… the blog and comments are helpful. thanks

  20. Gabriel Babajide May 31, 2015 at 9:11 am

    Please of all the above network simulators, which is best for simulating WCDMA network??. Thanks

    • Hi Gabriel,
      None of these is useful for emulating a WCDMA network. You can use the CORE Network Emulator to emulate a user in a basic mobile network but I have not covered that functionality in my posts about CORE. You will need to set up the packet core network functionality yourself, regardless of which simulation p,at form you use.
      I hope that helps.
      Brian

  21. Gabriel Babajide May 31, 2015 at 1:15 pm

    The project is to apply SDN to a WCDMA network… from the OSI model, I want to use SDN to program the network, decouple the control and the data plane. I’ll love to obtain as more information as I can get. Thanks

    • I think you are looking at Network Function Virtualization and/or Software Defined Networking. You should look at how the CORE Network Emulator can work in your situation. It is written in Python so you can modify it as you need to. You may also look at Mininet. I hope your research is successful.
      /Brian

      • Gabriel Babajide June 9, 2015 at 5:31 pm

        You think it’s going to be very difficult, no?… I’ve been looking @ developing a model from the TCP \ IP model and create a topology off it.. which I will then seek to simulate… what do you think??

        • Well, the nodes in the access network and in the packet core will need a TCP/IP network (or something that emulates a TCP/IP network) so they can communicate with each other to create the required services. I suggest that you look at the RouteFlow project for some inspiration. If you are focused on SDN, then I suggest you use the Mininet network simulator.

  22. Gabriel Babajide May 31, 2015 at 7:00 pm

    Thanks… Thank you very much

  23. Hi Brian,

    thanks for this overview.very helpful.
    I am working on a student project and want to simulate some IP-based fast reroute techniques, can you recommend a simulator that can help me?
    I appreciate any advice you give me! Thanks.

    Jiadai

    • Hi Jiadai,
      Fast-reroute techniques are implemented by the routers you emulate. So the simulation tool you use is not a factor in making this work. If you need a simulator that can run commercial router software (where I think you will find fast reroute is better supported than on Linux), I suggest that you use GNS3 or Cloonix because you will need to use full virtualization (VirtualBox, or QEMU/KVM).
      Thanks,
      Brian

      • Thank you for you response.

        I have read some papers about IP-based fast reroute techniques. On the simulation part, they all mentioned that they used some network topologies such as ABILENE, GEANT and BELNET, but I don’t know how they simulated the IPFRR mechanisms on those networks.
        So how I can make the simulation work to evaluate those mechanisms? I am still a newbie, hope you can give me some hints.

        Thank you!

        Jiadai

        • Hi Jiadal,
          You will need to use GNS3 and Cisco or Juniper images to test IP Fast Reroute technologies because most of these are not implemented as open source software.
          ECMP is implemented in the Linux networking stack and it is probably one of the fast reroute technologies covered in the papers you read. If you cannot access Cisco or Juniper software, you can study ECMP in Linux.
          Regards,
          Brian

  24. Is there a way to save the topology of cloonix?.

    chris.

    • Hi Chris,
      That’s a good point! It appears there is no “Save Topo” command in version 26. I suggest you post your question to the Cloonix mailing list.
      Brian

      • I am sorry to say that there has been a cloonix mailing list once, but now, the list is closed.
        There is very little communication around cloonix apart from this blog here.
        Do not hesitate, Brian to forward anything concerning cloonix to the cloonix team. The mail you transmitted about saving and configuration was good for the product progress, the needs we have here usin the tool is not the same as the needs other people may have. Here we never save a topology, we just scritp its construction and send configuration commands to virtual machines always starting from virgin reference guests.
        Thanks Brian for this blog.

    • Sorry about that, next version 29 will have the save function back.
      The rewriting and simplification of cloonix had side-effects. The save functions back in v29 and the monitoring/traffic-shapping of all lan links in v30.

  25. I’m learning about Security stuff, Pentesting specifically. Which Emulator/Simulator you suggest me?
    Thx.

    Citizen292

    • I suggest you use a simulator that uses virtualization tools like KVM or VirtualBox. This way you can test security with different distributions, kernels, and even with operations systems like Windows.

      Use Cloonix or GNS3.

      Brian

      • Yes, i have used VirtualBox but not real scenario. It isn’t necessary for reconnaissance, gathering informations of ports, OS, figure out the vulnerability, but i just straightforward to exploit. I think those hardly ever happen in real world, so i need to stand at malicious attacker
        side, point of view, which always try to figure out the way to get in, even against sophisticated
        & uptodate appliance (such as routers, firewalls, IDS/IPS etc).
        Can those 2 (Cloonix or GNS3) adapt uptodate & sophisticated appliance, which always been patched, updated. I mean can i update the router software, IDS/IPS (if any) etc like in real ?

        citizen292

        • With last cloonix (v28) comes the following choice of distribution:
          archlinux, jessie, stretch, centos-7, opensuse-13-2, ubuntu-15-04, fedora22,
          opensuse-42-1 ubuntu-15-10 fedora23 openwrt_15_05.
          In all except openwrt, you can install gcc, compile and run your patched software.
          You can also update your virtual machines at any time providing the host in which cloonix server is running has an internet connection.
          The next version of cloonix (v29) will be available before chrismas.

  26. Hi Brian,
    I’m working on a student project on “IP Traceback mechanism using packet logging”,which simulator do you recommend ?

    Thanks

    • I think it depends on how you will set up your test scenario. Will you be modifying the Linux kernel? Will you run modified networking stacks on some of the nodes on the network? If so, I recommend using a simulator that supports full virtualization, like GNS3 or Cloonix.

      If you need to run a lot of nodes in the simulating or will all use the same kernel and networking software, use a simulator based on containers, like CORE or Mininet.

      All these are actually “emulators” that provide accurate functionality but may not provide accurate performance simulation if you run large amounts of traffic. If you need performance accuracy and reproduceable measurements of performance, I suggest you use a discreet-event simulator like NS-2 or NS-3.

      I hope this helps.

      Brian

  27. Hi Brian,
    I am working on M.tech student project. I want to setup ipv6 bgp scenario and analyze route reflector and ibgp performance on heavy traffic loads.Earlier,I have simulated ipv4 bgp in ns2 but now i am not able to scale it in ipv6. i dont want to use ns3. Please suggest

    • Hi Shipra,
      I need to know more about the simulation scenario you want to create. I assume that, since you are using NS-2, you need a discreet-event simulator so only NS-2 or NS-3 would work for you because they are the only discreet-event open-source network simulators I know about. Since you wish to simulatate heavy workloads, I think a simulator like NS-2 or NS-3 is the best solution because using an emulator to run heavy workloads may not provide reproducible results.
      Thanks,
      Brian

  28. Is there any tool that i can use to simulate users, i.e. internet users with unique ip addresses.

    cheers

  29. But what if I have one system that emulates the x number of users, obviously with different IP addresses, and one system containing my network or wan and other sections of the experiment?

    I was wondering I have a named interface with a single IP address attached to it so my network (other physical computers) will be seeing it as a single user. Are these software able to work around that as well?

    cheers

    • CORE will do this. You can create hosts with all your users in one CORE canvas and your WAN in another CORE canvas and then connect the two canvases together.

    • Also Cloonix allows separate servers that can be connected.

    • If your test network is other physical PCs and you want to emulate many servers on one PC and connect it to other PCs, then most of the network emulators listed in this page can be used to set up a network of hosts and then connect that virtual network to you PC’s Ethernet interface so it can interact with your other physical PCs. Of the simulators I have reviewed, I think Psimulator2 is the only one that would not work for you.

      • Got the idea. Thanks. Since you are online, I should put another question as well. I saw your article on Testing IPv6 addressing in a network simulator – Part 1 and Part 2. Can this setup be used as an overlay to test another protocol that is similar to IPv6 or I would have to port the implementation into the simulator itself and then use that code to interact with IPv6 network. One such scenario might be to test a protocol e.g. ILNPv6 with IPv6 while testing interoperability.

        Cheers

        • You need to install the software you will test so it will run on the virtual nodes. InCORE, you install software on the host system and then create services in CORE. See my post about making custom services in CORE. It would be simpler to do this in Cloonix or GNS3 where you could create a disk image that has the software each node will run. But GNS3 and Cloonix use full virtualization so use more resources.

  30. By canvas, you exactly mean an independent physical server with an interface card (even though that interface card will be bound to a single ip)?
    I am going to look into CORE, and try to do exactly what you suggested.

  31. Salutations for this effort to concentrate all this pertinent information in a so precise manner

  32. macchindra patil February 1, 2016 at 4:44 am

    hello sir

    i am doing the project of Cluster based certificate revocation with vindication capabilities
    as a fresher i am unable to analyze the project

    plz help me how should i use GNS3, where to actual coding
    which language suitable for this
    how can i show simulation to users
    plz help me sir

  33. Hi Brian,
    Thanks for the useful post. I am a researcher who is interested in Computer Network, Network Security, and Cloud Computing. I am looking for a simulator/emulator/tool that can suit my area of interest.

    Thanks in advance.

    Farid

    • Hi Farid,
      Any of the simulators I have written about (except for Psimulator2) would probably meet your needs, depending on the details of your requirements.
      My preferences for emulators are CORE or Cloonix. If you are using Windows or Mac, consider using GNS3.
      Brian

  34. Hello, Brian !

    Congratulations for taking the time to create such an amazing content, and to share it with the whole Internet.

    It is very interesting your discussion about the differences between emulation and simulation.

    I’d really like to see more information about simulation/emulation of non-IP protocols, or at least the protocols in the lower levels.

    All the best,
    Hilton

    • Hi Hilton,
      Thanks for reading my blog. I’ll have a look for non-IP simulators and emulators, or Layer-2 emulators. But since lower layers tend to be more reliant on specific hardware, I am not sure I will find any that are based on open-source software.
      Thanks,
      Brian

  35. Parthiban Nalliamudali March 29, 2016 at 2:57 am

    Hi Brian,

    Thanks a lot for this post/article. My bad, I missed this for so long time.
    Awesome part is, you take time to reply every single reply/comment. That’s really amazing.

    I wonder, if you can suggest from the list, the simulator where I can also do automation of network configurations & network protocol testing.

    I believe that is outside the scope of all these network simulators and/or emulators listed.
    For education purpose, I am trying to create a framework for this purpose.

    Thanks Again!

    Cheers!!
    -Parthiban.N

    • Hi Parthiban,
      Thanks for your comment. I need to know which network automation tools you are considering before I can advise you. Some network automation tools (like Ansible, or Docker) effectively do the same work as the network emulators I reviewed in this blog: they set up hosts and create networks between them in an automated fashion.
      To do what you want, you need a tool that supports nested virtualization because you will need to create two “layers” of virtual networks. The first “layer” will consist of an emulated network created using a tool like Cloonix or GNS3. The second “layer” will be created by the network automation tools you are testing and it will operate as if the first “layer” is the hardware infrastructure available to it.
      I suggest using Cloonix on a Linux system because it will support nested KVM.
      I do not know how well this will work. Good luck.
      –Brian

  36. Hi Brian
    please suggest any simulator which can record energy consumption of routers in backbone networks.I could not find energy model for wired networks in ns2.

    Regards
    Shipra

  37. Hello, thanks for the informative article.

    Do you have a recommendation for wireless sensor network simulator in particular? Thanks

  38. Hello
    thanks for informative article
    could you please help me to get the names of open source multimedia simulators for networking
    Which can be used to send audio video messages..

  39. I really like and appreciate your forum.Really looking forward to read more. Will read on…

  40. Thanks for keeping this blog. It is wonderful to find this much good info and experience in one place. I will, hopefully, be doing some of this in my job in the very near future. I am late to the discussion, but I think it is valuable to keep “simulation” and “emulation” conceptually distinct. The key distinction is the ability to create test-beds for physical hardware and systems under test. If I have a new device, I cannot “plug it into” a simulation to discover its behavior. I can only “plug it into” a simulation when I already know how it behaves in all relevant circumstances. How do I find this information out? I plug it into an “emulator” first! Then, I subject it to every interesting condition, measure its behavior, THEN I can write a simulation of it. Think of it this way: if I shoot you with a good emulation of a gun, it will probably — literally — kill you. If I shoot you with a good simulation of gun, you will just have to wear a sign that says, “I’m simulating a corpse.”

  41. You can find more cisco network diagram templates and examples in creately diagram community. There are 1000s of examples and template to be used freely.

  42. Hello, I was wondering if the OPNET Modeler simulation open source or not?
    and what are the best software simulation for WiMAX network? because I want to study WiMAX scheduling Algorithms ..

    Many Thanks,
    Mohammed

    • OPNET is a commercial product. The only open-source emulator that may meet your needs is CORE. NS-2 and NS-3 can be used to simulate WiMAX but they have a steep learning curve (and I have not used wither NS-2 or NS-3).
      Brian

  43. Nancy Carrere June 2, 2016 at 5:12 am

    Hello,

    I reviewed quickly all the simulators listed on your page, however I am not sure any of them would fit my need which is, to emulate a 3G/4G core mobile network : this implies the need to emulate many protocols (diameter for instance), not only IP, and can also imply some processing of the data received within the nodes being emulated.
    The only tool I found in your list that might be suitable (but I am not sure…) would be N3S, since the web site says “The ns-3 simulation core supports research on both IP and non-IP based networks”.
    But I would very much appreciate your feedback on this matter in case you have other suggestions?
    Thanks a lot!
    Nancy

    • I agree that emulating an LTE network is a complex scenario. You would need to find open source implementations of LTE protocols. I am not aware of any. I think NS3 is the most likely to work because you may write your own code to simulate the LTE network.

  44. LPEECOMPUSERVE LTD June 3, 2016 at 8:54 am

    Hello,
    I want to run a WI-FI network for a very large school. But I want to simulate/emulate the network using an appropriate software that will emulate all the hardware I will employ for the design of the network. Please tell me the software’s I can employ to tackle this problem. Thanks as I wait in anticipation for your reply. My mail is lpeegroup@gmail.com.

    Br.

  45. Hi Brian,

    First of all Thank you for providing all this helpful information.

    I need your suggestion regarding a task.

    I want to use a network emulator where I can add some new devices from non standard vendors. And then I want to configure the devices/ or simply input information in the attributes of configuration. Then using my application I want to get the configuration or attributes to generate configuration in a file. Can you please suggest me any emulator where we have APIs to communicate or can be used to complete the purpose?

    Many Thanks in advance!!!

    GAURAV

    • Hi Gaurav,
      If your non-standard devices can run in a Linux container then try the CORE network emulator. CIRE has a Python API that supports node configuration.
      If your devices need full virtualization like KVM/Qemu, then use Cloonix. Cloonix supports adding node configuration commands to the project file.
      Brian

  46. Hello, i want to do routing in VANET using Software Define Network. Can u tell which simulator is required and how to do integration of that simulator with SUMO.

  47. Please I want to know if any of these open source network simulator/emulator App can simulate GPON, POL, or any FTTx related architecture

  48. Hi Brian,
    Thank you for the great post.
    I’ve went over some of the tools you’ve mentioned and still have some openm questions.
    So, I would like to hear your opinion on the subject below.

    My group is working on development of smart SDN applications, specifically targeting network health analytics and traffic redistribution.
    We need to emulate DC and enterprise networks, having following capabilities:
    1) connect the simulator to SDN controller
    2) generate network traffic (TCP\UDP) and being able to gather particular flows information (sFlow\NetFlow?)
    3) being able to reconfigure devices on the fly using OpenFlow and see changes in the traffic patterns accordingly
    4) create large topologies easily
    5) having some GUI tool to review the outputs and design topologies

    If you are familiar with a tool\tools combination that can supply all\some of the above functionality, I’ll realy appreciate your help.

    Thank you,
    Igor

Leave a Reply

Text formatting is available via select HTML. <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*