INSTALL rTPL Package

Introduction

This file describes the installation procedure of a network test monitor from the RTPL network performance package. See the file readme.html for a description of this package, for the required software, and for the sub items contained in the installation directory. The section "Online Documentation" in the readme.html file gives an overview of the available online documentation.

The control part of this package is only available for Unix. However, there also is a Windows client version available. See the "Supported Platforms" section in the readme.html file for more information. The installation of the Windows client version is described in the "Installation Windows Client" section at the end of this file.

Conventions

Unpacking Archive

To be able to install this package the gzip compressed tar archive should be unpacked in an arbitrary installation directory using for instance the following command line:

% gunzip -c RTPL-Version.tar.gz | tar xfv -

Please note that the installation directory InstallRoot/RTPL-Version will not be used by the installed package.

Installation in Short

Basicly the steps described below are required to install the RTPL package. In the section "Installation in Detail" these installation steps are explained in more detail. The step number hyperlinks are referring to the section "Installation in Detail" and vice versa.

         1.    Let the client test hosts, where the network performance tests should be performed, allow remote or secure shells from the control host without the need to specify a password.

Alternatively the net_test_com_server server ar the test hosts and the rem_net_test_com client at the control host can be used to perform the tests.

 
2. Install the Netperf package at the client test hosts for the throughput tests when it is not yet available. Use a relative path for the log file. See also the readme.html file.
 
3. Optionally install the UDP bandwidth monitor from the UDPmon package. The usage of this package can be selected during the configuration in step 4.
 
4. Run the setup script contained in the installation directory to install this package at the control host. You are requested to supply the appropriate parameters. The first parameter is the name of the used hosts configuration: HostsConfig.
 
5. Run the make_archive script, contained in the installation directory, to make a gzip compressed tar archive named RTPL-Version.tar.gz within the installation directory. This archive also contains the configuration you defined in step 4 with the setup script.
 
6. Copy the archive created in step 5 to each of the client test hosts to an arbitrary installation directory and unpack it.
 
7. Run the client_setup script at each of the client test hosts. You are requested to supply the appropriate parameters. As configuration name you should specify the same name of the hosts configuration as specified in step 4: HostsConfig.

When the Net Test Server / Client is used, take care that the net_test_com_server server is running at the client.

 
8. Check the correct functioning of the script which performs the measurements at the control host by typing the following command lines at the control hosts in a shell where X Windows client displays are allowed:

RTPLRoot/bin/log_HostsExt
RTPLRoot/bin/net_test_HostsExt

with:

  • RTPLRoot
    The root directory of the installed RTPL package.
  • HostsExt = lowercase (HostsBaseDir)
    HostsExt is the extension which is used for files that are specific for this hosts configuration.
  • HostsBaseDir
    The base directory which you supplied in the setup script (step 4) for the current hosts configuration.

If no X displays are allowed you should type these commands in two separate terminal (emulator) sessions.

 
9. Let crontab starts periodically the net performance tests by typing the following command line:

% crontab RTPLRoot/crontab/crontab_input_HostsExt
 
10. The Web presentation of the results is now available in the URL:

file:RTPLRoot/html/HostsBaseDir/table/net_data.html

That is all to install the setup for a particular hosts configuration. Please note that the installation at the client hosts (step 5 - 7) is only required when the package was not yet installed at that host, so there is no need for re-installation at the clients when you want to change some configuration parameters.

See also the section "Defining the User Environment" how to setup the user environment and the section "Online Documentation" where to obtain information a.o. about the Web presentation of the results.

Installation in Detail

The steps described below are required to install the RTPL package. See also the section "Installation in Short" for a more basic description. The step number hyperlinks are referring to the section "Installation in Short" and vice versa.

         1.    To be able to start the net performance tests at the client test hosts by means of a remote or secure shell from the control host, it is required that these shells could be started without any user-interaction. That is: without the need to specify a password

