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?
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:
Network protocol related effects. e.g. The behavior of the TCP protocol can indeed affect certain performance characteristics of a network. It makes absolutely no sense to implement your own TCP layer if there are simulators exactly for this purpose. The same is true with various routing protocols. Generally, if you feel that the protocol behavior can affect your results, then you should use these packages.
Mobility: these packages provide mobility management. i.e. they provide methods to manage/move your nodes in space over time.
Physical level modeling of communications: again it depends on the required level of abstraction. If you need to model something in free space, with high SNR, with relatively low throughput compared to the channel capacity then you may be able to write your own implementation. On the other hand, the problem quickly gets complicated if the signals may interfere with the environment, if there is noise, buildings, the network traffic is high enough to have signal collisions, the protocol has error correction etc.
Other infrastructure code like gathering and processing simulation results, running simulation campaigns, pseudo random number generators etc.
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.