networkingomnet++ns-3opnet

When should I use network simulation software like OMNeT++ or NS3?


I have a background in AI and multi-agent systems. I am new to network simulations and networking in general, but I would like to run simulations of an aerial ad-hoc network providing a communication backbone to clients on the ground (as described in this paper) in order to test the effect of changing the flying agents' behavior on the network's quality of service. Thus, I need to model a wireless multi-hop mesh network exchanging information between nodes.

Several network simulation softwares exist, including OMNeT++, NS3, and OPNET. My question is: what am I missing out on by not using these? Do these simulators have an extensive amount of physics working in the background to make signals more realistic? I have seen that you can specify bit-rates and signal strength as parameters in these simulators, but those seem like very easy things to write code for myself. Emphasis on "seem" - perhaps there is some hidden complexity there?


Solution

  • A disclosure first: I'm an OMNeT++ Core Developer.

    Whether you need dedicated simulation software or not depends on the abstraction level you need to simulate the actual communication. A network simulator package can help with:

    Creating a good simulation is an art. You should have a good feeling what effects should be simulated and set the abstraction level accordingly. If you create a too detailed simulation, your model will be slow and complex to write. If you create an abstract one, your simulation results will not match the real world behavior. As you realized, these things "seem" simple to implement if your abstraction level is high, but quickly get extremely complex once you want a bit more precise measurement and the bad thing is that just at the beginning, you may not be able to correctly estimate the abstraction level.

    Just an example for your case: as long as your ground stations are distributed sparsely and evenly, modeling the communication channel with a simple baud rate and a packet error probability is just fine. As soon as traffic increases and grounds stations are closer to each other, collisions on the shared spectrum will happen and the throughput is heavily affected by this. Modeling the whole thing will be extremely complex.

    I have deep knowledge only in OMNeT++/INET (so take a look at the other packages, too), but in INET you have different level of abstractions for the communication. You can set up a simulation to use only very simple (and fast) transmission methods (like you said, just an error and baud rate), but if need arises, you can swap it with a very detailed one that simulates the electromagnetic spectrum on a symbol level. I feel you will be OK with a high abstraction model, but you never know. You can have a model running on a flat terrain just fine and then receive a question: And how does it work in urban canyons? Uppsss...

    In short, if you are doing something wireless, I would definitely go with a dedicated simulator just to be on the safe side.