Below the steps required to use remote or secure shells without password specification are explained for some commonly used shells. Please note that in all cases the system management should allow this usage. More information you can find in the corresponding man pages.

  • Remote Shell (rsh)
    At the client hosts create a file $HOME/.rhosts containing the line:

    ControlHost ControlUser

    where ControlHost is the hostname or IP address from the host which is used to control the measurements, while ControlUser is the user which runs the measurement script at the control host.

    For security reasons the file $HOME/.rhosts should only be readable by the owner. For some remote shells this is a requirement.

    At HP-UX the remote shell executable is named remsh.

  • Secure Shell V. 1 (ssh1)
    At the control host you need to generate a private-public key pair using the program ssh-keygen1. At the request for a passphrase you specify an empty one. Otherwise ssh1 will request for this passphrase which will deny non-interactive usage. The public part of the key will be installed in $HOME/.ssh/identity.pub. At the client host you have to append the content of $HOME/.ssh/identity.pub to the file $HOME/.ssh/authorized_keys.

    The first time a secure shell from the control host to the client host is started ssh1 will request if connection to that host is allowed. Therefore the first time you have to run a secure shell manually to the client host by using for instance the following command line:

    % ssh1 -l ClientUser ClientHost

    Please note that if Version 1 is the only or dominant secure shell version, all extensions "1" can be omitted.

  • Secure Shell V. 2 (ssh2)
    At the control host you need to generate a private-public key pair using the program ssh-keygen2. At the request for a passphrase you specify an empty one. Otherwise ssh2 will request for this passphrase which will deny non-interactive usage. The public part of the key will be installed in $HOME/.ssh2/id_dsa_1024_a.pub. At the client host you have to copy this to a unique public filename in $HOME/.ssh2, for instance $HOME/.ssh2/id_dsa_1024_a_Hostname.pub and you have to add at the client the following line to $HOME/.ssh2/authorization:

    Key   id_dsa_1024_a_Hostname.pub

Alternatively, in the place of a remote or secure shell the net_test_com_server Perl server at the test client hosts and the rem_net_test_com Perl client at the control host can be used to run the net performance tests. In fact the net_test_com_server script acts here as a remote shell daemon and the rem_net_test_com script as the corresponding client. The rem_net_test_com script can be selected as remote shell client with the setup script described in step 4. See the section "Net Test Server / Client" for more information.

 
2. Install the Netperf package at each of the client test hosts when it is not yet installed. This tool is used to execute the throughput measurements. Use a relative path for the log file. See also the readme.html file.

After installation the Netperf directory should be added to the PATH environment variable: we rely upon the PATH to find the Netperf executables. Please note that the PATH should be set in $HOME/.cshrc (bash shell: $HOME/.bashrc) and not in $HOME/.login (bash: $HOME/.profile). The reason is that the remote or secure shells are nologin files. Therefore, login startup files are not read. See also the section "Defining the User Environment".

 
3. Optionally install the UDP bandwidth monitor from the UDPmon package written by R.E. Hughes-Jones, the University of Manchester. See the build instructions in the distribution. From this package the udp_bw_resp and udp_bw_mon programs should be installed at the client hosts. They should be available from PATH environment variable.

The UDPmon package is only available for Pentium processors running Linux. Therefore, the usage of this package can be selected during the configuration in step 4.

 
4. Run the Perl setup script contained in the installation directory to install this package at the control host. It is assumed here that the Perl path /usr/bin/perl exists. When this is not the case you should start the script using perl setup. When this script is started a help message is given in the pager of your system. See this help message for a description of the special characters which can be used. You can suppress the listing of the help message by starting the installation script with setup -n. See the section "Setup Scripts" for more information about this script.

When your system management installed one of the available Perl Term::ReadLine packages you can use line editing in the same way as you are used to do in your shell or MS-DOS prompt.

You are requested to supply the appropriate parameters. The first parameter you should supply is the name of the used hosts configuration you want to install. In the sequel we will denote this with the variable name HostsConfig. You can supply a new hosts configurations or edit an existing one. In the first situation you have to supply all parameters. In the second situation you can supply only the parameters you want to change and to skip the other parameters. Some parameters have a default answer; others you have to specify explicitly.

