Simulating UDT on NS-2

NS-2 Simulation module and scripts are available in the ./sim directory.

The module and simulation scripts work on NS-2 version 2.26. You may need to make some changes on other versions.

Follow the instructions below to install the UDT module to your NS-2 installation. Read NS-2 manuals if necessary.

Step 1. make a new dir named udt (optional) under ns directory, e.g., ./ns-allinone-2.26/ns-2.26.

Step 2. updates the Makefile in the same directory as step 1.

pushback/pushback-queue.o pushback/pushback.o \
udt/udt.o \            <- add this line
common/parentnode.o trace/basetrace.o \

Step 3. modify ./ns-allinone-2.26/ns-2.26/common/packet.h

PT_LMS,
PT_LMS_SETUP,

// UDT packets
PT_UDT,                <- add this line

// insert new packet types here
PT_NTYPE // This MUST be the LAST one

 

name_[PT_LMS]="LMS";
name_[PT_LMS_SETUP]="LMS_SETUP";

// UDT
name_[PT_UDT] = "UDT"; <- add this line

name_[PT_NTYPE]= "undefined";

Step 4. modify ./ns-allinone-2.26/ns-2.26/tcl/lib/ns-packet.tcl

Pushback
UDT                      <- add this line
NV

Step 5. modify ./ns-allinone-2.26/ns-2.26/tcl/lib/ns-default.tcl

Agent/TCPSink/QS set RFC2581_immediate_ack_ true

Agent/UDT set mtu_ 1500                        <- add this line
Agent/UDT set max_flow_window_ 32768    <- add this line

Queue set util_weight_ 0.8

Step 6. re-make NS-2 (in ./ns-allinone-2.26/ns-2.26, execute command make)

Step 7. in ./ns-allinone-2.26/ns-2.26/udt

Execute command ns test.tcl to examine if UDT module has been installed successfully.

Use sim.tcl for further testing with more topologies, multiple connections, and with coexisting TCP connections. Most of our results in technical papers can be reproduced by this script. Read this file for detailed information.