NS2 code by Andrei Gurtov

Morten Schläger's implementation of hiccup and Eifel for NS2 provided a starting point for this work. See also the official Eifel page by Reiner Ludwig.

This release is intended for ns2.1b9a. Please send comments and bug reports to gurtov@cs.helsinki.fi

Release of the previous version of this code for ns2.1b8 is here (unsupported).

Delay spike generation

This code is for triggering delay spikes of arbitrary length (e.g. a few seconds) for all queue types in NS2. Compared to hiccup this code has two benefits: it places delays after the queue and can be used in both directions simultaneously. A remaining drawback is that it allows the packet currently "in the air" to complete transmission after a delay spike begins.

To install, change to NS dir cd ns-2.1b9a

Run patch -p1 < delay.patch

Run make clean; make; make install

Run an example ns delay_example.tcl

Eifel algorithm

This code provides a modified implementation of the Eifel algorithm for detection and response to spurious timeouts in TCP using the timestamp option. This version of Eifel responds the same independently on the number of consecutive timeouts. Plus there are different option for restoring congestion control and adapting the timer. The default is full restore and using samples from delayed segments to update RTO. The code is not so modular but allows using different TCP flavors including Tahoe, Reno, NewReno, Sack, and Fack. Finally, this code can be used to detect avoidable and unavoidable timeouts for TCP without any response.

To install, change to NS dir cd ns-2.1b9a

Run patch -p1 < eifel.patch

Run make clean; make; make install

Run an example ns delay_example.tcl (assumes that the delay generator is also installed)

Deadline drop

This code provides setting of TTL field to now+min(RTO, object lifetime) for UDP, TFRC, and TCP. A new queue module DropTail/DropExpired deletes stale packets from the queue.

To install, change to NS dir cd ns-2.1b9a

Run patch -p1 < expires.patch (updates UDP and TFRC code)

Copy drop-expired.cc drop-expired.h lib-atp.cc lib-atp.h to queue/

Add to OBJ_CC in Makefile.in (this could be done by the patch file too) drop-expired.o lib-atp.o

Run ./configure; make clean; make; make install

Supportive code

This script provides a library for running multiple repetitions with more complex topology and competing traffic

Multiple tests: eifel, udp

Single test: tcp+parameters, udp, tfrc

Assorted awk and bash scripts for analysis:
calc_tcp_goodput.awk
calc_udp_goodput.awk
calc_timeouts.awk
show_tcp_con.awk
show_tcp_con
rto_trace
sub

Paper code

Scripts used for the paper on TCP response to spurious timeouts. Test setup script. Parameters.

Scripts used for the paper on Effect of vertical handovers on performance of TFRC .

Other stuff

This script provides an animated TCP connection over a slow access link. This topology was used in my Master thesis. It is interesting for studying the slow start overshot by TCP and for playing with the bottleneck buffer size.

Last modified: October 7, 2002