draft-ietf-svrloc-protocol-06.txt                         John Veizades
INTERNET-DRAFT                                                TGV, Inc.
                                                           Scott Kaplan
                                                   CoroNet Systems Inc.
                                                           Erik Guttman
                                                        Peerlogic, Inc.
                                                           July 6, 1995

                       Service Location Protocol


1.0 Status of this memo


This draft document is a product of the IETF Service Location Working
Group; it will be submitted to the RFC editor as a standards document.
Please respond with comments to the srvloc@tgv.com mailing list.

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.
Internet-Drafts 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 a "working draft" or
"work in progress."

To learn the current status of any Internet-Draft, please check the
1id-abstracts.txt listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net, nic.nordu.net, ftp.nisc.sri.com, or
munnari.oz.au.

2.0 Abstract

The service location protocol provides a framework for the discovery
and selection of network services.  It relies on multicast support at
the network layer of the protocol stack it is using.  It does not
specifically rely upon the TCP/IP protocol stack but makes use of
concepts that are found in most TCP/IP protocol implementations.

Traditionally, users find services using the name of a network host (a
human readable text string) which is an alias for a network address.
The service location protocol eliminates the need for a user to know
the name of a network host supporting a service.  Rather, the user
supplies a set of attributes which describe the service.  The service
location protocol allows the user to bind this description to the
network address of the service.




Service Location WG
Expires January 6, 1996                                        [Page 1]


INTERNET-DRAFT            Service Location Protocol             July-95

Table of Contents

1.0 Status of this memo..............................................1
2.0 Abstract.........................................................1
3.0 Notation Conventions.............................................3
4.0 Terminology......................................................3
5.0 Protocol Overview................................................5
    5.1 Service Location PDU header..................................6
        5.1.1  Version...............................................6
        5.1.2  Functions.............................................6
        5.1.3  Length................................................7
        5.1.4  Error Codes...........................................7
        5.1.5  XID...................................................7
        5.1.6  Locale................................................7
        5.1.7  Flags.................................................7
        5.1.8  Time To Live..........................................8
    5.2 Distinguished Attribute Request..............................8
    5.3 Get Attributes Request and Reply.............................9
    5.4 Service Request and Reply...................................10
    5.5 Service Attributes Request and Reply........................12
6.0 Directory Agents................................................12
    6.1 Introduction................................................12
    6.2 Directory Agent Discovery...................................13
    6.3 Service Registration........................................14
    6.4 Service Unregister..........................................14
    6.5 SCOPE Discovery and Use.....................................15
    6.6 SCOPE Propogation...........................................17
7.0 Service Information Versions....................................17
    7.1 Information Versions........................................18
    7.2 User Agents.................................................18
    7.3 Directory Agents............................................19
    7.4 Service Agents..............................................19
8.0 Server Location Connections.....................................19
9.0 Special Data Types..............................................20
    9.1 Function Resolution.........................................20
    9.2 Opaque......................................................20
10.0 Authentication.................................................21
11.0 Multicast vs. Broadcast........................................21
     11.1 Non-interneted networks...................................21
     11.2 Interneted site...........................................21
     11.3 Service Multicast Address.................................21
12.0 Data Element Formats...........................................22
     12.1 Attributes................................................22
     12.2 Service Instance..........................................23
     12.3 Addresses.................................................24
     12.4 Predicate.................................................24
13.0 Predicate Language.............................................25






Veizades, Kaplan, Guttman                                      [Page 2]


INTERNET-DRAFT            Service Location Protocol             July-95

14.0 Interesting Constants..........................................27
15.0 Acknowledgments................................................28
16.0 References.....................................................28
17.0 Author's Address...............................................29
18.0 Document Expiration............................................29
Appendix A - Technical contents of ISO 639:1988 (E/F)...............30


3.0 Notation Conventions

<>    Values set off in this manner are fully described in section
      12.0.

      In General, all definitions of items in packets are described in
      section 12.0.

|  |
\  \  Packet layouts with this notation indicate a variable length
|  |  field.

4.0 Terminology

User Agent (UA)          A process working on the user's behalf to
                         acquire service attributes and configuration.
                         The user agent retrieves service information
                         from the service agents.

Service Agent (SA)       A process working on the behalf of one or more
                         services to advertise service attributes and
                         configuration.  There can only be one SA per a
                         given host.

Service Instance         The address (service access point) of one
                         service, together with service specific
                         configuration information.

Service Information      A collection of attributes and configuration
                         information associated with a single service.
                         The service agents advertise service
                         information for a collection of service
                         instances.

Service                  The service is a process or system providing a
                         facility to the network.  The goal of service
                         location is to provide sufficient information
                         to the user, via the user agent, to find the
                         service.  The service itself is out of band
                         of the service location protocol.

Directory Agent (DA)     A process which collects information from
                         service agents to provide a single repository
                         of service information in order to centralize

Veizades, Kaplan, Guttman                                      [Page 3]


INTERNET-DRAFT            Service Location Protocol             July-95

                         it for efficient access by User Agents.  There
                         can only be one DA present per given host.

Distinguished Attribute  A special attribute at the top level of the
                         service location naming taxonomy.  The
                         Distinguished Attribute has "DIST ATTR" as its
                         class name, a 32 bit value describing the type
                         of service and a text string as its value.
                         The 32 bit quantity is registered with IANA.

Attribute                A {class, value} pair describing a
                         characteristic of a service.  Note that a
                         class is a string and the value can be of
                         five types: integer, string, boolean, function
                         (see section 9.0), and opaque.  The service
                         information advertised by a Service Agent may
                         include more than one value per class.

Standard Attribute       An attribute whose class name and values have
                         a standard interpretation.  These should be
                         clearly defined and registered with a
                         standards organization.

