owampd - One-way latency server.
owampd is a server program specifically designed to run one side of
one-way latency tests. The client program owping is available to run
the other side of the test.
Aside from actually running the tests, the main function of
owampd is to determine which tests are allowed, based upon the policy
restrictions configured by the system administrator.
owampd was designed to be run as a stand-alone daemon
process. It uses the classic accept/fork model of handling new requests.
Most of the command line options for owampd have analogous
options in the owampd.conf file. The command line takes
precedence.
- -a authmode
- Specify the authentication modes the server is willing to use for
communication. authmode should be set as a character string with
any or all of the characters "AEO". The modes are:
- A
- [A]uthenticated. This mode encrypts the control connection and
encrypts part of each test packet.
- E
- [E]ncrypted. This mode encrypts the control connection and encrypts
each test packet in full. (This mode forces an encryption step between the
fetching of a timestamp and when the packet is sent. This adds more
computational delay to the time reported by OWAMP for each
packet.)
- O
- [O]pen. No encryption of any kind is done.
The server can specify all the modes with which it is willing to
communicate. The most strict mode that both the server and the client are
willing to use will be selected.
- Default:
- "AEO".
- -c confdir
- Specify the directory that holds the owampd configuration files:
owampd.conf, owampd.limits and owampd.pfs.
- Default:
- Current working directory.
- -d datadir
- Specify the directory that holds the buffered data files. The data files
are the result of one-way latency tests where the server is the receiving
host. The data files are used to buffer the data, at least until a client
downloads the file. Policy restrictions can be used to set how much disk
space a given connection can use, as well as to determine when each file
is deleted. (See the owampd.limits(5) manual page.)
- Default:
- Current working directory.
- -e facility
- Syslog facility to which messages are logged.
- -f
- Disables the requirement that owampd be run with non-root
permissions. There are legitimate reasons to run owampd as root,
but it is more risky. (For example, some operating systems require root
permissions to set the TOS bits used by the -D option of
owping.) This additional option was added to ensure that root
permissions are only used when explicitly intended.
- -G group
- Specify the gid for the owampd process. group can be
specified using a valid group name or by using -gid. This option is only
used if owampd is started as root.
This option can be useful to limit logfile permissions to only
users in this group.
- -h
- Print a help message.
- -P 0 | lowport-highport
- Specify the specific port range to use on the local host for
OWAMP-Test packets. This can be specified in two ways. First, as 0
which would indicate owampd should allow the system to pick the
port (ephemeral). Second, as a range: lowport must be a smaller
value than highport and both numbers must be valid port values. (16
bit unsigned integer values)
- -R vardir
- Specify the directory to hold the owampd.pid file.
- Default:
- Current working directory
- -S nodename:port
- Specify the address and port on which owampd will listen for
requests. nodename can be specified using a DNS name or using the
textual representation of the address. It is possible to set the source
address, without setting the port, simply by leaving off the ':'
and port specification. Likewise, a non-default port can be
specified for all system addresses (wildcard) by starting the
specification string with a ':'. If an IPv6 address is specified, note
that the accepted format contains nodename in square brackets, such
as: [fe80::fe9f:62d8]. This ensures the port number is distinct from the
address specification.
- Default:
- nodename is wildcarded as any currently available address.
port is 861.
- -U user
- Specify the uid the owampd process should run as. user can
be specified using a valid user name or by using -uid. This option is only
used if owampd is started as root.
In the default case, owampd should be started as root so it
can bind the protected port 861. (See -S option.) owampd will release
root permissions shortly after binding to this protected port and requests
will be serviced by processes running with permissions defined by the
user.
- -v
- Set verbose output. Messages will still only go to syslog unless the
-Z option is specified.
- -Z
- Run the master owampd process in the foreground. In this mode,
error messages are printed to STDERR as well as being sent to syslog.
Also, normal terminal controls are available. (i.e., <Cntr-C> will
cause the daemon to kill it's child processes and exit.) This is useful
for debugging.
The owampd daemon requires a very well synchronized and stable clock.
owampd requires that NTP be running to synchronize the system
clock. NTP needs to be setup in a more methodical way than on most
systems for the results to be meaningful. Please see the OWAMP web site
(http://e2epi.internet2.edu/owamp/) for details concerning proper
configuration of NTP for OWAMP.
owampd uses syslog to output error messages including access
information. The facility configuration option is used to determine
what syslog facility is used. The levels used are as follows:
- LOG_ERR
- Used for messages indicating fatal errors. The requested action will not
be performed.
- LOG_WARNING
- Used for messages indicating an unexpected or dangerous condition.
- LOG_INFO
- Used for access messages.
- LOG_DEBUG
- Used to indicate reasons for actions. For example, if an access is denied
due to policy choices that will be noted with this log level.
These levels were chosen to give the system-administrator the
ability to separate access log information from error log information in a
straight forward manner.
The owampd process makes use of a number of signals to perform IPC
between the various processes involved:
- SIGALRM
- Used throughout to set timers where appropriate.
- SIGCHLD
- Used to keep track of the state of child processes.
- SIGINT
- SIGTERM
- SIGHUP
- Used to terminate any owampd process. These signals are caught by
the parent daemon and it manages the complete shutdown of all the
owampd processes.
- SIGPIPE
- Disabled throughout owampd.
- SIGUSR1
- Used to tell a spawned off receiver/sender process that all control setup
interaction is complete and the test can continue at the determined time.
(This is an indication that the StartSessions message was received for
those familiar with the OWAMP protocol.)
- SIGUSR2
- Used to tell a spawned off receiver/sender process to terminate a session
early. (This is an indication that a StopSessions message was received for
those familiar with the OWAMP protocol.)
owampd.pid
owampd.conf
owampd.limits
owampd.pfs
OWAMP uses environment variables for some debugging options.
OWAMP Environment Variable |
Description |
OWAMP_DEBUG_TIMEOFFSET |
Offset time by this amount (seconds) |
There are more details on configuring the owampd daemon in the
owampd.conf(5) manual page. Details on configuring the policy are in the
owampd.limits(5) and owampd.pfs(5) manual pages. Information on the client is
in the owping(1) manual page. For more of an overview of the full
functionality and architecture, see the http://e2epi.internet2.edu/owamp/ web
site.
This material is based in part on work supported by the National Science
Foundation (NSF) under Grant No. ANI-0314723. Any opinions, findings and
conclusions or recommendations expressed in this material are those of the
author(s) and do not necessarily reflect the views of the NSF.