The Network interface defines the interface to the network
plugin. The network plugin allows KPs to make measurements of network
service, using the ping and traceroute facilities. It also performs
name resolution.
This document does not describe the behavior of ping and traceroute
in great detail. The plugin reimplementats the standard ping and
traceroute UNIX utilities. For more information, see the
man pages or W. Richard Stevens, TCP/IP Illustrated, Volume 1: The
Protocols, Reading, Mass.: Addison-Wesley, 1994.
The interface defines the following basic types:
- Time = optional integer
- The Latency and Route objects use this type to report
measurements. The time is represented as an integer number of
milliseconds or NULL when an error occurs for the sample.
- RouteTime = record ...
- The Route object reports the path between two hosts as a
list of RouteTimes. The RouteTime record has fields,
host and delays. The host field is a string
representing the IP address of a host. The delays field is a
list of type Time elements representing the round trip time to
that host.
- HostInfo = record ...
- The HostInfo record represents the struct hostent returned
by the gethostbyaddr() system call. The name field
contains the canonical name of the host. The aliases
field is a list of other names for the host. The
addresses field is a list of IP addresses (as strings)
for the host.
The interface defines the following exceptions:
- HostNotFound
- The specified host name could not be resolved.
- KernelNotFound
- The specified KSS kernel could not be found in the KOE
namespace.
- Error
- An unspecified network error occured.
The interface defines the following object types; their methods are
described in the next section:
- Latency
- This object measures the round-trip time to a host
(measured from the current host). The network plugin
registers this object with the name 'ping'.
- Route
- This object determines the path to a remote host (from the
current host). There is no guarantee that any two packets
will take the same path or that packets returning from the
remote host will take the same path as outbound backets. The
network plugin registers this object with the name
'traceroute'.
- NameService
- This object converts between IP addresses and host
names. The network plugin registers this object with the name
'dns'.
A Latency object has the following method:
- Ping (host : string, samples : integer) : list
of Time
- Report the round-trip time between the current host and
the specified host. The return value of will contain
samples samples (up to a maximum of 16 samples). The
host can be specified as either a host name or an IP address;
if the host name cannot be resolved, a HostNotFound exception
is raised. If a system error occurs, the generic
Network.Error exception is raised. (Many kinds of non-fatal
network errors can occur; they are reported as NULLs in the
return list.)
A Route object has the following method:
- TraceRoute (host : string, samples : integer)
: list of RouteTime
- Return a list of the gateways between the current host and
the specified host. Each entry in the list contains
timing information for samples samples (up to a maximum
of 4). The host can be specified as either a host name or an
IP address; if the host name cannot be resolved, a
HostNotFound exception is raised. If a system error occurs,
the generic Network.Error exception is raised. (Many kinds of
non-fatal network errors can occur; they are reported as NULLs
in the return list.)
A NameService object has the following methods:
- GetKernelHost (kernel : string) : string
- Return the IP address of the KSS kernel.
Effectively, it maps from the KOE's distributed namespace into
the DNS namespace. Raise KernelNotFound if kernel
can't be found in the "/kos" Context. Raise HostNotFound if
an internal error occurs.
- GetHostAddress (host : string) : string
- Return the IP address of host. Raise
HostNotFound if the name could not be resolved.
- GetHostInfo (host : string) : HostInfo
- Return a HostInfo record describing the canonical name,
aliases, and IP address of host, which can be a host
name or an IP adddress. Raise HostNotFound if the host could
not be resolved.