NS-1 versus NS-2
How is ns version 2 different from the original version 1 release?
The underlying architecture has been substantially revamped in
support of more ``composable'', configurable, and programmable
simulations. In terms of inherent functionality, here is
a quick summary of the differences.
Functionality in both ns-1 and ns-2:
- one-way TCP (Tahoe, Reno, Vegas, SACK). These do not
include SYN/FIN packets. (The Vegas implementation has only limited validation.)
- two-way Reno TCP (with SYN/FIN packets and two-way data flow)
- RED queue management; CBQ (class-based scheduling)
- dynamic routing, dense-mode multicast routing
- the flow manager
- lossy links (different interface than ns-1)
- two-way TCP
- telnet sources
Functionality in ns-2 but not in ns-1:
- Multi-path routing.
- RTP (Real Time Protocol)
- Scheduling algorithms:
- SFQ (Stochastic Fair Queueing)
- FQ (Fair Queueing)
- DRR (Deficit Round Robin Scheduling)
- SRM (Scalable Reliable Multicast)
- ``Centralized multicast'' for speeding up large-scale simulations.
- Support for mobile hosts. (Link-layer, MAC, and shared channel
modules have been implemented.)
- Some random bug fixes (TCP transmit timer behavior)
Functionality from ns-1 that has not yet been ported to ns-2,
as of July 25, 1997:
Running ns-1 scripts on ns-2: Ns-1 scripts run correctly on ns-2,
with ns-2 in backward compatibility mode, with the following exceptions:
- Use of the ns-1 flow manager ("set XXX [new flowmgr class]").
- Global changes to override default parameters
("set ns_tcp(window) 10").
[fixed after the beta17 release]
- Packets sent at the same virtual time may be sent in different orders.
(To get the old behavior, set the scheduler to List.)
Ns-1 changes not yet in ns-2
Note: these changes haven't been incoroporated in ns-2.0.
The following files in ns-1 have changes and bug-fixes made as of May 20, 1997
that might not yet have been ported to ns-2:
drop-tail.cc (Kevin, Sally. Queue measured in bytes as well as packets.)
ivs.cc (Kevin, revision 1.3 - has this been ported to ns-2?)
link.cc (Kevin, Sally. Ns-1 allows queues measured in bytes.)
link.h (Kevin, Sally. Ns-1 allows queues measured in bytes.)
packet.h (All done but perhaps revision 1.2 for FACK)
scoreboardrh.h (This is not in ns-2 at all. Used in tcp-fackrh.cc,
FACK with rate-halving.)
tcp.h (Kevin, Sally)
For the following files in ns-1, all changes and bug-fixes made as of May
20, 1997 have been ported to ns-2:
trace.cc (ns-2 updated to r1.2 in ns-1)
trace.h (ns-2 updated to r1.2 in ns-1)
To see the changes made in $filename since ns-1 and ns-2 diverged:
in ns-1, "rlog $filename" in this
ns-1 snapshot that contains the RCS files.
To see changes in ns-2: "cvs log $filename".