One document matched: draft-moore-sonar-03.txt
Differences from draft-moore-sonar-02.txt
Network Working Group Keith Moore
Internet-Draft University of Tennessee
Expires: 4 March 1998 4 August 1998
SONAR - A Network Proximity Service
Version 1
draft-moore-sonar-03.txt
1. Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups. Note that other groups may also distribute working
documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents at
any time. It is not appropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
To view the entire list of current Internet-Drafts, please check
the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe),
ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim),
ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
2. Abstract
SONAR is a service which, when presented with a list of Internet
Protocol addresses, attempts to order that list according to the
proximity from the SONAR server to each address. Given multiple
locations for a network accessible resource, SONAR is designed to help
networked applications make a reasonable choice between those
alternatives. This memo describes the SONAR protocol as well as an
experimental implementation of the SONAR service.
While the name "SONAR" is intended as a pun on the "ping" utility
that uses ICMP echo requests to verify network connectivity, the SONAR
service does not specify use of any particular means of estimating
network proximity. To the contrary, the design of SONAR assumes that
the best means of estimating network proximity will change over time and
perhaps from one network location to another. The SONAR protocol is
intended to provide a stable interface for applications that need to
measure network proximity, thus allowing proximity measurement
algorithms to evolve separately from those applications.
K. Moore Expires 4 March 1998 [Page 1]
SONAR 4 August 1998
3. Introduction
One way to make a network-accessible resource available to a large,
and perhaps geographically distributed audience is to provide several
replicas (or "mirrors") of that resource at multiple locations. If a
there are several locations from which a resource can be accessed, and
either bandwidth or response-time is important to the user's perceived
quality of service, the user will often obtain better service if a
"nearby" location of that resource is favored over a "distant" one.
The SONAR service is designed to allow such a choice to be made by
an application program. Given several alternative locations from which
to access a resource, an application program can query a nearby SONAR
server to determine which locations are closer than others. The SONAR
server will return, for several of those locations, a metric which
provides a rough indication of the proximity of that location to the
SONAR server. Using those metrics, the application can then choose a
single location from which to access the resource.
SONAR is designed as an alternative to building proximity
estimation algorithms into each of several applications. By placing
such functionality into a separate network-accessible service, the
proximity estimation algorithm can be tuned (in one place) to suit the
requirements of a particular site. It also allows SONAR to evolve
independently of the applications that use it. When better proximity
estimation algorithms are developed, a site or ISP can upgrade its SONAR
servers to allow its existing applications to take advantage of those
improvements.
SONAR does not guarantee that it finds the "best" location of a
resource, nor does it claim to provide a precise measurement of
proximity. Instead, the goal of SONAR is to aid clients in making a
"good" choice among alternative locations of a service. It should do
this without imposing a long delay, and without consuming significant
network resources.
If the time required to access a resource using SONAR is usually
less than the time required to access the resource without it, and if
the use of SONAR avoids the "worst case" selection, users will see SONAR
as beneficial. Likewise, if the amount of network resources consumed by
a SONAR server in measuring network proximity is less than the amount of
resources that would be consumed when accessing a randomly chosen
location, SONAR will improve the utilization of the network.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document, when they appear in all capital letters, are to be interpreted
as described in RFC 2119.
K. Moore Expires 4 March 1998 [Page 2]
SONAR 4 August 1998
4. Protocol
This memo describes the second version of SONAR, called version 1.
Version 0 of the SONAR protocol was intentionally as simple as possible.
Version 1 of SONAR adds support for IPv6, the ability to request a
particular kind of proximity metric, and establishes uniform ways for
servers to report proximity estimates.
An application communicates with a SONAR server using UDP port 572.
A SONAR request and response each consist of a single UDP datagram. In
the descriptions below, all numeric quantities are in standard network
byte order ("big-endian" format, most significant byte transmitted
first).
4.1 Request formats
The format of a SONAR query for IPv4 addresses is as follows:
offset datum
+-------------------+
0 | protocol-version |
+-------------------+
4 | request-type |
+-------------------+
8 | request-id |
+-------------------+
12 | reserved (MBZ) |
+-------------------+
16 | timeout (usec) |
+-------------------+
20 | count (1..255) |
+-------------------+
24 | address[0] |
+-------------------+
28 | address[1] |
+-------------------+
| ... |
+-------------------+
24+(count-1)*4 | address[count-1] |
+-------------------+
K. Moore Expires 4 March 1998 [Page 3]
SONAR 4 August 1998
The format of a SONAR query for IPv6 addresses is as follows:
offset datum
+-------------------+
0 | protocol-version |
+-------------------+
4 | request-type |
+-------------------+
8 | request-id |
+-------------------+
12 | reserved (MBZ) |
+-------------------+
16 | timeout (usec) |
+-------------------+
20 | count (1..255) |
+-------------------+
24 | address[0] |
+-------------------+
28 | address[0] |
+-------------------+
32 | address[0] |
+-------------------+
36 | address[0] |
+-------------------+
40 | address[1] |
+-------------------+
44 | address[1] |
+-------------------+
48 | address[1] |
+-------------------+
52 | address[1] |
+-------------------+
| ... |
+-------------------+
24+(count-1)*16 | address[count-1] |
+-------------------+
28+(count-1)*16 | address[count-1] |
+-------------------+
32+(count-1)*16 | address[count-1] |
+-------------------+
36+(count-1)*16 | address[count-1] |
+-------------------+
4.1.1 Protocol version
The protocol-version field is used to distinguish this version of
the SONAR protocol from other versions. This document describes version
K. Moore Expires 4 March 1998 [Page 4]
SONAR 4 August 1998
1 of the protocol. A SONAR server MUST check the version-number of each
request and return a "Version Mismatch" response if that version is not
supported.
4.1.2 Request type
For SONAR version 1, valid request-types are as follows:
request-type meaning
00 hex cheapest proximity estimate
01 hex minimum round-trip time (microseconds)
02 hex mean round-trip time (microseconds)
03 hex minimum client-to-server delay (microseconds)
04 hex mean client-to-server delay (microseconds)
05 hex minimum server-to-client delay (microseconds)
06 hex mean server-to-client delay (microseconds)
07 hex maximum client-to-server bandwidth (bits per second)
08 hex mean client-to-server bandwidth (bits per second)
09 hex maximum server-to-client bandwidth (bits per second)
0A hex mean server-to-client bandwidth (bits per second)
0B hex mean client-to-server packet loss rate (percent)
0C hex mean server-to-client packet loss rate (percent)
0D hex mean time between circuit failure (seconds)
0E hex end-to-end MTU (octets)
0F hex hop count (hops)
NOTE: There is no requirement that a SONAR server implement all of these
request types. The large number of request types is intended to allow
clients to differentiate responses from different kinds of proximity
estimation services, and also to encourage experimentation into
different ways of estimating proximity.
Bit 80000000 (hex) of the request-type MUST be zero. This bit is
used to distinguish SONAR requests from SONAR responses.
The request-type MAY be ORed with 40000000 (hex) to indicate that
substitutions are allowed. If this bit is 0, the server must either
return a result in terms of the requested proximity metric, or it must
return a "metric unsupported" error. If the bit is 1, the server may
substitute some other metric for the one requested.
The request-type MAY be ORed with 20000000 (hex) to indicate that
the request is for IPv6 addresses. When this bit is set to 0, it
indicates that the request contains IPv4 addresses. If the bit is set
to 1, it indicates that the request contains IPv6 addresses.
K. Moore Expires 4 March 1998 [Page 5]
SONAR 4 August 1998
4.1.3 Request ID
The request-id is any 4 octets chosen by the client, and is used to
associate a response with the particular request that produced. The
request-id will be included in the SONAR server's response.
4.1.4 Reserved field
The 4 octets beginning at offset 12 are reserved for future use,
(and for compatibility with SONAR version 0 implementations), and MUST
be zero.
4.1.5 Timeout
The timeout is the maximum number of microseconds (4 bytes) which
the SONAR server should wait before replying. The server MAY return a
response sooner than requested. A timeout of zero microseconds requests
that the SONAR server return a response immediately, without any active
probing, based on whatever proximity data it has on hand.
4.1.6 Address count
The address count (4 octets) is the number of addresses for which
the SONAR client wants the server to estimate relative proximity. The
count may be any value between 1 and 255, inclusive. SONAR servers MUST
ignore queries with a count of zero. The most significant three octets
of the count field are reserved for future use, and MUST be zero.
4.1.7 Addresses
Following the address count are that many Internet Protocol
addresses. If the request-type had the 20000000 (hex) bit set to 1, the
addresses are assumed to be IPv6 addresses; otherwise, they are assumed
to be IPv4 addresses.
4.2 SUCCESS response formats
Version 1 of the SONAR service has several possible response
formats, depending on whether the request was successful, and whether
the request was for IPv4 or IPv6 addresses.
K. Moore Expires 4 March 1998 [Page 6]
SONAR 4 August 1998
A SUCCESS response for IPv4 is returned in the following format:
offset datum
+----------------------+
0 | protocol-version = 1 |
+----------------------+
4 | response-code |
+----------------------+
8 | request-id |
+----------------------+
12 | response-count |
+----------------------+
16 | address[0] |
+----------------------+
20 | metric[0] |
+----------------------+
24 | address[1] |
+----------------------+
28 | metric[1] |
+----------------------+
| ... |
+----------------------+
16+(count-1)*8 | address[count-1] |
+----------------------+
20+(count-1)*8 | metric[count-1] |
+----------------------+
K. Moore Expires 4 March 1998 [Page 7]
SONAR 4 August 1998
A SUCCESS response for IPv6 is returned in the following format:
offset datum
+----------------------+
0 | protocol-version = 1 |
+----------------------+
4 | response-code |
+----------------------+
8 | request-id |
+----------------------+
12 | response-count |
+----------------------+
16 | address[0] |
+----------------------+
20 | address[0] |
+----------------------+
24 | address[0] |
+----------------------+
28 | address[0] |
+----------------------+
32 | metric[0] |
+----------------------+
36 | address[1] |
+----------------------+
40 | address[1] |
+----------------------+
44 | address[1] |
+----------------------+
48 | address[1] |
+----------------------+
52 | metric[1] |
+----------------------+
| ... |
+----------------------+
16+(count-1)*20 | address[count-1] |
+----------------------+
20+(count-1)*20 | address[count-1] |
+----------------------+
24+(count-1)*20 | address[count-1] |
+----------------------+
28+(count-1)*20 | address[count-1] |
+----------------------+
32+(count-1)*20 | metric[count-1] |
+----------------------+
K. Moore Expires 4 March 1998 [Page 8]
SONAR 4 August 1998
4.2.1 Protocol version
Protocol-version will also be 1. For all versions of SONAR, the
protocol-version of the response will match that of the request.
4.2.2 Response codes
The response code indicates whether the request was successful, and
if so, the type of metric actually returned in the response. This may
be different than the type of metric requested. Successful response
codes for SONAR version 1 include the following:
response-code meaning
80000001 hex minimum round-trip time (microseconds)
80000002 hex mean round-trip time (microseconds)
80000003 hex minimum client-to-server delay (microseconds)
80000004 hex mean client-to-server delay (microseconds)
80000005 hex minimum server-to-client delay (microseconds)
80000006 hex mean server-to-client delay (microseconds)
80000007 hex maximum client-to-server bandwidth (bits per second)
80000008 hex mean client-to-server bandwidth (bits per second)
80000009 hex maximum server-to-client bandwidth (bits per second)
8000000A hex mean server-to-client bandwidth (bits per second)
8000000B hex mean client-to-server packet loss rate (percent)
8000000C hex mean server-to-client packet loss rate (percent)
8000000D hex mean time between circuit failure (seconds)
8000000E hex end-to-end MTU (octets)
8000000F hex hop count (hops)
All response-types have the most significant (80000000) bit set to
1, so that responses can be distinguished from queries.
The 40000000 bit MUST be zero for a successful response. This bit
is used to distinguish SUCCESS responses from FAILURE responses.
These responses are ORed with 20000000 hex if the response is for
IPv6 addresses. This bit is 1 if the response contains IPv6 addresses;
0 if the response contains IPv4 addresses. This should match the
20000000 bit in the request-type of the request.
4.2.3 Request ID
The request-id in the response matches the one from the SONAR
query.
K. Moore Expires 4 March 1998 [Page 9]
SONAR 4 August 1998
4.2.4 Response count
The response count field contains the number of IP addresses for
which proximity data is being returned. The SONAR server MAY return
fewer responses than the number of IP addresses for which proximity
information was requested. The SONAR server SHOULD limit the amount of
information returned if necessary to prevent the resulting datagram from
being fragmented. If a SONAR returns fewer responses than requested, it
SHOULD return the proximity estimates of the nearest hosts (if delay
estimation was requested), or those with the best bandwidth (if
bandwidth estimation was requested), or the lowest loss or failure rates
(if loss or failure rates were requested), or the highest MTU (if MTU
was requested), discarding the estimates of those that appear to be the
most distant (have less bandwidth, higher failure or loss rates, lower
MTU). However, a server which has several cached proximity estimates
from among those requested MAY return estimates for some subset of the
cached estimates, without estimating proximity for all hosts requested.
4.2.5 Proximity estimates
Following the response count are 'response count' sets of proximity
metrics. Each metric consists of an (IPv4 or IPv6) address, followed by
a proximity estimate. The proximity estimate must be use the correct
units for the response-type, as given in section 4.2.2.
The addresses returned in a SONAR response are not necessarily
sorted by order of proximity; the client must sort them if needed.
4.3 FAILURE response formats
A SONAR version 1 FAILURE response is of the following form:
K. Moore Expires 4 March 1998 [Page 10]
SONAR 4 August 1998
offset datum
+-----------------------------+
0 | protocol-version = 1 |
+-----------------------------+
4 | response-code |
+-----------------------------+
8 | request-id |
+-----------------------------+
12 | low-version |
+-----------------------------+
16 | high-version |
+-----------------------------+
20 | num-supported-request-types |
+-----------------------------+
24 | request-type-bits[0] |
+-----------------------------+
| ... |
+-----------------------------+
4.3.1 Protocol version
The protocol version of a FAILURE response MUST be consistent with
the format of the FAILURE response. However, the server SHOULD if pos-
sible return FAILURE responses that match the version of the request to
maximize the likelihood that the client will be able to understand them.
4.3.2 Response code
Currently defined FAILURE response codes are the following:
response-type meaning
C0000000 hex Version Mismatch
C0000001 hex Metric Not Supported
The "version mismatch" error indicates that the server does not
support the version of the protocol used in the client's request. The
low and high version fields indicate the versions of SONAR supported by
the server.
The "metric not supported" error indicates that the client
requested a particular kind of metric not supported by the server. This
might be either because the client did not set the 40000000 bit of the
request, indicating that substitutions were allowed; or because the
server could not make a reasonable substitution; or because the server
did not understand the request-type used by the client. The request-
K. Moore Expires 4 March 1998 [Page 11]
SONAR 4 August 1998
type-bits field of the response contains the set of request-types sup-
ported by the server.
4.3.3 Request-ID
The request-id in the response MUST match the request-id in the
request.
4.3.4 Low Version
This contains the lowest-numbered version of SONAR supported by the
server.
4.3.5 High Version
This contains the highest-numbered version of SONAR supported by
the server.
4.3.6 Number of Supported Request Types
This field contains the number of request types supported by the
server. It indicates the size of the following supported-request-types
field.
4.3.7 Supported Request Types
This field consists of an integral number of 4-octet words, where
each word represents 32 elements of a set of supported request types. A
bit set to 1 indicates that the corresponding request-type is supported
by the server; a bit set to 0 indicates that the corresponding request-
type is not supported. Examples: If request-type 0 is supported, bit 0
(00000001 hex) if word 0 is set; if request-type 1 is supported, bit 1
(00000002 hex) of word 0 is set; if request-type 31 is supported, bit 31
(80000000 hex) of word 0 is set; and if request-type 32 is supported,
bit 0 (00000001 hex) of word 1 is set to 1.
The length of this field is determined by the num-supported-
request-types field. This field is ((num-supported-request-
types+31)/32)*4 words long.
5. Caveats
Since different SONAR servers may employ different proximity
estimation algorithms, metrics obtained from one SONAR server should be
compared with those obtained from a different server, only if they use
the same proximity algorithms.
K. Moore Expires 4 March 1998 [Page 12]
SONAR 4 August 1998
Metrics obtained from SONAR should not be cached by an application
for any significant amount of time.
An application should normally be configured (by whatever means) to
use one or more SONAR servers that have a similar view of the network to
that application. However, for the case of an application running on a
single host which is separated from the rest of the Internet by a slow
pipe, where all of the resources of interest are on the "well-connected"
side of the link (e.g. a modem dialup connection) the SONAR server
should normally be located on the "well-connected" side.
In general, applications which examine raw IP addresses may be
confused by network address translation (NAT) devices. In particular,
applications that use SONAR may be confused if the application and SONAR
server are on different sides of a NAT box. In the case where a NAT box
dynamically maps 'global' addresses onto some set of 'local' addresses
which can be reused (e.g. when mapping global IPv6 addresses onto a
local IPv4 network), an application using SONAR will also be confused if
the combination of the SONAR server and the application, cache proximity
estimation data longer than the NAT box retains its mappings between
global and local addresses.
Many sites employ firewalls or filtering in routers to discourage
hostile attacks or probes from outside (or inside!) of a perimeter. For
example, some sites filter ICMP echo requests. Such sites may interfere
with the operation of particular kinds of SONAR servers.
Sites that employ NATs and/or firewalls often utilize application
level gateways or proxies. Use of proxies with SONAR is a topic for
further study.
6. Finding a SONAR server
SONAR complicates configuration of networked applications, because
they need to know the address of one or more SONAR servers to use it.
It is therefore desirable to minimize the burden of configuration.
SONAR-aware applications should perform a DNS query of QTYPE=A on
the name "sonar-server" to determine if there are any SONAR servers
defined for use by the local domain. (This assumes that DNS searches
for unqualified names take place relative to one or more local domains.)
Even though the local DNS hierarchy does not necessarily correspond to
network topology, this approach will work well for many sites.
A future version of SONAR may support location of servers using IP
broadcast, IP multicast, DHCP, PPP extensions, service location
protocol, or some other means to be determined.
K. Moore Expires 4 March 1998 [Page 13]
SONAR 4 August 1998
7. Security Considerations
A naive implementation of SONAR could be used as a vehicle for a
denial-of-service attack on a network, for instance, by requesting SONAR
to probe multicast or broadcast addresses and thus generating large
amounts of traffic. For this reason it is recommended that SONAR
servers refuse to process queries sent to IP broadcast or multicast
addresses, ignore requests to obtain proximity information for broadcast
or multicast addresses, and perhaps ignore requests from remote sites.
The security mechanisms employed by a site to prevent certain kinds
of attack may thwart use of SONAR. For example, some sites filter ICMP
echo requests from external sites for security reasons, even though
other protocols such as ftp or http may be allowed. A SONAR
implementation that uses ICMP echo will not be able to estimate
proximity to hosts behind such a filter.
8. Author's address
Keith Moore <moore@cs.utk.edu>
University of Tennessee
107 Ayres Hall
Knoxville, TN 37996-1301
USA
A mailing list has been established to discuss the SONAR protocol
and its implementation. To request a subscription to the list, send
mail to <sonar-REQUEST@cs.utk.edu>.
K. Moore Expires 4 March 1998 [Page 14]
| PAFTECH AB 2003-2026 | 2026-04-24 10:39:31 |