5

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)

Timo Cengiz
  • 3,215
  • 4
  • 20
  • 42
  • 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? – Michael Kirsche Apr 04 '17 at 12:52
  • @MichaelKirsche just added some text to reply to your question – Timo Cengiz Apr 04 '17 at 13:04
  • https://www.google.de/search?q=comparison+of+network+simulators&gws_rd=cr,ssl&ei=3vXjWLrHEsihUd7lu-AN 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. – user4786271 Apr 04 '17 at 19:39

1 Answers1

17

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

Michael Kirsche
  • 881
  • 7
  • 14
  • 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? – ItamarG Sep 30 '20 at 09:50