# ns: Change History

### Release of ns-2.1b6 [PENDING]

### Release of ns-2.1b5 on Tue Mar 16 16:50:50 PST 1999

- [salehi] Mon Mar 15 17:10:30 PST 1999
  The following files/directories were removed since they are either superseded by other test or no longer supported:
  1. tcl/mcast/detailedDM.tcl
  2. tcl/pim
  3. tcl/lan/ns-lan.tcl
  4. tcl/lan/ns-mlink.tcl
- [haoboy] Sun Mar 14 13:08:12 PST 1999
  Changed process.{h,cc} to ns-process.{h,cc}, so as to avoid name conflicts on some OS (e.g. WIN32). Removed indep-utils/cmu-trace/setdest/Makefile.
- [haoboy] Fri Mar 12 19:48:42 PST 1999
  Various cosmetic changes to make it compile on windoze, patches courtesy of Christian Joensson.
- [yaxu] Thu March 9 15:20:00 PDT 1999
  Re-implement wiredLAN(802.3) by porting cmu's 802.3 module, and make wiredLAN work again. Highlights:

      	(1) All 802.3 features including contention detection
      	    are implemented in mac layer. (Old wiredLAN uses
      	    channel to detect contention)
      	(2) Channel broadcasts packets to every nodes attached to
      	    the wiredLAN except the sender. It is up to mac layer
      	    to decide whether it receives or drops the packet
      	    according to the destination mac address of the packet.
      	    (In old wiredLAN, channel does unicast by default)
      	(3) WiredLAN uses the same structure as wireless LAN (from
      	    bottom up, channel, phy, mac, ifq, ll, arp). These modules
      	    have the same function definition.
      	(4) csma.cc is fully replaced by mac-802_3.cc
      	(5) The reference output of wiredlan test suite have been
      	    changed
      	(6) The nam packet flow of wiredlan test suite does not
      	    exactly reflect the packet sequences under ll. It is
      	    due to (a) no trace object is inserted below ll; (b) nam
      	    is not in the good position so far to animate LAN behavior
      	    below ll. We put it into TODO list.

- [haoboy] Mon Mar 8 21:11:47 PST 1999
  Changed default HTTP invalidation packet size, so that both unicast and multicast invalidations have the same base size. Also changed the type of unicast (TCP) invalidation packet types from tcp/ack to httpInval. Updated affected test suite outputs (those related to multicast invalidations).
- [haoboy] Fri Mar 5 18:09:31 PST 1999
  Previous ErrorModel won't work with ECN turned on if it is situated after the QUEUE module. It's because ECN doesn't drop the packet, but an event is scheduled to resume the handler from inside the ErrorModel instead of from DelayLink. Added a check to avoid this. This will only affect scripts using SimpleLink::insert-linkloss{} or Simulator::link-lossmodel{}.
- [floyd] Fri Mar 5 10:47:07 PST 1999
  Modified tcp-sink.cc and tcp-sink.h to fix an ECN bug for TCP with delayed-ack sinks. In particular, the ECN field was not being handled correctly for a packet for which the acknowledgement was being delayed. The bug report and bug fix are both from Mark Allman, mallman@grc.nasa.gov.
- [haoboy] Wed Mar 3 18:16:53 PST 1999
  Added a separate set of error model insertion procedures. Updated SRM's test suite output (the previous one does not contain packet drop events). Changed the name of AppConnector to Process, and make it a subclass of TclObject. Make Application a subclass of Process. Added three new send() methods to Agent so that it supports sending user-level data.
- [haoboy] Tue Mar 2 12:37:37 PST 1999
  Add a fix to generate nam traces correctly for packets dropped by error models.
- [johnh] Fri Feb 26 14:37:31 PST 1999
  Applied a memory leak fix to sessin-rtp.cc, fix contributed from Lidia Yamamoto, Christoph Haenle, and Randa.
- [haoboy] Tue Feb 23 17:46:08 PST 1999
  Added a directory indep-utils/ which contains my proxy trace converteres and CMU's mobile scenario generator. Replaced the big scenario files under tcl/mobility with smaller files. If necessary, big scenarios can be generated using the CMU generator.
- [YP] Fri Feb 19 18:04:57 PST 1999
  Modified implementation of `PacketQueue`. Method `tail()` now returns the last packet in the queue; meaning of `PacketQueue::tail_` is also changed.
- [YP] Wed Feb 17 19:10:00 PST 1999
  Added enumeration for packet types instead of sequence of `#defines`. New class `p_info` binds numeric packet types with their string values.
- [haoboy] Mon Feb 8 14:29:43 PST 1999
  Add a unique type int64_t for 64-bit integers. Now it doesn't check for quad_t or "long long" in different platforms. Requires new tclcl.
- [YX] Thu Feb 4 15:20:00 PDT 1999
  Add mobileIP support (porting from Sun) with an example called miptest.tcl
- [YP] Thu Jan 28 15:20:00 PDT 1999
  Changed Calendar and Heap schedulers not to re-order simultaneous events. All three schedulers now produce the same result. Added a simple test test-suite-simultaneous for checking ordering of simultaneous events. Commented out "use-scheduler" lines from all test suites which had it so that they all use Calendar as default. Re-generated failing test-outputs.
- [haoboy] Tue Jan 26 10:18:47 PST 1999
  - Improvements for webcache: (1) support non-cacheable pages; (2) allow cache push to be either selective push or always push, adjustable from a tcl command; (3) new ways to compute staleness time for pages (lower bound RTT/2)
  - Added a type 'int' for many register var declarations.
  - Added 64-bit integer support for FreeBSD (quad_t) and Solaris 2.x (long long). A ns-specific tcl function `ns-add64` is provided to add/substract these 64-bit integers.
- [johnh] Thu Jan 21 18:07:18 PST 1999
  Changed autoconf handling of perl, added support in tcl to keep track of the good perl we find and use it in the test suites.

  The proper way to invoke a perl program from within ns is { global PERL; exec $PERL path/to/script.pl args; }. For examples in context, see test-suite-tcp.tcl.

- [YP] Thu Jan 21 15:53:07 PDT 1999
  Changed ns configure to support tcldebug v1.9. Upgraded NS and NAM config.guess and config.sub.
- [haldar] Mon Jan 4 14:20:34 PST 1999
  Committed changes to integrate the lower layer stacks for cmu and ns code versions. Changes made : LL, Mac & Channel interfaces and functionalities changed. added PHY layer; Mac/csma/cd not supported currently.
- [PH] Thu Dec 24 14:55:09 PST 1998
  Moved reference count related code in scheduler.{cc,h} to sessionhelper.cc
- [haoboy] Wed Dec 16 13:33:16 PST 1998 Bug fix for web cache code, mainly: (1) disconnect{} between servers and caches; (2) sending 0 bytes in TcpApp Added support for trace (web server/proxy log) driven web simulation. Added tests to include that part. Added a simple introductory script tcl/ex/simple-webcache-trace.tcl. Updated other outputs of webcache test suite after bug fixes.
- [PH] Wed Dec 16 12:59:46 PST 1998
  Integrated recent change on StarBurst MFTP code from Christoph Haenle.
- Tue Dec 15 09:23:55 PST 1998
  Added support for Mobile networking in current version of ns; Mostly cmu's version of mobility implementation -- integrated into ns.
- [johnh] Thu Dec 3 14:56:47 PST 1998
  Re-arranged some of the mftp/StarBurst code.
- [PH] Thu Nov 12 15:40:35 PST 1998
  added mix-mode, algorithmic routing, and virtual classifier test suite
  changed McastMonitor structure
- [PH] Thu Nov 5 18:37:59 PST 1998
  added mix-mode (first-cut)
  example scripts at tcl/ex/newmcast/mix-mode*.tcl

### Release of ns-2.1b4on Fri Oct 23 09:57:55 PDT 1998

- [YP] Tue Oct 15 13:11:39 PDT 1998
  Modified and cleaned LAN architecture: tcl/lan/vlan.tcl
- [PH] Wed Oct 14 13:24:46 PDT 1998
  added virtual classifier; example: tcl/ex/virtual-classifier.tcl
- [haldar] Wed Oct 7 15:35:01 PDT 1998
  Added counter for routing table size for each node. support for rtg table size to be used as label for nam visualizations.
- [PH] Mon Oct 5 16:43:03 PDT 1998
  Added algorithmic routing support for detailed simulator: example script: tcl/ex/newmcast/detailed-algo.tcl
  Added Multi-field filter, expanded from single field filter, Filter/Field
- [haldar] Mon Sep 28 12:29:21 PDT 1998
  Bug fix that now allows hierarchical routing to be used for single level of hierarchy.
- [PH] Mon Sep 21 13:53:48 PDT 1998
  Added algorithmic routing (API: $ns rtproto Algorithmic): a space consumption O(n) routing mechanism, currently working with SessionSim only
  Added Pareto distribution the second kind (aka. Lomax distribution) into the random distribution collection
- [johnh] Mon Sep 14 20:51:55 PDT 1998
  Re-autoconf'ed; several version numbers bumped (suggested by Lloyd Wood).
- [PH] Thu Sep 10 15:45:01 PDT 1998
  changed session test suite output to avoid namtrace-all
  re-enabled session suite in the validation test
- [johnh] Mon Aug 31 15:26:17 PDT 1998
  Re-autoconf'ed. Getrusage/sbrk are now detected in autoconf.
- [SF] Sat Aug 29 16:50:06 PDT 1998
  Included validation test for NewReno: test-all-newreno. This includes a new option, newreno_changes1_, that forces a slow-start when many packets are dropped from a window of data.
- [VNP] Sat Aug 22 11:59:47 PDT 1998
  - tcp-asym-sink.cc: call to acker_->update() in recv() had incorrectly been ifdef'd out by someone. Restored the call.
  - mac.cc, ll.cc: replaced call to offset() with one to bind_offset()
  - chost.{cc,h}, tcp-session.cc: added disableIntLossRecov_ to selectively disable integrated loss recovery.
- [TH] Fri Aug 14 13:30:00 PDT 1998
  Removed CBR_Agent; use Application/Traffic/CBR over Agent/UDP now. Packet type for trace file is now settable from application. Source changes: agent.h, app.h, cbr_traffic.cc, errmodel.cc, expoo.cc, ivs.cc, packet.h, pareto.cc, rtp.cc, sa.cc,sa.h,scheduler.cc, telnet.cc, telnet.h, trace.cc, traffictrace.cc, trafgen.cc, udp.h, udp.cc, tcl/lib/ns-default.tcl, tcl/lib/ns-intserv.tcl, tcl/lib/ns-source.tcl. Removed cbr.h and cbr.cc.
- [johnh] Tue Aug 11 13:04:40 PDT 1998
  Portability fixes for HPUX from Ketil Danielsen Ketil.Danielsen@hiMolde.no.