Predicate                A boolean expression of attributes, relations
                         and logical operators.  The predicate is used
                         to find services which satisfy particular
                         requirements. See section 12.4 and 13.0.

Scope                    A collection of systems, networks and other
                         network components that make up a logical
                         group.  See section 6.5 and 6.6.

Campus                   A campus is a collection of networks, hosts
                         and related network infrastructure that is
                         grouped together for geographical or political
                         reasons.

Agent's Internet         All the hosts accessible within the agent's
                         multicast radius.  If the network does not
                         support multicast, the agent's internet is
                         defined by its broadcast radius.  The
                         discovery method used by the service location
                         protocol requires these techniques to start up
                         and provide stable operation.  Servers outside
                         of the agent's radius are considered "outside
                         of the user's internet."







Veizades, Kaplan, Guttman                                      [Page 4]


INTERNET-DRAFT            Service Location Protocol             July-95

5.0 Protocol Overview

The following describes the operations an end system needs to perform
to find services on the attached network.  The user agent, end system,
does not need any configuration to begin network interaction.  The user
agent builds on the information it retrieves in earlier network
requests to find the service agents advertising service information,
then finds the terms used to describe services that it is interested
in.  The user agent can use this information to send out predicates
which describe the services that match the user's needs.

The service location protocol requires the implementation of a
connectionless and a connection oriented transport protocols, this
would be UDP and TCP in the Internet protocol suite.  These protocols
should be supported over a network protocol layer that supports
internetwork wide multicast.  The protocol will operate in a broadcast
enviroment with the limitations outlined in section 11.

Note: When implementing this protocol over IP version 4 the following
must be observed.

1. The constants specified in Section 14 must be used.

2. The address format for describing IP addresses specified in section
   12.3 must be used.

3. ICMP error messages should not be sent in response to multicast
   datagrams.

The service location protocol uses a multicast request/unicast response
interaction.  Since the requester does not know the number of
responders to a request, the request may generate more responses than
the requester is able to handle. Therefore the requester sends a series
of requests.  Each request contains the information learned in the
previous requests.  The protocol requires responders to scan this list
and respond only if they have information not in the list.

Character strings are represented as a {type, length, value} tuple.
Implementers of this specification are strongly encouraged to be able to
send and receive Unicode [15] as one of the string data types.

Replies should be considered to be valid at the time of delivery.  The
service may, however, fail or change between the time of the reply and
the moment an application seeks to make use of the service.  The end
system making use of service location must be prepared for the
possibility that the service information provided is either stale or
incomplete.  In the case where the service information provided does not
allow an end system to connect to a service as desired, the request must
be resent.




Veizades, Kaplan, Guttman                                      [Page 5]


INTERNET-DRAFT            Service Location Protocol             July-95

5.1 Service Location PDU header

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  version = 1  |    function   |            length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Error Code            |             XID               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Locale                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Time to Live                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|O|M|  flags    |
+-+-+-+-+-+-+-+-+

5.1.1 Version

This protocol document defines version 1 of the service location
protocol.

5.1.2 Functions

Service location datagrams can be identified as to their operation by
the function field.  The following are the defined operations:

        Packet Types                    Abbreviation  Function Value

Distinguished Attribute Request         DistAttrRqst        1
Distinguished Attribute Reply           DistAttrRply        2
Attribute Class Request                 AttrRqst            3
Attribute Class Reply                   AttrRply            4
Service Request                         SrvRqst             5
Service Reply                           SrvRply             6
Service Registration                    SrvReg              7
Service Unregister                      SrvUnreg            8
Service Acknowledge                     SrvAck              9
Service Attributes Request              SrvAttrRqst        10
Version Request                         VerRqst            11
Version Reply                           VerRply            12
Function Resolve Request                FuncReslvRqst      13
Function Resolve Reply                  FuncReslvRply      14
Scope Request                           ScopeRqst          15
Scope Reply                             ScopeRply          16









Veizades, Kaplan, Guttman                                      [Page 6]


INTERNET-DRAFT            Service Location Protocol             July-95

5.1.3 Length

The length is the number of bytes after the Service Location PDU
Header.

5.1.4 Error Codes

Errors are only valid in reply and service acknowledgement datagrams.
Replies that completed successfully should have a zero value for the
error code.

5.1.5 Transaction Identifier (XID)

The XID (transaction ID) field allows the requester to match replies
to individual requests.  Retransmission of the same service location
datagram should not contain an updated XID.  The requester creates the
XID from an initial random seed and increments it by one for each
request it makes.  The XIDs will eventually wrap back to zero and
continue incrementing from there.  The responder copies the XID from
the request into its reply.

5.1.6 Locale

All service location requests and responses contain the "locale" field.
This allows clients to advertise their preference as to the language
in which responses should be returned.  The locale field is comprised
of four 8 bit values using the lower case ASCII representation of the
symbols defined in ISO 639 (reprinted in Appendix A).  The first two
bytes should be left zeroed (0x0) for further expansion.  Services
should have a default locale.  If they are able to respond in a
language that corresponds with the client's requested locale they
should, otherwise they should respond with data in their default
locale and set the locale code to the default locale.

5.1.7 Flags

The flags field is a bit field.  Bit 0 is the 'Overflow bit.'  See
section 8.0 for a complete description for the use of this field.  Bit
1 is the 'Monolingual bit.'  Requests with this bit set indicate that
the end system will only accept responses in the language that is
indicated in the locale field of the header.  Replies in other
languages should not be sent for this request.  All other bits must be
set to zero.

5.1.8 Time to Live

The TTL field is set to the number of seconds the reply can be cached
by any intermediary service.  A value of 0 means the information must
not be cached.

