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