Subject: whether service discovery is conclusive

From: Erik Guttman <[email-masked]>
Date: Thu, 6 Jan 2000 20:43:34 +0100 (MET)

(Apologies if this message is a duplicate).

It is time to consider this closely.

Either a service discovery mechanism finds services based on their
'type' or it can use a more expressive querying mechanism.  A good
comparison is between DNS SRV RRs which allow a service to be discovered
by its type (which is like the name in /etc/services) and SLP which
allows services to be discovered on the basis of this type *and* the
attributes which the service advertises.  This way I can find all the
printers *that* support postscript, *that* are in my building, *that*
I am allowed to use, etc.

Note that SLP (and LDAP, which SLP is compatible with) do not require
everything which can be looked up to have attributes, nor do these
protocols require that every query include attributes along with the
name to look up.

What 'directory' based approaches allow for, that naming or simple
type-only based schemes do not, is selecting only the information which
the user requires.  The user may well be software which cannot distinguish
which of several services of the right type are actually better (ie. nearer,
faster, offered by a friendly department, etc.)

The most important aspect of conclusiveness is that it allows for far
better scalability.  Clients will be able to start using the service
right away instead of having to interrogate servers - and fewer services
will match the clients requests, only those which the client can actually
use.

I include more discussion from a previous mail on service discovery, below.

Erik

>   c) Is service discover conclusive?
>
> Some clients do feature negociation with servers in order to reach
> common settings for client-server communication.  It is possible that
> during the course of feature negociation that a client will determine
> that the server is not appropriate for the client to use.  
>
> This is distinct from service discovery.  In server discovery, a
> client obtains the location of all servers which it can use.  If
> a clients obtains the location of servers which it knows in advance
> it can use, the service discovery is 'conclusive'.  This means the
> client can begin to communicate with the server immediately - feature
> negociation is not required, though in some cases it is useful.
>
> If a service discovery protocol does not allow a client to select a
> service on the basis of its service characteristics, the client will
> obtain a set of service locations as a result of discovery which it
> may or may not be able to use.  Since service discovery is not
> conclusive, the client must interrogate each server with a feature
> negociation protocol.  These negociations may not in the end be
> successful.  Further, since the service discovery protocol does not
> support conclusive service discovery, *each* client-server protocol MUST
> include feature negociation, complicating *all* of them.
>
> For this reason, a service discovery protocol SHOULD be allow a
> client to issue requests for services which support service
> characteristics it requires and thus enable conclusive service
> discovery.