NOTE: The preceding header is used in all of the packet discriptions
below and is abbreviated by using "Sevice location header" followed by

Veizades, Kaplan, Guttman                                      [Page 7]


INTERNET-DRAFT            Service Location Protocol             July-95

the function being used.

5.2 Distinguished Attribute Request

The client uses the Distinguished Attribute Request to find all the
types of services that are available on a network. Service agents
respond with a list of Distinguished Attributes that they support.
Like most service location PDUs, a client can issue more than one
request to insure that all replies have been received.  In each
subsequent request, a user agent adds the list of distinguished
attributes that it is aware of to the "distinguished attributes"
field of the datagram.  The "Num Dist Attrs found" indicates how many
"previously found" Distinguished Attributes will follow.

Service agents look for distinguished attributes that they support but
are not in the list.  If any such distinguished attributes exist, the
service agent replies with these distinguished attributes.  The number
of distinguished attributes the service agent returns is in the
datagram as "Num Dist Attrs found".

The service agent's reply is sent to the unicast address of the sender.

The service agent should wait before responding.  The wait time should
be a random interval between 0 and 2 seconds.

User agent requests that are generated by a genesis event, i.e., the
rebooting of a system, loading of the network kernel, etc. should be
sent after a random interval between 0 and 5 seconds.

A distinguished attribute defines a class of objects of a particular
type, i.e., printers, modems, file servers, etc.  These attributes are
registered through the Internet Numbering Authority (IANA).  Examples are
"DIST ATTR" as the class and "PRINTER" as the value, or "NFS FILE SERVER"
as the value.  Since the class "DIST ATTR" is standardized, this class
name should not be used in any other attribute.

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Service location header (function = DistAttrRqst)       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Num Dist Attrs found     |   <Distinguished Attribute>   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                <Distinguished Attribute> (cont.)              \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Distinguished Attributes Request




Veizades, Kaplan, Guttman                                      [Page 8]


INTERNET-DRAFT            Service Location Protocol             July-95

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Service location header (function = DistAttrRply)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Num of Dist Attrs returned  |   <Distinguished Attribute>   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                <Distinguished Attribute> (cont.)              \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Distinguished Attributes Reply

5.3 Get Attributes Request and Reply

Once a user agent selects a single distinguished attribute, it sends a
"get attributes request" to find all the attributes associated with
that distinguished attribute.  Since different services with a
particular distinguished attribute can have different attributes, to
find all the attributes associated with a distinguished attribute, the
user agent must form a union of all attributes returned by all service
agents.

If a user agent is unable to process all the replies from the service
agents it may reissue the request.  It can get the attributes from
these service agents by reissuing the request.  The user agent places
the addresses of the service agents that it already has replies from
in the "service addresses" field of the request.  Service agents should
only reply if they are not on the "service addresses" list of the
request.  With a packet length of 1500 bytes, this protocol can support

~200 IPv4 respondents.  Networks with greater than 200 service agents
need to install a directory agent (see Section 6.0).

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Service location header (function = AttrRqst)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|number of services agents found|          <Dist Attr>          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                      <Dist. Attr> (cont.)                     \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                      <Service Addresses>                      \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Attributes Request

Veizades, Kaplan, Guttman                                      [Page 9]


INTERNET-DRAFT            Service Location Protocol             July-95

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Service location header (function = AttrRply)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    number of Attrs returned   |         <Attribute 1>         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     <Attribute 1> (cont.)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              .                                |
\                              .                                \
|                              .                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       <Attribute N>                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Attributes Reply

5.4 Service Request and Reply

Having obtained the entire list of attributes which the service agent
uses to describe services, the user agent can build a query predicate
that describes the service needs of the user.  The query is a predicate
based on the list of attributes received.  The query is multicast to
the multicast address of the distinguished attribute of the service
which is being queried for or unicast to service agents that support
the indicated distinguished attribute.  Service agents that can satisfy
the predicate reply with the attributes that they used to satisfy the
predicate.  The reply contains the set of all attributes which satisfy
the predicate.  The reply is unicast to the sender.  One reply packet
is returned for each service that the the service agent finds which
will fulfill the requested predicate.

As in the case of the Get Attributes Request, the service reply must be
localized to a single language.  The locale field of the Service
Reply's header must be set to the language of the reply.  The request
predicate can only be satisfied in the context of the language in which
the attribute classes and values are stated in.  The Service Reply
contains the address of the agent which fulfilled the request.  This
address should be used in future requests for information about the
service.  The specific service may not be using the service locaton
protocol and the agent is acting on behalf of this service, so service
location request must be sent to the agent specified by this address.
If the Service Information Addess is zero the agent and the service are
collocated.  If a server contains more than one instance of a
particular type of service all these services maybe returned in a
single datagram.






Veizades, Kaplan, Guttman                                     [Page 10]


INTERNET-DRAFT            Service Location Protocol             July-95

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Service location header (function = SrvRqst)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|number of services agents found|          <Predicate>          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                          <Predicate> (cont.)                  \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                      <Service Addresses>                      \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Service Request


0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Service location header (function = SrvRply)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Information Version                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Information Source Address                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Number of Services      |      <Service Instance>       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                  <Service Instance> (cont)                    \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Number of Attributes     |         <Attribute 1>         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     <Attribute 1> (cont.)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
\                               .                               \
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         <Attribute N>                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Service Reply







Veizades, Kaplan, Guttman                                     [Page 11]


INTERNET-DRAFT            Service Location Protocol             July-95

5.5 Service Attributes Request and Reply

