NDT is installed on nettest5 at SLAC. This node is subject to change due to security policies etc.
Files
The installation files are in
/afs/slac.stanford.edu/u/sf/ytl/Work/TCP/Web100/slac-ndt-server/2006-08
Linux kernel linux-2.6.17.10 was downloaded and installed with this config file: nettest5.config. It was patched against web100 2.5.11 and web100 userland 1.6.
The machine booted fine after the necessary modifications to grub and shows up as
Linux nettest5 2.6.17.10-web100 #2 SMP Thu Aug 24 10:55:58 PDT 2006 i686 i686 i386 GNU/Linux
AFS
However, as this is a Taylored machine, AFS needs to be installed.
Downloading the openafs-kernel-1.4.1
and configure'ing and compiling resulted in:
CC [M] /usr/src/kernels/openafs-kernel-1.4.1/src/src/libafs/MODLOAD-2.6.17.10-web100-MP/rx_kmutex.o /usr/src/kernels/openafs-kernel-1.4.1/src/src/libafs/MODLOAD-2.6.17.10-web100-MP/rx_kmutex.c: In function `afs_cv_wait': /usr/src/kernels/openafs-kernel-1.4.1/src/src/libafs/MODLOAD-2.6.17.10-web100-MP/rx_kmutex.c:126: error: too many arguments to function `refrigerator' make[3]: *** [/usr/src/kernels/openafs-kernel-1.4.1/src/src/libafs/MODLOAD-2.6.17.10-web100-MP/rx_kmutex.o] Error 1 make[2]: *** [_module_/usr/src/kernels/openafs-kernel-1.4.1/src/src/libafs/MODLOAD-2.6.17.10-web100-MP] Error 2 make[2]: Leaving directory `/usr/src/kernels/linux-2.6.17.10' make[1]: *** [openafs.ko] Error 2 make[1]: Leaving directory `/usr/src/kernels/openafs-kernel-1.4.1/src/src/libafs/MODLOAD-2.6.17.10-web100-MP' make: *** [linux_compdirs] Error 2
So downloaded full source of openafs openafs-1.4.1
; and compiled. Seems okay.
However, AFS init.d scripts aren't there! Poked around and found /usr/vice/etc/modload
which contains loads of .ko afs modules. copied over the compiled kernel module and rebooted;
sudo cp /usr/src/kernels/openafs-1.4.1/src/libafs/MODLOAD-2.6.17.10-web100-MP/libafs-2.6.17.10-web100.mp.ko /usr/vice/etc/modload/
and it worked! yippee!
NDT Install
Downloaded ndt-3.3.12 configured, and wham!
gcc -pedantic -Wall -O2 -DNDEBUG -L/usr/local/lib -Wl,-rpath,/usr/local/lib -o analyze analyze-analyze.o analyze-usage.o analyze-logging.o -lweb100 -lpcap -lm ../I2util/I2util/libI2util.a /usr/bin/ld: cannot find -lweb100 collect2: ld returned 1 exit status make[2]: *** [analyze] Error 1 make[2]: Leaving directory `/afs/slac.stanford.edu/g/scs/net/netmon/TCP/Web100/slac-ndt-server/2006-08/ndt-3.3.12/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/afs/slac.stanford.edu/g/scs/net/netmon/TCP/Web100/slac-ndt-server/2006-08/ndt-3.3.12' make: *** [all] Error 2
I haven't installed teh web100 libraries.
Downloaded web100_userland-1.6, configure'd, and make'd. however, the default installation path is /usr/local - which of course is a read-only AFS mount.
therefore, ran with ./configure --prefix=/opt/web100/current/
(symlinked to /opt/web100/web100_userland-1.6
, and installed there.
Added /opt/web100/current/lib/
to /etc/ld.so.conf
and ran ldconfig
to add to standard library path.
Ran ./configure --prefix=/opt/ndt/current/
on NDT;
make[2]: Entering directory `/afs/slac.stanford.edu/g/scs/net/netmon/TCP/Web100/slac-ndt-server/2006-08/ndt-3.3.12/src' gcc -pedantic -Wall -O2 -DNDEBUG -L/usr/local/lib -Wl,-rpath,/usr/local/lib -o analyze analyze-analyze.o analyze-usage.o analyze-logging.o -lweb100 -lpcap -lm ../I2util/I2util/libI2util.a /usr/bin/ld: cannot find -lweb100 collect2: ld returned 1 exit status make[2]: *** [analyze] Error 1 make[2]: Leaving directory `/afs/slac.stanford.edu/g/scs/net/netmon/TCP/Web100/slac-ndt-server/2006-08/ndt-3.3.12/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/afs/slac.stanford.edu/g/scs/net/netmon/TCP/Web100/slac-ndt-server/2006-08/ndt-3.3.12' make: *** [all] Error 2
It's not picking up the libs and includes.
Spent a bit of time editing the wrong makefile, finally changed the flags in ndt-3.3.12/src/Makefile
to:
CFLAGS = -pedantic -Wall -O2 -DNDEBUG -I/opt/web100/current/include/web100 -L/opt/web100/current/lib
make install seems to work fine. tree structure is:
[ytl@nettest5:/opt/ndt/current]$ tree . |-- bin | |-- aespasswd | |-- analyze | |-- tr-mkmap | |-- viewtrace | `-- web100clt |-- lib | `-- libI2util.a |-- man | |-- man1 | | |-- aespasswd.1 | | |-- analyze.1 | | |-- tr-mkmap.1 | | |-- viewtrace.1 | | `-- web100clt.1 | |-- man5 | | `-- ndt.conf.5 | `-- man8 | |-- fakewww.8 | `-- web100srv.8 |-- ndt | |-- Admin.class | |-- Tcpbw100$1.class | |-- Tcpbw100$2.class | |-- Tcpbw100$3.class | |-- Tcpbw100$4.class | |-- Tcpbw100$5.class | |-- Tcpbw100$6.class | |-- Tcpbw100$Message.class | |-- Tcpbw100$MyTextPane.class | |-- Tcpbw100$OsfwWorker.class | |-- Tcpbw100$Protocol.class | |-- Tcpbw100$TestWorker.class | |-- Tcpbw100$clsFrame.class | |-- Tcpbw100.class | |-- Tcpbw100.jar | |-- admin.html | |-- admin_description.html | |-- copyright.html | |-- web100_variables | `-- web100variables.html `-- sbin |-- fakewww `-- web100srv 8 directories, 36 files
NDT Testing
Client/Server Applications
You can run a server with:
[ytl@nettest5:/opt/ndt/current/sbin]$ sudo ./web100srv -a
You can run a client with
[ytl@nettest5:/opt/ndt/current/bin]$ ./web100clt -n localhost Testing network path for configuration and performance problems -- Using IPv4 address Checking for Middleboxes . . . . . . . . . . . . . . . . . . Protocol error!
on the server, we get
!!!!!!!!!!! web100_middlebox() failed to get web100 connection data, rc=4
something's gone wrong! dunno what.
Web Server
A web server to house to the java applet for ndt testing is supplied. It defaults to run on port 7123/tcp It can be run with
sudo /opt/ndt/sbin/fakewww -l /opt/ndt/current/log/fakewww.log
however, opening a broswer results in a page which says:
"The requested file could not be found"
the log says:
[ytl@nettest5:/opt/ndt/current/log]$ cat fakewww.log Aug 25 17:08:38 server started, listening on port 7123 Aug 25 17:08:41 [134.79.25.58] requested file '/' - sent to client not found Aug 25 17:08:42 [134.79.25.58] requested file '/favicon.ico' - access denied
Rich Carlson suggested to run the create-html.sh
script - initially it complained that it could not find the tcpbw100.template
file. it can be found in the package distro - so copied it to /opt/ndt/current/conf
and ran the create-html.sh
file again. It creates the file: /opt/ndt/current/conf/tcpbw100.html
:
[ytl@nettest5:/opt/ndt/current/conf]$ ./create-html.sh Welcome to the NDT server configuration program. This program will create a custom tcpbw100.html file for your site. Enter your site name [Internet2] : SLAC Enter your site's location [Ann Arbor - MI] : Menlo Park - CA Server connection info, enter 1 for 100 Mbps, 2 for 1 Gbps [2] : 2 Information for email trouble reporting Enter email userid [rcarlson] : ytl Enter email domain name [internet2.edu] : slac.stanford.edu Enter default subject line [Trouble report from nettest5] : [NDT] Trouble Report The base web page 'tcpbw100.html' has now been created. You must move this file into the ndt_DATA directory [/usr/local/ndt] created during the 'make' process. Do you want to install this file now? [yes] : Enter location [/usr/local/ndt] : /opt/ndt/current/
Script Install
System init scripts can be installed automatically. Under the distribution package (ie tar'd file), there are numerous files in the conf
directory which are not copied over during the system install.
The system init script was edited a little to incorporate environment variables from the non-default path installation:
...
base=/opt/ndt/current/
path=$base/sbin
web100=/opt/web100/current/
[ -f $path/web100srv ] || exit 0
[ -f $path/fakewww ] || exit 0
export PATH=$PATH:$base/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$base/lib:$web100/lib
- Specify some default options.
WEB100SRV_OPTIONS="-a"
FAKEWWW_OPTIONS="-l /opt/ndt/current/log/fakewww.log"
RETVAL=0
.../opt/web100/current/lib/Also noticed that there is a library in the ndt lib directory; so added to {{/etc/ld.so.conf}}:
/opt/ndt/current/lib/ytl@nettest5:/opt/ndt/current/conf$ sudo ./autostart.shand ran {{/sbin/ldconfig}} to update dynamic library paths. The init.d services can be installed with the {{conf/autostart.sh}} script:
This script will configure your system to automatically
start the NDT processes at boot time.
ndt 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Moved the html file to the {{conf}} directory and put a symlink to it in the {{ndt}} directory:
ytl@nettest5:/opt/ndt/current/$ mv tcpbw100.html conf/
ytl@nettest5:/opt/ndt/current/$ ln -s conf/tcpbw100.html ndt/tcpbw100.html