NS2 developed at UC Berkeley, is a discrete event simulator
targeted at networking research and provides substantial support for
simulation of many Internet, routing, and multicast protocols. It can
be installed on both Windows (using Cygwin) and Linux but evidently
is more suited to Linux. NS2 is comprised of many various packages to
provide its features (e.g. compatibility with numerous protocols and
providing graphical representation of simulations etc) thus is
notoriously difficult to use.
NS2 implements a vast array of protocols including TCP and UDP,
traffic source behavior such as FTP, Telnet, VBR and CBR.
Additionally, there is router queue management mechanisms such as
Drop Tail, RED and CBQ implemented. NS2 also implements multicasting
and some of the MAC layer protocols for LAN simulations. Currently,
there is only one P2P simulation available for NS2 (Gnutella).
Simulations in NS2 are constructed using a mixture of C++ and OTcl
(Object Orientated version of Tcl created by MIT).
Simulating in NS2 is a four step model.
1. Firstly, add a combination of C++ and OTcl code to the NS2 standard
set of libraries to implement your protocol.
2. Create the simulated network using an OTcl script (define the
nodes, links etc).
3. Run the generated scripts.
4. Analyze the trace files generated by NS2. A graphical model (NAM)
can use the trace files to show a graphical representation of the
simulation. Other tools available include graph plotting.
Due to the realistic nature of the packet level NS2 simulator,
scalability is a major issue. However, like most packet level
simulators NS2 can run in parallel with a number of other machines.
This can increase the maximum number of nodes for a given simulation
but can become difficult to manage. Subsequently, NS2 is commonly
used for simulating small networks and is generally unsuitable for
modelling overlay networks.