After a user agent has received a response to its Service Request it
will know the address of one or more services, as well as the attribute
values used to satisfy the query.  That gives the user agent sufficient
information to know that a service is useful and how to access it.  The
user agent may desire further information, however.  The Service
Attributes Request returns all the advertised attributes and their
range of values for a given service instance.  The user agent can then
provide a complete profile of a given service, which might be of
interest to a user.

The service request contains the service instance of the service in
question.  This request should be unicast to the service agent or the
directory agent which provided the user agent with the Service Reply
from which the Service Instance information was extracted.  The
response to this request should be sent in a Service Reply packet.


0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Service location header (function = SrvAttrRqst)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                       <Service Instance>                      \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Service Attributes Request


6.0 Directory Agents

6.1 Introduction

A directory agent acts as a proxy for many service agents.  It
acquires information from service agents and acts as a single point
of contact to supply that information.  A service agent registers
information with the directory agent so it can reply to service
location requests the way that the service agent would.  The directory
agent should be able to respond in a timely fashion to user agent
requests and return accurate information about the services that are
being exported by the service agent.

The queries that a user agent sends to service agents (i.e. an
environment without a directory agent) are the same queries that the
user agent unicasts to a directory agent.  A user agent may cache
information about the presence of other directory agents to use as fall
back directory agents in case a selected directory agent fails.

In scaling service location systems to the size of a campus a central

Veizades, Kaplan, Guttman                                     [Page 12]


INTERNET-DRAFT            Service Location Protocol             July-95

repository is added to limit the amount of general queries in the
network infrastructure.  A site may also grow to such a size that it is
not feasible to maintain only one central repository of service
information. In this case another directory agent is instanciated.
Multiple directory agents are supported within the framework of this
protocol.  Each SA registers with each DA and hosts may either use each
DA in a round robin fashion or may pick which DA to use in a
nondeterministic fashion.

6.2 Directory Agent Discovery

When a directory agent first comes on line it sends an unsolicited
Attributes Reply to the general service location multicast address.  If
a DA supports a particular scope or set of scopes these are placed in
the reply as an attribute value of the service.  The class for this
attribute is "SCOPE".  Service agents upon receiving this reply must
wait for a random interval of between 0 and 10 seconds and then begin
registration of each of the services that the service agent advertises.

When a service agent or user agent first comes on-line it issues a
service request for the distinguished attribute "DIR AGENT"; directory
agents reply to this query.  A service agent may examine the enclosed
authorization information and determine if the directory agent is an
authorized agent.

A service agent registers information with all directory agents when
either of the above two events take place.  When scopes are being used
on a campus a service agent may choose a set of scopes to be advertised in
and need only register with directory agents that support the scopes in
which they wish to be registered.

Once a user agent becomes aware of a directory agent it will unicast
its queries to it.  In the event that more than one directory agents
are detected, it will select one to communicate with.  When scopes are
supported, the user agent will direct its queries to different
directory agents depending on which scopes are appropriate domains for
the query to be answered in.

A directory agent continues to send the above reply at a period of 5
minutes.  SAs that fail to detect this heart beat from the DA in
which they are registered with should check to see if the DA is still
alive.  The SA should send a Version Request (see section 7.2) to
determine if the DA still has the most recent version of the service
information that the SA had previously registered with the DA.  If it
fails to respond, the SA should mark the registration as inactive.
When the DA appears again the SA reregisters with the DA.  If the DA
responds incorrectly, the SA should reregister with it.  If all the
DAs in a scope are inactive the SA should reregister in another scope
for it to be made available.

After a service agent has found a directory agent, it begins to
register its advertised services one at a time.  A service agent must

Veizades, Kaplan, Guttman                                     [Page 13]


INTERNET-DRAFT            Service Location Protocol             July-95

6.3 Service Registration

wait for some random interval between 0 and 3 seconds between each
registration.  Registration is done using the Service Registration
packet specifying all attributes for a service.  A Service Registration
Packet has the same format as a Service Reply packet, except for the
function type.  They are different in order to avoid ambiguities.  A
directory agent must acknowledge each service registration request.

Service registration may use a connectionless protocol (e.g. UDP), or a
connection oriented protocol (e.g. TCP).  The registration operation
may contain more information than can be sent in one datagram.  In this
case the service agent must use a connection oriented protocol to
register itself with the DA.  When a service agent registers the
same attribute class more than once for a service instance, the
directory agent overwrites the all the values associated with that

attribute class.  Separate registrations must be made for each locale
that the service is to be advertised in.

If a subsequent registration has a different version number (see
section 7.0) from a prior one, for the same service, the new packet
will be taken as an update.  The version number of the service will be
changed to the most recent version number in the Directory Agent's
service information cache.

The DA must send a service acknowledgment for every registration.

The directory agent may return a server error in the acknowledgment,
if for instance, a registered service lacks an addresss.  This error is
carried in the Error Codes field of the service location packet header.
A non-error acknowledgement must have the error code set to zero.
Once a DA acknowledges a service registration it makes the information
available to clients.

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Service location header (function = SrvAck)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Service Acknowledgment

6.4 Service Unregister

When a service is no longer available for use, the service must
unregister itself from directory agents that it has been registered
with.  A service uses the following PDU to unregister itself.





Veizades, Kaplan, Guttman                                     [Page 14]


INTERNET-DRAFT            Service Location Protocol             July-95

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Service location header (function = SrvUnreg)       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                       <Service Instance>                      \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Service Unregister

The service agent should retry this operation if there is no response
from the directory agent.  The directory agent acknowledges this
operation with a service acknowledgment.  Once the service agent
receives this acknowledgment, it can assume that the service is no
longer advertised by the directory agent.


6.5 SCOPE Discovery and Use