To make the selection of parameters to skip more easy, the remaining parameters are divided in several, so called, parameter groups: when all parameters in a group are defined you are allowed to skip this group and go to the next one. If not you are requested to specify the undefined parameter(s). Below the available parameter groups are listed. When required some remarks about a parameter from the group are made. More information can always be obtained interactively. The groups are:

  • Package directory names and titles.
    This includes package root directory, title of the hosts set, etc.
    • One of the parameters you are requested for is the question if the same package path should always be used at the client hosts (when appropriate relative to the home directory). To make the installation at the client test hosts more easier you are recommended to confirm this question.
  • Net performance monitor parameters.
    Examples are the test period, uni-directional or bi-directional tests, Quality-of-Service tests, etc.
  • Hosts and corresponding parameters.
    Examples are the hostnames or IP addresses, the connections for which the tests should be skipped, which remote shell to use.
  • Round trip parameters.
  • Throughput parameters.

After all parameters are specified, a configuration file entitled config/config_HostsConfig.mk is created and you are requested what targets has to be build for the current configuration:

  • The complete package. When you change an existing configuration this may result in errors when the current monitor is running.
  • Only the HTML part of the package. This can always be done without introducing errors.

Hereafter the configuration is build using the make program. During the build process extensive diagnostic messages are printed. You are confirmed if the build process has been completed successfully. Hereafter, the paths of the files are listed you need to know to do the network performance tests.

 
5. Run the make_archive script contained in this directory to make a gzip compresses tar archive named RTPL-Version.tar.gz within the installation directory. This archive also contains the configuration you defined in step 4 with the setup script. Therefore it is required to recreate an installation archive.
 
6. Copy the archive created in step 5 to each of the client test hosts to an arbitrary installation directory and unpack it.
 
7. Run the client_setup script at each of the client test hosts which is also situated in the installation directory. You are requested to specify the following parameters:

  • The configuration name. This should be the same name as at the control host: HostsConfig.
  • Confirm if the Nikhef ping program should be used. In that case it is assumed to be default installed in /usr/local/etc/ping.
  • If you will use the Nikhef ping and you prefer to install it at a different location, you are requested to specify the path were it is installed.

See the section "Setup Scripts" for more information about the setup scripts.

When the net_test_com_server script is used at the test client hosts to run the net performance commands, the start_net_test_com_server script can be used to check if the net_test_com_server script is already running, for instance from a crontab job. The net_test_com_server will be started when this is not the case. The start_net_test_com_server script also takes care that the appropriate log files are used and that only access is allowed to the control host. See the section "Net Test Server / Client" for more information.

 
8. Check the correct functioning of the script which performs the measurements at the control host by typing the following command lines at the control host in a shell where X Windows client displays are allowed:

RTPLRoot/bin/log_HostsExt
RTPLRoot/bin/net_test_HostsExt

with:

  • RTPLRoot
    The root directory of the installed RTPL package.
  • HostsExt = lowercase (HostsBaseDir)
    HostsExt is the extension which is used for files that are specific for this hosts configuration. It is the lowercase of the hosts base directory HostsBaseDir described below.
  • HostsBaseDir
    The base directory which you supplied in the setup script for the current hosts configuration.

The first script follows the growing of the log file in a new XTerm terminal emulator. When selected xtail will be used. See the readme.html file, section "Optional Software". The second script executes the net performance tests. All Standard Output and Standard Error is redirected to the log file, hence the usage of the log script.

If no X displays are allowed you should type these commands in two separate terminal (emulator) sessions.

Before running these commands it is a good idea to check if the remote or secure shells from the control host to the client test hosts are functioning properly.

 
9. Let crontab starts periodically the net performance tests by typing the following command line:

% crontab RTPLRoot/crontab/crontab_input_HostsExt

When you are already using a crontab file you can use this file as template and add it to your crontab file. Alternatively you can adjust the measurement times in the hour. In that case it is best to make a copy of the crontab file, because it will be overwritten by a reinstall.

It is not such a good idea to change the measurement period by editing the crontab file, because the measurement period should also be known in the Web part of the package. In that case it is preferable to change the parameters with the setup script to make a reinstall.

 
10. The Web presentation of the results is now available in

file:RTPLRoot/html/HostsBaseDir/table/net_data.html

A Web server may be used to view the data remotely. See the section "Access from a Web Server" for more information. See also the section "Online Documentation" where to obtain information a.o. about the Web presentation of the results.

Defining the User Environment

