A Network Proximity Service

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. SONAR is designed to help networked applications make a reasonable choice between several alternative locations for a network-accessible service.

Queries to a SONAR server consist of a set of IP addresses and a timeout value. A SONAR server will try to estimate the proximity of each address before timing out. The SONAR server will then return a list of addresses with corresponding estimates proximity to each address.

SONAR is a service, not an implementation. Different SONAR servers may employ different methods for obtaining proximity metrics. By separating the implementation from the interface, new and improved techniques for obtaining network proximity can be implemented and installed with no impact upon the SONAR client applications. While the first version of SONAR actively probes the network to estimate proximity, future versions of SONAR may be implemented in routers and thus derive the proximity information ``for free'' using routing tables.

click here to read the sonar internet-draft

To subscribe to the SONAR mailing list, send a message containing the words "subscribe" to

The first version of the sonar server and client library are now available. The server uses a single ICMP echo request to estimate round-trip-time; requests are cached so that multiple requests for proximity for the same address don't result in multiple ICMP echo requests. We're working on better algorithms, but while we are, this server is available for testing.

click here to download a tar file of the sonar server