During a recent set of customer queries around network latency and jitter I was reminded of the subjectivity of complaints
- It feels slow
- My calls stutter
- It must be your fault 😉
Well, how do we try reduce the guesswork – we revisit the brilliant Web100 project – now migrated to the Web10g project. This adds TCP instrumentation to the linux kernel and provides simple client tools to do some network assessments. While the tools are not meant to be an all encompassing solution it provides some decent metrics for analysis and debugging of customer links.
So, lets get a web10g kernel running under Debian Squeeze (yes I do shit as root – that’s my choice – it may not be yours) 😉
apt-get install linux-source-2.6 fakeroot bzip2 kernel-package libncurses-dev sudo apt-get build-dep linux-source-2.6.32 cd /usr/src/ tar xjvf linux-source-2.6.32.tar.bz2 ln -s linux-source-2.6.32 linux cd linux make clean make mproper
I wish to keep the config the same as the current kernel, so copy in running kernel’s config
cp /boot/config-`uname -r` .config
Now lets fetch the patch for the kernel and patch it
cd /usr/src wget http://web100.org/download/kernel/2.5.27/web100-2.5.27-201001301335.tar.gz tar zxpf web100-2.5.27-201001301335.tar.gz cd /usr/src/linux patch -p1 < ../web100/web100-2.6.32-2.5.27-201001301335.patch
Grumble – so 2 Hunks failed – lets fix manually – now that that’s done…. lets compile this stuff 😉
make menuconfig
Enable the web100 items under Networking (as per the web100 README)
Save the config, then compile it (after getting some more performance with concurrency)
export CONCURRENCY_LEVEL=8 make-kpkg clean fakeroot make-kpkg --us --uc --initrd kernel_image kernel_headers
With the build done, install the .deb’s from /usr/src and remember to tell debian to boot from your new kernel!
Now to Add the Userspace tools:
Get the latest version of the userspace tools from http://web100.org/download/ compile and install it. Python dev libraries are needed as well so lets add that too.
apt-get install python python-dev
axel http://web100.org/download/userland/version1.8/web100_userland-1.8.tar.gz
tar zxpf web100_userland-1.8.tar.gz
cd web100_userland-1.8
./configure
make
make install
Now lets get NDT installed and deployed
Download from:
echo /usr/local/lib > /etc/ld.so.conf.d/web100.conf
ldconfig
If you don’t have libpcap.so on your system add it:
apt-get install libpcap0.8 libpcap-dev
Get java sdk onto the platform. I’m trying this with the openjdk packages instead of Oracle’s for now
apt-get install openjdk-6-jdk
Now lets get NDT installed and deployed
Download from http://software.internet2.edu/sources/ndt/ looking for the latest version
tar zxpf ndt-3.6.4.tar.gz
cd ndt-3.6.4
./configure
make
make install
At this point you can launch a test server for NDT to get some baseline customer testing done:
http://apollo.neology.co.za:7123/
I’ll add more details as and when