Evaluating Network Simulation Tools
This is the first in a series of articles about Network Simulation tools. I am investigating them to support some research and as such have my own specific requirements. I thought I would share my requirements and ideas about tools and hope for feedback or that perhaps it is useful to others.
I am stuck in limbo at the moment. I have applied to begin a PhD course at the Finnish National Defence University and have had my topic approved by the professor. I am waiting for confirmation and security clearance to come through which could take a few months.
In the meantime I am itching to get started. I do not want to give away the full title of my research topic at the moment until it is confirmed. Suffice to say that it will be looking at military tactical communications and involve IP networks particularly Mobile Adhoc Networks (MANET).
When I start my studies I somehow doubt I will manage to get a manoeuvre Brigade at my disposal to test out anything I can come up with. Therefore I will need to model and simulate the network layer in sufficient detail and fidelity that any new protocols can be tested and adapted. The tactical network is a very demanding space for IP communications. It is typified by low throughput, high latency, jitter and network breakage. Any simulated network will have to be able to be configured to produce the same effect.
The simulation environment is a necessary prerequisite to my central research but separate from it. So since I need to document it anyway I thought I might as well blog it. My look at network simulation tools in the tactical space may be useful to others or more likely people can give me feedback on other useful tools or their thoughts on the tools I have already found. So I begin a series of blogs with one that shows my requirements and thoughts on what I need in a network simulation. Having set the scene the next few blogs will be looking at some of the possible tools individually.
Network Simulation
Requirements
Network Simulation
I need to be able to simulate the IP level network that may be seen on a tactical deployment.
Realism
For my purposes it does not need to be an accurate depiction of the RF environment as long as the IP network exhibits the same properties.
Router Emulation not important
I do not need a full emulation of a router. Some of the tools are used for training for Cisco exams and thus give a faithful representation and interface. I am not Cisco certified and just want to be able to do any routing in the simplest way.
Network Effects needed
The things I need to be able to simulate are the delivery of packets from one node to the other. The sort of effects I need to simulate are:
- Jitter. In MANET in particular, and in fact in any overloaded network, you might see a large variance in packet delivery times. This can mean that packets arrive out of order. The application layer can reorder them but if it is realtime streaming data then this can become more difficult.
- Latency. Latency can be severe on tactical RF networks. Whilst propagation is not significant, nodes have to contend to get on air which could lead to delays. In a MANET a packet may have to bounce across multiple nodes to get to its destination. The latency will constantly change as nodes move and as other data contends for the network.
- Packet Loss. If an RF path just isn't there or the network is in overload then packets may be lost. This will vary in percentage from the occasional packets to long outages.
- Throughput. Whilst things are improving generally have quite low throughput sometimes down to tens of kilobits per second. Even those that claim much higher throughput can generally only achieve that in ideal conditions.
MANET
Mobile Ad-hoc NETworks are often used in the tactical space to provide a data backbone. They are also being used as Mesh Networks in the civil space. They cope with the dynamic nature of mobile nodes but this often causes flux in the network. This flux is often the cause of the network effects covered above.
Must reconfigure on topology changes
Any simulation of a MANET must deal with changes to the topology. This should change the routing to reflect the new layout. It also may constrain links based on the distance between nodes as the weaker signal means less throughput.
Network impact on reconfigure must be similar to real world
Any reconfiguration should take a similar time to what the real world network would. It should not have a god's eye view but the links should be formed in the same way a real network would.
Automation
A benefit of modelling the environment should be that many tasks can be automated. This allows repeatability and getting relevant statistics when trialling non-deterministic protocols. A realtime model can still be automated but will take longer to run that a non-realtime. Some of the tools considered can run in either realtime or by discrete events. Both models will have their uses in the constructions of new network applications and protocols.
Free as in beer and speech
As I will be a poor student this rules out any paid apps so they must be free to download and use. My own preference is for Open Source software as this gives the ultimate flexibility. It is very possible that none of the simulation systems meets my exact needs. If the software is open source then the possibility remains that it can be adapted as needed. This will be a key criteria for me but fortunately there seem to be plenty of options for Open Source or at least free tools.
Easy to use
When doing my PhD I will have plenty of things that will require my brain power so if I can save it anywhere then I will. As such the selected tool should be as easy to use as possible. The ability to write complex plugins may be needed for some elements of my model but if I can just drag and drop the network elements in most cases then it will save a lot of time.
Available Applications
I have scoured the interwebs looking for tools that look like they may meet my criteria. My list at the moment includes:
- GNS3. GNS3 is an open source software that simulate complex networks while being as close as possible to the way real networks perform. All of this without having dedicated network hardware such as routers and switches. Update: My look at GNS3 is here GNS3
- OMNeT++. OMNeT++ is an extensible, modular, component-based C++ simulation library and framework, primarily for building network simulators. "Network" is meant in a broader sense that includes wired and wireless communication networks, on-chip networks, queueing networks, and so on. Domain-specific functionality such as support for sensor networks, wireless ad-hoc networks, Internet protocols, performance modeling, photonic networks, etc., is provided by model frameworks, developed as independent projects. OMNeT++ offers an Eclipse-based IDE, a graphical runtime environment, and a host of other tools. There are extensions for real-time simulation, network emulation, alternative programming languages (Java, C#), database integration, SystemC integration, and several other functions. Update: My initial look at OMNeT++ is here OMNeT++ General 'Network' Simulation more to follow.
- NS3. ns-3 is a discrete-event network simulator for Internet systems, targeted primarily for research and educational use. ns-3 is free software, licensed under the GNU GPLv2 license, and is publicly available for research, development, and use.
- Common Open Research Emulator. The Common Open Research Emulator (CORE) is a tool for emulating networks on one or more machines. You can connect these emulated networks to live networks. CORE consists of a GUI for drawing topologies of lightweight virtual machines, and Python modules for scripting network emulation. Update: I look at Common Open Research Emulator (CORE) in this article.
Selection Criteria
Real Time
Whilst it will be useful to check the convergence on certain aspects of my protocol quickly, integration with the real application is more important. The application in for realtime interactive data so it will have to be able to be plugged in to the simulated network and used. The network should appear exactly like a real one so the application does not need to be adapted.
Adaptable
Once a base simulation is produced it will have to be adapted to experiment with many different scenarios. The simulation must be readily adaptable between runs and within a simulation to show the dynamic nature of a tactical network.
Realism
The network must present to the application protocol like a completely realistic network link. How the model does this is less important. I do not have a requirement to simulate RF path loss, multipath, complex routing algorithms or any of the specifics. I will be able to use my knowledge of tactical networks to set realistic constraints. I will also want to break the network as much as I can to see how the protocol performs in these conditions.
Interface with real applications
I must be able to run the exact same application as I would have on an actual system. The modelling tool must therefore present what appears to be a normal network connection. I will have two primary ways to run the application:
- Run the software multiple times on the simulation host. Each instance should be connected to a different network node on the simulation and be isolated from each other so they can only connect across the simulated network.
- For other hardware types they should be connectible by physical interface. This could be via an ethernet port on the simulation host perhaps via a VLAN switch to offer multiple ports.
Open Source
I have a preference for Open Source anyway and my rig is going to be running on Linux. It will also be important for me as if the simulation environment does not quite meet my needs I will have the option to change it.
MANET
The simulation of Mobile Ad-hoc or Mesh Networks must be sufficient to show that any network protocol will be useful in a real world scenario.
Conclusion
These are some of the things that I have in mind when I will be looking at network simulation tools. I may not down select on just one if there is a compelling reason to use different ones for different aspects of my research. The next article will probably be on the CORE application as I already have it up and running and have played around with it a bit.
I hope this was useful and I welcome any feedback or suggestions. I have a comments section below, I do not know how quickly the spam bots will find it so have been cautious and made it moderated. You can leave a comment without registering and I will check and approve it. You can also register and when I approve you will be able to post freely.