The scope mechanism in the service location protocol is an important
feature to enhance its scalability.  The primary use of scopes is to
provide the capability to organize a campus along conceptual lines.  A
set of services can be assigned to a given department of an
organization, to a certain building or geographical area or for a
certain purpose.  The users of the system can be presented with these
organizational elements as a top level selection, before services
within this domain are sought.

A campus that has grown beyond a size that can be reasonably serviced
by a few DAs can use the SCOPE mechanism. DAs have the attribute class
"SCOPE".  The values for this attribute are a list of strings that
represent the administrative areas for which this directory agent is an
authority.  The semantics and language of the strings used to describe
the SCOPE are entirely the choice of the administrative entity of the
particular domain in which these SCOPEs exist.  Directory agents
advertise the list of all scopes that are available.  A service agent
chooses at least one scope in which to be registered.  A service agent
must register with all directory agents in that scope.

Being a member of a scope means that you use a specific set of
directory agents that support your scope.  User agents send all
requests to DAs which support the indicated scope.  Service Agents
register with the DA(s) in their scope.  For a UA to find a service
that is registered in a particular scope they must contact a DA which
supports the indicated scope.  There is no limitation on scope
membership built into the protocol; that is to say, a user agent or
service agent may be a member of more than one scope.  Membership is
open to all agents, unless some authorization mechanism is added to
limit access.


Veizades, Kaplan, Guttman                                     [Page 15]


INTERNET-DRAFT            Service Location Protocol             July-95

An end system finds the scopes that are available in a campus by
multicasting a DA discovery request to all directory agents.  The
discovery message contains the scope or scopes, if known, that are
being used, as part of the attribute request.  Directory Agents that
support the scope(s) in question return reply.  If no scope is
specified, all directory agents respond to this request.  This exchange
will give the end system a list of all scopes that it can use for scope
membership but this may not be the list of all scopes available on the
users internet.  Some scopes may be shielded from registration
and queries using an access control system as described above.

A SA may not register with scopes outside of the SA's internet.

After an end system has picked a scope to use as its default scope it
may ask a directory agent for the list of all available scopes known to
the DA, including those that are not within the user agent's internet.

To get this list the user agent sends a scope list request to the
directory agent.

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Service location header (function = ScopeRqst)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Scope List Request

The directory agent responds with a scope list reply.  Every scope
that is available for use to the user agent is listed in the reply.
In addition to the list of all scopes the directory agent also
returns the list of scopes that are outside of the boundaries of
the user agents internet.  For each foreign scope the directory agent
returns the scope name and the hosting directory agents' service
instances.  Foreign directory agents and scopes maybe used to support
name spaces that are outside of the autonomous domain the user agent
belongs to.  Resources within those foreign networks can be found
using the normal service location queries.  The propogation of foreign
scopes to directory agents in the user agents multicast perimeter is
outside the scope of this document though global directory services
may provide this service.












Veizades, Kaplan, Guttman                                     [Page 16]


INTERNET-DRAFT            Service Location Protocol             July-95

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Service location header (function = ScopeRply)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    number of local scopes     |    number of foreign scopes   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                      <Local Scope List>                       \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                     <Foreign Scope List>                      \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Scope List Reply

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Scope Name (Typed String)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    num of supporting DAs      |    Service Instance List      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Service Instance List(cont)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Foreign Scope

6.6 SCOPE Propagation

User Agents contact their DA for the list of all known scopes both
foreign and local.  To build this list of scopes, DAs must propagate
this information from one DA to another.  DAs use a multicast address
specific to DAs to propagate this information from one DA to another.
When a new DA comes online it sends a DA scope list request to the DA
multicast address.  Other DAs respond using the Scope List Reply with
all the scopes they support both locale and foreign.  At the end of
this interaction the DA will know about all available scopes and DAs
which support them.

7.0 Service Information Versions

Service location information can live in three locations: at the
service agent, the directory agent and/or the user agent.  A service
agent has the authoritative version of the service information. The
directory agents and the user agents have copies of the service agent's
information.  The "information version" provides an indication to the
user and directory agents that the copies that they hold are out of
sync with the authoritative database in the service agent.  In addition
to the information version a time to live is set with each reply packet

Veizades, Kaplan, Guttman                                     [Page 17]


INTERNET-DRAFT            Service Location Protocol             July-95

this value in seconds is the maximum time a value maybe cached
reguardless of the information version.  A value of 0 indicated that
information may not be cached.

7.1 Information Versions

For every service instance advertisement, the service agent attaches an
information version to the advertisement.  This version number is a way
for the service agent to tag the current state of the information that
it is advertising.  When this information changes, the service agent
increments the version.  Agents that are caching this information can
ask the service agent for the version of the current service
information.

For very volatile information, which must be gathered each time a
request is made, the service agent implements the value as a
'function'.  This means that on replying to each request, the service
agent or directory agent must resolve the function.  The version number
does not need to change when the function's resolution value does.
This mechanism allows caching of service information and version state,
even for very volatile information or information which may depend on
the state of transactions within a distributed system.  (See section
9.0 for details on function resolution.)  SAs may not respond to UAs
with unresolved function values.  The information contained in such
replies is very volitile and should not be cached the information
version is set to zero and these replies may not be cached.

7.2 User Agents

When a user agent caches information that it has received from a
service agent or directory agent it should verify the version number is
still valid.  It can do this by requesting the service instance's
current version number from the source of the cached information.

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Service location header (function = VerRqst)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                       <Service Instance>                      \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Version Request








Veizades, Kaplan, Guttman                                     [Page 18]


INTERNET-DRAFT            Service Location Protocol             July-95

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Service location header (function = VerRply)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Information Version                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Version Reply