For a correct functioning of the test scripts, both at the control host and at the client test hosts it is required that the user environment should be defined correctly. One should realise that the shells started by crontab at the control host and by the remote or secure shells at the client test hosts are no login shells. Therefore, the usual login startup files are not read by these shells. This implies that your environment should be defined in $HOME/.cshrc for the (t)csh shell or in $HOME/.bashrc for the bash shell. When this situation should conflict too much with your current environment, please consider to create separate test users at the control and client hosts. When possible, this always is a good strategy.

Below we will treat the situation at the control host and at the client hosts in more detail. There also is explained what to do when your shell does not possess startup files such as sh and ksh.

Access from a Web Server

When the HTML pages of the package should be accessible from a Web server, a symbolic link from the root directory of the HTML files, RTPLRoot/html, or from one of its sub directories, to a directory accessible from a Web server has to be created with for instance the following command line:

% ln -s RTPLRoot/html $HOME/public_html/rtpl

Please note that the Web server should be configured such that access with a symbolic link is allowed. For the Apache Web server this implies that in the configuration file access.conf the Options directive should contain the option FollowSymLinks for the home directory tree. Consult the Apache documentation for more information.

No Web server dependent functionality, like for instance CGI-Bin programs, is used. Therefore the Web oriented part of the package is transparent for access from a Web server or from a file system.

Online Documentation

When you open the Web presentation of the network performance results for the first time an overview page is presented that gives an overview of the load, round-trip and throughput for all hosts at the last measurement time. This page contains at the top the following hyperlinks to HTML documentation:

There are also man pages available for the scripts from this package.

Client Host Resource File for Specific Options

At each client host the resource file $HOME/.host_net_test_rsc can be used for specific options for the client network performance measurement script host_net_test. For instance this possibility is used by the client setup script client_setup to use the Nikhef ping program specific for that client.

Setup Scripts

In this section the setup script which is used to install the package for a hosts configuration at the control host and the client_setup script which is used to install the package at the client test hosts are treated here in more detail.

Both scripts are prompting you to answer some questions. When your system management installed one of the available Perl Term::ReadLine packages you can use line editing in the same way as you are used to do in your shell or MS-DOS prompt.

The scripts are requesting you for some parameters to supply. When a script is opened a help message is displayed using the pager specified in the PAGER environment variable. The more pager is used when it is undefined. When the Standard Output is not a Terminal TYpe no pager is used, but the help message is printed to Standard Output and the setup will be exited when the help message is printed. This makes it possible for instance to store the help message to file or to print it.

When a default answer exists for a particular question it will be listed at the end of the question between square brackets "[...]". If you supply an empty answer, or an answer which contains only white spaces when a default answer is available, the default answer will be used and the prompt "Using default: Answer" is listed. When there is no default answer available the question is repeated until you did specify a non-empty answer.

The setup scripts contain the following types of questions:

In the setup scripts it always is allowed to go to the previous question. An already given answer will be stored and will be used as default answer when this question is reentered again. It also is allowed to go to the next answer, but only when a default answer exists. In that case this answer will be used.

In the setup script named setup the parameters are divided in several so called parameter groups. When you want to change an existing configuration this makes it more easier to skip parameters you do not want to change. Equivalently to the previous paragraph you always can go to the previous group. However, you can only go to the next group when all parameters in the group are defined. When there are undefined parameters when you want to go to the next group you are left at the first undefined parameter to specify a value for it after a diagnostic message is printed which parameter is still undefined. During the specification of the parameters in a group you are also allowed to go one level up, but again only when all parameters are defined. Otherwise you are left again by the undefined parameter.

In the setup scripts the following special characters can be used a.o. for the navigation described above.

         '? :   Print help information about the current directive (group).
'?p :   Display the help with the default pager.
 
'= :   List the current directive value or the current directive values within a group.
'=p :   List the directive value(s) with the default pager.
 
'! :   Run the system command following this character.
 
'< :   Go to the previous directive (group).
 
'> :   Go to the next directive at the directive level when the previous and the current directives are defined. Go to the next group at the group level when all directives within the group are defined.
 
'^ :   Go to the directive group level but only when all directives within the group are defined.

Additionally for parameter arrays there are the special characters listed below to select, add, delete or edit elements from the array of parameters. The variable I = 1, ..., denotes an index from an element from the array of parameters.

         ':Ia :   Add new parameters after index I.
 
':Ii :   Insert new parameters before I.
 
':Ie :   Specify the parameters of I.
 
