# ns: Change History

### ns-2.1b10[OLD VERSION NO]/ns-2.26[NEW VERSION NO] Released on Wed Feb 26 11:40:51 PST 2003

- [Padma Haldar] Wed Feb 26 11:40:51 PST 2003
  New Version numbering with this release [from Johnh] As of this release we are changing the ns and nam version numbering scheme from 2.1b10 (major.minor alpha/beta increment) to simply 2.26 (major.minor). Unlike typical software that goes through well defined cycles of alpha/beta development towards a release, different parts of ns are at different levels of maturity. For example, the TCP code is quite mature, while the newest S-MAC code is still at an alpha stage. Thus, the distinctions in the old numbering scheme were not useful. We call the new release 2.26 because it's the 26th release in the ns-2 series. Our hope is that this version will be less confusing than the alternatives, and a clear shift in the version numbering scheme. Similarly, the current nam release is nam-1.9.

- [Padma Haldar] Fri Feb 21 09:46:54 PST 2003
  Fixed a bug in 802.11 that results in premature re-setting of the short retry counter. This results in higher number of retries for a failed transmission in mac than the allowable limit.

- [Tim Buchheim] Fri Feb 14 17:03:06 PST 2003
  - Emulation now builds on Darwin (Mac OS X) but it is still untested.
  - Wired nodes with coordinates set will have their coordinates written to the nam trace file.
  - Wireless broadcast packets in a nam trace now use new nam options for enhanced animation.

- [Xuan Chen] Sun Feb 2 10:07:35 PST 2003
  Integrated JoBS, which is a queuing discipline that provides quality-of-service (QoS) to traffic aggregates (i.e., traffic classes). JoBS is contributed by Nicolas Christin.

- [Xuan Chen] Sat Feb 1 10:07:35 PST 2003
  Fixed various small bugs to make sure test suites pass on sygwin with the help form Nicolas Christin.

- [Padma Haldar] Thu Jan 30 16:06:34 PST 2003
Fixed a synchronisation bug in smac that resulted in 2 neighbor nodes not hearing each other as one sleeps when other is awake. Now all nodes wait for SYNCPERIOD and then try to send out a sync pkt. Any node that receives a sync pkt for the firsttime resets its schedule to match that of its neighbor. Essentially all nodes follow the same schedule.

- [Sally Floyd]
  Fri Jan 24 2003
  Added a validation test suite, test-all-quickstart, for Srikanth Sundarrajan's port of QuickStart to NS. Also ported Srikanth's QuickStart code from TCP/Newreno/QS (in tcp-qs.cc) into the one-way TCP modules (tcp.cc, tcp-newreno.cc tcp-reno.cc tcp-sack1.cc). QuickStart is an experimental proposal to allow end nodes to ask permission from routers for high initial sending rates.

- [Padma Haldar] Wed Jan 22 16:40:16 PST 2003
Most macros used in smac parameterised and converted to variables; Only tunable mac parameters were left untouched as these would be used by users to finetune smac performance.

- [Sally Floyd]
  Thu Jan 16 2003
  Adding a patch to drop-tail to check if the queue would have overflowed *before* adding a packet to the queue, and to drop the packet in this case without adding it to the queue. This improves the efficiency of the code for simulations with large queues. Code contributed by Tom Kelly.

- [Sally Floyd]
  Tue Jan 14 2003
  Added additions to the scoreboard so that Sack TCP can run more efficiently with large windows. With this change, Sack TCP uses the Reassembly Queue based scoreboard. This involved the addition of scoreboard-rq.cc, adding two new procedures in rq.cc, and a one-line change in tcp-sack1.cc to use the new scoreboard. Code contributed by Tom Kelly.
  (The small GetNextUnacked() routine in scoreboard-rq.cc was added by Sally, and this log entry was added one day late...)

- [Sally Floyd]
  Mon Dec 30 2002
  Fixed a bug for the "QOption_" option with Sack TCP, for responding to a quiescent period. By default, this option is off.

- [Sally Floyd] Sun Dec 29 2002
  Added partial_ack_, for better performance for Sack TCP with partial acks during Fast Recovery. For validation, see "./test-all-tcpVariants multiple_partial_ack_sack" and "./test-all-tcpVariants multiple_sack" in the directory tcl/test.

  Adding GetNextUnacked() to scoreboard.cc for use by Sack TCP in responding to partial ACKs.

- [Srikanth Sundarrajan] Thu Dec 19 03:54:40 PST 2002
  - Implementation for TCP Quick Start (Work in progress)
  - The following files were modified/added
    - classifier/classifier-qs.{cc.h}, qs/hdr_qs.{cc,h}, tcp/tcp-qs.cc
    - qs/qsagent.{cc,h}, queue/queue.{cc,h}, routing/rtmodule.{cc,h}
    - tcl/lib/{ns-qsnode,ns-default,ns-lib}.tcl

- [Sally Floyd] Wed Dec 18 21:24:43 PST 2002
  Added oldCode_ for TFRC, for those who want to use the old code that does not give good behavior with data-limited applications.

  For the new code, added "datalimited_" to identify a data-limited application, so that TFRC can send a packet immediately when new data becomes available from the application. The old code always waited for the next send timer to expire.

  Also, when a timer expires saying that no status report has been received from the receiver, the old code always halved the allowed sending rate. The new code only halves the allowed sending rate when a packet had been sent within the most recent two round-trip times, or when the current rate was greater than four pkts per RTT. Thus, in the new code, then the timer expires because no packets had been sent by the sender, the allowed sending rate is not reduced below two packets per RTT.

  The validation test for these changes is "./test-all-quiescent" in the directory tcl/test.

- [Sally Floyd] Tue Dec 17 09:27:13 PST 2002
  Made a change to the TFRC receiver to add robustness in the presence of reordering, in conformance with the TFRC specification. Added numPkts_ to Agent/TFRCSink, to set the number of non-sequential data packets before a missing packet is counted as a loss. The default for numPkts_ is set to 3. The previous TFRC code was equivalent to setting numPkts_ to 1.

- [Yuri Pryadkin] Mon Dec 2 12:51:52 PST 2002
  - Updated simultaneous events test suite to cycle through all known schedulers. This test suite now does not use the template as well as any reference input and validates itself. Modified files: tcl/test/{test-all-simultaneous,test-suite-simultaneous.tcl}. Removed: tcl/test/test-output-simultaneous.
  - Map scheduler cleanup:
    - Use std::set instead of std::map
    - Removed deque-code as unused/inefficient
    - Removed hint iterator (supposed to make insertions faster, but did not)
    - Formatting changes.
    Modified files: common/scheduler-map.cc
  - Small changes to the splay scheduler. Modified files: common/splay-scheduler.cc.

- [Padma Haldar] Tue Nov 26 15:11:41 PST 2002
Checkd in diffusion3.1.3 -sync'ed with Fabio's 3.1.3 version

- [Padma Haldar] Tue Nov 26 10:37:04 PST 2002
Checking in warning for SMAC and adding smac test-suite to daily-validation. NOTE FOR SMAC: The SMAC implementation in ns-2 is a first-cut and work in progress. I'm sure we could improve the performance by fine-tuning the parameters in future, especially the process of sync'ing with neighboring nodes about sleep schedules. The warning about SMAC using sleep-wakeup cycles is about starting apps only after nodes sync which is about 40sec with the current default values (duty-cycle of 10%).

- [Padma Haldar] Wed Nov 6 16:19:36 PST 2002
Added a second round of changes for SMAC.SMAC now supports sleep/wakeup cycle which can be turned on using syncFlag_ instead of having to recompile earlier. Added sync tests in the smac test-suite.

- [Kun-chan Lan] Thu Oct 24 11:45:11 PDT 2002
Support of pipeline and generation of multiple traffic models in RAMP

- [Sally Floyd] Sun Oct 20 20:31:45 PDT 2002 Added numdupacksFrac_ and numdupacks() to tcp.h, to specify a larger value of numdupacks, when desired, when the congestion window is large. The validation test is "./test-all-sack sack_dupacks" and "./test-all-sack sack_dupacks1" in tcl/test.

- [Di-Fa Chang] Wed Oct 9 16:50:16 PDT 2002 Make ns built under gcc 3.x. (minor C++ syntax changes)

- [Padma Haldar] Wed Oct 9 14:01:58 PDT 2002 Checking in smac, this time with SYNC (sleep/wakeup) cycles.

- [johnh] Wed Sep 25 13:37:26 PDT 2002
  Changed set-animation-rate to use nam's set_rate_ext command rather than set_rate.

- [Alefiya Hussain] Mon Sep 23 04:13:13 PDT 2002 Emulation performance improvement: Added support for dispacting multiple packets at once from bpf filter into nse. This reduces packet drops in the kernel and tranfers the onus of deciding which packets to drop to nse. Patch submitted by: Shashi Guruprasad.

- [Padma Haldar] Thu Sep 19 09:45:55 PDT 2002 Contributed by Anant Utgikar that supports gratuitous replies to be sent as per IETF aodv draft spec. files changed aodv.cc and aodv_packet.h

- [Srikanth Sundarrajan] Mon Sep 17 19:25:15 PDT 2002
  - Enabled standard event tracing for SRM. File: tcl/mcast/srm.tcl, mcast/srm.cc
  - Integerated LMS to NS. Author - [Dr. Christos Papadopoulos]
    - mcast/classifier-lms.cc, mcast/lms-agent.cc, mcast/lms-receiver.cc, mcast/lms.h
    - mcast/lms-sender.cc, mcast/lms-agent.cc, mcast/rcvbuf.{cc, h}
    - queue/errmodel.{cc, h}, routing/rtmodule.{cc, h}, common/packet.h
    - tcl/lib/ns-default.tcl, tcl/lib/ns-lib.tcl, tcl/mcast/ns-lms.tcl
  - Fixed event tracing in PGM, nam trace write disabled. Files: pgm/pgm-agent.cc, pgm/pgm-receiver.cc, pgm/pgm-sender.cc

