ns: Version 1 Change History
v1.4 Wed Jun 4 16:12:16 PDT 1997
- Added SRM code, contributed by
This can be tested with test suite "ns srm.tcl".
v1.3 Fri May 23 15:09:19 PDT 1997
- Created a new "fulltcp", a version of TCP reno
based closely on the 4.4BSD code. Supports
two-way traffic, state transitions, etc.
Should be considered alpha-test at this point.
This was motivated by an earlier version of a 2-way
TCP contributed by
Kathie Nichols. This can be tested with test suite
- Added tcp-vegas.cc, contributed by
This can be tested with test suite "./test-vegas".
- Some changes to ns_default.tcl for RED.
Fix bug in CBQ where packet departures were not getting logged
when using wrr in the case where the "first" class.
v1.2a3 Fri Mar 21 16:54:45 PST 1997
- Added RH tcp and bursty losses from psc.
Added bugfixes in sack/fack from psc.
Created new test-all-lossy and test-suite-lossy.tcl.
New man page, release 1.2a3.
v1.2a2 Fri Jan 24 15:30:04 PST 1997
- Added test suite "./test-suite-routed.tcl" to the distribution.
Added sections on the flow manager and on dynamic routing to the man
v1.2 Thu Jan 23 23:34:28 PST 1997
- Added changes from
to add dynamic routing to ns.
Test with "./test-suite-routed.tcl".
- Modified the configuration scripts to build more easily on more platforms.
- Considerable modifications to the flow manager (flow.cc/flow.h).
Test with "ns test-suite-red.tcl flowsAll".
- Fixed bug in tcp.cc that allowed ssthresh to become negative.
Bug report provided by
v1.1 Tue Nov 12 17:56:25 PST 1996
- Added ssthresh estimation and other changes suggested by
Janey Hoe to newreno. Code provided by
- Corrects TcpAgent::closecwnd() bug in which ssthresh could be
reduced below 2 MSS during congestion. Fix provided by
and Matt Mathis.
- Added code for Fack TCP, contributed by
Jamshid Mahdavi and Matt
Mathis from Pittsburgh Supercomputing Center.
- Added ability to use either Drop-Tail or RED queue management
within a single CBQ class.
- Modified and tested red.cc implementation of "bytes" set to true,
for RED packet-dropping probabilities proportional to the packet
size in bytes.
- Added flow.cc, to keep per-flow statistics about the set of
packets dropped by RED or Drop-Tail gateways.
v1.0 Tue Jul 23 11:27:17 PDT 1996
- Added a hook to dump a stack trace and exit when a background
error is encounter (i.e., an error in a proc scheduled with ns-at).
This makes it MUCH easier to debug simulator scripts that have
syntax erros and what not in scheduled tcl stubs.
- Removed sack-tcp.cc from distribution. This leaves tcp-sack1.cc
as the only SACK TCP implementation distributed with ns.
- Put back hook to source "~/.ns.tcl" since people rely on this.
Fix provided by John Wroclawski.
v1.0b4 Mon May 6 22:22:31 PDT 1996
- Corrected fix to TCP's window decrease algorithm in
v1.0b2. Now, after a Reno Fast Retransmit, the window decreases
to min(cwnd_, wnd_)/2, not to cwnd_/2 (before v1.0b2) or to
min(cwnd_ + dupwnd_, wnd_)/2 (as in v1.0b2,3).
- Corrected calculation of congestion window for NewReno TCP for
the case when multiple packets are dropped from a single window of data.
- Fixed bug in tcp-sink.cc that allowed an infinite loop under some
circumstances when the number of outstanding packets in TCP was exactly
MWS-1. Also added a note to the man page about MWS and other constants
in ns. Thanks to Bernhard Suter for
the bug report and fix.
- In TCP, changed the constant TCP_TICK to the variable tcp_tick_,
with the default set in ns_default.tcl.
v1.0b3 Mon Apr 29 19:10:33 PDT 1996
- Ported to Tcl v7.5. Changed trace objects to use new Tcl_Channel
abstraction (for O/S indepedence). ns will NOT compile with
earlier versions of Tcl.
- Added the parameter "maxcwnd", for the maximum congestion window,
and corrected the use of "window", the receiver's advertised window,
in the reno and sack implementations of TCP.
- Changed some of the *.tcl scripts to take into account the
corrected use of the receiver's advertised window, and to use
v1.0b2 Fri Mar 29 16:40:25 PST 1996
- Changed interpreter to not source ".ns.tcl" since tcl no longer
uses the tcl_RcFileName C variable.
- Fixed a couple more SunPro C++ compiler problems. Patcjes
from Michael Pearce.
- Corrected TCP's window decrease algorithm from "cwnd_ /= 2;"
to "cwnd_ = window() / 2;". Thanks to
Thomas Ziegler for the
v1.0b1 Sun Mar 3 1996
- Fixed bug in tcp.cc that caused the retransmit timeout backoff behavior
never to reset. Thanks to
for reporting both the bug and the fix.
- Fixed bug in tcplib telnet module. Random number generator was
being seeded on each call (from the system clock) rather than once
at start-up. Replaced calls to random number routines with calls
to Random::uniform. Thanks to
for reporting this bug.
- Added local explicit-join notification for experimentation
- Added a "message" agent that allows abibtrary message packets to be sent
and received using tcl.
- Moved type-specific packet fields into a "body" union.
Eliminated "reason" field (rather than move it to tcp body)
since we should have just used the "flags" field to begin with.
- Added tracing functionality to loss-monitor agents (e.g., so we can
compute sliding window loss statistics using an external tool).
- Changed ns-now to use 17 digits of precision. Otherwise, truncation
could cause certain algorithms (e.g., RLM) to try to schedule events
into the past.
- Added "random" attribute to cbr sources to cause them to generate
a Poisson rather than fixed-rate packet stream.
- Fixed bug in RED initialization that could cause (almost-) infinite
loop at start up.
- Incorporated patches from
Michael Pearce to
compile with SunPro C++ v3.0.1.
- Fixed bug that caused memory corruption when using class ID's
larger than 10.
v1.0a17 Thu Dec 27 1995
- Finished port of "tcp-sack1" and "sack1-tcp-sink", a second
format for selective acks.
- Added "bursty" source for tcp connections.
- Added new loss policies for drop-tail links, "lossy-uniform" and
"lossy-det". [Kevin Fall].
- Added more test files to the distribution: test-all-cbq,
test-all-red, test-all-sack, and test-sack, in addition to test-all.
v1.0a16 Tue Dec 12 19:05:56 PST 1995
- Added source code for sack-tcp.cc.
v1.0a15 Tue Dec 12 17:52:32 PST 1995
- First cut at adding code for "tcp-sack1" and "sack1-tcp-sink",
from Matt Mathis (email@example.com) and Jamshid Mahdavi
- Changed format of window and RTT reports sent from tcp.cc to the
- Added "maxpkts" for ftp and telnet sources.
v1.0a14 Fri Dec 1 10:35:30 PST 1995
- Finished port of TCP with selective acks, along with SACK
acceptance tests in "test-sack".
- Added a modified version of Reno TCP, tcp-newreno.cc, for research
- Have not yet added tcp-sack or tcp-newreno to the man page.
v1.0a13 Wed Nov 22 15:14:50 PST 1995
- Finished port of cbq code from tcpsim (with contributions from Michael
Speer), and added cbq simulator tests.
- Added unique ID to each event in scheduler queue and added
hook to lookup an event by using this ID.
- Added hook for deleting at callbacks.
- Fixed bugs in multicast delivery where agent could
modify routing desstructors during the callback.
- First cut at port of TCP with selective acks.
v1.0a12 Sun Nov 5 21:19
- Added config.h and loss-monitor.cc to FILES so they get included in tar.
v1.0a11 Sun Nov 5 21:19
- Added loss-monitor agent, which is the same as a null-sink but calls
a tcl proc whenever there is a gap in the received sequence space.
Will expand functionality as necessary for MMG experiments.
- Integrated more mature tcl/c++ architecture from vic/vat.
This has a major impact on the way ns objects are created and deleted,
but we maintain backward compatibility with previous versions.
The "ns" command is no longer implemented in C++, but rather as
a library function (in ns_default.tcl) that provides glue between
the old commands and the new "new/delete" interface.
- First cut at port of cbq code from tcpsim.
v1.0a10 Fri Oct 27 17:44:39 PDT 1995
- Added "flush" method to trace objects so that output can be
flushed before exiting.
- Added link-level src/dst fields to Packet class so node can tell
which "interface" a packet arrived on.
- Added support for dense-mode PIM style flooding with prune/graft
v1.0a10 Fri Oct 27 17:44:39 PDT 1995
- Fixed test-suite.tcl so that old awk works. Problem reported
by Kannan Varadhan.
- Fixed Makefile.in to use V_LIB_TCL, as intended. Fix supplied
by Kannan Varadhan.
v1.0a9 Wed Oct 11 16:58:00 PDT 1995
- Fixed solaris compilation problems.
- Changed configure to use "-mv8 -msupersparc" only for gcc.
v1.0a8 Fri Sep 29 15:11:04 PDT 1995
- Fixed more for-stmt scope bugs.
- Fixed compilation problems with Sun and DEC compilers.
Problem reported by
v1.0a7 Wed Sep 27 19:55:23 PDT 1995
- First public (alpha) release.
- Included man page to FILES so it goes in tar.
- Updated README.
v1.0a6 Sep 21 09:24 PDT 1995
- Added "bug-fix" hook to tcp reno.
- Ported to tcl-7.4.
- Include Matt Mathis' test-all script.
- Changed "for" statement conventions to adhere to the proposed
ANSI standard change which re-defines the lexical scope
semantics of the initializer statement.
In order to be compatible with both the old and new semantics, we have
changed all instances of
- for (int i = ... ) ...
- int i;
- for (i = ... ) ...
- Fixed bug in xgraph output: new version of xgraph doesn't understand
FileorDev because it now uses the PRINTER environment variable.
Bug fix from Matt Mathis (firstname.lastname@example.org).
- Added a 'test-all' sh script to distribution, which runs whole suite
of regression tests and compares them against a reference output.
Thanks to Matt Mathis (email@example.com).
- Don't include tk.h from Tcl.cc.
v1.0a1 Mon Jul 31 16:05:08 PDT 1995
- Changed all references to random() to use Random class so we
can easily change our pseudo-random number generator.
- Added convention to object names so we can derive their type
from their name.
- Changed nodes to be first class objects like rest of objects.
- Changed trace syntax to use tcl files rather than it's own open/close.
- set f1 [open out.hop w]
- $trace attach $f1
- Changed '-' and 'd' trace records to have same format as '+' and
'h' trace records.
- Incoporate vic's "matcher" abstraction into agent and link models.
- Major hacking to port tcpsim to tcl framework.