The information may be invalid for several reasons.  The service agent
may not exist, the service instance may no longer exist or the end
system may not be authorized to use the service.  Error values are
returned for all the above reasons.  When an error is received a user
agent must invalidate the cached information.  A user agent may try to
revalidate the information, unicasting the original predicate to the
service agent or may try to reacquire a service provider multicasting
the original predicate.

7.3 Directory Agents

Directory agents must return correct information since they are acting
on behalf of service agents.  Service agents must update directory
agents when their databases change.  The service agent must unregister
any service instance before any information about the service is
changed.  This limits the availability of any incorrect or transient
false advertisements.  As soon as the service agent has a new set of
service information to advertise, it reregisters it with the Directory
Agent.

A Directory Agent will still need to verify that the information it is
caching is accurate, as a service agent might have gone down.  It can
do this by periodically sending version number requests of services
that it has information cached about.  These requests are sent to the
service agent that registered the information.

7.4 Service Agents

Service agents advertise information that they authoritatively own.
When a service agent advertises information, it also indicates the
information version.  When the service agent registers with a directory
agent, the service agent is responsible for invalidating the directory
agent's cached state before the information changes at the service
agent.  The service agent must then reregister the new information with
the Directory Agent.


8.0 Service Location Connections

When a service location request results in a reply from a service or
directory agent that will overflow a datagram, the user agent can open
a connection to the agent and reissue the request over the connection.

Veizades, Kaplan, Guttman                                     [Page 19]


INTERNET-DRAFT            Service Location Protocol             July-95

The response will be received over the same connection.  A directory or
service agent indicates an overflow via the overflow flag in the
service location packet header.  The operations that can overflow are
the attribute reply, the service reply and service register.  This
operation requires the implementation of a reliable byte stream
protocol, like TCP, by the user, service, and directory agents.

9.0 Special Data Types

9.1 Function Resolution

The attribute value of an attribute can be a function.  A function is a
handle for a rapidly changing attribute value that must be resolved at
the service agent (e.g. a piece of code that the service agent runs to
determine an attribute like whether a service is on-line).  The
function data that is passed to the service agent is an opaque value
that allows the service agent to identify the method to determine the
attribute's value.

The type of any value that is returned in a Function Resolve Reply must
be a basic type:  string, integer, boolean or opaque.  A function
resolve reply cannot return another function value.  A Function Resolve
Reply must have a TTL of zero.

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Service location header (function = FuncReslvRqst)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Function Resolution Opaque Value               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Function Resolve Request

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Service location header (function = FuncReslvRply)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S|  Attr Type  |                   <Attribute>                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                       <Attribute> (cont.)                     \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Function Resolve Reply

9.2 Opaque

The Opaque data type allows for the inclusion of vendor defined data
types.  When this data type cannot be resolved by a user agent it

Veizades, Kaplan, Guttman                                      [Page 20]


INTERNET-DRAFT            Service Location Protocol             July-95

should be ignored.  Directory agents should store and pass these
values on unintrepreted.  Opaque types are uniquely identified by their
TAG under a given standarization authority.

10.0 Authentication

There are no provisions in this protocol to insure data integrity, data
authority or data confidentiality.  Mechanisms in the underlying network
layer protocol or at the service access point may be used to provide
these functions.

11.0 Multicast vs. Broadcast

The service location protocol was designed for use in networks where
multicast at the network layer is supported; in some instances
multicast may not be supported.  To support this protocol in networks
where multicast is not supported the following modifications are made
to support the protocol in an environment where network layer broadcast
is supported.

11.1 Single Subnet

If a network is not connected to any other networks simple network
layer broadcasts will work in place of multicast.

11.2 Multiple Subnets

The directory agent provides a central clearing house of information
for user agents.  If the network is designed so that a directory agent
address is statically configured with each user agent, the directory
agent will act as a bridge for information that resides on different
subnets. The directory agent address can be dynamically configured with
end systems using a protocol like the IP Dynamic Host Configuration
Protocol.

11.3 Service Multicast Address

Each service must have a unique multicast address to which it belongs
to.  This multicast address is obtained from the IANA.  This mechanism
is used so that the number of datagrams any one service receives is
minimized.

When undirected queries are made concerning this type of service, the
query should be sent to the matching multicast address.  If the subnet
does not support multicast then the query should be broadcast to the
Service Location port.







Veizades, Kaplan, Guttman                                     [Page 21]


INTERNET-DRAFT            Service Location Protocol             July-95

12.0 Data Element Formats

12.1 Attributes
0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           length              |S|  Std. Auth. |  num values   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                      <Attribute Class> (cont.)                \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                      <Attribute Value>                        \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Length                       The number of bytes in the attribute,
                             including the length field

S bit                        set if the attribute is a standard
                             attribute

Standardization Authority    A number assigned to an organization
                             which defines semantics for attributes.
                             (Registered with IANA)

Number of Values             The number of values returned in the
                             attribute value field.

Attribute Class              <typed string>

Attribute Value              <typed string> |
                             <integer> |
                             <function> |
                             <boolean> |
                             <opaque> |
                             <distinguished attribute>

Attributes are {class, value} pairs that define a characteristic of a
service.  There are three classes of attributes: distinguished
attributes, standard attributes and regular attributes.

A standard attribute is indicated by setting the standard attribute
bit.  Standard attributes have a well defined interpretation within
a given standardization authority.  Distinguished attributes are
standard attributes in all standardization authorities.  A

Veizades, Kaplan, Guttman                                     [Page 22]


INTERNET-DRAFT            Service Location Protocol             July-95

distinguished attribute is denoted by a standard attribute whose
attribute class is "DIST ATTR".   A distinguished attribute is
always the 32 bit multicast address assigned by IANA followed by a
typed string giving the ASCII representation of the distinguished
attribute.