':Id :   Delete the parameters of I.
 
':Ib,Ied :   Delete the parameters from Ib to and including Ie.
 
':q :   Quit the addition of parameters.

In all situations when Control-D is pressed the setup will exit.

After the parameters are specified you are confirmed to build the configuration at the control or client host. If you does not confirm this question you again requested to specify the configuration directives.

Installation without Setup Scripts

It is also possible to install the package without using the setup scripts. In that case you have to edit the configuration files by hand. After that the make program should be run to install the package. The advantage is that there are some additional features available, which cannot be used from the setup scripts. However, these features are seldom needed. See the comment headers in configuration file template config/config.mk for a description of all possible features. Running make by hand also allows more targets than by using the setup scripts. See the comment header from the Makefile in the installation directory for a description of all possible targets.

Below we will give a short description of the installation procedure for a hosts configuration without using the setup scripts.

         1.    Allow remote shells from the control host at the client test hosts as described above.
 
2. Install the Netperf package at the client test hosts as described above.
 
3. Copy the configuration template config/config.mk to the configuration file for the corresponding hosts set, when non-existing

% cp config/config.mk config/config_HostsConfig.mk

and edit the hosts set configuration file to define the required make directives which are documented in the configuration file.

 
4. Install the package for the hosts set at the control host by typing

% make "HostsConfig[ ]"

The possible targets are described in the comment header of the Makefile.

 
5. Make a gzip compressed tar archive named RTPL-Version.tar.gz, which also contains the hosts set configuration file, within this installation directory by specifying the command line:

% make tar_gzip_archive
 
6. Copy the new archive to the client hosts.
 
7. Install the package at each of the client hosts by running

% make client
 
8. When required set client specific options in $HOME/.host_net_test_rsc, for instance to use the Nikhef ping program. See man host_net_test for the corresponding option.
 
9. Check the correct functioning of the script and start the crontab job as described above.

Net Test Server / Client

In general the net performance commands are started at the client test hosts by the control host using a remote or secure shell command. Alternatively, it is also possible to use a server / client combination, provided by this package. In fact, for Windows clients this is the only possibility. See also the section "Installation Windows Client". Two Perl scripts are provided here:

When these server / client scripts are used, it is required that periodically there is checked if the net_test_com_server at a client is running. It should be started when this is not the case. At Unix platforms the script start_net_test_com_server can be used to perform these periodic checks, for instance with a crontab job. Suppose that the network performance tests are started each hour by the control script. When all participating hosts have synchronised clocks (NTP), a crontab job at a client host could look like:

59 * * * *  RTPLRoot/bin/start_net_test_com_server >RTPLRoot/log/start_net_test_com_server.cron 2>&1

So, just before the net performance tests are executed, there is checked at the client test host if the server is running.

Copy also the file RTPLRoot/lib/sample-net_test_com_server.conf to the configuration file RTPLRoot/lib/net_test_com_server.conf and set the allow_host directive to the control host to limit the access only from this host.

Installation Windows Client

The Windows client can be installed with the following steps:

  1. Unzip win_client.zip at the location where you would like to install this package. At that position a folder win_client will be created.
  2. Copy the sample configuration file

    win_client\lib\sample-net_test_com_server.conf

    to the configuration file

    win_client\lib\net_test_com_server.conf

    and substitute the local hostname and IP address, specified in the allow_host directives by the hostname and IP address of the control host. In this way access to the Perl server will be limited to the control host.

    Standard Output and Error will be send to the log file:

    win_client\log\net_test_com_server
  3. Start the command server from the Win_Clien\bin folder at the client host with the command line:

    perl net_test_com_server.pl -config_file ..\lib\net_test_com_server.conf

    You may specify some more options or configuration directives. Type perl net_test_com_server.pl -help for a usage message.

  4. Start the server which restarts the Windows netserver command when it is finished from the Win_Clien\bin folder with the command line:

    perl loop_test_netserver.pl

    You may specify some options and also a configuration file. Type perl loop_test_netserver.pl -help for a usage message.

At Windows NT, the scripts started at steps 3. and 4. can also be run as system server, using the SRVANY package, available from the Windows NT Resource Kit.

Contact

If you encounter any problems, please contact me.

Hans Blom
jblom@science.uva.nl