- [Sally Floyd] Mon Sep 16 20:52:25 PDT 2002 Added keepSeqnoStats_ to the QueueMonitor to keep records of the seqno in TCP data packets on that link. This is illustrated in "./test-all-simple stats3" in the directory "tcl/test". A comment in test-suite-simple.tcl also gives instructions for plotting this and the RTTs on a graph.

- [Padma Haldar] Mon Sep 16 10:54:07 PDT 2002 This round of changes for diffusion includes:
  - sync'ing with pre-release version 3.1.2. Sync'ing with the final release version is pending subject to the release itself.
  - event-queue re-sturctured. added timers-manager abstraction. ns diffusion now supports remove-timer() and findevent() functions.
  - suppression of duplicate data in the network that results due to rapidly subscribing/unsubscribing apps.

- [Sally Floyd] Sun Sep 15 22:43:01 PDT 2002 Added last_rtt_ to the TCP header to contain the most recent RTT measurement, in ms, from the TCP sender. This is for statistics only. Also added keepRTTstats_ to the QueueMonitor to keep records of the RTT measurements in TCP data packets on that link. This is illustrated in "./test-all-simple stats3" in the directory "tcl/test".

- [Alefiya Hussain] Tue Aug 19 17:41:00 PDT 2002
  - Fixed memory leaks in emulation code
  - Removed check for duplicate packets. This check can be implemented using correct bpf filter as pointed out by Shashi Guruprasad.

- [Srikanth Sundarrajan] Tue Aug 6 20:41:00 PDT 2002
  - Fixed session delay parameter copy problem in srm. File: tcl/mcast/srm.tcl
  - Fixed marking problem in BST. File: tcl/mcast/BST.tcl
  - Added Event Tracing to PGM. Files: pgm/pgm-agent.cc, pgm/pgm-receiver.cc, pgm/pgm-sender.cc

- [Yuri Pryadkin] Thu Aug 1 18:33:24 PDT 2002
  Bugfixes in RealTimeScheduler:
  - Cancelled events may have been dispatched.
  - FIFO property for same time sim events was broken.
  Additionally:
  - Added blocking wait if there is nothing to do
  - clock_ is always synchronized with the RT clock before dispatching events.
  - Now RealTimeScheduler is derived from CalendarScheduler for better performance.
  - Other cosmetic changes.
  Thanks to Shashi Guruprasad for helping test/debug various patches.
  Files: common/{scheduler.{h,cc},scheduler-map.cc,splay-scheduler.cc}

- [Yuri Pryadkin] Tue Jul 23 14:30:05 PDT 2002
  Tuned up CalendarScheduler::newwidth() using the tcp bottleneck benchmark. Files: common/scheduler.{h,cc}

- [Yuri Pryadkin] Thu Jul 18 16:02:39 PDT 2002
  Small cleanup of splay scheduler. Small cleanup of calendar scheduler (common/scheduler.{h,cc}): removed clock_ as part of the internal state, so it can be freely modified in derived classes e.g. RT-scheduler. Also removed resize_enabled_ checks, as they seem to be useless. RT scheduler can be derived from Calendar now.

- [Yuri Pryadkin] Tue Jul 16 15:29:58 PDT 2002
  Added new scheduler Scheduler/Splay (common/splay-scheduler.cc). Although it's not yet tuned up, it promises pretty good performance and less memory usage than Calendar or Heap.

