Re: Uniform Resource Names - almost draft

Patrik Faltstrom (paf@nada.kth.se)
Sat, 15 Oct 1994 18:46:19 +0100

Message-Id: <aac5c10e03021004307f@[130.237.222.107]>
Date: Sat, 15 Oct 1994 18:46:19 +0100
To: mitra@path.net (Mitra)
From: paf@nada.kth.se (Patrik Faltstrom)
Subject: Re: Uniform Resource Names - almost draft

At 15.21 94-10-15, Mitra wrote:
>I just wanted to draw attention to this, in the URN paper, and the scheme
>being used in the test-bed , we dont use the centroids or
>Directory-of-servers to find the correct servers, because both it is too
>slow especially if its working over thousands of servers. It is probably
>appropriate for a directory search, but not for a resolution of a URN.

Your idea of using the "Naming AuthorityId" to find the correct server
is a good idea, but I think that you might have to include a fallback
method:

> Client sends the URN <urn:dns:foo.bar:12345> to its proxy server in a
> protocol the client speaks (e.g. Gopher or HTTP)
> If the server hasnt cached the URC already {
> If the Server (or its DNS) has not cached the Resolution server {
> it asks the DNS for "uri.foo.bar", and caches the resulting IP
> address(s).
> }
> The server sends the URN to the Resolution server, using a minimal
> whois++ syntax, specifically. TEMPLATE=urc;URN=urn:dns:foo.bar:12345

The query should be:

TEMPLATE=urc and URN="urn:dns:foo.bar:12345"

> The server receives a URC in whois++ format, {help I need an example
> here}

I'll try to work out an exact example of the interaction between a server
and a client which do exactly this query.

But, I also think a fallback method is needed which uses exactly the
same method as directory searches, i.e. the client queries the
Directory-of-Servers for all servers which have the "Naming AuthorityId"
in its "Describe" template. So, I would like the querying should be:

If the Server (or its DNS) has not cached the Resolution server {
it asks the DNS for "uri.foo.bar", and caches the resulting IP
address(s).
}

The server sends the URN to the Resolution server, using a minimal
whois++ syntax,

if the IP address is missing or the server "uri.foo.bar" doesn't
respond to queries {
query the nearest server a "polled-for" query.
Sort out which server has polled for the "Describe template".
Query this "Directory of servers" for Describe templates:
TEMPLATE=Describe and NamingAuthorityID=foo.bar
Collect all answers which is "Servers-to-ask" responses (which
includes cached names and IP addresses of servers).

loop over the given servers and do {
The server sends the URN to the Resolution server, using a minimal
whois++ syntax,
} until you get an answer.
}

...continue as you did in your example.

What I mean is that using your method is a good way of speeding up
the transaction time, but if the "primary" server for this URN is
down, you can use the normal D-O-S method of finding a second
backup server.

paf