12.2 Service Instance

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            length             | Num of Addrs. | Addr 1 Type   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Addr 1 length |                <Address 1>                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                     <Address 1> (cont.)                       \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Srv Info Length        | <Service Info for Address 1>  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                 <Service Info for Address 1> (cont.)          \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             . . .                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Addr N Type | Addr N length |           <Address N>         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                     <Address N> (cont.)                       \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Srv Info Length        | <Service Info for Address N>  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                 <Service Info for Address N> (cont.)          \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                        Service Instance

A service instance is the address of the service in question, the port
of the service access point and any additional service specific
information needed to make the service connection.  A service address
is typed to support a variety of network protocols.  The service
specific information may be service layer protocol specific information
that facilitates the service rendezvous.  When more than one network
interface or protocol is used to support a service on an end system,
multiple addresses can be added to a service instance using the number
of addresses field.



Veizades, Kaplan, Guttman                                     [Page 23]


INTERNET-DRAFT            Service Location Protocol             July-95


12.3 Addresses

The address types are specified in the assigned numbers RFC.  Address
representation will vary from one network protocol to another.

An IPv4 address is represented as follows:

 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          IP Address                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Port               |     Protocol Bit Array        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Where the port is the redevous port for the protocol in question
and the protocol is a bit map of which protocols are supported for
connections.  When bit 1 (LSB) is set UDP is supported and when bit
two is set TCP is supported.

12.4 Predicate

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Predicate length       |         <Predicate>           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
\                          <Predicate>  (cont.)                 \
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                            Predicate

























Veizades, Kaplan, Guttman                                     [Page 24]


INTERNET-DRAFT            Service Location Protocol             July-95

13.0 Predicate Language

All values are represented in network byte order.

        <predicate>     ::= <relational op> <attr class> <attr value> |
                            <boolean op> <predicate> <predicate>

        <relational op> ::=   '=='  |  '!='  |  '<'
                              '>'   |  '>='  |  '<='

        <boolean op>    ::=   '&' (logical AND)  |  '|' (logical OR)

        <attr class>    ::= <typed string>
        <attr value>    ::= <integer> | <typed string> | <function> |
                            <boolean> | <opaque> |
                            <distinguished attribute>

        <integer>       ::= 'I' <int val>
        <int val>       ::= 4 byte signed quantity
        <typed string>  ::= 'S' <string type> <len> <string bytes>
        <string type>   ::= 1 byte value, see 'String Types' below
        <len>           ::= 2 byte value, counts number of string bytes
        <string bytes>  ::= If ASCII typed, there is <len> number of
                            characters.  If ISO646 or Unicode string
                            type, then there are half of <len> in 2
                            byte characters in the string bytes.

        <function>      ::= 'F' <resolution>
        <resolution>    ::= 4 byte unsigned quantity

        <boolean>       ::= 'B' <bool val>
        <bool val>      ::= 1 byte quantity, only the first bit in the
                            field is read. 0 = FALSE, nonzero = TRUE

        <opaque>        ::= 'O' <len> <opaque val>
        <opaque val>    ::= a vendor intrepreted sequence of bytes

        <distinguished attribute> ::= 'D' <unsigned int> <typed string>
        <unsigned int>  ::= 4 byte unsigned integer














Veizades, Kaplan, Guttman                                     [Page 25]


INTERNET-DRAFT            Service Location Protocol             July-95

Example:

The predicate language is expressed in reverse polish notation.  A
predicate query reqeusting all printers on the 12'th floor would read
as follows (all quoted characters are ASCII representations of a
one byte value.  Otherwise all bytes are to be taken as a literal
decimal values).  The example uses 239.56.125.101 as the multicast
address for printers, which is invalid.

