Friday, May 11, 2012
Howto: install dctcp (or new kernel) in debian
As I was fighting with DCTCP (datacenter TCP) installation last week, here is the recipe on how to win this battle. Some of the steps are trivial but some of them like reading the old tactics and ensuring that you really won are not an obvious steps for new generals.
Prepare for the battle:
[ ~ ]>sudo apt-get install kernel-package libncurses5-dev fakeroot
Get instructions for operation "dctcp":
[ ~ ]>mkdir dctcp
[ ~ ]>cd dctcp
[ ~/dctcp ]>wget http://www.stanford.edu/~alizade/Site/DCTCP_files/dctcp-2.6.38.3-rev1.1.0.tgz
[ ~/dctcp ]>tar -xvvf dctcp-2.6.38.3-rev1.1.0.tgz
Get the battle plan:
[ ~/dctcp ]>wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.3.tar.bz2
[ ~/dctcp ]>tar jxvf linux-2.6.38.3.tar.bz2
Prepare supplies:
[ ~/dctcp ]>cp dctcp-2.6.38.3-rev1.1.0/dctcp-2.6.38.3-rev1.1.0.patch linux-2.6.38.3
[ ~/dctcp ]>cd linux-2.6.38.3
[ ~/dctcp/linux-2.6.38.3] patch -p1 < dctcp-2.6.38.3-rev1.0.0.patch
Read old battle tactic:
[ ~/dctcp/linux-2.6.38.3 ]>cp /boot/config-x.y.z-amd64 .config
[ ~/dctcp/linux-2.6.38.3 ]>make oldconfig
Begin the battle:
[ ~/dctcp/linux-2.6.38.3 ]>fakeroot make-kpkg clean
[ ~/dctcp/linux-2.6.38.3 ]>fakeroot make-kpkg kernel_image
Battlefield after the battle:
[ ~/dctcp/linux-2.6.38.3 ]>cd ..
[ ~/dctcp ]>sudo dpkg -i linux-image-2.6.38.3_2.6.38.3-10.00.Custom_amd64.deb
Ensure the victory by signing boot contracts:
[ ~/dctcp ]>cd /boot
[ /boot ]>sudo mkinitramfs -o initrd.img-2.6.38.3 2.6.38.3
[ /boot ]>sudo update-grub
[ /boot ]>sudo reboot
Labels:
code
Subscribe to:
Post Comments (Atom)
What linux distro and its version did you install dctcp on? Thanks
ReplyDeleteAs the title says, it was Debian, I do not remember which version (probably stable at the time of posting)
ReplyDeleteHi, I want to reproduce the DCTCP experiment. I just need to test of DCTCP in a small system at home using my laptop, home switch. Is it possible? Would you please help me what I need to prepare to do this? What kind of device do I need? (like ECN-supported switch, computers that has patched Linux kernel). Thanks
ReplyDeleteHi, I've successfully installed DCTCP on Ubuntu 12.02 desktop version. How can I test it among other DCTCP-installed hosts. Please help me out.
ReplyDeleteHi, you need either ECN-enabled switch (not sure if any home switch devices support that) or a linux host acting as a switch/router, see http://en.wikipedia.org/wiki/Explicit_Congestion_Notification#ECN_support_in_IP_by_routers
ReplyDeleteYou can also use mininet to emulate the network on a single host. I would suggest looking at http://reproducingnetworkresearch.wordpress.com/2012/06/09/dctcp-2/
Thank you so much.
DeleteDear Ppershing, It's me again. I did compile DCTCP and install Mininet on my laptop. The thing is when I run Mininet example, it always get trouble with "cgroups". I noticed that when installed Mininet on original kernel (untouch), the "cgroups" is auto mounted (view it at /proc/mounts). But when compiling new DCTCP kernel, cgroups is not mounted anymore.
ReplyDeleteDid you try reproducing that experiment (http://reproducingnetworkresearch.wordpress.com/2012/06/09/dctcp-2/). If yes, i wonder if you run it on your own computer or on Amazon AWS like other experiments suggested.
Please give me some advice.
Thank you.
I do not remember properly. We abandoned dctcp experiments and switched to other project and I do not remember exactly what was the state (if we managed to run everything and get correct results). My suggestion is that you check your dctcp kernel configuration option "Control Group support" and see if everything needed is selected.
ReplyDeleteWell, I tried to enable some items in Control Group Support during "make menuconfig" and amazingly after building dctcp kernel and installing mininet, I can run dctcp mininet code but it did not return correct result. Mine shows that the buffer queue of switch still contain a lot of packets (up to 200 packets) instead of smaller than 50 packets as declared. Am I missing something?
DeleteI'm sorry to bother you.
Hi,
ReplyDeleteI am new to ubuntu. I want to install dctcp in my ubuntu 12.04. I got stucked in the steps [ ~/dctcp/linux-2.6.38.3 ]>cp /boot/config-x.y.z-amd64 .config and [ ~/dctcp ]>sudo dpkg -i linux-image-2.6.38.3_2.6.38.3-10.00.Custom_amd64.deb.
I dont see any files ending with "amd64" on my /boot.
Any response would be really appreciated.
Thanks in advance