- [haldar] Tue Aug 11 11:31:33 PDT 1998 Included validation test-suites for hierarchical routing: test-suite-hier-routing.tcl- runs 4 tests hier-simple, -cmcast, -deDM and -session.
- [haldar] Thu Aug 6 11:39:02 PDT 1998 Added scenario-generation library (~ns/tcl/scen-generation/ scen-lib) containing 3 congestion control scenario test cases (ref: Mark Handley's RM congestion control schemes).
- [johnh] Tue Aug 4 17:00:54 PDT 1998
  Re-wrote mem-trace.h to isolate the unportable code. Portions commented out for Windows platform based on feedback from John Vicente.
- [haldar] Wed Jul 29 17:20:08 PDT 1998 Created a holder for all traffic models and added many_tcp traffic model (~ns/tcl/lib/ns-trafficgen.tcl) as a part of ns/lib
- [LB] Tue Jul 28 16:41:29 PDT 1998 Added a validation test for the admission control algorithms and related intserv functionality.
- [LB] Thu Jul 23 15:50:14 PDT 1998 With Haobo Yu, fixed a bug in the Calendar Scheduler which only appeared to be a problem with very long running simulations.
- [haldar] Fri Jul 17 14:21:25 PDT 1998 Added topology semantics for agent distribution to scenario-generator - allows placement of agents on designated src and dest stub/locations for transit-stub topologies. Added hierarchical addressing support to topology generator.
- [PH] Mon Jul 13 18:23:53 PDT 1998
  added hierarchical routing support for session sim
  example: tcl/ex/newmcast/session-hier.tcl

### Release of ns-2.1b3 on Sat July 11 15:15:00 PDT 1998

- [XY] July 11 15:15:00 PDT 1998
  ns-2.1b3 Release.
- [PH] Fri Jul 10 17:54:49 PDT 1998
  added session simulator validation test
  tcl/test/test-all-session
- [johnh] Thu Jul 9 14:02:19 PDT 1998
  tclclassinstvars turned on by default.
- [KVa] Thu Jul 9 11:33:28 PDT 1998
  - Changed Connector instproc-like: dynamic to be isDynamic. This permits running the topology dynamics code in compatibility mode.
- [SF] Thu Jul 9 11:30:54 PDT 1998
  With Kevin Fall, added validation tests for Tahoe, Reno, NewReno, and SACK TCP to tcl/test/test-all-tcpVariants.
- [TH] Tue Jul 7 15:50:00 PKT 1998
  Added generic CBR traffic generator that can run on top of UDP agent. Added new API methods to existing CBR_Agent. New file: cbr_traffic.cc
- [johnh] Mon Jul 6 13:44:12 PDT 1998
  ./test-all (and related files) moved to tcl/test/test-all-simple.
- [johnh] Mon Jun 29 16:55:51 PDT 1998
  Manual routing test suite added; many_tcp fixed (due to chane in classifier-hash.cc)
- [TH, GN] Fri Jun 26 18:30:00 PKT 1998
  Revised API between Agents and Applications. Added new base class Application for all Sources and Traffic Generators. Added generic agent callback functions to base class Application. Added generic "socket-like" functions to base class Agent.
- [AH] Wed Jun 17 19:00:00 PKT 1998
  - Checked in the routing generator and the agent generator components of the scneario generator, at tcl/ex/{route,agent}-gen.tcl. For use, source these files and type 'routing -h' or 'agents -h' for more help. The agent generator currently supports TCP and SRM types (and their variants, attached sources, sinks and traffic models), in addition to a random distribution of the start/end times of tcp sessions and join/start times of SRM members/sources.
  - Modified the topology generator to add API that returns the number of nodes in a topology.
  - An example script that uses the scenario generator is under tcl/ex/agent-gen-script.tcl.
- [kfall] Mon Jun 15 17:58:06 PDT 1998
  - change error module so that if markecn_ is turned out, you do not also drop the packet if drop_ is set
  - changes to full-tcp (and support in bin directory), adding tracing of the congestion action bit which is now on all the time, even if ecn is not turned on
  - changes to full-tcp so that the slow-start due to long send idle periods aren't triggered if you are sending just acks
  - Tahoe and NewReno support for full-tcp (a few days back)
- [johnh] Wed Jun 10 17:58:06 PDT 1998
  - enabled MEMDEBUG_SIMULATIONS by default (in config.h)
  - added support for delayed binding (see tclcl's CHANGES for details) This is only enabled if you configure --enable-tclcl-classinstvar. (Only added support in Agent and NsObject.)
  - Fixed compiler warnings in cbq.cc, errmodel.cc, queue.h (meet gcc 2.7.2.3). Queue.h was an actual bug!
  - re-autoconf'ed
  - added memory tracing to many_tcp.tcl
- [johnh] Wed May 27 11:46:01 PDT 1998
  tcl/ex/many_tcp.tcl demonstrates large numbers of TCP flows using Manual routing. Run it with the -? option to see a description of its options and limitations.
- [floyd] Wed May 27 17:28:46 PDT 1998
  Added test-all-ecn to validate. I also added a "-a" option to bin/raw2xg for displaying the ECN flags.
- [kfall] Wed May 27 13:57:31 PDT 1998
  Bug-fix to tcp.cc to allow for doing "advance" to a number below curseq_. Bug-fix to List ErrorModel to fix up handling of "droplist" strings that contain extraneous spaces and white space.
- [johnh] Wed May 27 11:46:01 PDT 1998
  - "make tcl/lib/TAGS" now generates {o,}tcl tags.
  - tcl-expand.tcl now includes tags about what the files are
  - Simulator::node now generates nodes indirectly through Simulator::node_factory_
  - Node::mk-default-classifier is new node-specific code to create its classifiers
  - Manual routing is now possible (new Agent/rtProto/Manual, ManualRtNode)
  - DestHashClassifier exists
  - Classifiers can now be resized
  - more error checking added to classifier's installNext
- [AH] Sat May 23 22:24:00 PDT 1998
  - Checked in first cut of the topology generator part of the scenario generator package. It currently supports random and transit stub topologies generated by the GATech ITM generator. Check tcl/ex/topo-gen.tcl.
  - Checked in a topology viewer script, to enable viewing generated topologies before running the simulations, in tcl/ex/topo-view.tcl.
  - An example script for using the checked code is in tcl/ex/topo-gen-script.tcl, and the readme file is tcl/ex/topo-gen.txt.
- [johnh] Fri May 22 11:17:00 PDT 1998
  - Agent/TCP advance/advanceby/done commands are now documented in the man page.
  - Hierarchical routing renames: Simulator instproc {hier-,}node, HierNode instproc {hier-,}enable-mcast
  - Classifier instproc dump
  - SessionSim {bw,delay}_parse moved to Simulator
  - Simulator instproc nodes-to-link and Simulator instproc nodes-to-link? provide an abstract way to get link_($n1id:$n2id)
- [floyd] Wed May 20 17:37:59 PDT 1998
  Changes to one-way tcp implementations so that the TCP receiver sends the ECN-Echo packet to the TCP sender on multiple ACK packets. This approach is described in "http://www-nrg.ee.lbl.gov/floyd/ECN-TCP.txt". The change includes a new flag in the packet header, "cong_action_", a.k.a. Congestion Action, for the TCP sender to notify the TCP receiver that it has responded to congestion.
- [aswan] Mon May 18 15:31:45 PDT 1998
  Reworked RLM implementation. A single implementation is now shared between mash and ns. A subclass handles ns-specific RLM operation. See the documentation for the MMG class in otcldoc for further details.
- [kfall] Wed May 13 19:02:31 PDT 1998
  Many changes to FullTcp, including fixes to timestamps, re- structuring of dupack actions, fix an off-by-1 problem for window deflation. Also, changes for ECN [not yet fully tested] and addition of 5 new tests to test-suite-full.tcl.
- [floyd] Wed May 13 18:35:31 PDT 1998
  Changes to tcp-newreno.cc to make corrections in the interactions between Fast Retransmit and ECN. I also added a new validation test, "test-all-tcpVariants", to the ns "validate" test. It tests Tahoe, Reno, NewReno, and Sack TCP with one, two, three, and four packet drops. The validation test for ECN, "test-all-ecn", is still in progress.
- [floyd] Mon May 11 19:05:50 PDT 1998
  Changes to tcp.cc, tcp-reno.cc, tcp-sack1.cc, and tcp.h, to make small corrections in the interactions between Fast Retransmit and ECN, to avoid some unnecessary reductions of the congestion window. The ECN validation test "test-all-ecn" now documents the correct functioning of the Tahoe, Reno, and Sack1 ECN code. In addition, the Fast Retransmit code has been restructured, for readability. This is joint work with Kevin Fall.
- [kfall] Wed May 6 18:52:37 PDT 1998
  Changes to tcp.cc for ECN. ErrorModule now has "default" function which says what to do with packets that shouldn't be handled specially. Classifiers now have "findslot" fn which tells the slot# an object is in. Periodic Error Model now has 'burstlen' parameter that provides for bursty periodic losses, rather than just 1 pkt loss per period.
- [LB] Mon May 4 11:22:02 PDT 1998 Added nam trace functionality to admission control modules.
- [haldar] Wed Apr 29 10:25:45 PDT 1998
  - Revised the addressing format for ns as follows: Added API's for allocating bits to address fields. Default value being 8 bits for port (2^8 agents) and 7 bits for node address (2^7 nodes in a topology and 1 bit for mcast. The API allows to set address for multilevel hierarchy (for hierarchical routing), and expand the port bits to allow higher number of agents in a node. For details see ~ns/tcl/lib/ns-address.tcl
  - Added support for hierarchical routing.Currently hierarchical routing supports upto 3 levels of hierarchy. The gt-itm to hierarchical converter - sgb2hierns, is available from topology generation webpage for ns. Example scripts for hierarchical routing are available in ~ns/ex/hier-rtg-10.tcl and hier-rtg-100.tcl
- [SB] Tue Apr 28 14:30:08 PDT 1998 Added some patches so that ns-compiles with gcc version 2.8.1
- [floyd] Fri Apr 24 21:36:47 PDT 1998 Modified the tcp-init-win validation test, and added tcp-init-win to validate.
- [SB] Fri Apr 24 17:29:46 PDT 1998 Added support for 2 kinds of delay-adaptive receivers
- [johnh] Tue Apr 21 09:58:22 PDT 1998
  README is now up-to-date, html directory gotten rid of (it was quite old).
- [kfall] Thu Apr 20 19:40:37 PDT 1998
  Re-arrange some of Sally's changes to the various tcp's in support of initial window investigations. Update to tcl/rtmechanisms/rtm_reclass so you don't have to specify a topo in order to specify enable/disable.
- [floyd] Wed Apr 20 1998
  Added TCP variables "syn_", "windowInitOption_", and "tcpip_base_hdr_size_" for experimenting with the proposal for modified TCP initial windows in the internet-draft on "Increasing TCP's Initial Window".
- [johnh] Thu Apr 16 10:45:37 PDT 1998
  Configure now finds tcl/tk on Debian Linux (patch submitted by Jeffrey Austen <jausten@tntech.edu>).
- [SB] Mon Apr 13 10:52:51 PDT 1998 tcl/lib/ns-random.tcl : Added support to generate a normal distribution.
- [AH] Fri Apr 10 18:40:20 PST 1998
  - Added support for trace driven packet loss. Modified errmodel.h,cc to support TraceErrorModel and MrouteErrorModel.
  - Added support for exhaustive selective packet loss over lans. Modified tcl/mcast/ns-mlink.tcl and tcl/mcast/ex/newmcast/loss.tcl,types.awk.
  - Added an example of selective loss over lan test suite. Added tcl/ex/newmcast/pim-loss.tcl,pim-no-loss.tcl.
- [AMC] Wed Mar 25 20:23:42 GMT 1998
  - tcl/lib/ns-random.tcl: Bug fix, and exponential now takes optional argument mu.
  - config.h: int8_t would break under Solaris 2.6 (it's still a mess)
  - Makefile.in: Now tells you if you need to re-run configure.
- [SB] Wed Mar 18 12:03:35 PST 1998
  Added token bucket filter support
- [PH] Fri Feb 25 7:13:54 PST 1998
  Fixed minor bugs in sessionhelper.cc
  Added Packet Reference Count for SessionSim (more than 50% memory save for sim with large amount of trees, widely spanned trees, and high source rate.
- [SB] Fri Feb 20 12:13:58 PST 1998
  Added support for RLM
- [hari] Mon Feb 16 12:41:50 PST 1998
  - Lots of additions and mods for snoop version 2 and Explicit Loss Notifications (ELN).
  - Empirical wireless error models from real traces.
  - Restructured wireless link layer stuff.
  - Various changes for Win32 (actually checked in a few days ago (in 2.1b3) but unfortunately forgot to check in CHANGES.html then)
- [VNP] Wed Feb 11 19:55:34 PST 1998
  - Can invoke "configure" with --libdir=DIR to add to the library search path (changed Makefile.in).
  - Bunch of changes to {tcp-session,chost,tcp-int).{cc,h}, including the combination of fast start and TCP sessions.
- [SB] Mon Feb 9 13:00:14 PST 1998
  Added support for measurement based admission control for controlled load service.

### Release of ns-2.1b2 on Tue Jan 29 15:36:16 PST 1998

Release to make ns compatible with tcl/tk8.0p2 and to incorporate changes in nam-1.0a4 (version 1.0a3 was skipped). This release is CVS tagged with NS_2_1B2

- [padma] Tue Jan 29 15:33:49 PST 1998
  ns-2.1b2 release.
- [padma] Tue Jan 29 15:33:49 PST 1998
  The mcast test suite removed from the validation tests for now, to proceed with the ns release; mcast tests seem to be failing due to change in the order of the outputs in trace files while the output values by themselves are valid.
- [johnh] Wed Jan 28 16:06:49 PST 1998
  Configure now looks for tclsh (hopefully fixing the ``Simulator not found'' bugs which were due to empty gen/ns_tcl.cc files).
- [KVa] Wed Jan 28 14:05:09 PST 1998
  Typo in srm-adaptive.tcl:121, Agent/SRM/Adaptive::recompute-request-params{} pointed out by "Roger \"WOJA\" Kermode" <woja@media.mit.edu>
- [johnh] Tue Jan 27 10:47:24 PST 1998
  There were two ``default'' random number streams, one in Random and one in RNG. They're now unified. Test suites updated accordingly.
- [SR] Mon Jan 26 16:46:57 PST 1998
  - Added srm-topo.cc,h in main directory for large-scale simulations of the SRM timer algorithm
  - Also added example tcl scripts tcl/session/scaling-*.tcl.
- [TLT] Fri Jan 23 11:26:01 PST 1998 Fixes some problems with otcl namespaces in tcl 8.
  - proc class defined in ns-compat.tcl not found in global scope. This is because a procedure defined within an otcl instproc (or proc) becomes a procedure in ::otcl and NOT ::. The fix is to define the procedure as proc ::class.
  - info proc SplitObjectCompare not found. The info command finds only procedures in the *current* namespace. I added a second check for ::SplitObjectCompare before bailing out.
- [KF] Wed Jan 22 23:20:58 PST 1998
  Fix up test-suite-full.tcl to deal with quiet option. Check in test output for test-all-full.
- [KF] Wed Jan 21 22:20:58 PST 1998
  Change to tcp to record time in rtt_ts for rtt_update calls when not using actual timestamps. A number of changes to tcp-full to make the simul-close test work (esp. handling of fins and retransmitted fins).
- [johnh] and [visweswa] Wed Jan 21 14:37:07 PST 1998
  tcp-rbp was being too conservative in transmission after pacing ends. Also, the rbp test suite failed to honor QUIET (although it worked for the softer quiet). RBP saved tests updated.
- [johnh] Wed Jan 21 14:16:12 PST 1998
  test-suite-vegas-v1.tcl now supports a quiet option; rbp and vegas-v1 re-added to the validate script.
- [johnh] Fri Jan 9 13:51:57 PST 1998
  RBP test suite updated.
- [KF] Tue Jan 5 18:02:59 PST 1998
  Move emulation related files into emulate subdirectory, fix Makefile.in
  Also, mention full-tcp fixes (over last n weeks) here
- [KVa] Tue Dec 30 16:55:59 PST 1997
  - SRM base class...more functions are now virtual to support cleaner extensions.
    Files affected: ~ns/srm.{cc,h}
  - TTLchecker can be made to decrement ticks other than 1. Also, options to make it shut up about ttl exceeded.
    Files affected: ~ns/ttl.cc
  - Classifier adjacents return format is now reversed. The key is now the slot, the value is the object in that slot.
    Files affected: ~ns/tcl/lib/ns-lib.tcl
    NB:This breaks the multipath routing capability available in dynamic unicast routing. I think I fixed it but I haven't tested it out yet. If you are using this, drop me a line.
    Files affected: ~ns/tcl/lib/ns-node.tcl
  - Some pretty printing procs, f-time and f-node (*gag*)
    Files affected: ~ns/tcl/lib/ns-trace.tcl
  - The rtglib routines now use their own random number generator sequence.
    Files affected: ~ns/tcl/rtglib/route-proto.tcl, ~ns/tcl/rtglib/dynamics.tcl.
  - The Tcl level random number generator procedures use the defaultRNG directly.
    Fiels affected: ~ns/tcl/lib/ns-random.tcl.
- [johnh] Tue Dec 30 12:44:23 PST 1997
  CBR changes (finish method) reinstalled (they were accidently removed).
- [VNP] Thu Dec 25 13:23:35 PST 1997

- Added the "corrected" timestamp echo algorithm mentioned in TCP/IP Illustrated, Vol. 2, page 870. This algorithm is enabled only if ts_echo_bugfix_ is true (it is disabled by default).
- Files modified: tcp-sink.{cc,h}, tcp-asym-sink.cc tcl/lib/ns-default.tcl

- [VNP] Wed Dec 24 16:59:44 PST 1997

- Added tcp-session.{cc,h} (which implement TcpSessionAgent).
- Restructured IntTcpAgent to be a bare-bones TCP that only implements an ordered data stream abstraction. Congestion control and loss detection/recovery are done by TcpSessionAgent with the help of CorresHost.
- Added some test files for tcp-fs, tcp-asym, tcp-asym-fs and tcp-int to tcl/ex/tcp-fs. These still need to be cleaned up.

- [johnh] Fri Dec 19 16:14:20 PST 1997
  A rate-based pacing test suite.
- [SB] Fri Dec 19 12:09:25 PST 1997

- Changed ns-node.tcl and classifier.cc so that the classifier slot-table can be reused
- Added default shift/mask in tcl/lib/ns-default.tcl and config.h which would make it easier to configure a simulation with a different kind of addressing.
- Added ns at-now functionality in ns-lib.tcl
- Added a code line to fill up ch->timestamp in the function allocpkt in agent.cc
- Changed declaration of gettimeofday in rng.cc to make it work on Solaris
- Added warning messages in timer-handler.cc before abort() in functions cancel and sched

- [SM] Sun Aug 10 15:11:27 PDT 1997

- Added doc-hdr.html for otcldoc. This html stub is included at the top of index.html from the otcldoc output. We still need to create a Makefile rule for running otcldoc, but in the meantime you can run it manually as follows:

      	../tclcl/otcldoc -h doc-hdr.html tcl/*/*.tcl tcl/*/*/*.tcl

- Fixed up some of the formatting in this change history.

- [EA] Fri Nov 28 19:13:31 PST 1997
  - Fixed up scuba demos to work with new nam.
  - Fixed bug in namsupp where queues weren't being outputed.
- [johnh] Sun Dec 7 16:44:39 PST 1997
  A first cut at the Vegas test suite. Tests are very similar to ns-1.4 (after recv_newack_helper breakage was repaired), but are not quite identical (probably because of retransmit timer changes).
- [johnh] Fri Dec 5 17:41:15 PST 1997
  CBR advance and advanceby commands and the done method added and documented. Their usage is analogous to Tcp's.

  Also session-rtp.tcl's bw_parse now handles more cases like tclcl's atof_bw and added a time_parse.

- [VNP] Wed Nov 26 21:57:26 PST 1997

- Added a new member function REDQueue::pickPacketForECN() which is called when the RED algorithm decides to send an ECN notification. By default, this function picks the incoming packet.
- SemanticREDQueue calls the pickPacketForECN() function defined in SemanticPacketQueue, which picks a packet uniformly at random.
- Replaced the check $type == "RED" in ns-lib.tcl with one that just looks for the string "RED" in $type. This is to accomodate derived classes of REDQueue such as SemanticREDQueue.

- [hari] Tue Nov 18 17:22:12 PST 1997
  - Multi-state error models and restructuring of OTcl support code in tcl/ex/ns-errmodel.tcl (ns-ber.tcl now obsolete).
  - Some changes to LAN support code; in particular added code to have different types of LL protocols on the same LAN.
  Files: errmodel.{cc,h}, ns-errmodel.tcl, ns-lan.tcl, ns-default.tcl, ns-lib.tcl, snoop.tcl, (removed) ns-ber.tcl

### ns-2.1b1 November 11, 1997

Release to incorporate tracing features for nam-1.0a2. This release is CVS tagged with NS_2_1B1

- [SK] Tue Nov 11 18:29:44 PST 1997
  validate now runs only v2 tests. There's a new script validate-v1 to run v1 tests.
- [KVa] Tue Nov 11 12:40:44 PST 1997
  Minor updates:
  - Fix Simulator constructor to invoke parent constructor last,
    Also invoke use-scheduler instead of creating one directly,
  - Fix use-scheduler to be more careful about instance variables,
  - Add scheme for SRM agents to send log-scaled session messages based on groupsize, rather than fixed periodic messages,
    Use by setting ``Agent/SRM set sessionFunction_ "SRM/session/log-scaled"''
- [kfall] Mon Nov 10 16:54:52 PST 1997
  Update to ns-lib to have an intf to allocating and attaching flow monitors. Add this to the red test suite so that it may now re- produce what it did for ns1.
  Finish the v2 CBQ test suite. Validated output is still lacking.
- [johnh] Mon Nov 10 15:54:54 PST 1997
  Configuration for tcl/tk changed to search for tcl/tk-8.0 and fall-back on 7.6/4.2. The builder is responsible to make sure that the same tcl/tk is used to build otcl, tclcl, and ns. If you have both versions and want to force the old one, configure --with-tcl-ver=7.6 and --with-tk-ver=4.2 (or --with-tcl=/full/path/to/tcl7.6 etc.).
- [hari] Wed Nov 5 20:44:32 PST 1997
  - Massive changes to error model structures and error generation to make it work correctly. Three kinds of error models -- packet-based, byte-based, and time-based. Support code is in ns-ber.tcl (some common error models).
    Files: errmodel.cc, errmodel.h
  - Mods to snoop protocol incl. very preliminary first cut at congestion vs. corruption losses. Updated example script in tcl/ex/snoop.tcl (also uses util.tcl in the same directory).
- [SK] Wed Nov 5 19:07:12 PST 1997
  Major bug fixes made to detailedDM multicast routing protocol implementation. Added example scripts and documentation. Files affected: tcl/mcast/{detailedDM.tcl, timer.tcl} Files added: tcl/ex/newmcast/{detailedDM1.tcl, detailedDM1-nam.tcl, detailedDM2.tcl, detailedDM2-nam.tcl}
- [johnh] Wed Nov 5 19:03:00 PST 1997
  Validate changed to detect and report failed tests.
- [johnh] Wed Nov 5 18:29:13 PST 1997
  Agent/TCP set restart_bugfix_ is back to true by default (but not in v1-mode). ./test-all::telnet and ./test-all-red::red_twowaybytes: both changed (very slightly) and were updated.
- [PH] Mon Nov 3 15:59:56 PST 1997
  Checked in the codes to improve SessionSim scalibility and to enable multiple loss modules per tree. Files changed: sessionhelper.cc, tcl/session/session.tcl, tcl/ex/newmcast/session3.tcl
- [SK] Wed Oct 29 23:22:24 PST 1997
  Checked in new multicast code that adapts to network dynamics and supports LAN topologies Files added: tcl/mcast/{detailedDM.tcl, timer.tcl} (Copied tcl/ex/timer.tcl to tcl/mcast/timer.tcl)
- [johnh] Tue Oct 28 15:04:32 PST 1997
  Some test suite work:
  - validate: a new program in the top directory which runs all known test suites.
  - bin/fix_flow_id: sets flow-id to source/dest, or min of the two. The program raw2xg graphs trace output, optionally putting different flows into ``bands'' (when invoked with -s 0.01 -m 90). It wasn't clear what the definition of a ``flow'' was: was it the flow-id or the source? Kannan changed raw2xg to use flow-id (the Right Thing---that's why we have flow-id, isn't it?). This program (fix_flow_id) is the glue needed to map source or destination into flow id for those scripts that prefer banding based on sources.
  - test-suite-tcp.tcl was fixed to use fix_flow_id, making it work (it had been broken since 22-Oct-97).
- [johnh] Mon Oct 27 18:52:25 PST 1997
  Agent/TCP set restart_bugfix_ => false (temporarily).
- [hari] Sat Oct 25 23:24:56 PDT 1997
  Several changes, including some bug fixes:
  - Added a drop-from-front packet-drop policy to the RED and DropTail queue classes. DropTail now has 2 kinds of dropping policies (drop-tail, of course; and drop-front_) and RED has 3 (drop-tail_, which is the default; drop-rand_; and drop-front_).
    Files: drop-tail.{cc,h}, red.{cc,h}
  - TCP updates RTT from an ack only if no_ts_ flags is NOT set in packet header (it's usually not set, unless there's an ack reconstructor en route, see below). Also added TCP trace format control from Tcl, and derived TCP classes can define their own trace function.
    Files: tcp.{cc,h}
  - Added ack-recons.{cc,h} as a TCP ack reconstructor object (first cut). Sits on other end of constrained reverse link and intersperses (reconstructs) acks to the TCP source. Typically used in conjunction with schemes like ack filtering for asymmet ric networks.
    Files: ack-recons.{cc,h}, tcl/lib/ns-queue.tcl
  - Tracing tcp-asym-specific variables; controlling parameters from Tcl, fix for ACC to work with ECN. Added new test script with many changes from the previous version.
    Files: tcp-asym.cc, tcp-asym-sink.cc, tcl/ex/asym/asym.tcl, tcl/ex/asym/util.tcl
  - Modified output of telnet test to warn about irreproducibility. Modified test suite to reflect config changes of RED gateways.
    Files: test-all, test-suite.tcl
  - Some bug fixes and other changes in Mac/Multihop code.
    Files: mac-multihop.{cc,h}, tcl/lan/ns-mac.tcl
  - Semantic packet queues: various bug fixes, memory leak fixes, mods for ack reconstructors, random drops, other configurational changes (control from Tcl).
    Files: semantic-packetqueue.{cc,h}, queue.cc
- [KVa] Thu Oct 23 13:09:11 PDT 1997
  SRM fixes, from Christoph Haenle <christoph@starburst.com> and Haobo Yu <haoboy@isi.edu>.
- [johnh] Wed Oct 22 21:20:57 PDT 1997
  Some ns TcpAgent changes:
  - restart_bugfix_ is on by default (and turned off in ns-compat)
  - finish_ command is been replaced by the done method (which is now documented in the man page) This saves 100 bytes of memory per TCP object.
  - there are now macros T_{RTT,SRTT,RTTVAR}_BITS which symbolically say how these fixed point values are represented (if someone thinks C++ constants would be better, I'd love to see them changed) (I only checked tcp.cc for these magic numbers.)
- [johnh] Wed Oct 22 21:18:33 PDT 1997
  tcp-rbp bug fixes for Agent/TCP/Reno/RBP: prevent bursting after pacing, properly compute pacing interval. New rbp_demo.tcl.
- [KVa] Wed Oct 22 13:58:15 PDT 1997
  Minor cleanup following the crash.
- [KF] Mon Oct 20 19:56:51 PDT 1997
  - The tcp-full.cc is updated to incorporate some of (but not yet all of) the changes from Kathie Nichols/Van.
  - the test-suite-full.tcl uses misc.tcl and topologies.tcl
  - test-suite-full.tcl also uses 2 new tcl programs:
    bin/tcpfull-summarize.tcl
    bin/cplot.tcl
    The first file grinds on {for now} full tcp traces and produces generic output files containing traces of segments, acks w data, pure acks, and drops.
    The cplot.tcl file is more generic, and takes a set of pairs of plot_file_names/labels, plus a type of graphics program, and a title. It produces graphics using either gnuplot or xgraph, where this decision is based on the assignment of the "NSOUT" envariable.
    So, if you say "setenv NSOUT xgraph" and run test-all-full (or do some other invocation of ./ns test-suite-full.tcl xxx), you will get xgraph windows. If you set NSOUT to gnuplot, you will get x11 gnuplots in front of you. Eventually I will extend this to produce postscript for inclusion in documents; as it was sort of put together with extensibility in mind.
- [SK] Sun Oct 19 23:56:51 PDT 1997
  Checked in multicast validation tests. Files added: test-all-mcast, test-all-template-mcast, test-suite-mcast.tcl, test-output-mcast/{CtrMcast1.Z, DM1.Z, DM2.Z, DM3.Z, DM4.Z}
- [johnh] Sat Oct 18 20:28:37 PDT 1997
  Random number seed starts at 1; RBP now uses srtt rather than rtt; configure now checks for perl.
- [SF] Sat Oct 18 14:39:35 PDT 1997
  - Made a bugfix so that maxburst now works correctly with SACK1 TCP.
  - Automatic validation tests in tcl/test now include the following: test-all-red, test-all-sack, test-all-schedule, test-all-tcp, test-all-red-v1, test-all-cbq-v1, test-all-sack-v1, and test-all-v1.
- [KF] Fri Oct 17 11:29:10 PDT 1997
  First cut at changing the fullTCP test suite over to the "simplified" version (using tcl/test/misc.tcl).
- [SF] Fri Oct 10 19:29:10 PDT 1997
  A few more small changes to code for retransmit timers. Added new configuration variables for setting initial values for retransmit timers. (The CVS log for these changes and other changes made after Oct. 2 was wiped out in the disk crash of Oct. 10.)
- [SF] Wed Oct 8 21:16:36 PDT 1997
  - Added tracing of number of transmitted and retransmitted packets to TCP, and added a new variable for window initialization after a timeout, for research on TCP window initialization, both based on code contributed by Kathie Nichols and Van Jacobson.
  - With Kevin Fall, made the following changes to TCP's retransmit timers: The default is now that average roundtrip times are recomputed once a window, not once every packet; changed initial values of retransmit timers; brought the functionality more in line with that of actual implementations.
- [PH] Wed Oct 8 17:22:44 PDT 1997
  Added simple queue and ttl checker modules for SessionSim
- [SF] Mon Oct 6 13:48:10 PDT 1997
  Bug fix for ns-compatibility mode for CBQ. Code contributed by Greg Minshall, minshall@acm.org.
- [mjh] Fri Oct 3 12:59:37 EDT 1997
  Changed nam tracefile code to generate more Tcl-like format
- [johnh] Thu Oct 2 13:46:29 PDT 1997
  Default scheduler changed to List in backwards compatibilty mode.
- [SF] Wed Oct 1 14:41:13 PDT 1997
  Changed the default RED behavior when queue is full from random-drop to drop-tail.
- [SF] Mon Sep 29 16:51:33 PDT 1997
  Added an ECN-Capable flag to the packet header (ecn_capable_), and modified tcp.cc and red.cc to set and check it.
- [PH] Fri Sep 19 15:19:08 PDT 1997
  - modified SRM example scripts, tcl/ex/srm-*.tcl, to use error model instead of rtmodel.
  - added equivalent SRM example scripts using session level simulator. tcl/ex/srm-*-session.tcl
  - made changes to errmodel.cc to add specific error model for the SRM scripts.
  - made changes to tcl/session/session.tcl so it parses link bandwidth and delay in various units.
  - (previously done)fixed a bug between rtmodel and DM multicast.
  - (previously done)fixed API in the multicast example scripts.

### ns-2.0 Sep 10, 1997

Release for the SIGCOMM tutorial.

- [haoboy] Thu Sep 11 18:35:24 PDT 1997
  Support for Mark's new nam trace file format. All events except routing are supported. It requires updates of Tcl.cc, which is already checked in. The document of new trace file format is here. An example script is at `tcl/ex/nam-example.tcl`
  Also minor changes to nam-1 to make down link more visible.
- [johnh] and [haoboy] Wed Sep 10 22:51:33 PDT 1997
  2.0 release.
- [KVa] Tue Sep 9 23:48:19 PDT 1997
  Moved drophead_ to the base simplelink class. Added $link ttl-drop-trace, linkfail-drop-trace, and transit-drop-trace. usage is as:

              $link ttl-drop-trace [FilePointer]

  If FilePointer is not specified, it defaults to using the drophead_

  Also made ttl.cc, delay.cc and dynalink.cc use drop-targets uniformly

- [VNP] Wed Sep 10 00:58:35 PDT 1997
tcp-newreno.cc: moved the code in recv() that handles the case of partial new acks into a separate function called partialnewack_helper(). This allows derived classes, such as tcp-fs, to do redefine this function to do additional processing upon receiving a partial new ack. Files affected are tcp-newreno.cc, tcp-fs.cc and tcp.h.
- [KVa] Tue Sep 9 23:48:19 PDT 1997
  Minor updates to rtglib, moved things into rightful places. cleanedup the binaries.
- [johnh] Mon Sep 8 14:54:58 PDT 1997
  Changed default scheduler from List to Calendar. Many test suites changed in minor ways due to different scheduling of packets with identical timestamps. Test outputs updated: bug, delayed, no_bug, phase, phase1, reno2, reno3, reno5, renoA, stats, tahoe3, tahoe4, telnet, timers.
- [johnh] Mon Sep 8 14:06:47 PDT 1997
  Changed default random number generator to internal rng (rather than external srand/random). Updated test-output/{telnet,reno4,reno4a,phase2}. Random number generation should now be consistent on all platforms.
- [PH] Mon Sep 8 12:45:09 PDT 1997
  Check in the entire automatic loss dependency insertion module. See tcl/ex/newmcast/session3.tcl for an example. Files changed: tcl/session/session.tcl, errmodel.cc, tcl/ex/newmast/session3.tcl
- [johnh] Mon Sep 8 11:16:53 PDT 1997
  Updated test-output/{phase1,reno2,reno3,reno5,timers} wrt Kevin's timeout change from Monday, August 25.
- [PH] Fri Sep 5 21:21:11 PDT 1997
  - Ported Scalable Session Messages(SRM-SSM) codes from Puneet Sharam
  - Also ported selective error models for SRM-SSM test scripts. Files changed: errmodel.[cc,h]
  - Added helper functions to trace memory consumption in stack and heap area. Users need to compile ns with -DMEMDEBUG_SIMULATIONS in Makefine DEFINE field. Example script:tcl/ex/newmcast/cmcast-50.tcl Files added: mem-trace.h. Files changed: tclAppInit.cc scheduler.cc ns-lib.tcl
  - Fixed a minor dense mode multicast bug
  - Changed duplex-link-of-interfaces in tcl/ex/newmcast scripts to duplex-link
- [johnh] Fri Sep 5 13:25:45 PDT 1997
  Converted --with-Tcl to --with-TclCL (incompatible change wtih 2.0b17).
- [hari] Thu Aug 28 11:43:13 PDT 1997
Mainly 2 bug fixes:
1. Accounting of ack_count in filteracks
2. Big memory leak because packets weren't being freed correctly in filter.
Files affected: semantic-packetqueue.{cc,h}

- [VNP] Mon Aug 25 20:52:30 PDT 1997

- Added tcp-fs.cc: TCP enhanced with "fast start" to enable a connection to quickly resume after an idle period. A more detailed description can be found in the source file itself.
- Added semantic-red.cc: a version of RED that allows certain operations (at present, pickPacketToDrop()) to be dependent on higher-layer semantics.
- tcp{,-fack}.cc: Added a new case ("3") to the switch in closecwnd() that resets cwnd_ to 1 but leaves ssthresh_ unchanged. This is invoked by the TCP timeout code if there is no outstanding data and if restart_bugfix_ is set.
- tcp.cc: If we are just coming out from an idle period, rtx timer is forced to be set again in output().
- tcp(,-reno,-newreno}.cc: moved code that handles non-rtx timeout events into a new function timeout_nonrtx(). This enables derived classes to make additions or modifications to the handling of non-rtx timeouts without being forced to duplicate the rtx timeout code.
- tcp-fack.cc: fack_ is updated in oldack() as well.

- [Kevin Fall] Mon Aug 25 13:27:11 PDT 1997
  Change timeout initialization in tcp.cc:rtt_timeout(). Old code: ((srtt>>3)+rttvar)*tick new code ((srtt>>3)+rttvar+1)*tick Fix contributed by Kathie Nichols w/Van.
- [hari] Sun Aug 24 18:10:50 PDT 1997
  TCP with integrated congestion control and loss recovery. This helps to perform congestion control and loss recovery between communicating hosts on a per-host, rather than per-connection, basis. This is beneficial for Web-like workloads and in other situations where multiple, logically different TCP transfers may be in progress between two hosts simultaneously. With IntTcpAgent, these logically different connections would share the same cwnd, srtt, etc. for better congestion control; in addition, data-driven loss recovery is improved as well. Support for "proxy" hosts, acting on behalf of many users, is also included.
  Files: tcp-int.{cc ,h} : Integrated TCP agent.
  chost.{cc,h} : Per-host congestion control and loss recovery. The relevant TCP control block variables are maintained on w.r.t. each "Corresponding Host".
  nilist.{cc,h} : Generic linked list routines.
- [johnh] Tue Aug 19 15:27:11 PDT 1997
  Initialization bugs in Vegas fixed. Code contributed by Lars Eggert.
- [johnh] Tue Aug 19 13:26:32 PDT 1997
  configure.in.Tcl -> configure.in.TclCL
- [johnh] and [LB] Fri Aug 15 16:18:39 PDT 1997
  New random number generator (rng.{cc,h}). Code to use the RNG is in Random.{cc,h} but currently ifdef'ed out.
- [EA] Thu Aug 14 11:19:36 PDT 1997
  Added 'flash_annotate t d m' helper function that flashes a session level message m in the nam window starting at time t for duration d.
- [TH] Wed Aug 13 17:20:00 PDT 1997
  Unified the way that timers are implemented in ns, by using the abstract timer base class defined in timer-handler.h. This simplifies the Agent base class by removing the timer methods there. Files affected: agent.h, agent.cc, tcp.h, tcp.cc, tcp-sink.h, tcp-sink.cc, tcp-sack1.cc, tcp-asym.cc, tcp-asym-sink.cc, tcp-fack.cc, tcp-vegas.cc, tcp-full.h, tcp-full.cc, cbr.h, cbr.cc, udp.h, udp.cc, rtcp.cc, rtp.cc.
- [johnh] Tue Aug 12 10:30:26 PDT 1997
  class Samples now has a newpoint tcl command (code contributed by Ted Faber <faber@isi.edu>)
- [johnh] Tue Aug 12 16:19:51 PDT 1997
  Links now have a (documented!) trace-callback option to trace to a callback function.
- [KF] Mon Aug 11 14:00:27 PDT 1997

- Fixed (yet another) problem with sack/tcp-sink where the # of sack blocks initialized properly. (reported by Venkat Padmanabhan).
- Changed CBQ so that maxidle_ can be automatically determined, as in ns-1
- Fixed buffer overflow bug in flow monitor, caused by using tcl.resultf("%s", ptr) instead of tcl.result(ptr), where ptr points to a big string.

- [SM] Sun Aug 10 15:11:27 PDT 1997

- Fixed up PacketManager initialization code (in ns/lib/ns-packet.tcl) so that modules that define packet header classes can be safely ommitted from the build. Previously, an error would occur if the corresponding class didn't exist. This new structure catches the case where the tcl code is out of date with respect to a packet header defined in C++. As a result, two new bugs were found and fixed: the ``aSRM'' and ``Tap'' packet header classes previously did not have the appropriate initialization code in ns-packet.tcl.

- [AH] Sun Aug 10 02:05:12 PDT 1997
  - Major changes and fixes to the pim-sm code in tcl/pim; pim-init.tcl added trace functions, pim-messagers.tcl tracing for protocol actions, pim-mrt.tcl updates, pim-recvr/sender.tcl support for asserts and prune-overrides (for LAN operation), pim-vifs.tcl added joining source-group pairs for source-specific trees (leave fix, also).
  - Added a first test-suite for pim-sm in tcl/ex/newmcast/pim-test-suite-1.tcl. This covers 6 basic scenarios for the pim protocol behavior to stress pim. [note: pim1.tcl does not work due to the way CBR source allocates packets, and interaction with pim encapsulation].
  - Added functions for clearing mcast forwarding caches in classifier-mcast.cc.
  - Major change to tcl/mcast/McastProto.tcl to support well-known-groups for local multicast on LANs. Also changes to ns-mcast.tcl for various fixes and source-group-joins.
- [SM] Sat Aug 09 11:49:33 PDT 1997

- First cut at port to win32 API (should work under both Windows 95 and NT).
- This version still limps ... the new Windows makefile (makefile.vc) needs much more work.
- This rev requires the latest TclCL (new name for libTcl) since several changes were required by the fact that Windows file names are case insensitive.

- [PH] Thu Aug 7 19:53:17 PDT 1997
  - Added delay models for session level packet distribution. Files added: delaymodel.[cc,h]
  - Modified structure of 'virtual links'. Loss and delay modules can be inserted flexibly. Example script to insert loss module: tcl/ex/newmcast/session3.tcl.
  - Added helper functions to monitor packets in transit. Example script: tcl/ex/newmcast/pktintran.tcl
- [TH] Thu Aug 7 12:47:34 PDT 1997
  Redid tcp-full.cc timers to conform to the C++ timers defined in timer-handler.cc.
- [PH] Mon Aug 4 17:59:32 PDT 1997
  - Added session level packet distribution(1st pass). Files added: sessionhelper.cc, tcl/session/session.tcl, and example scripts tcl/ex/newmcast/session*.tcl.
  - Modified tcl/ex/mcast.tcl and tcl/ex/newmcast/*.tcl example scripts to be consistent with the current API.
- [KF] Thu Jul 31 12:09:34 PDT 1997
  - add a max bound on the TCP rto (maxrto_), default is 64 sec (like bsd)
  - modifications to the compat library to allow constructs of the form "set ns_foo(bar) 3" to change global defaults.
  - add a (hacky) way to support the ns-1 style of creating cbq classes (i.e. "[new class]") which OTcl really doesn't like much.
  - increase wrk_ array in the flow monitor and check bounds on it
- [KF] Tue Jul 29 15:56:34 PDT 1997
  Fixed bug in TCP Sack sink which made the initialization of max_sack_blocks unpredictable (changed tcp-sink.{cc,h}). Also, removed redundant default for this variable in ns-default.tcl.

- [LB] Tue Jul 29 14:31:34 PDT 1997
  ported ability to limit the amount of data sent by a CBR source (maxpkts_) from ns-1 to ns-2. Files changed: cbr.cc, cbr.h.

### ns-2.0b17 Fri, 25 Jul 1997 22:50:34 -0700

Release for the ns retreat. This release is CVS-tagged with ``NS_2_0B17''.

- [johnh] and [KF] Fri Jul 25 17:29:12 PDT 1997
  ns-compat now catches access to old default variables (like ns_tcp(window)). This approach is a stop-gap, eventually we could map the old reads/writes to the new variables if we think we must.
- [johnh] Fri Jul 25 17:00:00 PDT 1997
  Configure now checks for libTcl-1.0b2.
- [SK] Fri Jul 25 12:49:36 PDT 1997
  Made modifications to remove MultiSim and MultiNode. Files affected: ns-lib.tcl, ns-node.tcl, ns-mcast.tcl, CtrMcast.tcl
- [SF] Fri Jul 25 11:18:16 PDT 1997

- Changed tcp-sack1.cc to correctly use the receiver's advertised window during Fast Recovery.

- [VNP] Fri Jul 25 02:32:43 PDT 1997

- Added semantic-packetqueue.{cc,h}: a derived class of PacketQueue that understands higher-layer (e.g., TCP) semantics. To enable the creation and configuration of a PacketQueue/Semantic object in Tcl, PacketQueue is now derived from TclObject.
- tcp*.{cc,h}: Got rid of the return-by-reference functions for the traced member variables of TcpAgent.

- [LB] Thu Jul 24 16:02:27 PDT 1997
  Ported telnet source from ns-1 to ns-2. new files: telnet.{cc,h}. Changed files: tcp.{cc,h}, ns-agent.tcl, ns-source.tcl, ns-default.tcl
- [VNP] Thu Jul 24 02:08:31 PDT 1997

- tcp.{cc,h}: Got rid of the old-style tracing and replaced it with Giao's TracedVar stuff. It is no longer necessary to use the return-by-reference functions to refer to the traced variables (e.g., cwnd() instead of cwnd_), but this will still work for now.

- [VNP] Tue Jul 22 02:13:12 PDT 1997

- tcp.cc: finish() is called whenever there is no unacknowledged data
- tcp{,-reno,-newreno,-fack}.cc:

- rtx timer is NOT backed off at the time of fast retransmission
- during fast recovery mode, we compare new ack with recover_ only if recover_cause_==1

- tcp-fack.h: separate file for definition of FackTcpAgent to enable derived classes
- tcp-nonfifo.cc: added support for priority drop
- red.cc: moved code that picks drop victim into pickPacketToDrop(). This allows derived classes to use a different algorithm for this.
- queue-monitor.{cc,h}: option to exactly trace queue length (rather than just sample it)

- [KVa] Thu Jul 17 08:16:16 PDT 1997
  - srm.cc/srmAgent::recv() did not free packets appropriately, causing wastage of memory for large simulations. (Noted by Puneet)
  - streamlined bin/raw2gp to attempt to unify the raw2* programs.
- [KVa] Tue Jul 15 14:44:19 PDT 1997
  Minor bug fixes in rtglib, and raw2xg.
- [TH] Mon Jul 14 15:05:09 PDT 1997
  Ported fulltcp.cc, fulltcp.h, and test-suite-fulltcp.tcl. New files: tcp-full.cc, tcp-full.h, and tcl/test/test-suite-full.tcl. Changed files: trace.h, trace.cc, tcp.h, ns-compat.tcl, ns-default.tcl, ns-source.tcl.
- [KVa] Fri Jul 11 09:53:33 PDT 1997

Major Updates: SRM

- Adaptive Timers as described in [Floyd etal. sigcomm '95]
  Files Affected: tcl/mcast/srm-adaptive.tcl (new), srm.cc, srm.h, tcl/ex/srm-adapt-req.tcl (new), tcl/ex/srm-adapt-rep.tcl (new)
- Cleanup of the tracing in srm.tcl
- Added tcl/mcast/srm-nam.tcl, so that, if sourced, will separate SRM packets based on the type of packet. Data messages will have flowId_ 0, session, request and repair messages have flow ids 40, 41, and 42 respectively. The start number is specified by the global variable, `ctrlFid_`.
- Cleanup of the example scripts in tcl/ex. See tcl/mcast/srm.txt for details.

- [KVa] Fri Jul 11 09:53:33 PDT 1997
  Minor mods

- Hooks for DelayLink object to have a drop-target. Currently no OTcl support yet. Should be there when I get around to it... someday... maybe...
  Files Affected: delay.cc, delay.h
- Cleanup compile time errors in scheduler.cc, scheduler.h.
- The default static routing now takes a cost parameter; it is now possible to do asymetric paths by configuring link costs appropriately.
  Files Affected: route.cc, tcl/lib/ns-lib.tcl
- Bug fixes to proc gen-map() in tcl/lib/ns-trace.tcl.
- Fix multicast-rtglib interaction API.
  Files Affected: tcl/mcast/McastProto.tcl, tcl/mcast/ns-mcast.tcl, tcl/mcast/dynamicDM.tcl, tcl/rtglib/route-proto.tcl.
- Bug fix to proc all-connectors() in rtglib. Routine did not instance the appropriate variable. Hence, links did not drop packets in flight when a link fails (hey, this may be a feature... :-)
  Files Affected: tcl/rtglib/dynamics.tcl.
- Created a *hacky* loss module to fake periodic loss of packets. (maybe I can sneak it in if I use real small print, and hope no one notices...).

- [johnh] Wed Jul 9 15:16:42 PDT 1997
  RBP updates, including Agent/TCP/Reno/RBP.
- [LB] Thu Jul 3 12:37:09 PDT 1997
  Created RandomVariable class, a pure virtual class for random variables, and derived classes for Uniform, Constant, Pareto, Exponential and HyperExponential distributions. New files: ranvar.{h,cc}, tcl/ex/ranvar.{tcl,txt}. Changed files: ns-random.tcl, ns-default.tcl.
- [KF] Wed Jul 2 20:37:33 PDT 1997
  Add the "flowmon" module and update supporting scripts in tcl/rtmechanisms. This module is able to keep per-flow state. A flow is defined by creating a classifier (typically of the classifier-hash variety) and giving it to the flowmon. Examples are to be found in the rtmechanisms directory. Files affected:

- flowmon.cc -> new functionality
- tcl/lib/ns-default.tcl -> defaults for Flow and Flowmon
- tcl/lib/ns-queue.tcl -> rework the way CBQ handles drops
- tcl/lib/ns-lib.tcl -> add hack to allow specification of a classifier object with a CBQ or CBQ/WRR queue type when creating a "simplex-link"
- Makefile.in -> include flowmon.o
- FILES -> add flowmon.cc + rtm stuff

- [PH] Fri Jun 27 20:13:23 PDT 1997

- Added a general mcast control message agent(a 1st pass) to make tracing easier: prune.[h, cc]
- Fixed minor bugs in dynamicDM and pimDM

- [PH] Wed Jun 25 18:19:07 PDT 1997

- Added dynamic DVMRP and PIM-DM multicast: tcl/mcast/[dynamic, pim]DM.tcl
- Cleaned up mulicast API(1st pass): tcl/ex/newmcast/mcast[1,2].tcl

- [SK] Mon Jun 23 13:19:15 PDT 1997
  Added man page for ns-2.
- [johnh] Thu Jun 19 20:03:35 PDT 1997
  tcp-rbp and friends added. Rate-based pacing is an experimental addition to TCP to address the slow-start restart problem. See <http://www.isi.edu/lsam/publications/rate_based_pacing/index.html>for details.
- [johnh] Thu Jun 19 20:00:51 PDT 1997
  raw2xg updated with more features (better usage and -qs:m: options).
- [johnh] Thu Jun 19 20:00:28 PDT 1997
  agent-timer.{h,cc} implements timers for agents with classes (rather than pending_[] and timer_[]).
- [GN] Thursday, Jun 19 16:03:23 PDT 1997
  Minor enhancement to scheduler to make debugging easier by using the uid_ field of each event: positive uid_: inside the scheduling queue negative uid_: NOT in the scheduling queue
- [johnh] Mon Jun 16 17:18:46 PDT 1997
  Added TCP Vegas (ported from Ted Kuo's implementation for ns-v1). Changed TcpAgent::send to TcpAgent::send_much.
- [EA] Mon Jun 16 11:15:45 PDT 1997
  Added simple simulation-level annotation (ns-trace.tcl, trace.cc).
- [GN] Friday, Jun 13 19:03:23 PDT 1997
  Daedalus Research Group extensions by: Giao Nguyen, Hari Balakrishnan, Venkata Padmanabhan.

- LAN and wireless networks:

- Link-layer protocols:
  simple stop-and-wait protocol
  TCP-aware snoop protocol
- Scheduling algorithms at LAN interface queues
- MAC protocols:
  CSMA/CD (10 Mbps Ethernet)
  CSMA/CA (WaveLAN)
  IEEE 802.11
  Metricom's Ricochet MAC
- Shared channel with wireless error models

- TCP router enhancements for asymmetric networks
- Tracing of TCP variables

- [johnh] Fri Jun 13 18:06:33 PDT 1997
  Added slow_start_restart option to TcpAgent.
- [EA] Fri Jun 13 17:18:13 PDT 1997
  Added SCUBA protocol module in tcl/rtp. Added some demos in ex/scuba.
- [KF] Thu Jun 12 12:32:31 PDT 1997

Small change to conf/config.head.in to look for socket() rather than poll() when searching for the -lsocket library. Also a new version of the configure script based on this.

- [SM] Wed Jun 11 11:49:28 PDT 1997

Bug fixes to emulation rig. Previous version didn't properly account for the fact that external events (i.e., packet arrivals) could come before the next future event. Now, the scheduler sets a tcl timer to advance time (instead of waiting in a null select) and the tap-agent sync's simulation time to real time when an external packet arrives.

- [PH] Wed Jun 11 09:34:33 PDT 1997
  Changed centralized mcast test files to use MultiNode expandaddr option, provided by Lee Breslau. It solves the limitation that MultiSim only allow 128 unicast nodes. Also, made minor changes to reduce memory used in simulations File changed: tcl/ex/newmcast/cmcast-[50,100,150,200,250].tcl.
- [PH] Mon Jun 9 15:59:01 PDT 1997
  Bug fix: Changed CtrMcastComp:compute-branch() to work in source = RP case for RPT. File changed: tcl/ctr-mcast/CtrMcastComp.tcl.
- [TH] Mon Jun 9 15:00:34 PDT 1997
  Bug fix: Changed Newreno::recv() static variables acked, new_ssthresh, ack2, ack3, and basertt to be class member variables. File changed: tcp-newreno.cc.
- [LB] Sun Jun 8 14:09:16 PDT 1997
  Provided a fix so that more than 127 nodes can exist in a simulation that uses both unicast and multicast transport. Also added a proc to allocate unique multicast addresses. File changed: tcl/mcast/ns-mcast.tcl
- [TH] Fri Jun 6 17:30:16 PDT 1997
  Ported tcp-fack.cc from ns-1 to ns-2. File added: tcp-fack.cc.
- [KVa] Thu Jun 5 09:24:50 PDT 1997
  ktest-all will stored compress files in test-output-raw, to save space.
  minor mods to srm test suite, documentation in srm.txt.
  minor bug fixes in srm.
- [KVa] Tue Jun 3 14:08:45 PDT 1997
  Major mods SRM for ns
  Currently, some of the fixed timer functions have been implemented. The adaptive functions, as well as local recovery mechanisms will be coming along soon.
  An earlier almost entirely C++-based version (ported from the ns-1 implementation) is also checked in, tagged, and overwritten. It can be accessed by vint members should they want to take a look at it later.
  Files affected: new files: srm.cc, srm.h, srm-state.h, tcl/mcast/srm.tcl, tcl/mcast/srm-debug.tcl, tcl/mcast/srm-debug++.tcl, tcl/ex/simple-srm.tcl, tcl/ex/srm2.tcl, tcl/ex/srm_star.tcl, tcl/ex/simple-srm-nam.tcl, tcl/ex/srm2-nam.tcl, tcl/ex/srm_star-nam.tcl. Also modified: Makefile.in, trace.h, tcl/lib/ns-packet.tcl.
- [KVa] Tue Jun 3 14:08:45 PDT 1997
  Bug fixes in rtglib:

- dynamics.tcl: rtModel/Manual did not work. Fixed, and tested. This code is now used in tcl/ex/srm2.tcl and tcl/ex/srm_star.tcl to create ``interesting'' single packet drops.
- route-proto, RouteLogic::lookup would return OIDs when dynamic routing is enabled, which breaks the multicast. (It now breaks when equal cost multipath routing is used, which needs to be fixed, to make multicast happy).
- The new interfaces code defines additional instance variables to point to nodes. Link dynamics wants to reset most everything (except nodes). Resetting nodes can do bad thigns to agents.

- [KVa] Tue Jun 3 14:08:45 PDT 1997
  minor fixes:

1. In C++, Stoustrup [sic] recommands that array storage should be freed as "`delete[] variable`", instead of simply "`delete variable`". Changes made to AtHandler::handle(), Scheduler::command(), and RouteLogic::compute_routes().
2. Fixed annoying compiler warnings when used with -Wall in gcc.

- "member initializers for <member1> and <member2> will be re-ordered to march declaration order." warnings fixed in packet.h, classifier-hash.cc, trace.cc, and queue-monitor.h.
- "control reaches end of non-void function" fixed in Replicator::classify(Packet*) and QueueMonitor::command(int, const char*const*)
- "suggest parentheses around assignment used as truth value" fixed in delay.h

3. configure.in.head should not set -O2 if the .devel file is present. Furthermore, as Johnh noted, -O2 is only relevant for gcc, so we really should fix this better.
4. RouteLogic now only works in the context of a Simulator. Fix route-test to instantiate a dummy Simulator.
5. Test Suites Modified misc.tcl and topologies.tcl to add hooks for a multicast test suite.
   ns-trace.tcl:gen-map did not show enough information within a node, for example inside a MultiNode.
6. Changed simplex-link, duplex-link to directly generate interfaces when told. Use by

            Simulator set NumberInterfaces_ 1

- [johnh] Thu May 30 1997
  Added support for dmalloc for memory debugging. Configure using `--with-dmalloc`.
- [johnh] Thu May 27 1997
  Revised configure scripts to eliminiate code duplication.
- [TH] Tues May 27 19:00:00 PDT 1997

- Renamed test-suite-v2.tcl and test-all-v2 to test-suite.tcl and test-all, respectively. These files were also aligned with Kannan's tests in the tcl/test directory.
- Moved existing test-suite.tcl to tcl/test, renaming it as test-suite-v1.tcl. Moved existing test-all to tcl/test/test-all-v1.
- Moved test-suite-cbq.tcl, test-suite-red.tcl, and test-suite-sack.tcl to tcl/test and appended them with "-v1" suffix. Made similar moves for test-all-cbq, test-all-red, test-sack, and test-all-sack.

- [TH] Tues May 27 16:45:00 PDT 1997
  Fixed bug in tcp-newreno.cc which was causing TcpAgent::recv to be called instead of NewRenoTcpAgent::recv. This bug has been present since the initial revision of ns-2.
- [LB] Fri May 23 15:46:16 PDT 1997
  Fixed a bug in CalendarScheduler::cancel() that corrupted the calendar data structure and caused the simulator to crash. Also improved the efficiency of that function. File changed: scheduler.cc
- [PH] Thu May 22 18:03:36 PDT 1997

- Added larger scale test files. tcl/ex/newmcast/cmcast-[100,150,200,250].tcl, tcl/ex/newmcast/cmcast-big.txt

- [PH] Thu May 22 13:33:56 PDT 1997

- Moved agents that handles IP mcast packet encapsulation and decapsulation to C++.
- Added a centralized mcast example that uses only source specific trees. tcl/ex/newmcast/cmcast-spt.tcl
- Added prune propagation for dense mode mcast. Patch provided by Isidor Kouvelas and Lorenzo Vicisano (actually this change was committed two days ago)
- Files added: ctrMcast.cc, ctrMcast.h, tcl/ex/newmcast/cmcast-spt.tcl
- Files changed:tcl/ctr-mcast/CtrMcast.tcl, tcl/ctr-mcast/CtrMcastComp.tcl, tcl/lib/ns-packet.tcl, trace.h tcl/mcast/ns-mcast.tcl, tcl/mcast/DM.tcl, Makefile.in, FILES, CHANGES.html tcl/ex/newmcast/*.tcl

- [TH] Wed May 21 18:57:00 PDT 1997
  Ported bug fixes from ns-1 for tcp.cc, tcp-newreno.cc, tcp-reno.cc. This also affected ns-default.tcl
  Added reset functions to Acker and TcpSink in tcp-sink.cc so that tcp sinks can be reset and reused in a simulation (Sack sinks also are covered)
- [LB] Wed May 21 17:02:52 PDT 1997
  Added variable length portion to Packet class to handle non-fixed length stuff (e.g., data). Changed files: packet.h, agent.h, agent.cc
- [KVa] Tue May 13 23:37:08 PDT 1997
  Added equal cost multi-path routing. Usage is shown in two examples in tcl/ex/simple-eqp.tcl and simple-eqp1.tcl.
  As a side effect, added the instproc-like, `installNext` to classifier.cc, to install a TclObject in the next available slot. All, added instprocs install, clear, and installNext to track slots filled. These are then used by the instproc adjacents, to return information about adjacent TclObjects in the slot.
  Files affected: classifier-mpath.cc (new), tcl/ex/simple-eqp.tcl (new), tcl/ex/simple-eqp1.tcl (new), tcp/ex/simple-eqp-nam.tcl (new), tcl/ex/simple-eqp1-nam.tcl (new), tcl/rtglib/route-proto.tcl.
- [KVa] Tue May 13 23:37:08 PDT 1997
  Trace manipulation tools:

- raw2xg and raw2gp take the -a option, to trace acks as well, if trace information about them is present.
- getrc will extract trace information about a single node or link. Usage is

            getrc [-o output file] [-b] -s node1 [-d node2] [trace file...]

Typically, all traffic from node1 is extracted. If -b is specified, then all information to node1 is extracted as well. If both node1 and node2 are specified, then all traffic on the link between node1 and node2 is extracted. Specifying the -b option will extract traffic in both directions on that link.

See also tcl/test/README for a relatively more comprehensive writeup.

- [KVa] Tue May 13 23:37:08 PDT 1997
  Cleaned up heap.h and dynalink.cc to elide compiler warnings seen with -Wall.
- [KVa] Tue May 13 23:37:08 PDT 1997
  The route dynamics code si cleaned up. Route Models are only setup just prior to initiating routing. This eliminiates some unwanted side effects when initiating tracing on links that are dynamic.
  Files affected: tcl/lib/ns-lib.tcl, tcl/lib/ns-link.tcl, tcl/rtglib/dynamics.tcl.
- [KVa] Fri May 16 00:48:14 PDT 1997
  New route model for one shot route dynamics. It should now be possible to say

            $ns_ rtmodel-at $time $op $node1 [$node2]

to take $node1 (or the link $node1-$node2) up (or down, as specified by $op) at a particular time. It is done by creating a one-shot route model, rtModel/Manual. (It is currently untested, though no problems are anticipated by this author...hah!)

- [SM] Tue May 13 17:44:34 PDT 1997

- Made changes to the scheduler (added RealTimeScheduler) to support real-time simulation for emulated network envinroments. This real-time extension works just like the normal scheduler but events are delayed until real-time catches up. In particular, the scheduler "now" method returns the current simulated time rather than the current real time so any simulation CPU overhead is not reflected in event timing calculations.
- Added objects to interface to external networks. net.h, net.cc, and net-ip.cc modules came from mash/mbone tools.
- Added hook in ns-lib.tcl to create tap header only if real-time scheduler is specified. This avoids unnecessary waste of memory when not using tap agents. We assume that taps and real-time schedulers are used in tandem but haven't added any code to verify this.

- [PH] Tue May 13 15:30:00 PDT 1997

- Seperated multicast protocol functionalities from MultiNode. Moved original multicast code tcl/lib/ns-mcast.tcl to tcl/mcast/*.tcl.
- Added multi-access link module (tcl/lan/) and interface support (tcl/interface/ and net-interface.cc).
- Added detailed PIM code (tcl/pim in progress). The above are codes ported from Ahmed A-G Helmy's development on top of ns-2.0a3.
- Added centralized multicast tree computation modules (tcl/ctr-mcast).

- [LB] Fri May 2 15:09:32 PDT 1997
  Updated the tcl script demonstrating the use of traffic generation modules. It now includes a simple nam demo. Changed files: tg.tcl, tg.txt. New files: tg-nam.tcl

- [SM] Fri May 2 12:09:53 PDT 1997
  Updated FILES. Also, set up a nighly cron job to snapshot the current cvs snapshot into a publicly accessible "ns-current" release.
- [KVa] Mon Apr 28 09:08:26 PDT 1997
  Moved `up?` and `down?` to base `Class Link`, instead of being in the derived `Class SimpleLink`. The procedures work for simple p2p links. Other types of media such as LANs that must provide similar features may have to redefine them appropriately.
- [KVa] Mon Apr 28 09:08:26 PDT 1997
  Leveraged of the v2 test suites to construct routing test suites. The list of mods are:

1. A new test-suite driver, called ktest-all is in the bin directory. The invocation

            ktest-all [<suite> [<test> [<topology>]]]

executes:

            ns tcl/test/test-suite-<suite>.tcl <test> <topology>

If no test is specified, it runs all the tests in that suite. If no topology is specified, it runs the specified test against all topologies defined in the topologies file.

2. Any single test-suite file is now in three parts: (1) tcl/test/topologies.tcl contains a library of topologies, and variants for netowrk dynamics. Currently four topologies are defined. (2) tcl/test/misc.tcl contains the basic housekeeping routines, such as openTrace, finish etc. (3) Individual tests are in tcl/test/test-suite-<suite>.tcl files.
3. The procedure `finish` in tcl/test/misc.tcl no longer directly invokes xgraph. Instead, it simply writes out out.tr, closes all trace files, and exists.
4. ktest-all will invoke xgraph if the DISPLAY environment is defined; otherwise, it will save the out.tr file as is in test-output-raw for later comparison; in the latter case, it will also use gnuplot to generate a postscript file that is placed in the ps-files directory.
5. The bin directory also contains raw2xg and raw2gp, two programs to convert trace files into output for xgraph or gnuplot. Convenient ways of invoking either are:

            % raw2xg out.tr , xgraph -bb -tk -nl -m -x time -y packets
            % raw2gp out.tr > out.gp ; gnuplot
            load "out.gp"
            ...other gnuplot commands ...
            exit
            %

There will be additional cleanup as I work on the test-suites some more. Comments and suggestions are welcome.

- [KVa] Mon Apr 28 09:08:26 PDT 1997
  Makefile (and Makefile.in) for ns.dyn does not include tclAppInit.o.
- [KVa] Wed Apr 23 16:50:15 PDT 1997
  SACK crashes when it is not in fast recovery mode, and receives acks out of order. For now, we just ignore such acks.
- [KVa] Wed Apr 23 16:50:15 PDT 1997
  tcl/ex/simple-*.tcl examples should close output files before further processing in order to ensure that all data gets properly flushed.
  In addition, added tracing route dynamics events to stdout.
  Files affected: tcl/ex/simple-dyn.tcl, tcl/ex/simple-rtg.tcl, tcl/ex/simple-heap.tcl,
- [KVa] Wed Apr 23 16:50:15 PDT 1997
  Bugs in rtglib. delay.cc, delay.h did not calculate packet transmission time correctly.
  Routing code had bugs in how routes were calculated, and route updates distributed.
  Files affected: delay.cc, delay.h, tcl/rtglib/route-proto.tcl, tcl/rtglib/dynamics.tcl
- [KVa] Mon Apr 14 12:06:35 PDT 1997
  `abort()`, when called, breaks of the trace abruptly. Trap the call with cpp hacks, invoke [[Simulator instance] flush-trace] and then abort.
  Files affected: Makefile.in, tclAppInit.cc, tkAppInit.cc
- [KVa] Thu Apr 10 16:21:25 PDT 1997
  Added functions to dump the simulation objects that comprise the topology, as an aid to debugging. Use by specifying

            [Simulator instance] gen-map

to see the dump on stderr.
Files affected: tcl/lib/ns-trace.tcl

- [LB] Fri Apr 25 14:26:12 PDT 1997

- Added traffic generation modules to implement on/off sources with exponentially and pareto distributed on and off times, and a traffic generation module that is driven by a trace file. New files: trafgen.h, pareto.cc, expoo.cc, traffictrace.cc, traffictrace.h, udp.cc, udp.h.

- To support the pareto on/off source, added the function Random::pareto() to random.h.

- [KF] Wed Apr 23 22:00:21 PDT 1997

- CBQ is now part of the simulator

Generally works.

- ALL default queue sizes are now 50 [per ns-1 defaults]
- QueueMonitors now know the difference between

drops, arrivals, and departures and can monitor these

- new class called 'Samples' which collects samples

points of something and can provide a mean and variance of the points (see integrator.cc)

- Queues can be flow controlled

by forcing them to be blocked or unblocked as needed. Also it's possible to make it so that when they send a packet they become blocked rather than unblocked.

- common packet header

contains a timestamp field; this is used to compute queueing delay for individual packets at queues

- classifier-hash

a classifier to identify 'flows' ... still in development, but presently used by cbq

- bug fixes/mintor changes to red.cc, test-suite-red.tcl
- test-suite.tcl updated to ns-1 version (stats test minor change)

- [SB] Thu Apr 17 17:57:53 PDT 1997
  Fixed tcp-simple.cc and random.cc so that test-suites work for solaris as well.
- [TH] Wed Apr 9 16:24:25 PDT 1997
  Fixed busy-wait condition in tcp-sack1.cc that resulted from incorrectly setting the overhead parameter.
- [KVa] Tue Apr 8 16:33:49 PDT 1997
  Added Distance Vector dynamic routing to ns; As a side effect, created the C++ random functions in tcl/lib/ns-random.tcl.
  At some point, a test-suite-routed.tcl will be provided to show examples of routing.
  Files affected: rtProtoDV.cc (new), rtProtoDV.h (new), trace.h, tcl/lib/ns-lib.tcl, tcl/lib/ns-random.tcl (new), tcl/rtglib/route-proto.tcl.
- [KVa] Tue Apr 8 16:33:49 PDT 1997
  Created a AgentClass, dervied from TclClass. Removed NullAgentClass, and moved Agent/Null into tcl/lib/ns-agent.tcl
  Files affected: agent.cc, Makefile.in, tcl/lib/ns-lib.tcl, tcl/lib/ns-agent.tcl (new).
- [KVa] Tue Apr 8 16:33:49 PDT 1997
  Added TCL debugger capabilities to ns.
  To use, reconfigure ns with tcl-debug 5.20. In your script, add `debug 1' at the location you want to start debugging.
  More details about the Tcl debugger are in Don Libes' paper.
  Files affected: tclAppInit.cc, configure.in, tcl/lib/ns-lib.tcl, conf/configure.in.tcldebug (new).
- [KVa] Tue Apr 8 16:33:49 PDT 1997
  Moved class `Delay/Link` to class `DelayLink`.
  Files affected: delay.cc, tcl/ex/fq-cbr.tcl, tcl/ex/fq.tcl, tcl/lib/ns-default.tcl, tcl/lib/ns-link.tcl.
- [SB] Mon Mar 31 17:46:04 PST 1997
  Added deficit round robin scheduling (drr.cc)
- [SM] Fri Mar 28 20:45:40 PST 1997
  Update
- [TH]'s scoreboard changes with respect to this afternoon's packet format changes.
- [SM] Fri Mar 28 20:32:24 PST 1997
  First cut at integration of nam into ns code base. Basically just ported the pieces verbatim so that nam can now be run as a script interpreted by nsx. In this crude initial version, you can run "../nsx srm-demo-nam.tcl -name nam" from the nam directory.
- [TH] Fri Mar 28 18:45:00 PST 1997
  Brought scoreboard.cc and scoreboard.h up to date with the latest versions that were in ns-1 (9/96 PSC version: UpdateScoreBoard, CheckSndNxt, MarkRetran modified for fack). Now most of test-suite-sack test cases work correctly.
- [SM] Fri Mar 28 17:33:43 PST 1997
  A number of additional changes to the packet format. Eliminated the "Header" classes altogether. Now we have a simple template header-class template that just defines the header size. Most of the packet-manager functionality moved into ns-packet.tcl. Factored the flags field out of ip6 into a separate hdr_flags struct. Eliminated old commented-out code in a number of places. Created a "common" header (hdr_cmn) and moved the size field from the ip header to the new common header. Also put the uid here. Changed hdr_ipv6 to hdr_ip for consistency.
- [KF] Fri Mar 28 13:36:58 PST 1997
  Updates to make RED gateways work. Includes mods to red.cc and RED's default parameter names, some additions to the compat library, and a change so that when the simulator begins all queues have a "reset" method called (previously, only nodes and agents had this done to them, but RED and probably some other queue types need to be reset to compute functions of their Otcl-linked variables before the sim starts).
- [TH] Fri Mar 28 12:50:02 PST 1997
  Added test-suite-v2.tcl to the repository (port of "test-suite.tcl"). Added two new instprocs to ns-lib.tcl which help to set up tcp connections. Moved the "Agent instproc dst-port" from ns-compat.tcl to ns-lib.tcl since it can also be used in ns-2.
- [SM] Fri Mar 28 12:23:58 PST 1997
  Another cut at packet format reorg. Eliminated the need for static variables. Moved the accessor methods from the "Header" classes into the "hdr" structs. This rearrangement allowed us to alter a minimal amount of code in each module that ref'd a packet header (i.e., only needed to change the pointer type of the variable that pointed at the packet header.)

### ns-2.0a16 Fri Mar 28 00:56:48 PST 1997

- [SM] Thu Mar 27 23:49:57 PST 1997
  Added some new modules in tcl/ex for CS268 homework 3.
- [SM] Thu Mar 27 23:49:57 PST 1997
  Put back seqno's in cbr agents.
- [SM] Thu Mar 27 17:19:42 PST 1997
  Added a simple fair queuing module that uses flow id's (aka classes) to differentiate flows. Added an example script: tcl/ex/fq.tcl. Some of the code in fq.tcl should migrate into the built-in library.
- [SM] Thu Mar 27 00:11:31 PST 1997
  Added a make rule for "nsx", which is just like ns but is a wish interpreter instead of a tclsh. Retired ns_tclsh.cc and replaced with tclAppInit.cc and tkAppInit.cc. Also added -ldl for bsdi-3.
- [EA] Wed Mar 26 22:49:30 PST 1997
  Fixed up Session/RTP to work with latest version. Added a rate_change() method to RTPAgent to allow correct behavior when changing transmission rates. See code in <t>rtp.cc</t> for details.
- [KF] Wed Mar 26 17:11:17 PST 1997
  Replace test-suite.tcl with test-suite.tcl from ns-1.
- [KVa] Wed Mar 26 15:24:24 PST 1997
  The test suites break with the dynamics, because they want to acquire an instance of the Simulator. However, the test-suites operate in compatibility mode, and hence only create an instance of OldSim, a subclass of Simulator. So, wrote a `Simulator instance' procedure that returns the current instance of the simulator.
  Files affected: tcl/lib/ns-lib.tcl, tcl/lib/ns-trace.tcl, tcl/rtglib/dynamics.tcl, tcl/rtglib/route-proto.tcl

### ns-2.0a15 Tue Mar 25 14:56:39 PST 1997

- [SM] Added trace.h to FILES.

### ns-2.0a14 Tue Mar 25 14:00:35 PST 1997

Snapshot for alpha testers.

- [KVa] Tue Mar 25 09:16:33 PST 1997
  Fix auto configuration so that libotcl.a is found when the directory is explicitly specified using --with-otcl.
  Files affected: conf/configure.in.otcl, configure
- [KVa] Tue Mar 25 09:16:33 PST 1997
  Change Tracing so that trace elements can be created and used entirely via OTcl if the tracing is unrelated to packet activity.
  See rtModel::init, rtModel::trace, and rtModel::log-dynamic in tcl/rtglib/dynamics.tcl for how to use.
  Files affected: Makefile.in, trace.cc, tcl/lib/ns-lib.tcl, tcl/lib/ns-trace.tcl (new)
- [KVa] Tue Mar 25 09:16:33 PST 1997
  Add dynamics to links and nodes so that portions of the topology can be made to fail and recover. The failure and recovery can be controlled through distributions.
  Usage:

            set ns [new Simulator]
            $ns rtmodel <Distribution> {<up-time> <down-time>} <node1> [<node2>]

A distribution (Distribution) can be specified either to a single node (node1) or to a single link (between node1 and node2). The up-time (down-time) is a parameter for the distribution to specify how long the specified node/link will be up (down) before changing state to being down (up).
Files affected: Makefile.in, connector.cc, delay.cc, dynalink.cc (new), queue.cc, queue.h, tcl/lib/ns-lib.tcl, tcl/lib/ns-node.tcl, tcl/rtglib/dynamics.tcl (new), tcl/ex/simple-dyn.tcl (new), tcl/ex/dynamic-nam.tcl(new), tcl/nam-demo/nstonam.awk.

- [KVa] Tue Mar 25 09:16:33 PST 1997
  Add dynamic routing to deal with topology changes (work in progress). Currently, the basic all-pairs-spf routing has been modified to fit a more uniform API. Also complete is a session-level routing, (i.e., the all-pairs-spf static routing used to precompute routes prior to starting the simulation, and run everytime the topology changes).
  Usage:

            set ns [new Simulator]
            $ns run [Static|Session]

Note: Additional more detailed configuration hooks will soon become available, as well as other routing protocols.
Files affected: Makefile.in, tcl/lib/ns-lib.tcl, tcl/rtglib/route-proto.tcl (new), tcl/ex/simple-rtg.tcl (new).

- [SM] Added heap.h to FILES.

### ns-2.0a13 Fri Mar 21 09:08:05 PST 1997

Snapshot for alpha testers.

- [SM] Tue Mar 18 15:32:01 PST 1997
  Integrated David Wetherall's calendar queue. Use as:

            set ns [new Simulator]
            $ns use-scheduler Calendar

- [SM] Tue Mar 18 15:32:01 PST 1997
  Added a simple, completely contrived script to generate SRM-like sample paths to illustrate SRM in EECS colloquium (see tcl/ex/srm-demo.tcl).
- [SM] Tue Mar 18 15:32:01 PST 1997
  Fixed bug in Packet::copy. "*p = *this" was bogus because bits are now allocated in a separate buffer and this was smashing the current packet's bits buffer to point to the old one, which was both leaking memory and causing unwanted sharing of private buffers.
- [SM] First cut at agent detaching code. Suggested by Emile Sahouria.
- [SM] Fixed bug pointed out by Emile Sahouria, Giao Nguyen, and Tom Henderson, where node port demuxer was created in wrong place. Moved this code from compute-routes to Node::attach (i.e., should install locate route to port demuxer first time the demuxer is created, not when compute-routes is run, becase in latter case port demuxer might not yet exist).
- [KF] Arrange for dynamic linking to be the default instead of static. Static linking is performed if '.devel' exists in the build directory.
- [SM] Fix up tcl/ex/simple.tcl for v2.
- [SM] Set flow-id in tcp ack agent just as we used to set the class-id.
- [SM] Arrange for tcl variable "class_" to be bound to flow-id field so that scripts impacted by Kevin's recent packet header changes continue to work.
- [SM] Added a new TCPSimple that does minimal Go-back-N (no slow-start, no fast restransmit, etc) for a CS268 homework.
- [KF] Change to ns-source.tcl to incorporate Source/FTP "produce" function, needed by some of the ns-1 conformance tests. Added "agent" instproc to node to return the agent with the specified port ID. Fixed up some typedef and other type conflicts in packet.h and with respect to srandom() and gettimeofday() on suns.
- [KF] Support for new packet format. Fix bug relating to header double-word alignment, happens on suns.
- [KVa] Add support for heap schedulers. Use as:

            set ns [new Simulator]
            $ns use-scheduler Heap

### ns-2.0a12 Sat Feb 22 22:09:51 PST 1997

Snapshot to VINT collaborators and CS268 students.

- [SM] Bug fix from Mark Handley. Reno tcp agent had wrong prototype for recv method and thus was not overriding the default virtual.
- [SM] Added several changes from Curtis Villamizar, including a simple stochastic fair queuing module and a simple change to the tcp agent to emulate persistent connections.
- [SM] Regenerated configure using Kevin Fall's latest fixes to our conf module.
- [SM] Changed drop-trace method to drop-target. This should only affect the internal APIs and shouldn't break any scripts.
- [SM] Bumped size of max message in packet structure to 80 bytes. This limit eventually must be removed.
- [SM] Eliminated C++ statically defined default drop-target and changed link building code to point a queue's drop-target to a null-agent.
- [SM] Added first cut for queue-size monitoring agents (add integrator.cc). Cleaned up approach for splicing objects into Link pipeline. Added ttl field to packets and TTLChecker object to update ttl and throw out ttl-expired packets (and ttl.cc).
- [SM] Fixed long-standing bug in static routing code; problem found by, and fix supplied by, Andrew Swan. Went undetected for so long because bug occurs only for simplex links.

### ns-2.0a11 Thu Feb 13 11:28:35 PST 1997

Snapshot to VINT collaborators and CS268 students.

- [SM] Fixed bug in ftp source compat code introduced by last rev. Prevented test suite from running.

### ns-2.0a10 Mon Feb 3 13:14:48 PST 1997

Snapshot to VINT collaborators and CS268 students.

- [SM] Made a number of small changes to help out with homework 1 for CS268.
- [SM] Fixed missing-return bug introduced in last rev. Thanks to WeeSan Lee.
- [SM] Changed Agent/Message callback name from handle to recv.

### ns-2.0a9 Thu Jan 30 21:11:34 PST 1997

Snapshot to VINT collaborators and CS268 students.

- [SM] Fixed inconsistent declaration of random() and problem with binding of "maxSackBlocks_". Reported by WeeSan Lee.
- [SM] Restructured the way agents are reset. Moved from node "attach time" to simulation "run time". Otherwise, state variables that change between attach and run-time aren't consistent with the reset operation. This fix prompted by Tom Henderson, who noticed that delayed-ACK TCP output was inconsistent with that of ns-1.

### ns-2.0a8 Mon Jan 27 19:26:17 PST 1997

Snapshot to VINT collaborators and CS268 students.

- [SM] Omitted connector.cc and connector.h from distribution; now added. Reported by WeeSan Lee.

### ns-2.0a7 Mon Jan 27 18:09:02 PST 1997

Snapshot to VINT collaborators and CS268 students.

- [SM] Added Dante De Lucia's generic, reusable logging module. (See log.cc.) But have not compiled it in yet because of xmalloc references.
- [SM] Fixed bugs in compat code that prevented SACK code from being properly configured. Reported by Tom Henderson.
- [SM] Changed instance variable naming conventions to append underscore to all names, e.g., Agent::dst is now Agent::dst_.
- [SM] Changed class naming conventions to use consistent mixed case, e.g., Agent/TCP instead of agent/tcp.
- [SM] Eliminated Node class since splitting NsObject and Node into no longer makes any sense. Also, "Node" was a bad name because it implies something about topology and at this level it is toplogically independent.

### ns-2.0a6 Tue Dec 31 18:55:39 PST 1996

Snapshot to VINT collaborators.

- [EA] Fixed up RTCP Timer bug. Added srctab and srcids to RTP Sessions.
- [EA] Added very first rough draft of NamSimulator that produces a nam_config for automatic layout.
- [EA] Added RTP Session class along with RTP and RTCP agents.

### ns-2.0a4 Sun Nov 10 11:06:46 PST 1996

Snapshot to VINT collaborators.

- [SM] Removed re-parenting hooks from ns-lib.tcl since TclClass now automatically makes all the classes in a class path name.
- [SM] Ported partially completed ivs module from ns-1.
- [SM] Fix from Ahmed A-G Helmy to omit unecessary code in MultiNode::init.
- [SM] Coalesce multiple sources into a single graft message to avoid dropped grafts with a large number of messages would otherwise blast into the first hop and overflow the queue (grafts are not yet sent reliably).

### ns-2.0a3 Sun Nov 10 11:06:46 PST 1996

Snapshot to VINT collaborators.

- [SM] Implemented simple RPF style flood and prune multicast (see tcl/lib/ns-mcast.tcl). Multicast routing object is build from a number of classifier objects (e.g., the primary classifier routes the packet either to a multicast or to a unicast classifier based on the multicast bit in the in the destination address). Multicast routes are computed statically from unicast routes. Prune timers are not yet implemented and grafts are currently sent unreliably.
- [SM] Created Node and Link classes to clean up Simulator class and allow these objects to be more easily abstracted into composite object. E.g., a multicast-node is composed of a number of sub-objects.
- [SM] Use re-parenting trick across a lot more classes in ns-lib.tcl. Created source base class for source/ftp, source/telnet, etc.
- [SM] Modified tcp-sink module to avoid virtual multiple inheritance (this causes too many problems with non-compliant C++ compilers). Created Acker and Sacker classes that are instanced in the sink classes.
- [SM] Type-cast bug fixes from Ahmed A-G Helmy.

### ns-2.0a2 Thu Nov 7 1996

Snapshot to VINT collaborators.

- [SM] First cut at multicast router from fine-grained objects.
- [SM] Add missing files to FILES.
- [SM] Implemented replicator and classifier/mcast objects as first step toward supporting multicast routers and broadcast LANs.
- [SM] Clean up class interface. Created Simulator OTcl class as uniform API for manipulating simulator. Moved almost all of the ns-1 backward compatability code into a new class called OldSim.

### ns-2.0a1 Wed Nov 6 13:57:31 PST 1996

Pre-release to VINT collaborators.

- [SM] Major architectural changes. Object are now finer grained. We have developed a more cleanly defined Tcl API so that developers can change the back-end while more easily maintaining backward compatibility. The simulator is now based entirely MIT's Object Tcl. The TclClass C++ base class replaces the old Matcher class. An OTcl class is created in C++ by statically declaring a derived subclass of TclClass. OTcl makes it easy to extend a class with new methods either on the C++ side or the Tcl side.

### 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 "maxcwnd".

### 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 bug report.

### v1.0b1 Sun Mar 3 1996

- Fixed bug in tcp.cc that caused the retransmit timeout backoff behavior never to reset. Thanks to Jamshid Mahdavi 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 Werner Vogels for reporting this bug.
- Added local explicit-join notification for experimentation with RLM.
- 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 (mathis@zippy.psc.edu) and Jamshid Mahdavi (mahdavi@psc.edu).
- Changed format of window and RTT reports sent from tcp.cc to the trace file.
- 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 purposes.
- 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 machinery.

### 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 Thierry Turletti.

### 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 = ... ) ...
- use(i);

to

- int i;
- for (i = ... ) ...
- use(i);

### v1.0a4

- 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 (mathis@psc.edu).
- 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 (mathis@psc.edu).
- 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. For example,

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