A client player performs a query to a nameserver against a network map of
Internet traffic conditions. The query is made asking for a particular
service (e.g., RTSP) via a particular protocol (TCP) in a particular
domain. In response, the nameserver returns a set of one or more tokens,
with each token defining a machine or, in the preferred embodiment, a
group of machines, from which the player should seek to obtain the
stream. The player may then optionally perform one or more tests to
determine which of a set of servers provides a best quality of service
for the stream. That server is then used to retrieve the stream.
Periodically, the client player code repeats the query during stream
playback to determine whether there is a better source for the stream. If
a better source exists, the player performs a switch to the better stream
source "on the fly" if appropriate to maintain and/or enhance the quality
of service. Preferably, the client player publishes data identifying why
it selected a particular server, and such data may be used to augment the
network map used for subsequent request routing determinations.