Byte boundary

       0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     |'&'|'='|'='|'D'|239| 56|125|101|'S'| 1 | 0 | 9 |'D'|'I'|'S'|'T'|
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     |' '|'A'|'T'|'T'|'R'|'S'| 1 | 0 | 7 |'P'|'R'|'I'|'N'|'T'|'E'|'R'|
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     |'='|'='|'S'| 1 | 0 | 8 |'L'|'O'|'C'|'A'|'T'|'I'|'O'|'N'|'S'| 1 |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     | 0 | 11|'1'|'2'|'''|'T'|'H'|' '|'F'|'L'|'O'|'O'|'R'|
     +---+---+---+---+---+---+---+---+---+---+---+---+---+

14.0 Interesting Constants

  UDP and TCP Port Number: 427

  Multicast Addresses

    General Multicast Address:         224.0.1.22
    Directory Agent Multicast Address: 224.0.1.35

  String Types

    ASCII               1
    ISO646              2
    Unicode             3
    JIS                 4
    SJIS                5
    EUC                 6

  Error Codes

    No Error            0
    Other Error         255









Veizades, Kaplan, Guttman                                     [Page 26]


INTERNET-DRAFT            Service Location Protocol             July-95

15.0 Acknowledgments

This protocol owes some of the original ideas to other service location
protocols found in many other networking protocols. Leo McLaughlin
and Mike Ritter (Metricom) provided much input into early version
of this document.  Thanks also to Steve Deering (Xerox) for providing
his insight into distributed multicast protocols.


16.0 References

[1]  Freier, A. O. "Network Binding Protocol" Xerox Corporation
Unpublished, June 1986.

[2]  S. Gursharan, R. Andrews, A. Oppenheimer, Inside AppleTalk.
Addison-Wesley Publishing.  1990

[3]  Deering, S., "Host Extensions for IP Multicasting", RFC 1112, NIC,
August 1989.

[4]  Saltzer, J., "On the Naming and Binding of Network Destinations",
RFC 1498, M.I.T. Laboratory for Computer Science, August 1993.

[5]  Accetta, M. "Resource Location Protocol", RFC 887, NIC, December
1983.

[6]  Legato Systems, "The Legato Resource Administration Platform",
Legato Systems, 1991.

[7]  C. McManis and R. Rom, "The Zeus Name Service Architecture", Sun
Microsystems, 1990.

[8] S. Dyer, "The Hesiod Name Server",  Winter Usenix Conference, pp.
183-187, Feb 1988.

[9] D. Oppen and Y. Dalal, "The Clearinghouse: A Decentralized Agent
for Locating Named Objects in a Distributed Environment,"  Tech. Rep.
OPD-78103, Xerox Office Products Division, 1981.

[10] B. Lampson, "Designing a Global Name Service",  Proceedings of the
5th ACM Symposium on Principles of Distributed Computing, pp. 1-10,
1986.

[11] D. Cheriton and T. Mann, "Uniform Access to Distributed Name
Interpretations in the V-system".

[12] P. Mockapetris. "Domain Names - Concepts and Facilities".  RFC
1034, NIC, November 1987

[13] P. Mockapetris. "Domain Names - Implementation and Specification".
RFC 1035, NIC. November 1987


Veizades, Kaplan, Guttman                                     [Page 27]


INTERNET-DRAFT            Service Location Protocol             July-95

[14] S. Deering. "Router Discovery Protocol".  RFC 1256, NIC 1991.

[15] The Unicode Standard Version 1.0 Volume 1, Addison-Wesley
Publishing (ISBN 0-201-56788-1). October 1991.

[16] ISO 639:1988 (E/F) "Code for the representation of names of
languages"; ISO, Geneve, 1988.

[17] K. Lunde, "Understanding Japanese Information Processing,"
O'Reilly & Associates, Inc. 1993

17.0 Author's Addresses

   John Veizades
   TGV, Inc.
   101 Cooper St
   Santa Cruz, CA 95060

   Phone: +1 415 252 8203

   Email: veizades@tgv.com

   Scott Kaplan
   CoroNet Systems Inc.
   5150 El Camino Real, Suite C-22
   Los Altos, CA  94022

   Phone: +1 415 960 3255 x 216
   Fax:   +1 415 960 3288

   Email: scott@coronet.com

   Erik Guttman
   PeerLogic, Inc.
   555 De Haro St., Suite 300
   San Francisco, CA 94107

   Phone: +1 415 626 4545

   Email: guttman@cs.stanford.edu


18.0 Document Expiration

This document expires January 6, 1996








Veizades, Kaplan, Guttman                                     [Page 28]


INTERNET-DRAFT            Service Location Protocol             July-95

Appendix A - Technical contents of ISO 639:1988 (E/F)

"Code for the representation of names of languages".
Two-letter lower-case symbols are used.
The Registration Authority for ISO 639 is Infoterm,Osterreiches
Normungsinstitut (ON), Postfach 130, A-1021 Vienna, Austria.

aa Afar              gn Guarani           mr Marathi
ab Abkhazian         gu Gujarati          ms Malay
af Afrikaans                              mt Maltese
am Amharic           ha Hausa             my Burmese
ar Arabic            hi Hindi
as Assamese          hr Croatian          na Nauru
ay Aymara            hu Hungarian         ne Nepali
az Azerbaijani       hy Armenian          nl Dutch
                                          no Norwegian
ba Bashkir           ia Interlingua
be Byelorussian      ie Interlingue       oc Occitan
bg Bulgarian         ik Inupiak           om (Afan) Oromo
bh Bihari            in Indonesian        or Oriya
bi Bislama           is Icelandic
bn Bengali; Bangla   it Italian           pa Punjabi
bo Tibetan           iw Hebrew            pl Polish
br Breton                                 ps Pashto, Pushto
                     ja Japanese          pt Portuguese
ca Catalan           ji Yiddish
co Corsican          jw Javanese          qu Quechua
cs Czech
cy Welsh             ka Georgian          rm Rhaeto-Romance
                     kk Kazakh            rn Kirundi
da Danish            kl Greenlandic       ro Romanian
de German            km Cambodian         ru Russian
dz Bhutani           kn Kannada           rw Kinyarwanda
                     ko Korean
el Greek             ks Kashmiri          sa Sanskrit
en English           ku Kurdish           sd Sindhi
eo Esperanto         ky Kirghiz           sg Sangro
es Spanish                                sh Serbo-Croatian
et Estonian          la Latin             si Singhalese
eu Basque            ln Lingala           sk Slovak
                     lo Laothian          sl Slovenian
fa Persian           lt Lithuanian        sm Samoan
fi Finnish           lv Latvian, Lettish  sn Shona
fj Fiji                                   so Somali
fo Faeroese                               sq Albanian
fr French            mg Malagasy          sr Serbian
fy Frisian           mi Maori             ss Siswati
                     mk Macedonian        st Sesotho
ga Irish             ml Malayalam         su Sundanese
gd Scots Gaelic      mn Mongolian         sv Swedish
gl Galician          mo Moldavian         sw Swahili


Veizades, Kaplan, Guttman                                     [Page 29]


INTERNET-DRAFT            Service Location Protocol             July-95

ta Tamil
te Tegulu
tg Tajik
th Thai
ti Tigrinya
tk Turkmen
tl Tagalog
tn Setswana
to Tonga
tr Turkish
ts Tsonga
tt Tatar
tw Twi
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
vo Volapuk
wo Wolof
xh Xhosa
yo Yoruba
zh Chinese
zu Zulu






























Veizades, Kaplan, Guttman                                     [Page 30]