Here is a link to Stephen Kingham's web100 server http://web100.kingtech.com.au:7123/ it is running on a modest CPU in the end of an ADSL link. You will need the following ports open to your PC for it to work:
From web100 server | To you PC |
TCP port 80 | TCP >= 1023 |
TCP 3001 to 3003 | TCP >= 1023 |
TCP 5001 to 5002 | TCP >= 1023 |
UDP 5001 to 5002 | UDP >= 1023 |
UDP 5007 to 5500 | UDP >= 1023 |
TCP 5501 to 6000 | UDP >= 1023 |
TCP 7123 | TCP >= 1023 |
TCP 8423 | TCP >= 1023 |
TCP 8424 | TCP >= 1023 |
TCP 861 | TCP >= 1023 |
I wrote this for my own documentation of how to install these tools and compile a kernet to support web100. I am provifding them here to make it easier for others and to provide feedback to the authors of similar documents.
As the new Fedora versions come out there are small variations to the already documented installations. The instructions described here are improvements to procedures developed at the University of Utah at the Center for High Performance Computing. If you have questions contact Tom Ammon at tom.ammon@utah.edu. I will be passing these changes to Tom who might include them in his document.
These instructions provide step by step instructions based on the following versions:
Based on several years experience of installing NDT these instructions will need to be updated as newer versions are published.
I used any old workstation. If you want hardware that could generate near 10 Gbps of test traffic then I would like to refer you to a presentation by Tom XXXX of AARNet at the recent QUESTNET 2008 conference.
I have used these instructions to perform an instalation on VMWare Server with only one problem and that was the Web100 compiled kernel could not find the ethernet interface.
Download the software as a full ISO (DVD image) and burn it to a DVD using your favority DVD burner.
Put the DVD into a workstation and boot off the DVD.
Follow the normal installation process until you get to these pages.
At this point I suggest restricting the number of packeges installed to a minimum,
for example I do not install X.11:
- select an appropriate root password
- DHCP eth0
- turned off ipv6.
- web100.kingtech.com.au
- Software Development
- Customize now
Everything was unselected except for:
- Editors (vim)
- Development Libraries (libraries needed to compile)
- Development tools (C++)
- Java Development
- Legacy Software Development
- Fedora Packager
- Web server (needed for apache)
- Base
- Hardware Support
- Java
- System Tools
Some of the software is installed using the automated software installation called yum, but some of it needs to be downloaded and installed. Down load the following software however you like or follow the instructions.
SSH onto the newly installed software using your favourite SSH application and issue the wget commands to get each software package.
> ssh web100.demo.com XXXX cd /usr/local/src wget http://www.web100.org/download/kernel/2.5.20/web100-2.5.20-200805020104.tar.gz |
Install the software that can be installed using yum.
Package | What it is |
kernel-devel | Libraries to make the patched kernel compile work |
kernel-headers | Libraries to make the patched kernel compile work |
libpcap-devel | Libraries to make NDT work |
ncurses-devel | Libraries to make make menuconfig work |
iperf | a popular throughput testing software, also needed by BWCTL |
yum install kernel-devel kernel-headers yum groupinstall "Development Tools" "Legacy Software Development" |
cd /usr/local/src tar zxvf linux-2.6.25.10.tar.gz ln -s /usr/src/linux /usr/src/linux-2.6.25.10 tar zxvf web100-2.5.20-200805020104.tar.gz |
This is one of the forst places where the instructions may vary because of newer versions of the web100 patch and Fedora.
In the above example linux-2.6.25.10.tar.gz is/was the latest web100 patch. When you are doing it and there is a newer version then change the above intructions to suite the diferent filename.
The ln -s /usr/src/linux /usr/src/linux-2.6.25.10 tells the web100 patch where to find the kernel source.
Depending on the latest kerel used in Fedora the.config may be in a different directory than /usr/src/kernels/2.6.25.9-76.fc9.i686/. Take a look in /usr/src/kernels/ and look in the directory that is there.
The web100 that you use may be a newer version, in which case change the filename in the instructions above.
Before proceeding take a look at what the kernel version is now and modify the Makefile
uname -r returns: uname -r vim /usr/src/linux/Makefile |
Now patch the kernel source using the web100 patch.
uname -r returns: uname -r patch -p1 < /root/tools/web100/web100-2.6.25-2.5.20-200805020104.patch |
If the patch had an error on the very first line then you probably did not edit the Makefile.
Using the versions available the patch fails in tcp.h. I needed to manualy
edit the tcp.h to apply the changes required by the patch.
Around line 784 of tcp.h you should find this text
static __inline__ __u32 tcp_max_burst(const struct tcp_sock *tp) |
Change the above so it looks like
static __inline__ __u32 tcp_max_burst(const struct tcp_sock *tp) #ifdef CONFIG_WEB100_NET100 |
The next few steps set up some of the kernel parameters.
make mrproper # this takes a while make menuconfig |
This starts a programme used to tell the compoiler to include the web100 components.
Use the up/down arrows to find "networking" and press enter.
Use the up/down arrows to find "networking options" and press enter.
Use the up/down arrows to find "IP: Web100 networking enhancements" and press enter. You will find this just before the IPV6 stuff.
Networking ---> |
Now it is time to start the compiler to create a new kernel. At the end we want to edit grub so that the newly created kernel is the defaul.
make # this takes a long time make modules make modules_install make install vim /boot/grub/menu.1st |
In menu.1st change the line "default=1" to "default=0". 1 is the original kernet, 0 is the web100 kernel. The menu.1st should now look like this:
|
reload the workstation
shutdown -r 0 |
Answer yes to the license.
cd /usr/local/src chmod 777 j2sdk-1_4_2_17-linux-i586.bin
|
cd /usr/local/src |
cd /usr/local/src |
iptables is the local access control onto the server. The following is from the procedures developed at the University of Utah at the Center for High Performance Computing, the following ports need to be allowed through to allow the various installed performance tools to work.
Port | Protocol | Purpose |
---|---|---|
861 | TCP | One-Way Ping control |
3001 | TCP | NDT data |
3002 | TCP | NDT data |
3003 | TCP | NDT data |
7123 | TCP | NDT web interface |
5001-5002 | TCP | iperf data (for BWCTL) |
5001-5002 | UDP | iperf data (for BWCTL) |
5007-5500 | UDP | One-Way Ping data |
5501-6000 | TCP | BWCTL peer data |
8423 | TCP | BWCTL control |
8424 | TCP | One-Way Ping control |
Edit the iptables
vim /etc/sysconfig/iptables |
Change iptables to look like this
# Firewall configuration written by system-config-firewall |
Restart the iptables
service iptables restart |
Configuration of the tools is directly from the procedures developed at the University of Utah at the Center for High Performance Computing, the following ports need to be allowed through to allow the various installed performance tools to work with some minor changes.
We want to keep all of the config files for the tools in the same place, so create a directory in /etc/ for them:
# mkdir /etc/perftools |
We'll copy the example config files from each of the tool's source directories into here and then customize them for our environment.
First, copy the sample config file:
# cp /root/tools/ndt-3.4.4/conf/ndt.conf /etc/perftools/ |
Take a look for the ethernet interface using the ifconfig command and ddd the following lines at the bottom of /etc/perftools/ndt.conf:,device eth1, and log_file /var/log/ndt.log.
# ifconfig |
# vim /etc/perftools/ndt.conf |
So that the ndt.conf now looks like this
device eth1 log_file /var/log/ndt.log |
Create a file called ndt in /etc/init.d/ and paste in the contents of the CHPC NDT Init Script. The full programme is copied here:
|
Now, run the create-html script to build the web interface for NDT. It will ask some questions about your installation and location:
# sh /root/tools/ndt-3.4.4/conf/create-html.sh
|
Finally, add the NDT init script to chkconfig and fire up the daemons:
# chmod a+x /etc/init.d/ndt # chkconfig --add ndt # service ndt startFirst, copy the config file:
# cp /root/tools/owamp-3.0c/conf/owampd.conf /etc/perftools/Create a user for owampd to run as:
# adduser owampCreate a directory for owampd's temporary files, and modify permissions:
# mkdir -p /data/owampdata/var # chown -R owamp.owamp /data/owampdata/Locate and change the following lines in owampd.conf:
datadir /data/owampdata/var testports 5004-5500Create a file called owampd in /etc/init.d/ and paste in the contents of the CHPC OWAMP Init Script.
Create a file called owampd.limits in /etc/perftools and paste in the contents of the [CHPC OWAMP default limits file].
default policy info This file defines a default policy for owampd to use. It creates two classes of users, "known" and "unknown". The limits for both classes are the same, but you can easily add parameters later to set more stringent limits on either class or to use AES authentication. |
Now, add the owampd init script to chkconfig and fire up the daemon:
# chmod a+x /etc/init.d/owampd # chkconfig --add owampd # service owampd startpackage dependency BWCTL uses a tool called nuttcp. To install, do yum install nuttcp. |
First, copy the config file:
# cp /root/tools/bwctl-1.3rc2/conf/bwctld.conf /etc/perftools/Create a user for bwctld to run as:
# adduser bwctldLocate and change the following lines in bwctld.conf:
iperf_port 5001-5002 peer_ports 5500-6000Create a file called bwctld in /etc/init.d/ and paste in the contents of the CHPC BWCTL Init Script.
Create a file called bwctld.limits in /etc/perftools and paste in the contents of the [CHPC BWCTL default limits file]
default policy info This file defines a default policy for bwctld to use. It creates two classes of users, "known" and "unknown". The limits for both classes are the same, but you can easily add parameters later to set more stringent limits on either class or to use AES authentication. |
Now, add the bwctld init script and fire up the daemons:
# chmod a+x /etc/init.d/bwctld # chkconfig --add bwctld # service bwctld startTo test the NDT installation, connect to the server from a different machine and run a test. Point your browser to http://{your server}:7123 and click the "Start Test" button. If the test comes back with results, everything is good.
If you run into problems, check out the "Verifying the Operation" section of the NDT Cookbook.
From another machine that has owamp installed, run the following:
# owpingIf the test is successful you'll see something similar to this:
output outputIf you don't see something similar to these results, see the "Troubleshooting" section of the OWAMP Cookbook.
From another machine that has bwctl installed, run the following:
# bwctlIf the test is successful you'll see something similar to this:
output outputIf you don't see something similar to these results, see the "Troubleshooting" section of the BWCTL Cookbook.
Here are all of the links referred to in earlier sections of this guide: