. |
OMNeT++ |
ns-2 |
Flexibility |
OMNeT++ is a flexible and generic simulation framework. One can simulate anything that can be mapped to active components that communicate by passing messages. For example, it can be used for simulating queueing networks, multiprocessor systems, hardware architectures (routers, optical switches, file servers etc.), or business processes. Several model frameworks available for different problem domains (INET Fw, Mobility Fw, OverSim, NesCT, MACSimulator, etc.) |
ns-2 has been designed as a (TCP/IP) network simulator, and it difficult to impossible to simulate things other than packet-switching networks and protocols with it. It has highly detailed and hardcoded concepts about nodes, agents, protocols, links, packet representation, and network adresses etc, which is good, but makes it very hard if you want to do things a little differently. |
Programming Model |
Object-oriented, event-driven simulator, written in C++. Topology descriptions are either written as text files (NED language), or can be dynamically created in run-time. There is also a graphical interface (GNED) for creating and editing the topologies, which automatically creates the topology file. |
Mixed-mode: OTcl (Object-Tcl) with underlying C++ classes. OTcl is also used for creating and configuring networks, recording results etc. |
Model Management |
The OMNeT++ simulation kernel is a class library, i.e., models in OMNeT++ are independent of the simulation kernel. The researcher writes their components (simple modules) against the OMNeT++ simulation kernel API. OMNeT++ sources are never patched by models. Simple modules are then reusable, and can be freely combined like LEGO blocks to create simulations,. |
In ns-2, boundary between simulation core and models is blurred, without a clear API. Install instructions for 3rd party models usually begin like: "download ns2 2.xx.x, unpack it, then apply the following patch..." |
Support for Hierarchical Models |
Hierarchical module structure in OMNeT++ facilitates dealing with complexity in a methodical manner. Model designer assembles a complex model from self-contained building blocks (i.e. simple modules and compound modules) which are resuable in other simulations as they are. |
In ns-2, models are "flat": creating subnetworks, or implementing a complex protocol as a composition of several independent units (that appear as one unit) are not possible in ns-2. |
Debugging and Tracing Support |
OMNeT++ can show packet transmissions while a simulation is running. OMNeT++'s Tkenv is an interactive execution environment, which allows one to examine the progress of simulation and change parameters. There is also extensive library support for packet tracing etc. |
? |
Variety of Models Available |
OMNeT++ has a good variety of models for simulating computer systems, queueing systems etc., but lags behind the ns-2 simulator on availability of communication protocol models. |
ns-2 has a rich set of communication protocol models (since it has been designed as a network protocol simulator, this is not surprising). |
Documentation |
OMNeT++ has a well written and up-to-date manual (there are also tutorials for quick introduction). OMNeT++'s simulation API is more mature and much more powerful than ns-2's. |
ns-2 documentation is fragmented (there is a good tutorial for quick introduction). There is no clear dividing line between the models and the ns-2 simulation library. |
Ability to Run Large Networks |
OMNeT++ can simulate very large scale network topologies. The limit is the virtual memory capacity of the computer used. |
ns-2 has scalability problems on simulating large network topologies (more details needed here). |
Support for Parallel Simulation |
Supports conservative parallel distributed simulation. The Null Message Algorithm (Chandy-Misra-Bryant) and Ideal Simulation Protocol (Bagrodia et al) are supported; others can be plugged in. Lookahead models for NMA can be plugged in. Communication layer is pluggable: currently implemented ones are MPI, named pipe, and file-based (for debugging). Unlike PADS, models do not need to be modified or instrumented for parallel simulation -- it is just a matter of configuration. |
The PADS research group at Georgia Tech. has developed extensions and enhancements to the ns-2 to allow a network simulation to be run in a parallel and distributed fashion on a network of workstations. |
Experiment Design |
Parameters of a simulation experiments are written in the omnetpp.ini , which enforces the concept of separating model from experiments. |
Models and experiments are usually interwoven in ns-2: topology, parameters, model customizations, result collection etc usually in the same Tcl script, which makes "separation of concerns" difficult. |
Embeddability |
OMNeT++ simulation kernel can be embedded in other applications (where one can use alternative means of intpu/output, e.g., use databases). The existing user interfaces can be extended via plug-ins, modified or replaced. |
? |