Choosing between OMNET++ or NS3
Asked Answered
F

1

6

Me and my friend are going to start a project. We are going to simulate basic communication between a server and a client. We have a pseudo code that we are going to implement. Using this communication we are going to try to detect failures in communication in different ways. We are both new to both softwares so would like to ask for some advice on which software we should use. Any pros & cons that would lead us to the right direction would be nice.

A simple TCP/IP protocol is fine. Python, C#, Java, C or C++ would be nice. No specific requirements as we are only going to use some simple algorithms to try to detect if the communication between the server or client is faulty or not ( detecting error messages between them)

File answered 4/4, 2017 at 12:47 Comment(3)
A couple of additional infos would help to point you in the direction of either simulator. Are you interested in the simulation of a protocol stack (maybe TCP/IP) of the client/server? Any specific requirements for the application of your project scenario? Preferences in programming languages or systems?Sid
@MichaelKirsche just added some text to reply to your questionFile
google.de/… this would help as a good starting point. I am an OMNeT++ user (thus might be a bit biased). But it has a great user manual and nice tutorial for starters. If usability is your main concern, go for it.Pneumodynamics
S
18

In short, OMNeT++ and NS-3, both discrete event simulators, could be good choices for you, depending on your exact needs.

NS-3 is a network simulator that uses C++ and (optional) Python to simulate network protocols and (for example) real-life implementations taken directly from the Linux kernel among other application areas. Strong points are its accurate representation of flat packets, good emulation and socket support, PCAP output that enables analyzes with other tools like Wireshark and good community support. Weak points (compared to others) are probably the visualization, which is being enhanced compared to its ancestor ns-2, but still more or less an animation of traces. For an overview of the supported models, take a look at this website.

OMNeT++ comes with its own IDE (Eclipse-based) and a GUI (nowadays QT-based) for the execution of simulations. A nice overview of the IDE is available online. OMNeT++ uses C++ to define source code of protocols and applications and its own NED language to combine these implementations into (sub-)modules and networks, which in turn are simulated. The simulator has very good visualization support, which seriously outranks NS-3. It has an extensive library of predefined models, just like NS-3. Simulation models are usually grouped in larger frameworks, the INET framework would be the one of choice for your case. Here's a list of models included in INET. Community support is also quite good as you can see here on Stackoverflow or in the OMNeT Google Group.

From your statement ("detecting faulty communication between client and server"), I assume you are interested in communication faults on the application layer, not on the IP / TCP layers? Both simulators provide models for TCP/IP, but if you are interested in detailed simulations of Ethernet or WLAN, OMNeT++ might be a better start. If you want to use some existing custom application running in a VM and emulate the communication between both, NS-3 might be a better choice. If you want to exclude lower layers and simply try to implement basic message exchange between entities, I might also prefer OMNeT++.

Sid answered 5/4, 2017 at 8:47 Comment(2)
ns3 has comprehensive documentation and a lot of tutorials are available online, on the other hand, I couldn't find a lot of tutorials or a good course for omnet++, do you know?Unwish
To my expierence it s good to start with Tic Toc example (17 levels) but first read manual to understand a concept how simulation starts. Let me try to help you ,first simulation read omnet.ini and search for name of the "Network". After that it load all NED files searching for define "network", and then start to load Network, compund modules and all submodules ... durring load process it invoke initialize() method for all modules following "top - down" approach.Iconoclast

© 2022 - 2024 — McMap. All rights reserved.