- [Yuri Pryadkin] Mon Jul 8 19:20:24 PDT 2002
  Changes to the calendar scheduler (scheduler.{cc,h}):
  - No limitation on the bucket width (use of `fmod()', which is POSIX).
  - No round-off error accumulation because a new method for checking year-wraps is used.
  - Different algorithm for calculating bucket width by sampling that deals with butch-enqueues and aims and minimizing the longest bucket queue.
  - A bug fix that was there before and somehow didn't show (?)
  - Double-linked list for events that gives us O(1) performance for event cancellation. This comes at a price of one more pointer per event.

- [haldar] Thu Jul 18 19:35:53 PDT 2002
  As a part of doing bug-fix for dsr (port from CMU) that was resulting in a large number of TTL drops due to pkt looping also added a priority-queue class. This version of priQ called CMUPriQueue maintains separate queues for different priority classes (like rtg, real-time, arp and normal) whereas the ns version has the same queue while providing priority to different control/arp pkts.

- [haldar] Tue Jul 2 14:42:08 PDT 2002
  1. random-id for core-diffusion agent is changed to match node-id in ns. 2. added functionality to dump statistical info at stop-time by core diff agent. 3. moved ptr to mobilenode into library (diffappagent). now all applications (like gear etc) aneed to access this handle to mobilenode in library to get moblenode specific info (like node position, node-id etc)

- [Kun-chan Lan] Fri June 28 2002
Adding support of FullTcp and variable packet size for RAMP The major changes include: 1. Adding a callback function in FullTcp code, which allows the sender to signal receiver that it has sent out all the data in the buffer 2. Request and response data now is sent in bytes (previously it is sent in packet) 3. When creating session, a CDF of segment size is used to enable variable packet size for different TCP connections in the simulation 4. empweb now by default uses FullTcp (flags in empweb.tcl are provided to switch back to use old TCP) There are some original FullTcp bugs that I have not figured out how to solve yet, will look into it later. 1. Even FullTcp allows sending data in both directions, it assumes data only sends in one direction and ack sends in the other. Hence you will see in the trace file that some ACKs which are actually DATAs (you can tell by the packet size) 2. the sequence number will mess up when both sides are sending data using a single FullTcp connection

- [Xuan Chen] Fri Jul 12 11:33:05 PDT 2002
  Add a simple web server model into web traffic. Users can choose to include server delay into their simulation. Currently, two server scheduling policies are supported: first-come-first-serve and shortest-task-first. For detailed information, please refer to ns/tcl/test/test-suite-webtraf.tcl.

- [Yuri Pryadkin] Fri Jun 14 15:59:49 PDT 2002
  Moved ref_counter_ from common header to the Packet class itself; added the refcopy() function. Updated mac-802.3.cc to use the new iface to the ref. counter, plus support ref-copying + broadcasting. Fixed-up sessionhelper.cc to use the new interface to the counter, which simplified the code; changed indentation.

- [Yuri Pryadkin] Thu Jun 13 17:25:47 PDT 2002
  Fixed a memory leak in mac802.3, small debugging cleanup, plus another small change to allow it work together with Channel/NoDup. Added Channel/NoDup to channel.cc; Channel::recv is now virtual.

- [Padma Haldar] Thu Jun 6 15:44:17 PDT 2002 Added Fred Stann's fix to macc-802.11 that now allows random slot selection in the contention window everytime a data brdcast pkt or an RTS is sent out to the network.

- [Padma Haldar] Wed May 29 15:00:03 PDT 2002 Added GEAR into diffusion. added tcl wrappers for gear.

- [Padma Haldar] Tue May 14 14:01:21 PDT 2002 Added map scheduler that uses STL map and dequeue collections to implement a scheduler in ns. Code contributed by George Riley, Georgia tech. see common/scheduler-map.cc for details.

- [Padma Haldar] Tue May 7 10:39:21 PDT 2002 Added patches for bug fix in queue from George Riley. Files changed are: queue.cc, drop-tail.cc, semantic-packetqueue.cc & semantic-packetqueue.h Packet-queue now returns the last tail, everytime a new pkt in enqueued;

- [Padma Haldar] Mon May 6 14:48:54 PDT 2002 Merged another round of changes of diffusion (3.1.0) into ns. Dir locations have changed, naming convention changed; push added etc.

- [Sally Floyd] Tue Apr 30 10:25:20 PDT 2002. Added configurable parameter "mark_p_" to Queue/RED to control the decision of whether a selected packet is to be marked or dropped. When p < mark_p, the selected packet is marked if ECN is being used. When p > mark_p, the selected packet is dropped instead of marked, whether or not ECN is being used. By default, mark_p_ is set to 0.1, and with this setting, the behavior of the validation tests is unchanged.

### ns-2.1b9a[OLD]/ns-2.25a[NEW] released on Wed Jul 3 18:00:00 PDT 2002

- [Tim Buchheim] Wed Jul 3 18:00:00 PDT 2002
  Many fixes to allow compilation on Windows

- [Tim Buchheim] Wed Jul 3 18:00:00 PDT 2002
  Fixes for compiling on FreeBSD, Solaris, SUSE Linux

- [Padma Haldar] Tue Jun 4 16:22:13 PDT 2002
  Made changes to allow non-STL builds of ns. All STL specific tcl code has been moved under respective files and they get sourced (or not) from ns-lib.tcl as opposed to from the Makefile as before.

- [johnh] Wed May 22 11:51:40 PDT 2002
  Added autoconf detection of STL namespace (ported from lavaps :-).

### ns-2.1b9[OLD]/ns-2.25[NEW] released on Sat Apr 13 16:26:33 PDT 2002

- [Padma Haldar] Wed Apr 10 13:27:37 PDT 2002 Bug fix and optimisation for calendar schduler; contributed by Yuri Pryadkin. 1. If the new calculated width of bucket is 0 (happens when multiple events are all scheduled at the same time), use the old calculated width. 2. when max_/nw is greater than unsigned long defined for the system, calculate new width by multiplying a factor that leaves some space for future events.

- [Debojyoti Dutta] Added an approximate analytical simulator module to NS2. With this package, one can quickly simulate the steady state of a network comprising of long and short lived TCP flows with DropTail and RED queueing. To incorporate this module, I have added small amounts of code in several functions that can be turned on by a single Simulator useasim_ flag.

- [Padma Haldar] Applied Benyuan Liu's patch which makes Snoop work again. Example scripts available under ~ns/tcl/ex/snoop. Actually this was added long time back, around oct, 2001. Adding to CHANGES.html now.

- [Padma Haldar] Wed Mar 13 16:44:22 PST 2002 several bug fixes. 1. incoming_ parameter included in class packet by CMU modifications were used to determine the direction of pkt flow in lower layers of the stack (mac, LL). Later this was replaced by direction_ in hdr_cmn. See packet.h for details about direction_. changes were made to replace incoming_ with direction_. 2. Comments added to older version of diffusion examples tcl/ex/{diffusion-rate-run.tcl, diffusion-prob-run.tcl} pointing to th newer diffusion implemented under ~ns/diffusion3 and example scripts available under tcl/ex/diffusion3/. 3. tora bug fixes include removing incoming flag. also replacing src() & dst() with saddr() and daddr() resp.

- [Padma Haldar] Wed Mar 13 16:44:22 PST 2002 Bug fixes and changes made to mac-802.11. A special thanks to Gavin Holland for providing patches and support for the port. Changes consis of the following bug fixes for the mac-802.11: 1. The new IEEEmac-802.11 -1999 std defines a separate PLCP (Physical Layer Convergence Protocol) layer and a corr. PLCP hdr and preamble (used for sync'ing between nodes etc); This PLCP is reqd to be tx'ed at a fixed rate of 1Mbps. Our older mac model lacked this feature. 2. The new std also states that all nodes in a network MUST use a data rate from a set of what is called the Basic data set, for tx'ing their control pkts (CTS, RTS and ACK). and they MAY choose a different data rate for tx'ing data pkts. This feature has been added. 3. There are some other bug fixes. one is the length of time the mac needs to wait before tx'ing a data pkt, which depends on whether CTS/RTS reservation is used or not etc. and it is something like difs RTS sifs CTS sifs DATA sifs ACK difs DATA sifs ACK 4. Pkt hdsr now have an additional field that have the txtime for that pkt. 5. The energy calculation at wireless-phy is modified to reflect these changes.

- [Padma Haldar] Wed Mar 13 16:44:22 PST 2002 Newer updated version of dsr contributed by the cmu group, and specifically by Yih-Chun Hu, into ns. This port adds newer versions of routecaches, mobicache and simplecache. also maintains flowstates in the nodes.

- [Sally Floyd] Fri Mar 8 2002
Changed the default for the Agent/TCP variable "tcpTick_" from 0.1 to 0.01 seconds, to more accurately reflect current reality. This variable controls the granularity for TCP's measurements of round-trip times, and affects the value of TCP's retransmit timer.

- [Sally Floyd] Fri Mar 8 2002
Adding a variable "rfc2988_" for TCP to enable code that makes TCP's retransmit timers RFC2988-compliant, by clamping minrto_ before applying t_backoff_. The default is for "rfc2988_" to be true. The code is from Tom Kelly. The validation test is in "./test-all-tcp dialup" and "./test-all-tcp dialup1".

- [Sally Floyd] Fri Mar 8 2002
Added bug-fixes to the retransmit timer backoff in two-way TCP. The backoff of the retransmit timer was not working correctly when the timestamp option was enabled (it was backing off when it didn't need to). A bug in the backoff also was fixed for ECN with small windows. Bug-fixes contributed by Tom Kelly. (Two-way TCP is still not completely validated, with some of the incomplete validation tests in "./test-all-broken".)

- [Padma Haldar] Mon Feb 25 12:26:08 PST 2002 another round of diffusion changes got checked in. * got rid of packing/unpacking of diffusion msgs. msgs are now directly converted into ns packets instead of the earlier version of diffpkts. * got rid of locks

- [Kun-chan Lan] Tue Feb 12 12:41:35 PST 2002
Added HTTP1.1 persistent connection feature to empweb module.

- [Padma Haldar] Wed Jan 30 16:15:32 PST 2002 Ported newer version of aodv (version 6 of aodv draft). Contributed to ns-2 by Elizabeth M. Belding-Royer and created originally by Mahesh Marina and Samir Das at University of Cincinnati.

- [Padma Haldar] Fri Jan 25 12:02:13 PST 2002
Made changes to how flat and hier classifier allocates memory to increase the rtg tables. instead of doubling, the tables are set to n where n is the total no of nodes in topology. However, since % memory used by classifiers seem to be only 0.5-1% of the total memory, the impact on memory savings were not significant.

- [Xuan Chen] Thu Jan 24 22:30:33 PST 2002
  Fixed bugs with the wired-cum-wireless sample script and test suite. The original scripts did not input the right number of wireless nodes (interfaces) to the god, as a result warning messages are printed during the simulations. The fix is contributed by Joerg Diederich.

- [Xuan Chen] Wed Jan 23 23:30:33 PST 2002
  Integrated Smoothed Round Robin scheduler into ns. For details on SRR, refer to "SRR: An O(1) Time Complexity Scheduler for Flows in Multi-Service Packet Networks", Chuanxiong Guo, sigcomm'01.

- [Alefiya Hussain] Sat Jan 5 07:57:29 PST 2002
  Added dmalloc support for TclpAlloc debugging

- [Alefiya Hussain] Sat Jan 5 07:47:20 PST 2002
  Added a perl script to allow inet to ns topology conversion

- [Sally Floyd] Mon Jan 2 2002
  Added "queue_in_bytes_" to Queue/DropTail, so that the DropTail queue can be in units either of packets or of bytes. The validation test is in "./test-all-simple tahoe1Bytes" in tcl/lib.

- [Jong-Suk Ahn] Tue Jan 2 2002
Expanded the error option of node-config command from errProc to two options such as IncomingErrProc and OutgoinigErrProc. Previously, aritifcial errors could be added to packets only from outgoing stacks of senders, causing all packets to suffer the same degree of propagation errors. The addition of IncomingErrProc allows each receiver to receive packets corrupted differently based on their separation from the sender. Other than changing the name of options for corrupting packets, the usgae of these two options are the same as the previous errProc in that the option value is the procedure name creating a new error module that is inserted into the wireless stack. For the usage, see test-suite-wireless-lan-newnode-err.tcl.

- [Padma Haldar] Thu Dec 20 12:00:02 PST 2001
First cut for ns's top level directory organisation was made. This round of changes called for creating sub-dirs only at the top level and left the existing subdirs unchanged/unmoved. List of new dirs created were : adc, apps, classifier, common, links, mac, mcast, queue, routing, satellite tcp, tools, trace etc

- [Sally Floyd] Mon Dec 3 2001
  Added a patch from Tom Kelly for ECN in FullTCP: An ECN SYN packet has ECE and CWR set; an ECN SYN-ACK packet has ECE set and CWR not set; TCP ACKs do not have ECT set; and on receiving an ACK with ECE set a receiver does not open the congestion window. The validation test is in test-all-ecn-full in tcl/test.

- [Sally Floyd] Mon Dec 3 2001
  Corrected one-way TCP so that when "syn_" is used, the first 40-byte packet consists of header bytes, with no data bytes used.

  [Kun-chan Lan]Mon Dec 3 7:43:48 PST 2001

First cut codes for empftp.{cc.h,tcl}, which are now part of empweb module

Features: Modeling FTP traffic based on empirical CDF for the following parameters:
- User arrival
- Number of files tranmission per User session
- file interarrival time
- file size
- TCP window size
- Server selection

empftp is based on empweb

- [Tim Buchheim] Fri Nov 30 2001
  Added a patch from Michele C. Weigle to replace the existing random number generator (an implementation of LCG16807) with a much better one (MRG32k3a, by Pierre L'Ecuyer). The output of scripts using random numbers will change!

- [Sally Floyd] Wed Nov 28 2001
  Changed the default for "useHeaders_" in Agent/TCP to true. Also changed the default for "singledup_" in Agent/TCP to 1, to enable Limited Transmit, allowing the sending of a single new packet in response to a single duplicate acknowledgement.

- [floyd] Tue Nov 27 13:34:43 PST 2001
  Added an option "useHeaders_" to one-way TCP that takes into account the TCP/IP header size in bytes when computing the size of the packet to be transmitted on the wire. The current default is for this to be false, but at some point the default will be changed. The validation test is "./test-all-simple statsHeaders" in tcl/test.

- [floyd] Thu Nov 8 12:15:49 PST 2001
  Added code from Wael Noureddine to deal robustly with outstanding packets from the previous incarnation of a connection after a reset (since there is no FIN_WAIT protection in one-way TCP). This involves adding a lastreset_ variable at the sender and sink that records the time of the last reset. Any ACKs/packets with timestamps that are older than this time would be discarded at the sender/sink. The validation tests are in ./test-all-tcpReset.

- [Padma Haldar]Wed Nov 7 09:52:45 PST 2001
Ported first-cut of Directed Diffusion (developed by SCADDS, USC/ISI) into ns. All files related to diffusion can be found under ~ns/diffusion3. All ns specific files can be found at ~ns /diffusion3/ns. An example script can be found at ~ns/tcl/ex/simple-diffusion.tcl and it tests a simple 3 node topology where (1) all 3 nodes can hear each other and a source and sink apps pair is setup on two of the nodes. (2) where node0 and node2 donot hear eachother and communicated thru the third node1. src and skn apps reside on node 0 and node2. **Note templates are used extensively and hence this code maynot be run in systems having compilers that donot support STL.

- [Tom Henderson] Mon Nov 5 22:10:16 PDT 2001
  Support for wired/satellite integration (see satellite chapter of ns documentation). New example script: tcl/ex/sat-wired.tcl

- [Tom Henderson] Thur Oct 11 07:15:31 PDT 2001
  Added support for tracing satellite aloha collisions, and enhanced the example test script.

- [Kun-chan Lan] Wed Oct 10 23:50:46 PST 2001
First cut of ModelGen is added. ModelGen is a tool that rapidly generates traffic model from raw trace for simulation and traffic analysis. ModelGen contains a set of C/Perl/Tcl programs. It takes a tcpdump file as input and outputs a set of CDF (Cumulative Distribution Function) files that model the user-level statistics and network characteristics including RTT and bottleneck bandwidth. Currently it only supports Web and FTP traffic.

- [John Mehringer] Thu Nov 2 13:51:28 PST 2000

- [Alefiya Hussain] Thur Sept 20 11:50:56 PDT 2001
  Applied patch by Ruud Schramp to port ns emulation code to run on Linux Added configure scripts to test for pcap and appropriate TCP headers Allowed compilation of nse if tests are postive

- [johnh] Fri Aug 3 15:55:36 PDT 2001
more error checking in Scheduler::schedule, linux floating point fix from Tom Kelly exit

- [Tom Henderson] Mon Jul 30 19:22:31 PDT 2001
  Updated satellite code to conform to "$ns node-config" node configuration syntax used by wireless nodes.

- [floyd] Fri Jul 20 13:30:36 PDT 2001
  Adding a procedure to Queue/RED for the automatic setting of minthresh, invoked when the input file specifies minthresh=0. The procedure sets minthresh to the maximum of 5 packets, and the number of packets corresponding to 5 ms of queueing delay.

- [Padma Haldar]Wed Jul 18 10:40:09 PDT 2001
Added debugged version of bayFullTcp into ns. Also extended test-suite-test-reno for bayfulltcp.

- [kfall] Tue Jul 17 11:04:07 PDT 2001
  Major restructuring of Full TCP, including moving the ReassemblyQueue data structure to its own files. This affects Makefile.in, rq.{cc,h}, tcp-full.{cc,h}. Also, disable SACK in Full TCP for now. Will be re-working this next. More minor, but it is now also possible to disable the header prediction code. Regression tests unaffected.

- [floyd] Fri Jul 6 16:23:09 PDT 2001
Adding a procedure to Queue/RED for automatically setting q_w and maxthresh when the default values are 0.0 and 0 respectively. The code for setting q_w is from Ramki Gummadi. I have not yet changed the default values in the NS distribution, but I will do this shortly.

- [Padma Haldar]Thu Jul 5 21:20:26 US/Pacific 2001
Added PGM code contributed by Ryan Barnett (rbarnett@usc.edu) into ns. Pragmatic General Multicast (PGM) is a reliable multicast protocol designed at Cisco. PGM differs from other protocols in that it uses router assistance. The code was contributed by Ryan Barnett and implements a large subset of the PGM specification.

- [floyd] Fri Jun 29 15:07:55 PDT 2001
Adding code for REM and Gibbens/Kelly (GK) active queue management. The GK code is from Srisankar Kunniyur, with minor changes from Jitendra Padhye. The REM code is from Sanjeewa Athuraliya and Victor Li, with a merging of two files into one from Jitendra Padhye. The validation tests are from Jitendra Padhye, and are "./test-all-gk" and "./test-all-rem" in "tcl/test". The REM code still needs a final check from the code authors.

- [floyd] Tue Jun 26 13:22:02 PDT 2001
Adding code for the Vq virtual queue, a version of active queue management. The code is from Srisankar Kunniyur, with fixes and validation from Jitendra Padhye. The validation test is "./test-all-vq" in "tcl/test".

- [floyd] Fri Jun 15 18:24:24 PDT 2001
Adding code for the PI controller, a version of active queue management. The code is from Jitendra Padhye, based on the PI controller proposed by Hollot et. al., in the paper ``On Designing Improved Controllers for AQM Routers Supporting TCP Flows'', in Infocom 2001. The validation test in "./test-all-pi" in "tcl/test". The file "tcl/ex/picoeff.m" is a Matlab script for generating PI parameters.

- [floyd] Thu Jun 14 17:19:43 PDT 2001
Added parameter "adaptive_" for adaptively adjusting max_p, to keep the average queue size between minthresh and maxthresh. The validation test and example is "./test-all-adaptive-red" in "tcl/test".

- [weiye] Thu Jun 14 15:20:55 PDT 2001
Added the visibility-based shadowing propagation model, shadowing-vis.{h, cc}. It uses a bitmap to represent the environment of the wireless network. Two shadowing models are used for either line-of-sight or obstructed transmission. The example script wireless-shadowing-vis-test.tcl and the bitmap environment.pnm can be found at ns-2/tcl/ex/.

- [floyd] Tue Jun 12 16:55:03 PDT 2001
Added a parameter summarystats_ to Queue/RED to report the true average queue size since the beginning of the simulation. The validation test and example is in ``./test-all-simple stats2'' in ``tcl/tests''.

[Kun-chan Lan]Mon Jun 11 19:42:22 PDT 2001
First cut codes for module empweb. The files added include ~ns-2/empweb/empeb.cc, ~ns-2/empweb.h and ~ns-2/tcl/webcache/empweb.tcl

Features: Modeling Web traffic based on empirical CDF for the following parameters:
- User arrival
- Number of Pages per User session
- Page interarrival time
- Page size
- Number of Object per Page
- Object interarrival time
- Object size
- Request size
- TCP window size
- Usage of Persistent and non-persistent connection
- Server selection

empweb is based on previous Polly/Haobo's web model (i.e. webtraf.{cc.h})

[floyd] Sat Jun 9 13:44:00 PDT 2001
Added options to ErrorModel for delaying packets. The validation test and example is ``./test-all-links delayPacket'' in ``tcl/test''.

### ns-2.1b8[OLD]/ns-2.24[NEW] released on Wed June 06 11:05:52 PDT 2001

- [Alefiya Hussain] Wed May 30 16:20:46 PDT 2001
Bug fix in Mac 802.3 Collision trace code. Added separate drop head for mac layer. Now collision are reported in trace file as 'c' If there are 17 collisions for a packet, it indicates that it is dropped due to extensive collisions

- [floyd] Sun May 27 22:56:14 PDT 2001
Made several small changes to two-way TCP, in tcp-full.cc.
Made a small change so that a timeout after an ECN, for the same window of data, does not result in another reduction in the congestion window.
Made a small fix so that "overhead_" works correctly with FullTcp, to add a random overhead to the packet sending time.
Added the ability to specify packetSize and have segsize derived from that, and vice versa.
Created the Tcl procedure create-connection-listen for creating two-way TCP connections.
Added three new validation tests for two-way TCP, test-all-ecn-full, test-all-simple-full, and test-all-tcp-init-win-full. There are several validation tests commented out because they don't yet work correctly. One example is sack4 in test-all-tcp-init-win-full. There are also many validation tests for one-way TCP that have not yet been ported to two-way TCP.

- [floyd] Sun May 27 13:38:04 PDT 2001
Changed some defaults for TCP and RED, over the last few weeks.
Added minrto_ to TCP, with a minimum RTO, with a default of 1 second. Added the variable timerfix_, with default set to true, to update the TCP RTO timer *after* the RTT is updated, instead of before.
Changed the defaults for the Agent/TCP variables syn_ and delay_growth_ to true, and changed the default for Agent/TCP/windowInit_ to 2, so that the first packet is 40 bytes, like a SYN packet, and the initial window of two packets starts after the ACK for the first packet has been received.
Changed the default for Queue/RED/gentle_ to true, so that the dropping probability increases gradually as the average queue size exceeds maxthresh.

- [Chalermek Intanagonwiwat] Fri May 25 02:42:21 PDT 2001
Small bug fixes in diffusion. Get rid of a random number that is generated from a pointer. Start() should be virtual.

- [Padma Haldar] Tue May 22 09:58:13 PDT 2001
Ported Rishi Bhargava's source-routing code into ns. Most files under ~ns/src_rtg/. Example script tcl/ex/src_test.tcl & tcl/test/test-suite-source-routing.tcl

- [Padma Haldar] Mon May 21 12:11:42 PDT 2001
First cut for event-tracing support added - support added for Tcp only. Shall be extended to cover all tcp test-suites in future. also support to be added for agents other than tcp.

- [Alefiya Hussain] Tue May 15 5:30:45 PDT 2001
Bug Fix in BayTcp code to prevent packets being sent to absent application agent.

- [Ankur Sheth] Tue May 15 2:00:45 PDT 2001
Added emulation code for passing TCP/UDP traffic through ns. TTL values are updated in live network packets to reflect ns hops. Example script provided in ~ns/emulate/thrutcp.tcl along with configuration instructions.

- [Alefiya Hussain] Tue May 15 2:00:45 PDT 2001
Added emulation support to allow ns BayFullTCP agent to interact with real world TCP application. Active and passive connections are supported. Example script provided in ~ns/emulate/tcpemu.tcl along with configuration instructions.

- [Padma Haldar] Thu Apr 5 15:50:46 PDT 2001
Ported Kathy Nichole's version of full-tcp into ns (calling it BayTcp). files are under ~ns/baytcp dir. ex script ~ns/tcl/ex/redlight.tcl first cut and yet to be thoroughly tested for all corners and bugs.

- [Jong-Suk Ahn] Thu Mar 15 12:00:00 PST 2001
Expanded node-config command to add error models into a protocol stack of wireless nodes. For the usage, see test-suite-wireless-lan-newnode-err.tcl. Furthermore, an experimental bit-error model and a simple FEC module are added in errmodel.cc and fec.cc

- [Padma Haldar] Tue Mar 6 12:32:23 PST 2001
Added bind function for binding TclObjects in tclcl. Files modified: tclcl.h, Tcl.cc. See rtmodule.cc & ns-rtmodule.tcl for example.

- [Padma Haldar] Fri Mar 2 10:59:12 PST 2001
Nix-Vector Routing contributed to ns from George F.Riley, Georgia Tech, was integrated into ns source code.

List of files added/modified:

- Makefile.in

- addition of new directory ~ns/nix:

- classifier-nix{.cc,.h}

- hdr_nv{.cc,.h}

- nixnode{.cc,.h}

- nixroute.cc

- nixvector{.cc,.h}

- tcl/lib/ns-rtmodule.tcl

- tcl/lib/ns-lib.tcl

- tcl/lib/ns-packet.tcl

- tcl/test/test-all-nixvec

- tcl/test/test-suite-nixvec.tcl

- tcl/test/test-output-nixvec/{NixVec.Z,NoNixVec.Z,quite.Z}

Contact info of contributor: George Riley(riley@cc.gatech.edu)

- [Padma Haldar] Thu Mar 1 10:27:46 PST 2001
Error checking added for out of range address for ascii-to-interger conversions in addr2str routine.

- [Padma Haldar] Thu Feb 22 11:10:01 PST 2001
The following modifications made to the routing code in NS: 1. In order to increase run-time efficiency, we moved iteration-heavy parts of routing from OTcl to C++. The classifier-population has been moved to C++ which have resulted in run-time efficiency increase of more 50%. 2. Simulator is now a split object. It manitains a list of node both in OTCl and C++. will try to reduce it down to a single list: routing-modification partII. 3. Every node now maintains a pointer to the head of routing module chain. so incase of a routing add/update, the info flows from head of the chain to the other modules connected in the chain. same model should be there in Otcl which will replace the routing module list maintained by each node. --to-do-for-partII. 4. Population of classifiers now done by routing modules entirely in C++. 5. A new ParentNode class added that acts as parent class for different kinds of nodes like Node, LanNode, AbsLanNode, BroadcastNode etc. 6. Wireless routing modules to be added in future --PartII.

- Yuri Mon Feb 19 12:31:47 PST 2001
Fixed the "packet RX while in IFS" bug in 802.3, that could lead to packet duplication.

- [Ya Xu] Wed Feb 7 01:24:56 PST 2001

    Add GAF algorithm (for AODV and DSR) into ns
    Validation test suite is added too.
    A bug regarding multicast address in AODV code has been fixed

- [floyd] Thu Jan 18 19:34:44 PST 2001
Added ECN to TFRC, the equation-based congestion control module.

- [Tom Henderson] Fri Jan 12 09:45:00 PST 2000
Bug fix in satellite repeater code (ns-sat.tcl)-- interface queue limit was not changeable. Reported by Haroldo Zattar.

- [Alefiya Hussain]
Implemented an abstract LAN, in which CSMA/CD mechanism is replaced by a DropTail queue.
Validation tests provided in ~ns/tcl/test/test-suite-lan.tcl

- [Alefiya Hussain]
Added support for collision (MAC level) traces on the IEEE 802.3 LAN
Traces are indicated by a 'c' in the trace file. These traces can be generated using a trace option in make-lan command.
Validation tests provided in ~ns/tcl/test/test-suite-lan.tcl

- [floyd] Tue Dec 19 14:48:32 PST 2000
Added DelAckSink::reset() to TCP sinks, to prevent a core dump when a TCP connection is reset but the delay timer for delayed acks does not get reset also. Bug report and fix from Joseph Ishac. Validation test in "test-all-tcpReset".

- [Xuan Chen]Wed Dec 13 21:08:35 PST 2000
Added patch from Eric Weigle for TCP vegas.

- [johnh] Tue Dec 12 10:36:34 PST 2000
Updated config.guess to autoconf's current one.

- [Xuan Chen] Mon Nov 27 20:22:49 PST 2000

- Reorganized the policy related code in diffserv module, make different policies as seperate classes. Users can add their own policy easily.

- Create a new class PolicyClassifier to keep states for different policies and flows.

- [ratul] Fri Nov 17 14:00:00 PST 2000

- Added RED-PD code to ns. RED-PD intorduces a pre-filter in front of a RED queue to drop selected flows preferentially.

- Added RED-PD simulation scripts containing the identification engine to ns distribution at ~ns/tcl/red-pd.

- Added a preliminary version of Pushback code to ns. Pushback is used to detect and control high bandwidth aggregates.

- Added a simple list structure in node.cc to help a Node keep a list of neighbors. A similar list structure is present in mobile node I think, wonder if that can be brought down to base node.

- [haoboy] Mon Nov 13 10:04:34 PST 2000
Updated lib/dmalloc_support.cc for 4.7.1/4.8.0 (actually done long time ago, but log it now.)

- [John Mehringer] Thu Nov 2 13:51:28 PST 2000
Added patch from Eric Weigle for scheduler to use 64 bit integers when available.

- [Xuan Chen] Wed Nov 1 13:51:28 PST 2000
Integrated diffserv module contributed from Nortel. The source files are located at ns-2/diffserv; there are also some example scripts (ds-cbr-*.tcl) under ns-2/tcl/ex/diffserv.

- [PH] Fri Oct 20 14:18:48 CEST 2000
Two bug fixes related to massive web traffic simulations:

- memory leak fix in tcl/http/htto-mod.tcl for those still using the old web traffic generator code

- bug fix in ReassemblyQueue::add(), full-tcp.cc, according to Li Fan's report on 10 Feb 2000

### ns-2.1b7a[OLD]/ns-2.23a[NEW] released on Mon Oct 16 21:01:42 PDT 2000

- [johnh] Thu Nov 9 10:53:42 PST 2000
ns-2.1b7a released by Haobo Yu, Ya Xu, and John Heidemann. This release is exactly what was in ns-2.1b7 with these bug fixes/enhancements:

- a bug in gen-map is fixed

- a heap scheduler memory leak is fixed

- nse should now build on FreeBSD and Linux

- the allinone release should build cleanly on Solaris machines

- allinone information about modifying PATH and LD_LIBRARY_PATH is now clarified

### ns-2.1b7[OLD]/ns-2.23[NEW] released on Mon Oct 16 21:01:42 PDT 2000

- [yaxu] Mon Oct 16 21:01:42 PDT 2000
ns 2.1b7 released

- [weiye] Fri Oct 13 11:51:06 PDT 2000
(1) Added a new chapter in ns Manual: radio propagation models. (2) Changed a separate program ~ns/indep-utils/propagation/threshold.cc for compute receiving threshold for a specified communication range for all available propagation models in ns.

- [kclan]Mon Oct 2 20:00:00 PDT 2000
Creation of Real Audio traffic model:

- create source file realaudio.cc

- create example script ramodel.tcl in ~ns/tcl/ex/realaudio

- create testsuite for realaudio model in ~ns/tcl/test/test-output-realaudio

- [johnh] Fri Oct 6 11:43:29 PDT 2000
Changes from eval to evalc wherever eval'ing constant strings with embedded subcommands (with []). This construct crashes tcl-8.3 (that modifies strings) when used with compilers that don't properly match against eval(const char*) (like apparently egcs-2.91.66).

- [weiye] Mon Oct 9 16:39:46 PDT 2000
Test suite for the shadowing propagation model is added.

- [weiye] Mon Oct 2 13:39:46 PDT 2000
Modifications of the propagation models: (1) The Friis free space model is added in propagation.{h, cc}. Users can directly use it in their simulations. (2) Thanks to Leonard Miller's suggestion, we modified the equations in the two-ray ground model. The system loss L is taken out from the calculation of the cross-over distance, and it is added in the calculation of the received power.

- [haoboy]Thu Sep 14 11:01:49 PDT 2000
Partially completely node restructuring:

- A node can be considered as a collection of classifiers and routing modules. An important function that Node should provide is how to interface classifiers to routing modules. There are two aspects to this: (1) what is the organization of these classifiers, and (2) when there is a routing change, which classifiers should be notified and how.

- Hierarchical routing, manual routing, virtual classifier, MPLS have been converted to the new scheme.

- Multicast code is partially converted, in that the hookup of switch_ is done via RtModule/Mcast, however, existing mcast code is not changed to be wrapped entired in this module; it is still in the forms of a bunch of Simulator and Node instprocs.

- Mobile node and satellite node are not converted. Mobile code in itself needs to be cleaned up. For instance, MobileNode partially duplicates the functionality of MIP, however it does not entirely replace old Node/MIPBS and Node/MIPMH. The conversion of these two modules to the new scheme also requires changing their c++ code, which is not trivial.

Other changes include:

- Move AddrParams class to a singleton split object class. Most of its parameters are now stored in c++ space.

- Created a wrapper hierarchical classifier to present a single classifier interface to node configuration. This allows us to avoid those gazillions of `if [Simulator set EnableHierRt_] ...` that were all over the place.

- [haoboy]Tue Sep 12 20:01:53 PDT 2000
Added 'lsort -dictionary' to DV routing code so its results will not change as the shadow object names of nodes change due to addition of new objects. This paves the way to modular node configuration as some new node routing modules would be added during the construction of each node. Also changed is [array names] code in web cache, a lsort -dictionary will enhance its validation stability.
BTW I think SplitObjectCompare in tclcl/tcl-object.tcl is obsolete now since 'lsort -dictionary' does the same job but it's built in hence should be faster than an outside command.

- [haoboy]Thu Aug 31 13:34:25 PDT 2000

1. Added procedures into ns-packet.tcl to help customizing packet headers in simulation. (Packet header chapter in ns manual has been updated; please read it for more information.) This may lead to big savings in packet-intensive applications. For instance, currently all protocol headers add up to about 2KB per packet, but including only the common header, IP header and TCP header takes only about 100 bytes. This may mean a lot of savings for, say, large-scale web traffic simulation. But I've not tested it.

2. Get rid of all off_[hdr]_ stuff from all source files. Now ns-packet.tcl does not create these offset variables at all. This saves two bounded variables per NsObject.

3. Move static packet header declaration from encap.h to encap.cc. A variable _instantiation_ should not reside in a header file.

- [haoboy] Thu Aug 31 12:55:49 PDT 2000

1. Node cleanup: move all energy-related variables and methods in the base Node into EnergyModel. Note that node_on_ may be moved back later, but for now its handler is closely tied to wireless routing.

2. Added dependency of tcl/mobility/dsdv.tcl into Makefile.in

3. Moved tcl/lib/rtProtoLS.tcl into tcl/rtglib, where all routing protocols stay.

4. Added a line about link state into unicast.tex, and labeled link state and MPLS as undocumented.

- [haoboy] Tue Aug 29 17:03:43 PDT 2000
Node cleanup: (1) moved nam tracing hookup to the base Node, so we do not need to keep namtraceAllFile_ in Node, which duplicates that in Simulator, nor do we need to keep a namDefined_ flag. (2) Removed and commented out unused otcl instprocs in Node which are masked (through inheritance) by those in MobileNode.

- [haoboy] Thu Aug 24 14:25:08 PDT 2000

1. Added MPLS package originally written by Gaeil Ahn. It was modified to reduce the amount of otcl calls, and moved to use node-config instead of creating a new Node subclass. However, there is still a long way to go when a new routing module can be introduced into a Node without interfering with other routing modules. Please see TODO.html for more information.

2. Fixed bugs in assert{} usage: what follows must be quotes instead of braces, the latter does not perform substitution and variables in the expression won't be visible inside assert{}.

3. Cosmetic changes in ns-node.tcl and ns-route.tcl. Commented out unused code, including Simulator::compute-routes-mobilenodes{}, Node::*TcpSession{}. Commented code resides at the end of its corresponding file.

4. Changed tcl/test/test-all-template1 to use case instead of if(s) to redirect stdout to temp.rands.

- [floyd]Sun Aug 20 22:17:11 PDT 2000
A change to setting the pipe_ variable in Sack TCP when entering in Fast Recovery for the non-ECN case, to make the performance the same as the ECN case. Motivated by a suggestion from Mark Allman. Set oldCode_ to true to use the old code. Validated in "./test-all-tcp underutilized_100ms_control_Sack".

- [haoboy] Thu Aug 17 22:16:32 PDT 2000

1. Autoconf support for checking compatibility of compiler's STL support. Basically it tries to see if template inheritance is supported, which some earlier gcc does not seem so.
Currently this is used only for the link state routing protocol module, which uses STL extensively. However, this mechanism can be easily extended to enhance the modularity of ns, in the sense that the user may actively choose which module to compile into her/his ns binary, thus save memory/disk space/initialization time/etc.
IMPORTANT: validate is now moved to validate.in, because link state module may or may not be present depending on availability of STL.

2. Removed numerous `... set off_*_ 0` in tcl/*/*.tcl. Although off_[hdr]_ is an obsolete way to access packet headers, it is still used in much existing code. These offsets MUST be set through the code in tcl/lib/ns-packet.tcl. Explicitly setting it to 0 will result in accessing packet header in the wrong place. However, this is a very treachrous bug, because ns packet header is 'sparse' in that much of the space is not used in a simulation. Therefore, most of the time this bug will not lead to segmentation fault or incorrect functionality. Usually it only results in mysterious segmentation faults in completely irrerelevant places.
The most significant bug related to this problem is `off_arp_` and `off_sr_`. The former results in the crash of `wireless3` test in `WLtutorial` test suite. The latter results in incorrect output of `CMUTrace` in dsr-related tests in `wireless-lan`, `wireless-lan-newnode`, and `wireless-tdma` test suites.

3. Merged all the `delay_parse`, `time_parse`, `bw_parse` in tcl/*/*.tcl. There exists at least 3 versions of these codes with slightly different implementations. Now they all converge to John's `time_parse` and `bw_parse` in tcl/lib/ns-lib.tcl.

4. test-output-wireless-lan/dsr.Z was truncated at the end because test-suite-wireless-lan.tcl (and -lan-newnode.tcl) did not flush the trace file before rewriting it.

5. Removed dmalloc 3.* support because their headers do not carry version information.

6. Removed unused iostream.h in various files.

- [haoboy] Wed Aug 16 16:59:15 PDT 2000
Moved list.h to lib/bsd-list.h to prepare for STL support, since list.h conflicts with STL's list.h

- [johnh] Tue Aug 1 15:30:30 PDT 2000
Patches to allow ns to build with tcl-8.3 (still must specify --with-tcl-version=8.3 and --with-tk-version=8.3 in the configure). Validation tests VC and monitor still fail (segfault in tcl code)---this is work in progress.

- [floyd]Sun Aug 13 09:48:15 PDT 2000
Added code (on July 18) for correctly tracing early packet drops from RED when flow monitors are attached. Code from Ratul Mahajan.

- [floyd]Sun Aug 13 09:48:15 PDT 2000
Added the following options to the one-way TCP, over the last few weeks:

- Added noFastRetransmit_ for Tahoe TCP without Fast Retransmit. Validated in "./test-all-testReno". (July 8)

- Added fixes to the scoreboard and TCP/Sack1 code, fixes contributed by Ethan Blanton. The scoreboard did not properly advance the left edge of the SACK window during Fast Recovery *unless* the processed packet contained a SACK block. (July 9)

- Added code contributed by Ethan Blanton, so that the Sack1 TCP sender checks if duplicate acknowledgements acknowledge the receipt of new data, for the one-way Sack1 TCP. Validated in "test-all-ecn ecn_noBugfix_sack". (July 22)

- Added precisionReduce_ for non-integer reductions of the TCP congestion window. Code contributed with Deepak Bansal. This is for use with TCP with non-standard values for the window increase and decrease parameters, and is validated in "./test-all-aimd". (August 7)

- Added "k_parameter_" and "l_parameter_" for binomial congestion control, used with wnd_option_ == 6. Code contributed by Deepak Bansal. Validated in "./test-all-aimd". (August 9)

- Removing all uses of the defined constant NUMDUPACKS, replacing it with the use of the added variable numdupacks_ instead. Code from Ethan Blanton. Validated in "./test-all-tcpOptions". (August 12)

- [johnh] Tue Aug 1 15:30:30 PDT 2000
Nam section of the documentation started with details about how to make animated gifs.

- [haoboy]Wed Jul 26 18:11:09 PDT 2000

- Added link state routing code contributed by Mingzhou Sun.

- Remove conditional directive NAM_TRACE.

- Added further explaination to Classifier::no-slot{} error messages in tcl/lib/ns-lib.tcl

- [haoboy]Tue Jul 25 14:59:09 PDT 2000
PLM code contributed by Arnaud Legout at EURECOM.

- [xuanc] Sat Jul 22 16:58:54 PDT 2000
(1)New API (channel) added to node-config in ns-lib.tcl to support multiple interfaces for wireless node. A demo tcl script also included. (2)The URLs in README and CHANGES.html are fixed.

- [weiye] Fri Jul 21 13:20:59 PDT 2000
(1)A new radio propagation model, the shadowing model, is added. It uses the path-loss model to predict mean received signal power for certain T/R distance. Then a random variable, called log-normal shadowing, is added to the mean value. Different parameters of the path-loss exponent and the shadowing deviation represent different propagation environments. This statistical model is applicable to both outdoor and indoor. (2) A bug fixed in wireless-phy.cc. The bug disabled setting values of bound variables from Tcl.

- [intanago] Mon Jul 10 7:31:37 PDT 2000
(1) Checked in directed diffusion, flooding, and omnicient multicast modules including codes, test suits, scenarios, and examples. (2) Added more supports on idle energy consumption. (3) Fixed some bugs of energy consumption in transmission and reception.

- [floyd] Sun Jul 9 09:38:26 PDT 2000
Added "first_reset_" to red.{h,cc} so that "queue-in-bytes_" works correctly for RED when reset() is called multiple times. Bug report from Wen Shushan. The option "queue-in-bytes_" had been working correctly in the validation test in "./test-all-red red_twowaybytes", but in other scripts REDQueue::reset() can be called twice, and in this case "queue-in-bytes_" had not been working correctly.

- [floyd] Fri Jul 7 17:02:16 PDT 2000
Added the TCP Rate-Halving code to NS. This is contributed code from Matt Mathis, Jeff Semke, Jamshid Mahdavi, and Kevin Lahey, from the web page ``http://www.psc.edu/networking/ftp/papers/draft-ratehalving.txt''. This is partially validated in the validation test "./test-all-tcpVariants", for example in "./test-all-tcpVariants/fourdrops_sackRH".

- [floyd] Mon Jun 26 20:07:50 PDT 2000
First pass at adding RIO code to NS. This RIO code is from Yun Wang, based on the code used by Wenjia Fang, and was ported to ns-2.1b6 by J. Scott.

- [tomh] Tue Jun 21 17:44:10 PDT 2000
Changes to support Lloyd Wood's improved perl scripts for the satellite code.

- [Kun-chan Lan] Tue Jun 21 11:12:54 PDT 2000
Fix to full-tcp reassembly from Matt Sanders and George Riley of Georgia Tech.

- [xuanc] Mon Jun 12 17:13:45 PDT 2000
A single hop, preamble based TDMA mac layer (Mac/Tdma) was added. It can be used in wireless / sensor net simulations in the place of 802.11 mac layer.

- [johnh] Thu Jun 1 13:55:39 PDT 2000
Code added from William Metzenthen's floating point library (at http://www.linuxsupportline.com/~billm/faq.html) to make ns run with 56-bit FP precision on Linux. (All test suites should now pass there.)

- [floyd] Sat May 27 16:59:07 PDT 2000
Added new validation test "./test-all-links" to illustrate dynamically changing link delay and bandwidth.

- [floyd] Mon May 15 22:58:15 PDT 2000
Added bug-fixes to tcp.cc for the case with ECN when cwnd < 1. The first fix is not to reset the retransmit timer when a new ack arrives and cwnd < 1. The second fix is, when the retransmit timer expires and cwnd < 1, to reset cwnd to 1. The first bug was reported by Yin Zhang. I also added four new ECN validation tests to test these bugfixes, ./test-all-ecn ecn_secondpkt1Ecn_tahoe, ecn_smallwin1Ecn_tahoe, ecn_smallwin2Ecn_tahoe, and ecn_smallwin3Ecn_tahoe.

- [floyd] Fri May 12 16:26:02 PDT 2000
Added bug fix for the initial slow-start in TFRC, and changed the default value for Agent/TFRC/InitRate_ for greater compatibility with TCP. Also added two new validation tests, manyDrops and twoDrops, to test-all-friendly to validate the bug fix. Fix from Jitendra Padhye.

- [floyd] Fri Apr 14 21:01:25 PDT 2000
Added RFC2581_immediate_ack_ for TCP Delayed-Ack sinks, to generate ACKs immediately for data that fills a gap in the sequence space. This gives RFC2581-compliance for delayed ack receivers. Bug report from Changhee Joo, with fix from Changhee Joo and Lloyd Wood.

- [floyd] Mon Apr 10 16:55:44 PDT 2000
Smaller initial rate for Agent/TFRC, to correct overly-aggressive behavior with very low bandwidth paths. Fix from Jitendra Padhye.

- [haoboy] Fri Mar 24 11:36:59 PST 2000

- NsObject::debug(), a generic way to write verbose debug messages.

- Richard Mortier's fix for TcpFull::gensack().

- [Ya] Thu Mar 9 17:07:08 PST 2000
(1) New energy model to support idle time energy dissipation (2) BECA and AFECA algorithms used in the paper "Adaptive Energy-Conserving Routing protocols for multihop ad hoc wireless network", submitted to mobicom2000 (3) Pending commit: examples and validation test suite.

- [PH] Mon Feb 14 17:48:06 CET 2000
Bug fix for DV (Dynamic Distance Vector) Routing
Update test output for example3 (using DV) in test-suite-greis.tcl
Bug report and fix from Guo Liang guol@cs.bu.edu and patches from Cheng Tak Cheung tccheng@csis.hku.hk

- [floyd] Fri Jan 14 16:16:15 PST 2000
Bug fix for rare, inappropriate cancelling of the TCP retransmit timer. Bug report and fix from Mark Allman, mallman@grc.nasa.gov.

- [kclan] Fri Jan 9 20:00:15 PST 2000
Add an API to support visualization of energy depletion of wireless node in nam .
SYNTAX: $ns_ energy-color-change [level1] [level2]

### Release of ns-2.1b6[OLD]/ns-2.22[NEW] on Tue Jan 18 14:58 PST 2000

- [salehi] Thu Jan 10 14:05:03 PST 2000
Modified the real-time scheduler, thanks to Wei Ye. The original real-time scheduler zeros the real-time clock when doing "new RealTimeScheduler". The patch makes it zero the clock when doing "$ns run", which is synchronized with the virtual-time clock when simulation starts.

- [floyd] Sat Jan 8 20:01:51 PST 2000
When resetting a sack TCP connection, the scoreboard was not cleared. Added a reset procedure to Sack1TcpAgent. Bug report and fix from Mark Allman, mallman@grc.nasa.gov.

- [johnh] Tue Jan 4 14:17:02 PST 2000
Delay binding for TCP TraceVar instance variables now works. (Requries an updated tclcl.) Code is under ifdef TCP_DELAY_BIND_ALL. Old TCP_DELAY_BIND ifdef's removed.

- [kkumar] Tue Dec 14 16:53:45 PST 1999
Updated code for the landmark hierarchy construction protocol, a simple flood agent, tags database and the associated tag query agent. Added code to enable tag mobility. agent-list.{h,cc} provides a list of routing agents that is used for tag mobility. Affected files: Under ns-2/sensor-nets/ : landmark.h landmark.cc flood-agent.h flood-agent.cc tags.h tags.cc sensor-query.h sensor-query.cc agent-list.h agent-list.cc Under ns-2/tcl/mobility/ : landmark.tcl,flood.tcl Example script in ns-2/tcl/ex/wireless-landmark.tcl

- [johnh] Fri Dec 10 11:58:57 PST 1999
Hyun-ah implemented code to move TCP to delayed binding. This commit enables part of that code. Delay binding for things of type TracedVar needs additional tclcl support and will follow.

- [floyd] Sat Dec 4 16:01:34 PST 1999
Added RFC 793 TCP implementation, with some add-ons for educational purposes, contributed by Fernando Cela Diaz, . The exercises can be run with the command "./test-all-rfc793edu" in "tcl/test". The examples are described at "http://www.ce.chalmers.se/~fcela/rfc793edu.html", on "Teaching TCP Congestion Control and Avoidance with the ns Network Simulator".

- [haldar] Wed Nov 24 12:34:48 PST 1999
Added "section: Commands at a glance" to all chapters in nsN&D. This is intended to replace the outdated manual pages. also nsN&D shall be renamed as ns manual.

- [johnh] Tue Nov 23 17:31:14 PST 1999
Default make and install targets are now recursive (they include the utility programs).

- [yaxu] Thu Nov 19 20:11:16 PST 1999
Added new trace format to wireless trace. The new trace format is more expandable. The user still can keep using the old trace format. The new trace format is enabled by an explicit ns command.

- [floyd] Thu Nov 18 20:11:16 PST 1999
Added configurable parameters for AIMD increase and decrease constants in TCP, and test suite "test-all-aimd" for illustration and validation.

- [johnh] Thu Oct 14 16:51:24 PDT 1999
New code in fsm.cc to walk the TCP FSM and compute probabilities.

- [yuri] Thu Oct 14 16:41:36 PDT 1999

- Many changes to 802.3 implementations: added retransmissions, jamming signal, modified internal structure.

- Changes to vlan tracing setup: in some traces the order of source and destination was reversed.

- Added enumeration of packet direction (hdr_cmn::direction)

- [johnh] Wed Oct 13 15:47:23 PDT 1999
Three sets of changes: (1) deleteing old dead !CLASSINSTVARS code and ifdefs. (2) configure changes to support Alpha, debugged with Stefan Dresler's help. (3) AF_{NONE,INET,ILINK} changed to NS_AF_* to be system independent.

- [haoboy] Wed Oct 6 14:27:47 PDT 1999

- More instrumentation for the media cache stuff.

- Fixed numerical instability in media cache and QA code.

- Added full test suite for QA and media cache, which were not there due to instable output across platforms.

Thanks to Yuri and John for their invaluable help in tracking down this bug.

- [Ya] Tues Oct 5, 15:54:45 PDT 1999
AODV. Ported from Samir's modification on cmu's original implementation

- [salehi] Mon Sep 30 15:54:45 PDT 1999
Replaced regular classifier with the hash classifier. This will improve memory management because node addresses do not necessarily have to be assigned sequentailly. A regular classifier allocates a static array whose length is equal to the largest node address, which could cause various problems, e.g., sparce array, running out of memory. A hash classifier, on the other hand, allocates as many entries as there are nodes.

- [salehi] Mon Sep 27 17:44:04 PDT 1999
Detected a bug which could force MCastBSTClassifier::upstream_find into an infinite loop.

- [haoboy] Fri Sep 24 16:51:04 PDT 1999

- Added new self-similar web traffic module based on Polly's http-mod.tcl. It eliminates memory leak (undeleted RandomVariable), and slightly saves runtime.

- Updated old example files of web traffic in tcl/ex.

- Examples of piping nam traces directly from ns to nam (nam-example.tcl).

- Rearranged header files in rap/. Removed macros 'is', 'or', 'and'.

- [johnh] Fri Sep 24 10:03:08 PDT 1999
autoconf changes: many flags are now in autoconf.h rather than on the command line, string{,s}.h is now autodetected.

- [salehi] Mon Sep 20 18:25:20 PDT 1999
Modified the BST code in order to allow nodes to re-join a multicast group.

- [johnh] Fri Sep 17 18:27:50 PDT 1999
int8_t and friends now checked for by autoconf like they should have been all along.

- [johnh] Thu Sep 16 15:49:15 PDT 1999
The nam subdirectory removed from ns (suggestion from Lloyd). Scheduler error message added (contributed from Pascal Anelli).

- [johnh] Mon Sep 13 15:51:51 PDT 1999
scheduler declarations moved out to schedule.h (to allow subclassing, suggested by George Riley).

- [haoboy] Thu Sep 9 10:07:58 PDT 1999
Corrected all declarations of AppData* copy() in all derived classes of AppData. This caused ns to fail to compile under win32.

- [johnh] Wed Sep 8 13:52:27 PDT 1999
Portability fixes for machines which lack bcopy/bzero, and for platforms where autoconf doesn't find tclsh with an absolute pathname, and reindenting of some RNG code.

- [floyd] Mon Aug 23 22:33:19 PDT 1999
Added option control_increase_ to TCP to limit increases to the congestion window when the congestion window is not fully utilized. Also added changes to the implementation of QOption_, for an optional method for reducing the congestion window after an idle period. Code from Jitendra Padhye and Mark Handley. Validation tests in "tcl/test/test-all-tcp".

- [haoboy] Mon Aug 23 21:05:26 PDT 1999

- Changed data_ in class Packet from unsigned char* to AppData*, thus we are able to avoid marshalling of application-level data. To provide backward compatibility, PacketData is derived from AppData and is the default packet data to be created when Packet::allocdata() is called. It provides the same unsigned char array as before. Thanks to Kevin and John for their suggestions. All test suites of today's snapshot passed but I was unable to test ns emulator.

- Removed several warnings from miscellaneous wireless codes. Still more to remove.

- [floyd] Tue Aug 17 17:18:31 PDT 1999
Added option QOption_ to TCP for an optional method for reducing the congestion window after an idle period or after a period where the full congestion window has not been used. The code for this option is not necessarily in its final state yet. The code is from Jitendra Padhye, from a collaboration with Mark Handley.

- [floyd] Mon Aug 16 21:36:32 PDT 1999
Replaced tfrm.cc, tcp-friendly reliable multicast, by its successor, tfrc.cc, tcp-friendly rate control. The changes are from Jitendra Padhye. Tfrc.cc does not preserve backwards compatibility with all of the options that were in tfrm.cc, as the design becomes more stable.

- [johnh] Fri Aug 13 17:36:20 PDT 1999
Added a warning to scheduler.cc contributed by Pascal Anelli <Pascal.Anelli@lip6.fr>.

- [haldar] Fri Aug 13 17:24:06 PDT 1999 Added ifdef's for a stand-alone (without using tclcl lib) version of rng. Also revised setdest's Makefile allowing to build setdest using this stand-alone version of rng.o

- [yaxu] Thu Aug 12 16:19:45 PDT 1999 Added TORA/IMEP implementation according to CMU's release

- ns-2/tora/: tora implementation

- ns-2/imep/: imep implementation. according to cmu, tora needs imep support

- ns-2/tcl/mobility/tora.tcl: tcl interface for tora

- ns-2/tcl/ex/tora-test.tcl, tora-test-simple.tcl 2 examples for tora.

- [haldar] Wed Aug 11 17:50:35 PDT 1999 Changed cmu's node-movement and traffic pattern generation files (setdest.cc and calcdest.cc) to make them more portable.

- [kkumar] Thu Jul 29 16:19:45 PDT 1999 Added a simple energy model to keep track of remaining energy at nodes (methods to log energy currently exist only for wireless nodes):

- energy-model.{h,cc}: Defines the new EnergyModel class

- node.{h,cc}: Added hooks to attach EnergyModel to nodes

- mobilenode.{h,cc}: Added methods to log energy consumption

- wireless-phy.{h,cc}: Modified sendUp and sendDown methods to decrease the node's energy on transmitting/receiving packets. Added reception power to WirelessPhy object.

- tcl/lib/ns-lib.tcl: Added energyModel_ and initialEnergy_ options to the new node API (new node API currently works only for dsdv). Creates and attaches the specified energyModel_ to nodes.

- tcl/ex/wireless-newnode-energy.tcl: Simple example to show how energy usage can be logged.

- [kkumar] Thu Jul 21 17:53 PDT 1999 Added a distributed self-organizing hierarchy construction protocol based on the landmark hierarchy in the context of an object-tracking sensor network application.

- tags.{h,cc}: Create a database of tags; tags are randomly distributed in a specified geographical region.

- landmark.{h,cc}: Self-organizing hierarchy implementation.

- sensor-query.{h,cc}: Simple agent that issues queries about tags.

- flood-agent.{h,cc}: Simple flooding agent that floods queries about tagged objects to all sensors and generates responses (if any) back to the querying node.

- [haoboy] Fri Jul 9 14:20:23 PDT 1999 Changed all strsep() to strtok() and all heapsort() to qsort() in indep-utils/webtrace-conv/.

- [floyd] Tue Jul 6 21:19:27 PDT 1999
Updated files connected with tfrm.cc and tfrm-sink.cc for tcp-friendly unicast congestion control. The original code is from Mark Handley, with structural modifications by Jitendra Padhye. The validation test is "test-all-friendly".

- [haoboy] Tue Jul 6 15:50:42 PDT 1999

- rap/rap.cc: initialize logfile_

- webcache/tcpapp.{cc,h}: do not allocate anything in CBuf::CBuf() when size_ == 0

- webcache/http.cc: use Trace::round() in log() to reduce time print precisions in log files.

- tcl/webcache/http-mcache.tcl: use lsort{} on list produced by PagePool/Client::list-pages{} so that the results can be duplicated across different runs and platforms.

- tcl/test/test-suite-mcache.tcl: removed tests media[3-5]*; they are not stable across platforms and operating systems because the quality adaptation code relies on comparison of double precision floating points to decide when to add/drop layers. Slight difference in these numbers can cause the output results to be drastically different. Currently these tests can only be duplicated on Intel platforms (FreeBSD and Linux), however they produced different results on Solaris and SunOS.

- [haoboy] Fri Jul 2 14:00:01 PDT 1999
Updated various files to work under win32. The most important one is to update ptypes2tcl.cc to handle long strings using codes borrowed from ~tclcl/tcl2c++.c

- [haoboy] Fri Jul 2 10:00:23 PDT 1999
Test suite for multimedia cache. CAUTION: this is only intended to test the basic functionalities of the multimedia cache code residing in webcache/mcache.{h,cc} and tcl/webcache/http-mcache.tcl; it is absolutely NOT a test suite for RAP and Quality Adaptation.

- [salehi] Mon Jun 28 15:35:40 PDT 1999
Added support and example script for BiDirectional multicast.

- [tomh] Fri Jun 25 13:47:05 PDT 1999
Added support and example script for unslotted Aloha MAC.

- [tomh] Mon Jun 21 11:30:50 PDT 1999
Added support for geostationary and LEO satellite constellations. This required minor changes to a number of existing files (Makefile.in, channel.h, mac.cc, net-interface.cc, node.h, node.cc, object.h, packet.h, phy.h, phy.cc, route.h, route.cc, trace.h, tcl/lib/ns-lib.tcl, tcl/lib/ns-node.tcl), and the addition of several new files (net-interface.h, sat.h, sathandoff.h, sathandoff.cc, satnode.h, satnode.cc, satposition.h, satposition.cc, satroute.h, satroute.cc, sattrace.h, sattrace.cc, tcl/lib/ns-sat.tcl).

- [floyd] Fri Jun 11 17:01:50 PDT 1999
Added "gentle" option to RED, to increase the packet drop rate slowly from max_p to 1 as the average queue size ranges from th_max to twice th_max.

- [kfall] Wed Jun 9 15:33:49 PDT 1999
__RENAMED wasn't defined for me because tclcl.sh wasn't being included. Why this could be I don't know, but it is now added.

- [johnh] Wed Jun 2 20:23:52 PDT 1999
Man page now points at Antoine's auto-generated class hierarchy.

- [johnh] Mon May 31 13:39:11 PDT 1999
Improved fsm print function.

- [haoboy] Tue May 25 18:37:42 PDT 1999
Checked in support of multimedia web caching based on Rap/QA code. A test suite will follow shortly.

- [PH] Thu May 13 15:44:54 PDT 1999
Checked in the 1st cut implementation of finite state automata TCP
An example can be found: tcl/ex/simple-fsm-tcp.tcl

- [floyd] Thu May 13 14:34:00 PDT 1999
Added a small bug-fix suggested by Philip Liu at phill@ece.ubc.ca,
that resets the RED variables "edv_.count" and "edv_.count_bytes"
after a forced drop.
Also added a parameter "ns1-compat_" (default false) to allow
simulations to run without this bug-fix.

- [haldar] Tue May 4 17:37:52 PDT 1999
Added support for wireless mobileIP which uses CMU's wireless model.
Example script tcl/ex/wireless-mip-test.tcl
major files added/revised : mip.{cc,h}, mip-reg.cc, tcl/lib/ns-mip.tcl, tcl/lib/ns-wireless-mip.tcl.

- [haldar] Thurs April 29 11:22:36 PDT 1999
Removed bug from u_char* to int conversions; the conversion supplied by cmu's marshall.h breaks in freeBSD. revised the methods defined in marshall.h to make it portable for freeBSD, sun/solaris,linux.

- [salehi] Fri Apr 30 17:50:50 PDT 1999
Found a bug in LAN's ARP resolution module. A node in a LAN can have a macID of 0 while the 'arpresolve' module considered it as invalid.

- [haldar]
Added hierarchical addressing and routing support to mobilenodes.
Added support for having wired and wireless node domains in mixed simulations. Created base-station nodes that serve as gateways for wired and wireless domains.
wired and wireless nodes can now exchange traffic
Example script tcl/ex/wired-cum-wireless-sim.tcl;
Major files added/revised are: tcl/mobility/com.tcl,dsdv.tcl,dsr.tcl; tcl/ex/ns-mobilenode.tcl,ns-bsnode.tcl; address{.cc,.h},mobilenode{.cc,.h},dsr/dsragent{.cc,.h},dsdv/dsdv{.cc,.h}.

- [PH] Tue Apr 20 15:56:39 PDT 1999
Fixed bugs in the modified HTTP implementation (tcl/http/http-mod.tcl)
Added web traffic examples. One small scale (tcl/ex/web-traffic.tcl); one very large scale which requires ~800MB memory to complete (tcl/ex/large-scale-web-traffic.tcl)
Added code for trace driven random variable (tcl/lib/ns-random.tcl) and an example (tcl/lib/ex/trace-driven.tcl)

- [salehi] Fri Apr 16 15:01:44 PDT 1999
The Centralized Multicast module had some bugs for LAN support. These bugs were removed.

- [salehi] Mon Apr 12 18:00:13 PDT 1999
`NS notes and documents' was added to the release version.

- [haldar] Fri Apr 9 15:49:23 PDT 1999
The wireless module had several bugs for both DSR and DSDV routing protocol implementation. These bugs were removed. A scenario file 670x670-600-50-20-0 was added which uses node indexing of 0 instead of 1. A wireless example file in tcl/ex/wireless-test.tcl was added which simulates with just 3 mobilenodes.

- [haldar] Thur Apr 8 10:50:12 PDT 1999
An error condition is checked in when route or hier-route is computed for dis-connected topologies.

- [johnh] Wed Apr 7 20:10:45 PDT 1999
test-suite-full and tcpf2xgr now pass $TCLSH so that they should be portable. Future post-processing scripts should be written in Perl, not tcl.

- [johnh] Wed Mar 31 13:51:35 PST 1999
Ns now knows where the tclsh is that autoconf finds, just like it knows about perl.

The proper way to invoke a tclsh program from within ns is { global TCLSH; exec $TCLSH path/to/script.tcl args; }.

A completely unrelated bugfix: tcp-sink now zeros save_.

### Release of ns-2.1b5[OLD]/ns-2.21[NEW] 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.1b4[OLD]/ns-2.20[NEW]on 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[OLD]/ns-2.19[NEW] 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[OLD]/ns-2.18[NEW] 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[OLD]/ns-2.17[NEW] 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[OLD]/ns-2.16[NEW] 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)

- [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[OLD]/ns-2.15[NEW] 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[OLD]/ns-2.14[NEW] 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 rtp.cc 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[OLD]/ns-2.13[NEW]Tue Mar 25 14:56:39 PST 1997

- [SM] Added trace.h to FILES.

### ns-2.0a14[OLD]/ns-2.12[NEW]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[OLD]/ns-2.11[NEW]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[OLD]/ns-2.10[NEW]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[OLD]/ns-2.9[NEW]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[OLD]/ns-2.8[NEW]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[OLD]/ns-2.7[NEW]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[OLD].ns-2.6[new]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[OLD]/ns-2.5[NEW]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[OLD]/ns-2.4[NEW]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[OLD]/ns-2.3[NEW]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[OLD]/ns-2.2[NEW]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[OLD]/ns-2.1[NEW]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[OLD]/ns-2.0[NEW]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.