Skip to content

Latest commit

 

History

History
 
 
Instructions to reproduce the DCTCP experiment:

To run the dctcp experiments:
	./run-dctcp.sh

Note that you may need to enable TCP, ECN, and/or DCTCP experiments.  Check first.

To run the dctcp experiments with tracing, verify that tracing runs (see tracing/README), then run:
	./run-dctcp-tracing.sh

Once the experiment has completed, to generate tracing graphs for it, run:
	./gengraph-n.sh

Again, note that you may need to customize this script for file locations and specific experiment types (TCP, ECN, DCTCP).

To compile a DCTCP enabled kernel, check instructions below.
It has instructions to compile a 3.0 and 3.2 kernel.

The graphs in the Mininet-HiFi paper were generated using a patched 3.0 kernel.

Dependencies:
- Ubuntu 12.04 with the DCTCP kernel (instructions to install the DCTCP kernel follow)
- Latest Mininet code (git://github.com/mininet/mininet.git, cs244 branch)

===================================================================
Instructions to install DCTCP kernel v3.2:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.18.tar.bz2
tar -xjf linux-3.2.18.tar.bz2
cd linux-3.2.18
patch -p1 < /path/to/mininet_tests/dctcp/0001-Updated-DCTCP-patch-for-3.2-kernels.patch
make menuconfig 
- Enable DCTCP via `make menuconfig':
  Networking support
    ---> Networking options
      ---> DCTCP: Data Center TCP

processors=`grep -c ^processor /proc/cpuinfo`
export CONCURRENCY_LEVEL=$processors
make-kpkg clean
time fakeroot make-kpkg --verbose --initrd --append-to-version=-dctcp
kernel_image kernel_headers
(this takes a while — run it in a screen if you are connected remotely)
cd /usr/src
sudo dpkg -i linux-image-3.2.18-dctcp_3.2.18-dctcp-10.00.Custom_amd64.deb
sudo dpkg -i linux-headers-3.2.18-dctcp_3.2.18-dctcp-10.00.Custom_amd64.deb
sudo update-grub2
edit /etc/default/grub and change the "default" kernel
sudo update-grub2
verify /boot/grub/grub.cfg
sudo reboot

===================================================================
Instructions to install DCTCP kernel v3.0:

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.1.tar.bz2
tar -xjf linux-3.0.1.tar.bz2
cd linux-3.0.1
cp -r mininet_tests/dctcp/linux-3.0.0-patches patches
quilt push -a
make menuconfig

processors=`grep -c ^processor /proc/cpuinfo`
export CONCURRENCY_LEVEL=$processors
make-kpkg clean
time fakeroot make-kpkg --verbose --initrd --append-to-version=-dctcp
kernel_image kernel_headers
(this takes a while — run it in a screen if you are connected remotely)
cd /usr/src
sudo dpkg -i linux-image-3.0.1-dctcp*.deb
sudo dpkg -i linux-headers-3.0.1-dctcp*.deb
sudo update-grub
edit /etc/default/grub and change the "default" kernel
sudo update-grub
verify /boot/grub/grub.cfg
sudo reboot

===================================================================
- After reboot, check if
  DCTCP has been correctly installed:

    sysctl -a | grep tcp_dctcp

- Reconfigure openvswitch
  sudo dpkg-reconfigure openvswitch-datapath-dkms

- Check if Mininet is working fine (might require an extra reboot for this to
  work)
  sudo mn --link tc,bw=10 --test iperf

===================================================================