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.
The machine booted fine after the necessary modifications to grub.
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
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.
what happened to the web server for ndt?? It can be run with
sudo /opt/ndt/sbin/fakewww -l /opt/ndt/current/log/fakewww.log
which opens a web browser on port 7123
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
There is a ndt
init.d startup script in the package distro (not installed path) under the conf directory. Edited to suit installation:
path=/opt/ndt/current/sbin FAKEWWW_OPTIONS="-l /opt/ndt/current/log/fakewww.log"
However the same error for the web page came up.
Also tried adding:
base=/opt/ndt/current/ path=$base/sbin web100=/opt/web100/current/ export PATH=$PATH:$base/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$base/lib:$web100/lib
but same thing; it cannot find the webpage.
also noticed that there is a library in the ndt lib directory; so added to /etc/ld.so.conf
:
/opt/web100/current/lib/ /opt/ndt/current/lib/
and ran /sbin/ldconfig
- same; still nothing
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/
The init.d services can be installed with the conf/autostart.sh
script:
noformat
ytl@nettest5:/opt/ndt/current/conf$ sudo ./autostart.sh
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
noformat
i've tried putting the html file in /opt/ndt/current/
, /opt/ndt/current/sbin
, /opt/ndt/current/conf
but no luck. the web page still cames up with 'The requested file not found'.
Created a profile.d file to export the NDT variables etc.
# NDT stuff - Yee 28th Aug 2006 export NDT_BASE=/opt/ndt/current export PATH=$PATH:$NDT_BASE/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NDT_BASE/lib