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