home *** CD-ROM | disk | FTP | other *** search
Text File | 2003-06-11 | 165.9 KB | 4,036 lines |
-
-
-
-
-
-
- Network Working Group J. Veizades
- Request for Comments: 2165 @Home Network
- Category: Standards Track E. Guttman
- C. Perkins
- Sun Microsystems
- S. Kaplan
- June 1997
-
- Service Location Protocol
-
- Status of This Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
- Abstract
-
- The Service Location Protocol provides a scalable framework for the
- discovery and selection of network services. Using this protocol,
- computers using the Internet no longer need so much static
- configuration of network services for network based applications.
- This is especially important as computers become more portable, and
- users less tolerant or able to fulfill the demands of network system
- administration.
-
- Table of Contents
-
- 1. Introduction 3
- 2. Terminology 3
- 2.1. Notation Conventions . . . . . . . . . . . . . . . . . . 5
- 2.2. Service Information and Predicate Representation . . . . 5
- 2.3. Specification Language . . . . . . . . . . . . . . . . . 6
- 3. Protocol Overview 6
- 3.1. Protocol Transactions . . . . . . . . . . . . . . . . . . 7
- 3.2. Schemes . . . . . . . . . . . . . . . . . . . . . . . . . 8
- 3.2.1. The "service:" URL scheme . . . . . . . . . . . . 9
- 3.3. Standard Attribute Definitions . . . . . . . . . . . . . 9
- 3.4. Naming Authority . . . . . . . . . . . . . . . . . . . . 10
- 3.5. Interpretation of Service Location Replies . . . . . . . 10
- 3.6. Use of TCP, UDP and Multicast in Service Location . . . . 10
- 3.6.1. Multicast vs. Broadcast . . . . . . . . . . . . 11
- 3.6.2. Service-Specific Multicast Address . . . . . . . 11
- 3.7. Service Location Scaling, and Multicast Operating Modes . 12
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 1]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 4. Service Location General Message Format 14
- 4.1. Use of Transaction IDs (XIDs) . . . . . . . . . . . . . . 15
- 4.2. URL Entries . . . . . . . . . . . . . . . . . . . . . . . 16
- 4.3. Authentication Blocks . . . . . . . . . . . . . . . . . . 17
- 4.4. URL Entry Lifetime . . . . . . . . . . . . . . . . . . . 19
- 5. Service Request Message Format 19
- 5.1. Service Request Usage . . . . . . . . . . . . . . . . . . 22
- 5.2. Directory Agent Discovery Request . . . . . . . . . . . . 23
- 5.3. Explanation of Terms of Predicate Grammar . . . . . . . . 24
- 5.4. Service Request Predicate Grammar . . . . . . . . . . . . 26
- 5.5. String Matching for Requests . . . . . . . . . . . . . . 27
- 6. Service Reply Message Format 28
- 7. Service Type Request Message Format 29
- 8. Service Type Reply Message Format 31
- 9. Service Registration Message Format 32
- 10. Service Acknowledgement Message Format 35
- 11. Service Deregister Message Format 37
- 12. Attribute Request Message Format 38
- 13. Attribute Reply Message Format 40
- 14. Directory Agent Advertisement Message Format 42
- 15. Directory Agents 43
- 15.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 43
- 15.2. Finding Directory Agents . . . . . . . . . . . . . . . . 43
- 16. Scope Discovery and Use 45
- 16.1. Protected Scopes . . . . . . . . . . . . . . . . . . . . 46
- 17. Language and Character Encoding Issues 47
- 17.1. Character Encoding and String Issues . . . . . . . . . . 48
- 17.1.1. Substitution of Character Escape Sequences . . . 49
- 17.2. Language-Independent Strings . . . . . . . . . . . . . . 49
- 18. Service Location Transactions 50
- 18.1. Service Location Connections . . . . . . . . . . . . . . 50
- 18.2. No Synchronous Assumption . . . . . . . . . . . . . . . . 51
- 18.3. Idempotency . . . . . . . . . . . . . . . . . . . . . . . 51
- 19. Security Considerations 51
- 20. String Formats used with Service Location Messages 52
- 20.1. Previous Responders' Address Specification . . . . . . . 53
- 20.2. Formal Definition of the "service:" Scheme . . . . . . . 53
- 20.2.1. Service Type String . . . . . . . . . . . . . . . 54
- 20.3. Attribute Information . . . . . . . . . . . . . . . . . . 54
- 20.4. Address Specification in Service Location . . . . . . . . 55
- 20.5. Attribute Value encoding rules . . . . . . . . . . . . . 55
- 21. Protocol Requirements 56
- 21.1. User Agent Requirements . . . . . . . . . . . . . . . . . 56
- 21.2. Service Agent Requirements . . . . . . . . . . . . . . . 58
- 21.3. Directory Agent Requirements . . . . . . . . . . . . . . 59
- 22. Configurable Parameters and Default Values 61
- 22.1. Service Agent: Use Predefined Directory Agent(s) . . . . 62
- 22.2. Time Out Intervals . . . . . . . . . . . . . . . . . . . 63
-
-
-
- Veizades, et. al. Standards Track [Page 2]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 23. Non-configurable Parameters 63
- 24. Acknowledgments 64
- A. Appendix: Technical contents of ISO 639:1988 (E/F): "Code for
- the representation of names of languages" 65
- B. SLP Certificates 66
- C. Example of deploying SLP security using MD5 and RSA 68
- D. Example of use of SLP Certificates by mobile nodes 68
- E. Appendix: For Further Reading 69
-
- 1. Introduction
-
- Traditionally, users find services by 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 names the service and 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 provides a dynamic configuration mechanism for
- applications in local area networks. It is not a global resolution
- system for the entire Internet; rather it is intended to serve
- enterprise networks with shared services. Applications are modeled
- as clients that need to find servers attached to the enterprise
- network at a possibly distant location. For cases where there are
- many different clients and/or services available, the protocol is
- adapted to make use of nearby Directory Agents that offer a
- centralized repository for advertised services.
-
- 2. 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 or
- Directory Agents.
-
- Service Agent (SA)
- A process working on the behalf of one or more services
- to advertise service attributes and configuration.
-
- 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.
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 3]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Service The service is a process or system providing a facility
- to the network. The service itself is accessed using a
- communication mechanism external to the 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 it for efficient access by User
- Agents. There can only be one DA present per given
- host.
-
- Service Type
- Each type of service has a unique Service Type string.
- The Service Type defines a template, called a "service
- scheme", including expected attributes, values and
- protocol behavior.
-
- Naming Authority
- The agency or group which catalogues given Service Types
- and Attributes. The default Naming Authority is IANA,
- the Internet Assigned Numbers Authority.
-
- Keyword
- A string describing a characteristic of a service.
-
- Attribute
- A (class, value-list) pair of strings describing a
- characteristic of a service. The value string may be
- interpreted as a boolean, integer or opaque value if it
- takes specific forms (see section 20.5).
-
- Predicate
- A boolean expression of attributes, relations and
- logical operators. The predicate is used to find
- services which satisfy particular requirements. See
- section 5.3.
-
- Alphanumeric
- A character within the range 'a' to 'z', 'A' to 'Z', or
-
- Scope A collection of services that make up a logical group.
- See sections 3.7 and 16.
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 4]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Site Network
- All the hosts accessible within the Agent's multicast
- radius, which defaults to a value appropriate for
- reaching all hosts within a site (see section 22). If
- the site does not support multicast, the agent's site
- network is restricted to a single subnet.
-
- URL A Universal Resource Locator - see [6].
-
- Address Specification
- This is the network layer protocol dependent mechanism
- for specifying an Agent. For Internet systems this is
- part of a URL.
-
- 2.1. Notation Conventions
-
- CAPS Strings which appear in all capital letters are protocol
- literal. All string comparison is case insensitive,
- however, (see section 5.5). Some strings are quoted in
- this document to indicate they should be used literally.
- Single characters inside apostrophes are included
- literally.
-
- <> Values set off in this manner are fully described in
- section 20. In general, all definitions of items in
- messages are described in section 20 or immediately
- following their first use.
-
- | |
- \ \ Message layouts with this notation indicate a variable
- | | length field.
-
- 2.2. Service Information and Predicate Representation
-
- Service information is represented in a text format. The goal is
- that the format be human readable and transmissible via email. The
- location of network services is encoded as a Universal Resource
- Locator (URL) which is human readable. Only the datagram headers are
- encoded in a form which is not human readable. Strings used in the
- Service Location Protocol are NOT null-terminated.
-
- Predicates are expressed in a simple boolean notation using keywords,
- attributes, and logical connectives, as described in Section 5.4.
-
- The logical connectives and subexpressions are presented in prefix-
- order, so that the connective comes first and the expressions it
- operates on follow afterwards.
-
-
-
-
- Veizades, et. al. Standards Track [Page 5]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 2.3. Specification Language
-
- In this document, several words are used to signify the requirements
- of the specification [8]. These words are often capitalized.
-
- MUST This word, or the adjective "required", means that
- the definition is an absolute requirement of the
- specification.
-
- MUST NOT This phrase means that the definition is an absolute
- prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended", means
- that, in some circumstances, valid reasons may exist to
- ignore this item, but the full implications must be
- understood and carefully weighed before choosing a
- different course. Unexpected results may result
- otherwise.
-
- MAY This word, or the adjective "optional", means that this
- item is one of an allowed set of alternatives. An
- implementation which does not include this option MUST
- be prepared to interoperate with another implementation
- which does include the option.
-
- silently discard
- The implementation discards the datagram without
- further processing, and without indicating an error to
- the sender. The implementation SHOULD provide the
- capability of logging the error, including the contents
- of the discarded datagram, and SHOULD record the event
- in a statistics counter.
-
- 3. Protocol Overview
-
- The basic operation in Service Location is that a client attempts to
- discover the location of a Service. In smaller installations, each
- service will be configured to respond individually to each client.
- In larger installations, services will register their services with
- one or more Directory Agents, and clients will contact the Directory
- Agent to fulfill requests for Service Location information. Clients
- may discover the whereabouts of a Directory Agent by
- preconfiguration, DHCP [2, 11], or by issuing queries to the
- Directory Agent Discovery multicast address.
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 6]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 3.1. Protocol Transactions
-
- The diagram below illustrates the relationships described below:
-
- +---------------+ we want this info: +-----------+
- | Application | - - - - - - - - - - - -> | Service |
- +---------------+ +-----------+
- /|\ | |
- | +-------------+ |
- | | |
- \|/ \|/ \|/
- +---------------+ +-----------+ +----------------+
- | User Agent |<-------->| Service | | Service |
- +---------------+ | Agent | | Agent which |
- | +-----------+ | does not reply |
- | | | to UA requests |
- | \|/ +----------------+
- | +-------------+ |
- +------------------>| Directory |<----------+
- | Agent |
- +-------------+ ___________
- /|\ / Many other\
- +------------>| SA's |
- \___________/
-
- The following describes the operations a User Agent would employ to
- find services on the site's network. The User Agent needs no
- configuration to begin network interaction. The User Agent can
- acquire information to construct predicates which describe the
- services that match the user's needs. The User Agent may build on
- the information received in earlier network requests to find the
- Service Agents advertising service information.
-
- A User Agent will operate two ways: If the User Agent has already
- obtained the location of a Directory Agent, the User Agent will
- unicast a request to it in order to resolve a particular request.
- The Directory Agent will unicast a reply to the User Agent. The User
- Agent will retry a request to a Directory Agent until it gets a
- reply, so if the Directory Agent cannot service the request (say it
- has no information) it must return an response with zero values,
- possibly with an error code set.
-
- If the User Agent does not have knowledge of a Directory Agent or if
- there are no Directory Agents available on the site network, a second
- mode of discovery may be used. The User Agent multicasts a request
- to the service-specific multicast address, to which the service it
- wishes to locate will respond. All the Service Agents which are
- listening to this multicast address will respond, provided they can
-
-
-
- Veizades, et. al. Standards Track [Page 7]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- satisfy the User Agent's request. A similar mechanism is used for
- Directory Agent discovery; see section 5.2. Service Agents which
- have no information for the User Agent MUST NOT respond.
-
- When a User Agent wishes to obtain an enumeration of ALL services
- which satisfy the query, a retransmission/convergence algorithm is
- used. The User Agent resends the request, together with a list of
- previous responders. Only those Service Agents which are not on the
- list respond. Once there are no new responses to the request the
- accumulation of responses is deemed complete. Depending on the
- length of the request, around 60 previous responders may be listed in
- a single datagram. If there are more responders than this, the
- scaling mechanisms described in section 3.7 should be used.
-
- While the multicast/convergence model may be important for
- discovering services (such as Directory Agents) it is the exception
- rather than the rule. Once a User Agent knows of the location of a
- Directory Agent, it will use a unicast request/response transaction.
-
- The Service Agent SHOULD listen for multicast requests on the
- service-specific multicast address, and MUST register with an
- available Directory Agent. This Directory Agent will resolve
- requests from User Agents which are unicasted using TCP or UDP. This
- means that a Directory Agent must first be discovered, using DHCP,
- the DA Discovery Multicast address, the multicast mechanism described
- above, or manual configuration. See section 5.2.
-
- A Service Agent which does not respond to multicast requests will not
- be useful in the absence of Directory Agents. Some Service Agents
- may not include this functionality, if an especially lightweight
- implementation is required.
-
- If the service is to become unavailable, it should be deregistered
- with the Directory Agent. The Directory Agent responds with an
- acknowledgment to either a registration or deregistration. Service
- Registrations include a lifetime, and will eventually expire.
- Service Registrations need to be refreshed by the Service Agent
- before their Lifetime runs out. If need be, Service Agents can
- advertise signed URLs to prove that they are authorized to provide
- the service.
-
- 3.2. Schemes
-
- The Service Location Protocol, designed as a way for clients to
- access resources on the network, is a natural application for
- Universal Resource Locators (URLs). It is intended that by re-using
- URL specification and technology from the World Wide Web, clients and
- servers will be more flexible and able to be written using already
-
-
-
- Veizades, et. al. Standards Track [Page 8]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- existing code. Moreover, it is hoped that browsers will be written
- to take advantage of the similarity in locator format, so that a
- client can dynamically formulate requests for services that are
- resolved differently depending upon the circumstances.
-
- 3.2.1. The "service:" URL scheme
-
- The service URL scheme is used by Service Location. It is used to
- specify a Service Location. Many Service Types will be named by
- including a scheme name after the "service:" scheme name. Service
- Types are used by SAs to register and deregister Services with DAs.
- It is also used by SAs and DAs to return Service Replies to UAs. The
- formal definition of the "service:" URL scheme is in section 20.2.
- The format of the information which follows the "service:" scheme
- should as closely as possible follow the URL structure and semantics
- as formalized by the IETF standardization process.
-
- Well known Service Types are registered with the IANA and templates
- are available as RFCs. Private Service Types may also be supported.
-
- 3.3. Standard Attribute Definitions
-
- Service Types used with the Service Location Protocol must describe
- the following:
-
- Service Type string of the service
- Attributes and Keywords
- Attribute Descriptions and interpretations
-
- Service Types not registered with IANA will use their own Naming
- Authority string. The registration process for new Service Types is
- defined in [13].
-
- Services which advertise a particular Service Type must support the
- complete set of standardized attributes. They may support additional
- attributes, beyond the standardized set. Unrecognized attributes
- MUST be ignored by User Agents.
-
- Service Type names which begin with "x-" are guaranteed not to
- conflict with any officially registered Service Type names. It is
- suggested that this prefix be used for experimental or private
- Service Type names. Similarly, attribute names which begin with "x-"
- are guaranteed not to be used for any officially registered attribute
- names.
-
- A service of a given Service Type should accept the networking
- protocol which is implied in its definition. If a Service Type can
- accept multiple protocols, configuration information SHOULD be
-
-
-
- Veizades, et. al. Standards Track [Page 9]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- included in the Service Type attribute information. This
- configuration information will enable an application to use the
- results of a Service Request and Attribute Request to directly
- connect to a service.
-
- See section 20.2.1 for the format of a Service Type String as used in
- the Service Location Protocol.
-
- 3.4. Naming Authority
-
- The Naming Authority of a service defines the meaning of the Service
- Types and attributes registered with and provided by Service
- Location. The Naming Authority itself is a string which uniquely
- identifies an organization. If no string is provided IANA is the
- default. IANA stands for the Internet Assigned Numbers Authority.
-
- Naming Authorities may define Service Types which are experimental,
- proprietary or for private use. The procedure to use is to create a
- 'unique' Naming Authority string and then specify the Standard
- Attribute Definitions as described above. This Naming Authority will
- accompany registration and queries, as described in sections 5 and 9.
-
- 3.5. Interpretation of Service Location Replies
-
- 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 application 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 a User Agent to connect to a service as desired, the
- Service Request and/or Attribute Request may be resubmitted.
-
- Service specific configuration information (such as which protocol to
- use) should be included as attribute information in Service
- Registrations. These configuration attributes will be used by
- applications which interpret the Service Location Reply.
-
- 3.6. Use of TCP, UDP and Multicast in Service Location
-
- The Service Location Protocol requires the implementation of UDP
- (connectionless) and TCP (connection oriented) transport protocols.
- The latter is used for bulk transfer, only when necessary.
- Connections are always initiated by an agent request or registration,
- not by a replying Directory Agent. Service Agents and User Agents
- use ephemeral ports for transmitting information to the service
- location port, which is 427.
-
-
-
-
- Veizades, et. al. Standards Track [Page 10]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Service Location discovery mechanisms typically multicast
- messages to as many enterprise networks as needed to establish
- service availability. The protocol will operate in a broadcast
- environment with limitations detailed in section 3.6.1.
-
- 3.6.1. Multicast vs. Broadcast
-
- The Service Location Protocol was designed for use in networks where
- DHCP is available, or multicast is supported at the network layer.
- To support this protocol when only network layer broadcast is
- supported, the following procedures may be followed.
-
- 3.6.1.1. Single Subnet
-
- If a network is not connected to any other networks simple network
- layer broadcasts will work in place of multicast.
-
- Service Agents SHOULD and Directory Agents MUST listen for broadcast
- Service Location request messages to the Service Location port. This
- allows UAs which lack multicast capabilities to still make use of
- Service Location on a single subnet.
-
- 3.6.1.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 and
- Service 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 Agents using DHCP. The
- address can also be determined by static configuration.
-
- As dynamic discovery is not feasible in a broadcast environment with
- multiple subnets and manual configuration is difficult, deploying DAs
- to serve enterprises with multiple subnets will require use of
- multicast discovery with multiple hops (i.e., TTL > 1 in the IP
- header).
-
- 3.6.2. Service-Specific Multicast Address
-
- This mechanism is used so that the number of datagrams any one
- service agent receives is minimized. The Service Location General
- Multicast Address MAY be used to query for any service, though one
- SHOULD use the service-specific multicast address if it exists.
-
- If the site network does not support multicast then the query SHOULD
- be broadcast to the Service Location port. If, on the other hand,
- the underlying hardware will not support the number of needed
-
-
-
- Veizades, et. al. Standards Track [Page 11]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- multicast addresses the Service Location General Multicast Address
- MAY be used. Service Agents MUST listen on this multicast address as
- well as the service-specific multicast addresses for the service
- types they advertise.
-
- Service-Specific Multicast Addresses are computed by calculating a
- string hash on the Service Type string. The Service Type string MUST
- first be converted to an ASCII string from whatever character set it
- is represented in, so the hash will have well-defined results.
-
- The string hash function is modified from a code fragment attributed
- to Chris Torek:
-
- /*
- * SLPhash returns a hash value in the range 0-1023 for a
- * string of single-byte characters, of specified length.
- */
- unsigned long SLPhash (const char *pc, unsigned int length)
- unsigned long h = 0;
- while (length-- != 0) {
- h *= 33;
- h += *pc++;
- }
- return (0x3FF & h); /* round to a range of 0-1023 */
- }
-
- This value is added to the base range of Service Specific Discovery
- Addresses, to be assigned by IANA. These will be 1024 contiguous
- multicast addresses.
-
- 3.7. Service Location Scaling, and Multicast Operating Modes
-
- In a very small network, with few nodes, no DA is required. A user
- agent can detect services by multicasting requests. Service Agents
- will then reply to them. Further, Service Agents which respond to
- user requests must be used to make service information available.
- This does not scale to environments with many hosts and services.
-
- When scaling Service Location systems to intermediate sized networks,
- a central repository (Directory Agent) may be added to reduce the
- number of Service Location messages transmitted in the network
- infrastructure. Since the central repository can respond to all
- Service and Attribute Requests, fewer Service and Attribute Replies
- will be needed; for the same reason, there is no need to
- differentiate between Directory Agents.
-
- 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
-
-
-
- Veizades, et. al. Standards Track [Page 12]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- case more Directory Agents are needed. The services (and service
- agents) advertised by the several Directory Agents are collected
- together into logical groupings called "Scopes".
-
- All Service Registrations that have a scope must be registered with
- all DAs (within the appropriate multicast radius) of that scope which
- have been or are subsequently discovered. Service Registrations
- which have no scope are only registered with unscoped DAs. User
- Agents make requests of DAs whose scope they are configured to use.
-
- Service Agents MUST register with unscoped DAs even if they are
- configured to specifically register with DAs which have a specific
- scope or set of scopes. User Agents MAY query DAs without scopes,
- even if they are configured to use DAs with a certain scope. This is
- because any DA with no scope will have all the available service
- information.
-
- Scoped user agents SHOULD always use a DA which supports their
- configured scope when possible instead of an unscoped DA. This will
- prevent the unscoped DAs from becoming overused and thus a scaling
- problem.
-
- It is possible to specially configure Service Agents to register only
- with a specific set of DAs (see Section 22.1). In that case,
- services may not be available to User Agents via all Directory
- Agents, but some network administrators may deem this appropriate.
-
- There are thus 3 distinct operating modes. The first requires no
- administrative intervention. The second requires only that a DA be
- run. The last requires that all DAs be configured to have scope and
- that a coherent strategy of assigning scopes to services be followed.
- Users must be instructed which scopes are appropriate for them to
- use. This administrative effort will allow users and applications to
- subsequently dynamically discover services without assistance.
-
- The first mode (no DAs) is intended for a LAN. The second mode (using
- a DA or DAs, but not using scopes) scales well to a group of
- interconnected LANs with a limited number of hosts. The third mode
- (with DAs and scopes) allows the SLP protocol to be used in an
- internetworked campus environment.
-
- If scoped DAs are used, they will not accept unscoped registrations
- or requests. UAs which issue unscoped requests will discover only
- unscoped services. They SHOULD use a scope in their requests if
- possible and SHOULD use a DA with their scope in preference to an
- unscoped DA. In a large campus environment it would be a bad idea to
- have ANY unscoped DAs: They attract ALL registrations and will thus
- present a scaling problem eventually.
-
-
-
- Veizades, et. al. Standards Track [Page 13]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A subsequent protocol document will describe mechanisms for
- supporting a service discovery protocol for the global Internet.
-
- 4. Service Location General Message Format
-
- The following header is used in all of the message descriptions below
- and is abbreviated by using "Service Location header =" followed by
- the function being used.
-
- 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 | Function | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |O|M|U|A|F| rsvd| Dialect | Language Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Char Encoding | XID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Version This protocol document defines version 1 of the Service
- Location protocol.
-
- Function Service Location datagrams can be identified as to their
- operation by the function field. The following are the
- defined operations:
-
- Message Type Abbreviation Function Value
-
- Service Request SrvReq 1
- Service Reply SrvRply 2
- Service Registration SrvReg 3
- Service Deregister SrvDereg 4
- Service Acknowledge SrvAck 5
- Attribute Request AttrRqst 6
- Attribute Reply AttrRply 7
- DA Advertisement DAAdvert 8
- Service Type Request SrvTypeRqst 9
- Service Type Reply SrvTypeRply 10
-
- Length The number of bytes in the message, including the Service
- Location Header.
-
- O The 'Overflow' bit. See Section 18 for the use of this
- field.
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 14]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- M The 'Monolingual' bit. Requests with this bit set
- indicate the User Agent will only accept responses in the
- language (see section 17) that is indicated by the
- Service or Attribute Request.
-
- U The 'URL Authentication Present' bit. See sections 4.2,
- 4.3, 9, and 11 for the use of this field.
-
- A The 'Attribute Authentication Present' bit. See
- sections 4.2, 4.3, and 13 for the use of this field.
-
- F If the 'F' bit is set in a Service Acknowledgement, the
- directory agent has registered the service as a new
- entry, not as an updated entry.
-
- rsvd MUST be zero.
-
- Dialect Dialect tags will be used by future versions of the
- Service Location Protocol to indicate a variant of
- vocabulary used. This field is reserved and MUST be set
- to 0 for compatibility with future versions of the
- Service Location Protocol.
-
- Language Code
- Strings within the remainder of the message which follows
- are to be interpreted in the language encoded (see
- section 17 and appendix A) in this field.
-
- Character Encoding
- The characters making up strings within the remainder of
- the message may be encoded in any standardized encoding
- (see section 17.1).
-
- Transaction Identifier (XID)
- The XID (transaction ID) field allows the requester to
- match replies to individual requests (see section 4.1).
-
- Note that, whenever there is an Attribute Authentication
- block, there will also be a URL Authentication block.
- Thus, it is an error to have the 'A' bit set without also
- having the 'U' bit set.
-
- 4.1. Use of Transaction IDs (XIDs)
-
- Retransmission is used to ensure reliable transactions in the Service
- Location Protocol. If a User Agent or Service Agent sends a message
- and fails to receive an expected response, the message will be sent
- again. Retransmission of the same Service Location datagram should
-
-
-
- Veizades, et. al. Standards Track [Page 15]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- not contain an updated XID. It is quite possible the original request
- reached the DA or SA, but reply failed to reach the requester. Using
- the same XID allows the DA or SA to cache its reply to the original
- request and then send it again, should a duplicate request arrive.
- This cached information should only be held very briefly
- (CONFIG_INTERVAL_0.) Any registration or deregistration at a
- Directory Agent, or change of service information at a SA should
- flush this cache so that the information returned to the client is
- always valid.
-
- 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.
-
- Directory Agents use XID values in their DA Advertisements to
- indicate their state (see section 15.2).
-
- 4.2. URL Entries
-
- When URLs are registered, they have lifetimes and lengths, and may be
- authenticated. These values are associated with the URL for the
- duration of the registration. The association is known as a "URL-
- entry", and has the following format:
-
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Lifetime | Length of URL |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ URL \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | (if present) URL Authentication Block .....
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Lifetime The length of time that the registration is valid, in
- the absence of later registrations or deregistration.
-
- Length of URL
- The length of the URL, measured in bytes and < 32768.
-
- URL Authentication Block
- (if present) A timestamped authenticator (section 4.3)
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 16]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The URL conforms to RFC 1738 [6]. If the 'U' bit is set in the
- message header, the URL is followed by an URL Authentication Block.
- If the scheme used in the URL does not have a standardized
- representation, the minimal requirement is:
-
- service:<srvtype>://<addr-spec>
-
- "service" is the URL scheme of all Service Location Information
- included in service registrations and service replies. Each URL
- entry contains the service:<srvtype> scheme name. It may also
- include an <addr-spec> except in the case of a reply to a Service
- Type request (see section 7).
-
- 4.3. Authentication Blocks
-
- Authentication blocks are used to authenticate service registrations
- and deregistrations. URLs are registered along with an URL
- Authentication block to retain the authentication information in the
- URL entry for subsequent use by User Agents who receive a Service
- Reply containing the URL entry. Service attributes are registered
- along with an Attribute Authentication block. Both authentication
- blocks have the format illustrated below.
-
- If a service registration is accompanied by authentication which can
- be validated by the DA, the DA MUST validate any subsequent service
- deregistrations, so that unauthorized entities cannot invalidate such
- registered services. Likewise, if a service registration is
- accompanied by an Attribute Authentication block which can be
- validated by the DA, the DA MUST validate any subsequent attribute
- registrations, so that unauthorized entities cannot invalidate such
- registered attributes.
-
- To avoid replay attacks which use previously validated
- deregistrations, the deregistration or attribute registration message
- must contain a timestamp for use by the DA. To avoid replay attacks
- which use previously validated registrations to nullify a valid
- deregistration, registrations must also contain a timestamp.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 17]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- An authentication block has the following format:
-
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Timestamp +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Block Structure Descriptor | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Structured Authenticator ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Timestamp A 64-bit value formatted as specified by the Network
- Time Protocol (NTP) [16].
-
- Block Structure Descriptor (BSD)
- A value describing the structure of the Authenticator.
- The only value currently defined is 1, for
- Object-Identifier.
-
- Length The length of the Authenticator
-
- Structured Authenticator
- An algorithm specification, and the authentication data
- produced by the algorithm.
-
- The Structured Authenticator contains a digital signature of the
- information being authenticated. It contains sufficient information
- to determine the algorithm to be used and the keys to be selected to
- verify the digital signature.
-
- The digital signature is computed over the following ordered stream
- of data:
-
- CHARACTER ENCODING OF URL (2 bytes in network byte order)
- LIFETIME (2 bytes in network byte order)
- LENGTH OF URL (2 bytes in network byte order)
- URL (n bytes)
- TIMESTAMP (8 bytes in SNTP format [16])
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 18]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- When producing a URL Authentication block, the authentication data
- produced by the algorithm identified within the Structured
- Authenticator calculated over the following ordered stream of data:
-
- ATTRIBUTE CHARACTER ENCODING (2 bytes in network byte order)
- LENGTH OF ATTRIBUTES (2 bytes in network byte order)
- ATTRIBUTES (n bytes)
- TIMESTAMP (8 bytes in SNTP format [16])
-
- Every Service Location Protocol entity (User Agent, Service Agent, or
- Directory Agent) which is configured for use with protected scopes
- SHOULD implement "md5WithRSAEncryption" [4] and be able to associate
- it with BSD value == 1.
-
- In the case where BSD value == 1 and the OID "md5WithRSAEncryption"
- is selected, the Structured Authenticator will start with the ASN.1
- Distinguished Encoding (DER) [9] for "md5WithRSAEncryption", which
- has the as its value the bytes (MSB first in hex):
-
- "30 0d 06 09 2a 86 48 86 f7 0d 01 01 04 05 00"
-
- This is then immediately followed by an ASN.1 Distinguished Encoding
- (as a "Bitstring") of the RSA encryption (using the Scope's private
- key) of a bitstring consisting of the OID for "MD5" concatenated by
- the MD5 [22] message digest computed over the fields above. The
- exact construction of the MD5 OID and digest can be found in RFC 1423
- [4].
-
- 4.4. URL Entry Lifetime
-
- The Lifetime field is set to the number of seconds the reply can be
- cached by any agent. A value of 0 means the information must not be
- cached. User Agents MAY cache service information, but if they do,
- they must provide a way for applications to flush this cached
- information and issue the request directly onto the network.
-
- Services should be registered with DAs with a Lifetime, the suggested
- value being CONFIG_INTERVAL_1. The service must be reregistered
- before this interval elapses, or the service advertisement will no
- longer be available. Thus, services which vanish and fail to
- deregister eventually become automatically deregistered.
-
- 5. Service Request Message Format
-
- The Service Request is used to obtain URLs from a Directory Agent or
- Service Agents.
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 19]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The format of the Service Request is as follows:
-
- 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 = SrvReq) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |length of prev resp list string|<Previous Responders Addr Spec>|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Previous Responders Addr Spec> \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of predicate string | Service Request <predicate> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ Service Request <predicate>, contd. \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- If a UA issues a request which will result in a reply which is too
- large, the SA or DA will return an abbreviated response (in a
- datagram the size of the site's MTU) which has the 'Overflow' bit
- flag set. The UA must then issue the request again using TCP.
-
- The <Previous Responders Addr Spec> is described in sections 7 and
- 20.1.
-
- After a User Agent restarts (say, after rebooting of a system,
- loading of the network kernel), Service Requests should be delayed
- for some random time uniformly distributed within a one second
- interval centered about a configured delay value (by default,
- CONFIG_INTERVAL_4).
-
- The Service Request allows the User Agent to specify the Service Type
- of the service and a Predicate in a specific language. The general
- form of a Service Request is shown below:
-
- <srvtype>[.<na>]/[<scope>]/[<where>]/
-
- The punctuation is necessary even where the fields are omitted.
-
- - The <srvtype> refers to the Service Type. For each type of
- service available, there is a unique Service type name string.
- See section 20.2.1.
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 20]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- - The <na> is the Naming Authority. This string determines the
- semantic interpretation of the attribute information in the
- <where> part of the Service Request.
-
- - The <scope> is a string used to restrict the range of the query.
- Scope is determined administratively, at a given site. It is not
- necessarily related to network topology (see Section 16).
- Leaving this field out means that the request can be satisfied
- only by unscoped service advertisements.
-
- - The <where> string is the Where Clause of the request. It
- contains a query which allows the selection of those service
- instances which the User Agent is interested in. The query
- includes attributes, boolean operators and relations. (See
- section 5.3.)
-
- In the case of a multicast service request, a list of previous
- responders is sent. This list will prevent those in the list from
- responding, to be sure that responses from other sources are not
- drowned out. The request is multicast repeatedly (with a recommended
- wait interval of CONFIG_INTERVAL_2) until there are no new responses,
- or a certain time (CONFIG_INTERVAL_3) has elapsed. Different timing
- values are applied to a Service Request used for Directory Agent
- Discovery, see Section 5.2.
-
- In order for a request to succeed in matching registered information,
- the following conditions must be met:
-
- 1. The result must have the same Service Type as the request.
-
- 2. It must have the same Naming Authority.
-
- 3. It must have the same scope. (If the scope of the request
- as omitted, the request will only match services which were
- registered with no scope. Note that a scoped request WILL match
- all unscoped Services).
-
- 4. The conditions specified in the Where Clause must match the
- attributes and keywords registered for the service.
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 21]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 5.1. Service Request Usage
-
- The User Agent may form Service Requests using preconfigured
- knowledge of a Service Type's attributes. It may also issue
- Attribute Requests to obtain the attribute values for a Service Type
- before issuing Service Requests (see Section 13). Having obtained
- the attributes which describe a particular kind of service from an
- Attribute Request, or using configured knowledge of a service's
- attributes, the User Agent can build a predicate that describes the
- service needs of the user.
-
- Service Requests may be sent directly to a Directory Agent. Suppose
- a printer supporting the lpr protocol is needed on the 12th floor
- which has UNRESTRICTED_ACCESS and prints 12 pages per minute.
- Suppose further that a Attribute Request indicates that there is a
- printer on the 12th floor, a printer that prints 12 pages per minute,
- and a printer that offers UNRESTRICTED_ACCESS. To check whether they
- are same printer, issue the following request:
-
- lpr//(& (PAGES PER MINUTE==12)
- (UNRESTRICTED_ACCESS)
- (LOCATION==12th FLOOR))/
-
- Suppose there is no such printer. The Directory Agent responds with
- a Service Reply with 0 in the number of responses and no reply
- values.
-
- The User Agent then tries a less restrictive query to find a printer,
- using the 12th floor as "where" criteria.
-
- lpr//(LOCATION==12th FLOOR)/
-
- In this case, there is now only one reply:
-
- Returned URL: service:lpr://igore.wco.ftp.com:515/draft
-
- The Address Specification for the printer is: igore.wco.ftp.com:515,
- containing the name of the host managing the requested printer.
- Files would be printed by spooling to that port on that host. The
- word 'draft' refers to the name of the print queue the lpr server
- supports.
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 22]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- In the absence of a Directory Agent, the request above could be
- multicast. In this case it would be sent to the Service Specific
- Multicast Address for "service:printer" and not to the Directory
- Agent. Service Agents that can satisfy the predicate will reply.
- Service Agents which cannot support the character set of the request
- MUST return CHARSET_NOT_UNDERSTOOD in the SrvRply. In all other
- circumstances, Service Agents which cannot satisfy the reply do not
- send any reply at all.
-
- The only way a User Agent can be sure there are no services which
- match the query is by retrying the request (CONFIG_INTERVAL_8). If
- no response comes, the User Agent gives up and assumes there are no
- such printers.
-
- Another form of query is a simpler 'join' query. Its syntax has no
- parentheses or logical operators. Each term is conjoined (AND-ed
- together.) Rewriting the initial query provides an example:
-
- lpr//PAGES PER MINUTE==12,
- UNRESTRICTED_ACCESS,
- LOCATION==12th FLOOR/
-
- 5.2. Directory Agent Discovery Request
-
- Normally a Service Request returns a Service Reply. The sole
- exception to this is a Service Request for the Service Type
- "directory-agent". This Service Request is answered with a DA
- Advertisement.
-
- Without configured knowledge of a Directory Agent (DA), a User Agent
- or Service Agent uses a Service Request to discover a DA. (See
- section 15.1 for mechanisms by which a client may be configured to
- have knowledge of a DA.) Such a Service Request used for Directory
- Agent Discovery includes a predicate of the form:
-
- directory-agent///
-
- This query is always sent to the Directory Agent Discovery multicast
- address. The Service Type of a Directory Agent is "directory-agent",
- hence it is the Service Type used in the request. No scope is
- included in the request, so all Directory Agents will reply. This is
- the only request which omits a scope which all Directory Agents MUST
- respond to. Normally, a Directory Agent with a scope ONLY responds
- to requests with that scope. No Naming Authority is included, so
- "IANA" is assumed. We want to reach all the available directory
- agents. If the scope were supplied, only DAs supporting that scope
- would reply.
-
-
-
-
- Veizades, et. al. Standards Track [Page 23]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- DA Advertisement Replies may arrive from different sources, similar
- in form to:
-
- URL returned: service:directory-agent://slp-resolver.catch22.com
- Scope returned: ACCOUNTING
-
- URL returned: service:directory-agent://204.182.15.66 Scope
- returned: JANITORIAL SERVICES
-
- The DA Advertisement format is defined in Section 14.
-
- If the goal is merely to discover any Directory Agent, the first
- reply will do. If the goal, however, is to discover all reachable
- DAs, the request must be retransmitted after an interval (the
- recommended time is CONFIG_INTERVAL_5). This retransmitted request
- will include a list of DAs which have already responded. See
- sections 7 and 20.1. Directory Agents which receive the request will
- only respond if they are not on this list. After there are no new
- replies, all DAs are presumed to have been discovered.
-
- If a DA fails to respond after CONFIG_INTERVAL_6 seconds, the UA or
- Service Agent should use a different DA. DA addresses may be cached
- from previous discovery attempts, preconfigured, or by use of DHCP
- (see section 15.2). If no such DA responds, DA discovery should be
- used to find a new DA. Only after CONFIG_INTERVAL_7 seconds should it
- be assumed that no DA exists and multicast based Service Requests
- should be used.
-
- 5.3. Explanation of Terms of Predicate Grammar
-
- A predicate has a simple structure, which depends on parentheses,
- commas and slashes to delimit the elements. Examples of proper usage
- are given throughout this document. The terms used in the grammar
- are as follows:
-
- predicate:
-
- Placed in a Service Request, this is interpreted by a Service
- Agent or Directory Agent to determine what information to
- return.
-
- scope:
-
- If this is absent in a Service Request, the request will match
- only services registered without a scope. If it is present,
- only services registered under that scope or are unscoped will
- match the request.
-
-
-
-
- Veizades, et. al. Standards Track [Page 24]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- where-clause:
-
- This determines which services the request matches. An empty
- where-clause will match all services. The request will be
- limited to services which have the specified Service Type, so
- the where-clause is not the sole factor in picking out which
- services match the request.
-
- where-list:
-
- The where-list is a logical expression. It can be a single
- expression, a disjunction or a conjunction. A single
- expression must apply for the where-clause to match. A
- disjunction matches if any expression in the OR list matches.
- A conjunction matches only if all elements in the AND list
- match.
-
- Note that there is no logical negation operator: This is
- because there is no notion of returning "everything except"
- what matches a given criteria.
-
- A where-list can be nested and complex. For example, the
- following requires that three subexpressions must all be true:
-
- (& (| <query-item> <query-item>)
- <query-item>
- (& <query-item> <query-item> <query-item>)
- )
-
- Notice that white space, tabs or carriage returns can be added
- anywhere outside query-items. Each list has 2 or more items in
- it, and lists can be nested. Services which fulfill the entire
- logical expression match the where-clause.
-
- degenerate expressions but they should be tolerated. They are
- equivalent to <query-item>.
-
- query-item:
-
- A query item has the form:
-
- '(' <attr-tag> <comp-op> <attr-val> ')'
-
- or
-
- '(' <keyword> ')'
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 25]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Examples of this would be:
-
- (SOME ATTRIBUTE == SOME VALUE)
- (RESERVED)
- (QUEUE LENGTH <= 234)
-
- query-join:
-
- The query-join is a comma delimited list of conditions which
- the service must satisfy in order to match the query. The
- items are considered to be logically conjoined. Thus the
- query-join:
-
- ATTR1=VALUE1, KEYWORD1, KEYWORD2, ATTR2>=34
-
- is equivalent to the where-list:
-
- (& (ATTR1=VALUE1) (KEYWORD1) (KEYWORD2) (ATTR2>=34))
-
- The query-join cannot be mixed with a where-list. It is
- provided as a convenient mechanism to provide a statement of
- necessary conditions without building a logical expression.
-
- 5.4. Service Request Predicate Grammar
-
- Service Requests can precisely describe the services they need by
- including a Predicate the body of the Request. This Predicate must
- be constructed according to the grammar below.
-
- <predicate> ::= <srvtype>['.'<na>]'/'<scope>'/'<where>'/'
-
- <srvtype> ::= string representing type of service. Only
- alphanumeric characters, '+', and '-' are allowed.
-
- <na> ::= string representing the Naming Authority.
- Only alphanumeric characters, '+',
- and '-' are allowed. If this field is
- omitted then "IANA" is assumed.
-
- <scope> ::= string representing the directory agent scope.
- '/', ',' (comma) and ':' are not allowed in
- this string. The scopes "LOCAL" and "REMOTE"
- are reserved.
-
- <attr-tag> ::= class name of an attribute of a given Service
- Type. This tag cannot include the following
- characters: '(', ')', ',', '=', '!', '>',
- '<', '/', '*', except where escaped (see 17.1.)
-
-
-
- Veizades, et. al. Standards Track [Page 26]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- <keyword> ::= a class name of an attribute which will have
- no values. This string has the same limits
- as the <attr-tag>, except that white space
- internal to the keyword is illegal.
-
- <where> ::= <where-any> |
- <where-list> |
- <query-join>
-
- <where-any> ::=
- That is NOTHING, or white space.
-
- <where-list> ::= '(' '&' <where-list> <query-list> ')' |
- '(' '|' <where-list> <query-list> ')' |
- '(' <keyword> ')'
- '(' <attr-tag> <comp-op> <attr-val> ')'
-
- <query-list> ::= <where-list> |
- <where-list> <query-list>
- <query-join> ::= <keyword> |
- <join-item> |
- <query-join> ',' <keyword> |
- <query-join> ',' <join-item>
-
- <join-item> ::= <attr-tag> <comp-op> <attr-val>
-
- <comp-op> ::= "!=" | "==" | '<' | "<=" | '>' | ">="
-
- <attr-val> ::= any string (see Section 20.5 for the ways
- in which attr-vals are interpreted.)
- Value strings may not contain '/', ','
- '=', '<', '>', or '*' except where escaped
- (see 17.1.).
-
- '(' and ')' may be used in attribute values
- for the purpose of encoding a binary values.
- Binary encodings (See 20.5) may
- include the above reserved characters.
-
- 5.5. String Matching for Requests
-
- All strings are case insensitive, with respect to string matching on
- queries. All preceding or trailing blanks should not be considered
- for a match, but blanks internal to a string are relevant.
-
- For example, " Some String " matches "SOME STRING", but not "some
- string".
-
-
-
-
- Veizades, et. al. Standards Track [Page 27]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- String matching may only be performed over the same character sets.
- If a request cannot be satisfied due to a lack of support for the
- character set of the request a CHARSET_NOT_UNDERSTOOD error is
- returned.
-
- String comparisons (using comparison operators such as '<' or
- registration, not using any language specific rules. The ordering is
- strictly by the character value, i.e. "0" < "A" is true when the
- character set is US-ASCII, since "0" has the value of 48 and "A" has
- the value 65.
-
- The special character '*' may precede or follow a string in order to
- allow substring matching. If the '*' precedes a string, it matches
- any attribute value which ends with the string. If the string ends
- with a '*', it matches any attribute value which begins with the
- string. Finally, if a string begins and ends with a '*', the string
- will match any attribute value which contains the string.
-
- Examples:
-
- "bob*" matches "bob", "bobcat", and "bob and sue" "*bob" matches
- "bob", "bigbob", and "sue and bob" "*bob*" matches "bob",
- "bobcat", "bigbob", and "a bob I know"
-
- String matching is done after escape sequences have been substituted.
- See sections 17, 5.3, 17.1.
-
- 6. Service Reply Message Format
-
- The format of the Service Reply Message is:
-
- 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) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Error Code | URL Entry count |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | <URL Entry 1> ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | . |
- \ . \
- | . |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | <URL Entry N> ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Each Service Reply message is composed of a list of URL Entries.
-
-
-
- Veizades, et. al. Standards Track [Page 28]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Error Code may have one of the following values:
-
- 0 Success
-
- LANGUAGE_NOT_SUPPORTED
- A SA or DA returns this when a request is received from a
- UA which is in a language for which there is no
- registered Service Information and the request arrived
- with the Monolingual bit set. See Section 17.
-
- PROTOCOL_PARSE_ERROR
- A SA or DA returns this error when a SrvRply is received
- which cannot be parsed or the declared string lengths
- overrun the message.
-
- SCOPE_NOT_SUPPORTED
- A DA will return this error if it receives a request
- which has a scope not supported by the DA. An SA will not
- return this error; it will simply not reply to the
- multicast request.
-
- CHARSET_NOT_UNDERSTOOD
- If the DA or SA receives a request or registration in a
- character set which it does not support, it will return
- this error.
-
- Each <URL Entry> in the list has the form defined in Section 4.2.
- The URL entries in the reply have no delimiters between them, other
- than the length fields. The URL length fields indicate where the URL
- strings end. If the presence of an URL Authenticator block is
- signalled by the 'U' bit, the length of the authenticator block is
- determined by information within the block as discussed in section
- 4.3. A User Agent MAY use the authentication block to determine
- whether the Service Agent advertising the URL is, in fact, authorized
- to offer the indicated service. If, in a list of URL entries, some
- of the URLs indicate services which are in protected scopes (see
- section 16.1) while other URLs in the list indicate services which
- are not in protected scopes, the latter must still have
- Authentication Blocks, but the length of the authentcitor is shown as
- zero, and no authentication need be done.
-
- 7. Service Type Request Message Format
-
- The Service Type Request is used to determine all the types of
- services supported on a network.
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 29]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The request should be sent directly to a DA (though it may also be
- sent to the Service Location General Multicast Address), in order to
- find out all services available on the site network (which are
- advertised by Directory Agents and Service Agents.) If no DA is
- available, a User Agent MAY issue more than one request to insure
- that all replies have been received. In each subsequent request, a
- User Agent includes those Service Types that it is aware of. When no
- new replies arrive within CONFIG_INTERVAL_3 from a request, the User
- Agent can presume that it has acquired a complete set of available
- Service Types.
-
- The format of a Service Type Request is:
-
- 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 = SrvTypeRqst) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of prev resp string |<Previous Responders Addr Spec>|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Previous Responders Addr Spec> \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of naming authority | <Naming Authority String> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Naming Authority String>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of Scope String | <Scope String> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Scope String>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Note that the <Previous Responders Addr Spec> is a comma delimited
- list. (See section 20.1.) The 'length of prev responder list' field
- indicates the length of the comma delimited list string. A previous
- responder list with 3 elements takes this form:
-
- <addr-spec>,<addr-spec>,<addr-spec>
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 30]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Naming Authority, if included, will limit the replies to Service
- Type Requests to Service Types which have the specified Naming
- Authority. If this field is omitted (i.e., the length field is
- zero), the default Naming Authority ("IANA") is assumed. If the
- length field is -1, service types from all naming authorities are
- requested.
-
- The Scope String Field, if included, will limit replies to Service
- Types which have the specified scope or are unscoped. If this field
- is omitted, all Service Types (from the specified Naming Authority)
- are returned.
-
- 8. Service Type Reply Message Format
-
- The Service Type Reply has the following format:
-
- 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 = SrvTypeRply) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Error Code | number of service types |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Service Type Item 1> \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | . . . |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Service Type Item N> \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The format of a Service Type Item is as follows:
-
- 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 of Service Type String | <Service Type String> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Service Type String>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 31]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Error Code may have one of the following values:
-
- 0 Success
-
- PROTOCOL_PARSE_ERROR
- A SA or DA returns this error when a SrvTypeRqst is
- received which cannot be parsed.
-
- SCOPE_NOT_SUPPORTED
- A DA which is configured to have a scope will return this
- error if it receives a SrvTypeRqst which is set to have a
- scope which it does not support. An SA will not return
- this error, it will simply silently discard the multicast
- request.
-
- CHARSET_NOT_UNDERSTOOD
- If the DA receives a SrvTypeRqst in a character set which
- it does not support, it MUST use this error.
-
- The service type's name is provided in the <Service Type String>. If
- the service type has a naming authority other than "IANA" it should
- be returned following the service type string and a "." character.
- See section 20.2.1 for the formal definition of this field. User
- Agents calculate Service Specific Multicast addresses based on a hash
- of the Service Type (see Section 3.6.2). This multicast address may
- then be used for issuing Service and Attribute Requests directly to
- SAs.
-
- The following are examples of Service Type Strings which might be
- found in Service Type Replies:
-
- service:lpr://
- service:http://
- service:nfs://
-
- 9. Service Registration Message Format
-
- After a Service Agent has found a Directory Agent, it begins to
- register its advertised services one at a time. A Service Agent must
- wait for some random time uniformly distributed within the range
- specified by CONFIG_INTERVAL_11 before registering again.
- Registration is done using the Service Registration message
- specifying all attributes for a service. If the service registration
- in a protected scope 16.1, then the service MUST include both a URL
- Authentication block and an Attribute Authentication block (see
- section 4.3). In that case, the service agent MUST set both the 'U'
- bit and the 'A' bit (see section 4).
-
-
-
-
- Veizades, et. al. Standards Track [Page 32]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A Directory Agent must acknowledge each service registration request.
- If authentication blocks are included, the Directory Agent MUST
- verify the authentication before registering the service. This
- requires obtaining key information, either by preconfiguration,
- maintenance of a security association with the service agent, or
- acquiring the appropriate certificate.
-
- The format of a Service Registration is:
-
- 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 = SrvReg) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <URL-Entry> \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length of Attr List String | <attr-list> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <attr-list>, Continued. \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | (if present) Attribute Authentication Block ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The <URL-Entry> is defined at the end of Section 4.2. The <attr-
- list> is defined in Section 20.3. The Attribute Authentication
- Block, which is only present if the 'A' bit is set in the message
- header, is defined in section 4.3.
-
- Service registration may use a connectionless protocol (e.g. UDP),
- or a connection oriented protocol (e.g. TCP). If the registration
- operation may contain more information than can be sent in one
- datagram, 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 for that service instance. Separate registrations
- must be made for each language that the service is to be advertised
- in.
-
- If a SA attempts to register a service with a DA and the registration
- is larger than the site path MTU, then the DA will reply with a
- SrvAck, with the error set to INVALID_REGISTRATION and the 'Overflow'
- byte set.
-
-
-
-
- Veizades, et. al. Standards Track [Page 33]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- An example of Service Registration information is:
-
- Lifetime (seconds): 16-bit unsigned integer
- URL (at least): service:<srvtype>://<addr-spec>
- Attributes (if any): (ATTR1=VALUE),KEYWORD,(ATTR2 = VAL1, VAL2)
-
- In order to offer continuously advertised services, Service Agents
- should start the reregistration process before the Lifetime they used
- in the registration expires.
-
- An example of a service registration (valid for 3 hours) is as
- follows:
-
- Lifetime: 10800
- URL: service:lpr://igore.wco.ftp.com:515/draft
- Attributes: (SCOPE=DEVELOPMENT),
- (PAPER COLOR=WHITE),
- (PAPER SIZE=LETTER),
- UNRESTRICTED_ACCESS,
- (LANGUAGE=POSTSCRIPT, HPGCL),
- (LOCATION=12 FLOOR)
-
- The same registration could be done again, as shown below, in German;
- however, note that "lpr", "service", and "SCOPE" are reserved terms
- and will remain in the language they were originally registered
- (English).
-
- Lifetime: 10800
- URL: service:lpr://igore.wco.ftp.com:515/draft
- Attributes: (SCOPE=ENTWICKLUNG),
- (PAPIERFARBE=WEISS),
- (PAPIERFORMAT=BRIEF),
- UNBEGRENTZTER_ZUGANG,
- (DRUECKERSPRACHE=POSTSCRIPT,HPGCL),
- (STANDORT=11 ETAGE)
-
- Scoped registrations must contain the SCOPE attribute. Unscoped
- registrations must be registered with all unscoped Directory Agents.
-
- Registrations of a previously registered service are considered an
- update. If such an attribute registration is performed in a
- protected scope (see section 16.1), a new Attribute Authentication
- block must also be included, and the 'A' bit set in the registration
- message header.
-
- The new registration's attributes replace the previous
- registration's, but do not effect attributes which were included
- previously and are not present in the update.
-
-
-
- Veizades, et. al. Standards Track [Page 34]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- For example, suppose service:x://a.org has been registered with
- attributes A=1, B=2, C=3. If a new registration comes for
- service:x://a.org with attributes C=30, D=40, then the attributes for
- the service after the update are A=1, B=2, C=30, D=40.
-
- In the example above, the SCOPE is set to DEVELOPMENT (in English)
- and ENTWICKLUNG (in German). Recall that all strings in a message
- must be in one language, which is specified in the header. The
- string SCOPE is *not* translated, as it is one of the reserved
- strings in the Service Location Protocol (see section 17.2.)
-
- The Directory Agent may return a server error in the acknowledgment.
- This error is carried in the Error Codes field of the service
- location message header. A Directory Agent MUST decline to register
- a service if it is specified with an unsupported scope. In this case
- a SCOPE_NOT_SUPPORTED error is returned in the SrvAck. A Directory
- Agent MUST NOT accept Service Registrations which have an unsupported
- scope unless it is an unscoped Directory Agent, in which case it MUST
- accept all Service Registrations.
-
- An unscoped Service Registration will match all requests. A request
- which specifies a certain scope will therefore return services which
- have that scope and services which are unscoped. It is strongly
- suggested that one should use scopes in all registrations or none.
- See Sections 16 and 3.7 for details.
-
- When the URL entry accompanying a registration also contains an
- authentication block (section 4.3), the DA MUST perform the indicated
- authentication, and subsequently indicate the results in the Service
- Acknowledgement message.
-
- 10. Service Acknowledgement Message Format
-
- A Service Acknowledgement is sent as the result of a DA receiving and
- processing a Service Registration or Service Deregistration. An
- acknowledgment indicating success 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) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 35]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Error Code may have one of the following values:
-
- 0 Success
-
- PROTOCOL_PARSE_ERROR
- A DA returns this error when the SrvReg or SrvDereg is
- received which cannot be parsed or the declared string
- lengths overrun the message.
-
- INVALID_REGISTRATION
- A DA returns this error when a SrvReg or SrvDeReg is
- invalid. For instance, an invalid URL, unknown or
- malformed attributes, or deregistering an unregistered
- service all cause this error to be reported.
-
- SCOPE_NOT_SUPPORTED
- A DA which is configured to have a scope will return this
- error if it receives a SrvReq which is set to have a
- scope which it does not support.
-
- CHARSET_NOT_UNDERSTOOD
- If the DA receives a SrvReg or SrvDereg in a character
- set which it does not support, it will return this error.
-
- AUTHENTICATION_ABSENT
- If DA has been configured to require an authentication
- for any service registered in the requested scope, and
- there are no authentication blocks in the registration,
- the DA will return this error.
-
- AUTHENTICATION_FAILED
- If the registration contains an authentication block
- which fails to match the correct result as calculated
- (see section 4.3) over the URL or attribute data to be
- authenticated, the DA will return this error.
-
- If the Directory Agent accpets a Service Registration, and already
- has an existing entry, it updates the existing entry with the new
- lifetime information and possibly new attributes and new attribute
- values. Otherwise, if the registration is acceptable (including all
- necessary authentication checks) the Directory Agent creates a new
- entry, and sets the 'F' bit in the Service Acknowledgement returned
- to the Service Agent.
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 36]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 11. Service Deregister Message Format
-
- When a service is no longer available for use, the Service Agent must
- deregister itself from Directory Agents that it has been registered
- with. A service uses the following PDU to deregister itself.
-
- 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 = SrvDereg) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of URL | URL |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ URL of Service to Deregister, contd. \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | (if present) authentication block .....
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of <tag spec> string | <tag spec> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <tag spec>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- 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 message. Once the Service
- Agent receives an acknowledgment indicating success, it can assume
- that the service is no longer advertised by the Directory Agent. The
- Error Code in the Acknowledgment of the Service Deregistration may
- have the same values as described in section 10.
-
- The Service Deregister Information sent to the directory agent has
- the following form:
-
- service:<srvtype>://<addr-spec>
- Attribute tags (if any): ATTR1,KEYWORD,ATTR2
-
- This will deregister the specified attributes from the service
- information from the directory agent. If no attribute tags are
- included, the entire service information is deregistered in every
- language and every scope it was registered in. To deregister the
- printer from the preceding example, use:
-
- service:lpr://igore.wco.ftp.com:515/draft
-
-
-
-
- Veizades, et. al. Standards Track [Page 37]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- If the service was originally registered with a URL entry containing
- a URL authentication block, then the Service Deregistration message
- header MUST have the 'U' bit set, and the URL entry is then followed
- by the authentication block, with the authenticator calculated over
- the URL data, the timestamp, and the length of the authenticator as
- explained in section 4.3. In this calculation, the lifetime of the
- URL data is considered to be zero, no matter what the current value
- for the remaining lifetime of the registered URL.
-
- 12. Attribute Request Message Format
-
- The Attribute Request is used to obtain attribute information. The
- UA supplies a request and the appropriate attribute information is
- returned.
-
- If the UA supplies only a Service Type, then the reply includes all
- attributes and all values for that Service Type. The reply includes
- only those attributes for which services exist and are advertised by
- the DA or SA which received the Attribute Request. Since different
- instances of a given service can, and very likely will, have
- different values for the attributes defined by the Service Type, the
- User Agent must form a union of all attributes returned by all
- service Agents. The Attribute information will be used to form
- Service Requests.
-
- If the UA supplies a URL, the reply will contain service information
- corresponding to that URL.
-
- Attribute Requests include a 'select clause'. This may be used to
- limit the amount of information returned. If the select clause is
- empty, all information is returned. Otherwise, the UA supplies a
- comma delimited list of attribute tags and keywords. If the
- attribute or keyword is defined for a service, it will be returned in
- the Attribute Reply, along with all registered values for that
- attribute. If the attribute selected has not been registered for
- that URL or Service Type, the attribute or keyword information is
- simply not returned.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 38]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Attribute Request message has the following form:
-
- 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) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |length of prev resp list string|<Previous Responders Addr Spec>|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Previous Responders Addr Spec>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of URL | URL |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ URL, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of <Scope> | <Scope> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Scope>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | length of <select-list> | <select-list> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <select-list>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- The <Previous Responder Address List> functions exactly as introduced
- in Section 7. See also Section 20.1.
-
- The URL can take two forms: Either it is simply a Service Type, such
- as "service:http:", or it can be a URL, such as
- "service:lpr://igore.wco.ftp.com:515/draft". In the former case, all
- attributes and the full range of values for each attribute for the
- Service Type is returned. In the latter case, only the attributes
- for the service whose URL is defined are returned.
-
- The Scope String is provided so that Attribute Requests for Service
- Types can be made so that only the Attribute information pertaining
- to a specific scope will be returned. This field is ignored in the
- case when a full URL is sent in the Attribute Request. The rules for
- encoding of the Scope String are given in Section 5.4.
-
-
-
- Veizades, et. al. Standards Track [Page 39]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The select list takes the form:
-
- <select-list> ::= <select-item> |
- <select-item> ',' <select-list>
-
- <select-item> ::= <keyword> | <attr-tag> | <partial-tag> '*'
-
- <partial-tag> ::= the partial class name of an attribute
- If followed by an '*', it matches all class names
- which begin with the partial tag. If preceded by
- a partial tag. If both preceded and followed by
- '*' it matches all class names which contain the
- partial tag.
-
- For definitions of <attr-tag> and <keyword> see 5.4.
-
- An example of a select-list following the printer example is:
-
- PAGES PER MINUTE, UNRESTRICTED_ACCESS, LOCATION
-
- If sent to a Directory Agent, the number of previous responders is
- zero and there are no Previous Responder Address Specification.
- These fields are only used for repeated multicasting, exactly as for
- the Service Request.
-
- 13. Attribute Reply Message Format
-
- An Attribute Reply Message takes the form:
-
- 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) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Error Code | length of <attr-list> string |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <attr-list> \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The Error Code may have the following values:
-
- 0 Success
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 40]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- LANGUAGE_NOT_SUPPORTED
- A SA or DA returns this when a request is received from a
- UA which is in a language for which there is no
- registered Service Information and the request arrived
- with the Monolingual bit set. See Section 17.
-
- PROTOCOL_PARSE_ERROR
- A DA or SA returns this error when a AttrRqst is received
- which cannot be parsed or the declared string lengths
- overrun the message.
-
- SCOPE_NOT_SUPPORTED
- A DA which is configured to have a scope will return this
- error if it receives an AttrRqst which is set to have a
- scope which it does not support. SAs will silently
- discard multicast AttrRqst messages for scopes they do
- not support.
-
- CHARSET_NOT_UNDERSTOOD
- If the DA receives an AttrRqst in a character set which
- it does not support, it will return this error. SAs will
- silently discard multicast AttrRqst messages which arrive
- using character sets they do not support.
-
- The <attr-list> (attribute list) has the same form as the attribute
- list in a Service Registration, see Section 20.3 for a formal
- definition of this field.
-
- An Attribute Request for "lpr" might elicit the following reply
- (UNRESTRICTED_ACCESS is a keyword):
-
- (PAPER COLOR=WHITE,BLUE),
- (PAPER SIZE=LEGAL,LETTER,ENVELOPE,TRACTOR FEED),
- UNRESTRICTED_ACCESS,
- (PAGES PER MINUTE=1,3,12),
- (LOCATION=12th, NEAR ARUNA'S OFFICE),
- (QUEUES=LEGAL,LETTER,ENVELOPE,LETTER HEAD)
-
- If the message header has the 'A' bit set, the Attribute Reply will
- have an Attribute Authentication block set. In this case, the
- Attribute Authenticator must be returned with the entire list of
- attributes, exactly as it was registered by an SA in a protected
- scope. In this case, the URL was registered in a protected scope and
- the UA included a URL but not a select clause. If the AttrRqst
- specifies that only certain attributes are to be returned, the DA
- does not (typically cannot) compute a new Authenticator so it simply
- returns the attributes without an authenticator block.
-
-
-
-
- Veizades, et. al. Standards Track [Page 41]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A UA which wishes to obtain authenticated attributes for a service in
- a protected scope MUST therefore must include a particular URL and no
- select list with the AttrRqst.
-
- 14. Directory Agent Advertisement Message Format
-
- Directory Agent Advertisement Messages have the following format:
-
- 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 = DAAdvert) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Error Code | Length of URL |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ URL \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length of <Scope-list> | <Scope-list> |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- \ <Scope-list>, continued \
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The Error Code is set when a DA Advertisement is returned as the
- result of a Service Request. It will always be set to 0 in the case
- of an unsolicited DA Advertisement. The Error Code may take the
- values specified in Section 6.
-
- The URL corresponds to the Directory Agent's location. The <Scope-
- list> is a comma delimited list of scopes which the DA supports, in
- the following format:
-
- <Scope-list> ::= <Scope> | <Scope-list> ',' <Scope>
- <Scope> ::= String representing a scope
-
- See Section 5.4 for the lexical rules regarding <Scope>.
-
- DA Advertisements sent in reply to a Directory Agent Discovery
- Request has the same format as the unsolicited DA Advertisement, for
- example:
-
- URL: service:directory-agent://SLP-RESOLVER.CATCH22.COM
- SCOPE List: ADMIN
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 42]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- The Directory Agent can be reached at the Address Specification
- returned, and supports the SCOPE called "ADMIN".
-
- 15. Directory Agents
-
- 15.1. Introduction
-
- A Directory Agent acts on behalf of many Service Agents. It acquires
- information from them and acts as a single point of contact to supply
- that information to User Agents.
-
- The queries that a User Agent multicasts to Service Agents (in an
- environment without a Directory Agent) are the same as queries that
- the User Agent might unicast to a Directory Agent. A User Agent may
- cache information about the presence of alternate Directory Agents to
- use in case a selected Directory Agent fails.
-
- Aside from enhancing the scalability of the protocol (see section
- 3.7), running multiple DAs provides robustness of operation. The DAs
- may have replicated service information which remain accessible even
- when one of the DAs fail. Directory Agents, in the future, may use
- mechanisms outside of this protocol to coordinate the maintenance of
- a distributed database of Service Location information, and thus
- scale to enterprise networks or larger administrative domains.
-
- Each Service Agent must register with all DAs they are configured to
- use. UAs may choose among DAs they are configured to use.
-
- Locally, Directory Agent consistency is guaranteed using mechanisms
- in the protocol. There isn't any Directory to Directory Agent
- protocol yet. Rather, passive detection of DAs by SAs ensures that
- eventually service information will be registered consistently
- between DAs. Invalid data will age out of the Directory Agents
- leaving only transient stale registrations even in the case of a
- failure of a Service Agent.
-
- 15.2. Finding Directory Agents
-
- A User or Service Agent may be statically configured to use a
- particular DA. This is discouraged unless the application resides on
- a network where any form of multicast or broadcast is impossible.
-
- Alternatively, a host which uses DHCP [2, 11] may use it to obtain a
- Directory Agent's address. DHCP options 78 and 79 have been assigned
- for this purpose [21].
-
- The third way to discover DAs is dynamically. This is done by
- sending out a Directory Agent Discovery request (see Section 5.2).
-
-
-
- Veizades, et. al. Standards Track [Page 43]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Lastly, the agent may be informed passively as follows:
-
- When a Directory Agent first comes on-line it sends an unsolicited DA
- Advertisement to the Service Location general multicast address. If
- a DA supports a particular scope or set of scopes these are placed in
- the reply. The class for this attribute is 'SCOPE'.
-
- Every CONFIG_INTERVAL_9 a Directory Agent will send an unsolicited DA
- Advertisement. This will ensure that eventually it will be
- discovered by all applications which are concerned.
-
- When a Directory Agent first comes up it begins with 0 as its XID,
- and increments this by one each time it sends an unsolicited DA
- Advertisement. When the counter wraps, it should go from 0xFFFF to
- 0x0100, not 0.
-
- If the Directory Agent has stored all of the service information in a
- nonvolatile store, it should initially set the XID to 0x100, as it is
- not coming up 'stateless.' If it stores service registrations in
- memory only, it will restart without any state. It should indicate
- this by resetting its XID to 0.
-
- All Service Agents which receive the unsolicited DA Advertisement
- should examine its XID. If the Directory Agent has never before been
- heard from or if the XID is less than it was previously and less than
- 256, the Service Agent should assume the DA does not have its service
- registration, even if it once did. If this is the case and the DA
- has the proper scope, the SA should register all service information
- with the Directory Agent, after waiting a random interval
- CONFIG_INTERVAL_10.
-
- When a Service Agent or User Agent first comes on-line it must issue
- a Directory Agent Discovery Request unless it is using static or DHCP
- configuration, as described in 5.2.
-
- A Service Agent registers information with ALL newly discovered
- Directory Agents when either of the above two events take place.
- When scopes are being used, a Service Agent SHOULD 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.
- Services MUST be registered with DAs that support their scope and
- those which have no scope, unless specifically configured not to do
- so (see section 22.1.)
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 44]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Once a User Agent becomes aware of a Directory Agent it will unicast
- its queries there. In the event that more than one Directory Agent
- is 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.
-
- The protocol will cause all DAs (of the same scope) to eventually
- obtain consistent information. Thus one DA should be as good as any
- other for obtaining service information. There may be temporary
- inconsistencies between DAs.
-
- 16. Scope Discovery and Use
-
- The scope mechanism in the Service Location Protocol enhances its
- scalability. The primary use of scopes is to provide the capability
- to organize a site network along administrative 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 site network 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 configured. The semantics and language of the
- strings used to describe the scope are almost entirely the choice of
- the administrative entity of the particular domain in which these
- scopes exist. The values of SCOPE should be configurable, so the
- system administrator can set its value. The scopes "LOCAL" and
- "REMOTE" are reserved and SHOULD NOT be used. Use of these reserved
- values is to be defined in a future protocol document.
-
- Services with the attribute SCOPE should only be registered with DAs
- which support the same scope or DAs which have no scope.
-
- Directory Agents advertise their available scopes. A Service Agent
- may then choose a scope in which to register, and SHOULD register
- with all Directory Agents in that scope, as well as all DAs which
- have no scope. Failure to be comprehensive in registration according
- to this rule will mean that the service advertisement may not be
- available to all User Agents.
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 45]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A Directory Agent which has a scope will return advertisements in
- response to Directory Agent Discovery requests with the scope
- information included. Note that the "service:directory-agent" scheme
- is registered with the IANA naming authority (which is automatically
- selected by leaving the Naming Authority field empty.)
-
- The query:
-
- directory-agent/MATH DEPT//
-
- Could receive the following DA Advertisement:
-
- Returned URL: service:directory-agent://diragent.blah.edu
- Returned SCOPE: MATH DEPT
-
- The same Directory Agent if it had no scope value would reply:
-
- Returned URL: service:directory-agent://diragent.void.com
- Returned SCOPE:
-
- If a Directory Agent supported more than one scope it would reply as:
-
- Returned URL: service:directory-agent://srv.domain.org
- Returned SCOPE: MATH DEPT,ENGLISH DEPT,CS DEPT
-
- A DA which has no scope will reply to any Directory Agent Discovery
- Request.
-
- Being a member of a scope means that an agent SHOULD use those
- Directory Agents that support its scope. User Agents send all
- requests to DAs which support the indicated scope. Services are
- registered with the DA(s) in their scope. For a UA to find a service
- that is registered in a particular scope it must send requests to 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, unless some external authorization
- mechanism is added to limit access.
-
- 16.1. Protected Scopes
-
- Scope membership MAY also define the security access and
- authorization for services in the scope; such scopes are called
- protected scopes. If a User Agent wishes to be sure that Service
- Agents are authorized to provide the service they advertise, then the
- User Agent should request services from a protected scope which has
- been configured to have the necessary authentication mechanism and
- keys distributed to the Service Agents within the scope. A directory
-
-
-
- Veizades, et. al. Standards Track [Page 46]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- agent distributing URLs for services in a protected scope will reject
- any registrations or deregistrations for service agents which cannot
- provide cryptographically strong authentication to prove their
- authorization to provide the services.
-
- For instance, if a campus registrar wishes to find a working printer
- to produce student grade information for mailing, the registrar would
- require the printing user agent to transmit the printable output only
- to those printing Service Agents which have been registered in the
- appropriate protected scope. Notice that each service agent is,
- under normal circumstances, validated two times: once when
- registering with the directory agent, and once when the user agent
- validates the URL received with the Service Reply. This protects
- against the possibilities of malicious Directory Agents as well as
- malicious Service Agents.
-
- Note that services in protected scopes provide separate
- authentication for their URL entry, and for their attributes. This
- follows naturally from the needs of the protocol operation. User
- Agents which specify a service type and attributes needed for service
- in that service type will not receive attribute information from the
- directory agent; they will only receive the appropriate URL entries.
- Only the information returned needs to be authenticated.
-
- User agents which receive attribute information for a particular URL
- (see section 12), on the other hand, need to authenticate the
- attributes when they are returned (see section 13). In this case,
- there may be much more data to authenticate, but this operation is
- also performed much less often, usually only while the user is
- browsing the available network resources.
-
- 17. Language and Character Encoding Issues
-
- All Service Registrations declare the language in which the strings
- in the service attributes are written by specifying the appropriate
- code in the message header. For each language the Service advertises
- a separate registration takes place. Each of these registrations
- uses the same URL to indicate that they refer to the same service.
-
- If a Service is fully deregistered (the URL is given in the Service
- Deregister request, without any attribute information) then the
- Service needs to be deregistered only once. This will effectively
- deregister the service in all languages it has been registered in.
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 47]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- If, on the other hand, attribute information is included in the
- Service Deregistration request, a separate Service Deregistration of
- selected attributes must be undertaken in each language in which
- service information has been provided to the DA by a Service Agent.
- Service Registrations in different languages are mutually
- unintelligible. They share no information except for their service
- type and URL with which they were registered. No attempt is made to
- match queries with "language independence." Instead, queries are
- handled using string matching against registrations in the same
- language as the query.
-
- Service Types which are standardized will have definitions for all
- attributes and value strings. Official translations to other
- languages of the attribute tags and values may be created and
- submitted as part of the standard; this is not feasible for all
- languages. For those languages which are not defined as part of the
- Service Type, a best effort translation of the standard definitions
- of the Service type's attribute strings MAY be used.
-
- All Service Requests specify a requested language in the message
- header. The Directory Agent or Service Agent will respond in the
- same language as the request, if it has a registration in the same
- language as the request. If this language is not supported, and the
- Monolingual bit is not specified, a reply can be sent in the default
- language (which is English.) If the 'monolingual bit' flag in the
- header is set and the requested language is not supported, a SrvRply
- is returned with the error field set to LANGUAGE_NOT_SUPPORTED.
-
- If a query is in a supported language on a SA or DA, but has a
- different dialect than the available service information, the query
- MUST be serviced on a best-effort basis. If possible, the query
- should be matched against the same dialect. If that is not possible,
- it MAY be matched against any dialect of the same language.
-
- 17.1. Character Encoding and String Issues
-
- Values for character encoding can be found in IANA's database
- http://www.isi.edu/in-notes/iana/assignments/character-sets
- and have the values referred by the MIBEnum value.
-
- The encoding will determine the interpretation of all character data
- which follows the Service Location Protocol header. There is no way
- to mix ASCII and UNICODE, for example. All responses must be in the
- character set of the request, or use US-ASCII. If a request is sent
- to a DA or SA or a registration is sent to a DA, which is unable to
- manipulate or store the character set of the incoming message, the
- request will fail. The SA or DA returns a CHARSET_NOT_UNDERSTOOD
- error in a SrvAck message in this case. Requests using US-ASCII will
-
-
-
- Veizades, et. al. Standards Track [Page 48]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- never fail for this reason, since all SAs and DAs must be able to
- accept this character set.
-
- Certain characters are illegal in certain contexts of the protocol.
- Since the protocol is largely character string based, in some
- contexts characters are used as protocol delimiters. In these cases
- the delimiting characters must not be used as 'data text.'
-
- 17.1.1. Substitution of Character Escape Sequences
-
- The Service Location Protocol has an 'escape mechanism' which is
- consistent with HTTP 2.0 [5] and SGML [15]. If the character
- sequence "" is followed by one or more digits, followed by a
- semicolon ';' the entire sequence is interpreted as a single
- character. The digits are interpreted as a decimal value in the
- character set of the request, as specified by the header. Thus, in
- US-ASCII , would be interpreted as a comma. Substitution of
- these escape strings must be done in all <attr-list> and strings
- present in SrvReq and AttrRqst messages. Only numerical character
- references are accepted, not 'Entity References,' as defined in HTML.
- These escape values should only be used to provide a mechanism for
- including reserved characters in attribute tag and value strings.
-
- The interpretation of these escape values is different than in HTML
- in one respect: In HTML the escape values are considered to be in
- the ISO Latin-1 character set. In Service Location they are
- interpreted in the character set defined in the header of the
- message.
-
- This escape mechanism allows characters like commas to be included in
- attribute tags and values, which would otherwise be illegal as the
- comma is a protocol delimiter.
-
- Attribute tags and values of different languages are considered to be
- mutually unintelligible. A query in one language SHOULD use service
- information registered in that language.
-
- 17.2. Language-Independent Strings
-
- Some strings, such as Service Type names, have standard definitions.
- These strings should be considered as tokens and not as words in a
- language to be translated.
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 49]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Reserved String Section xDefinition
- --------------- ------- --------------------------------------
- SCOPE 3, 15 Used to limit the matching of requests.
- SERVICE 6, 9 The URL scheme of all Service Location
- information registered with a DA or
- returned from a Service Request.
- <srvtype> 20.2.1 Used in all service registrations
- and replies.
- domain names 20.4 A fully qualified domain name, used
- in registrations and replies.
- IANA 3.3 The default naming authority.
- LOCAL 16 Reserved.
- REMOTE 16 Reserved.
- TRUE 20.5 Boolean true.
- FALSE 20.5 Boolean false.
-
-
- 18. Service Location Transactions
-
- 18.1. Service Location Connections
-
- When a Service Location Request or Attribute Request results in a UDP
- 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. The reply will be returned
- with the overflow bit set (see section 4). The reply will contain as
- much data as will fit into a single datagram. If no MTU information
- is available for the route, assume that the MTU is 1400; this value
- is configurable (see section 22).
-
- When a request results in overflowed data that cannot be correctly
- parsed (say, because of duplicate or dropped IP datagrams), a User
- Agent that wishes to reliably obtain the overflowed data must
- establish a TCP connection with the Directory Agent or Service Agent
- with the data. When the request is sent again with a new XID, the
- reply is returned over the connection.
-
- When registration data exceeds one datagram in length, the Service
- Registration should be made by establishing a connection with a
- Directory Agent and sending the registration over the connection
- stream.
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 50]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Directory Agents and Service Agents must respond to connection
- requests; services whose registration data can overflow a datagram
- must be able to use TCP to send the registration. User Agents should
- be able to make Service and Attribute Requests using TCP. If they
- fail to implement this, they must be able to interpret partial
- replies and/or reissue requests with more selective criteria to
- reduce the size of the replies.
-
- A connection initiated by an Agent may be used for a single
- transaction. It may also be used for multiple transactions. Since
- there are length fields in the message headers, the Agents may send
- multiple requests along a connection and read the return stream for
- acknowledgments and replies.
-
- The initiating agent is responsible for closing the TCP connection.
- The DA should wait at least CONFIG_INTERVAL_12 before closing an idle
- connection. DAs and SAs SHOULD eventually close idle connections to
- ensure robust operation, even when the agent which opened a
- connection neglects to close it.
-
- 18.2. No Synchronous Assumption
-
- There is no requirement that one transaction complete before a given
- host begins another. An agent may have multiple outstanding
- transactions, initiated either using UDP or TCP.
-
- 18.3. Idempotency
-
- All Service Location actions are idempotent. Of course registration
- and deregistration will change the state of a DA, but repeating these
- actions with the same XID will have exactly the same effect each
- time. Repeating a registration with a new XID has the effect of
- extending the lifetime of the registration.
-
- 19. Security Considerations
-
- The Service Location Protocol provides for authentication of Service
- Agents as part of the scope mechanism, and consequently, integrity of
- the data received as part of such registrations. Service Location
- does not provide confidentiality. Because the objective of this
- protocol is to advertise services to a community of users,
- confidentiality might not generally be needed when this protocol is
- used in non-sensitive environments. Specialized schemes might be
- able to provide confidentiality, if needed in the future. Sites
- requiring confidentiality should implement the IP Encapsulating
- Security Payload (ESP) [3] to provide confidentiality for Service
- Location messages.
-
-
-
-
- Veizades, et. al. Standards Track [Page 51]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Using unprotected scopes, an adversary might easily use this protocol
- to advertise services on servers controlled by the adversary and
- thereby gain access to users' private information. Further, an
- adversary using this protocol will find it much easier to engage in
- selective denial of service attacks. Sites that are in potentially
- hostile environments (e.g. are directly connected to the Internet)
- should consider the advantages of distributing keys associated with
- protected scopes prior to deploying the sensitive directory agents or
- service agents.
-
- Service Location is useful as a bootstrap protocol. It may be used
- in environments in which no preconfiguration is possible. In such
- situations, a certain amount of "blind faith" is required: Without
- any prior configuration it is impossible to use any of the security
- mechanisms described above. Service Location will make use of the
- mechanisms provided by the Security Area of the IETF for key
- distribution as they become available. At this point it would only
- be possible to gain the benefits associated with the use of protected
- scopes if some cryptographic information can be preconfigured with
- the end systems before they use Service Location. For User Agents,
- this could be as simple as supplying the public key of a Certificate
- Authority. See Appendix B.
-
- 20. String Formats used with Service Location Messages
-
- The following section supplies formal definitions for fields and
- protocol elements introduced in the sections indicated.
-
- Protocol Element Defined in Used in
- ----------------------------------- ------------ ------------
- <Previous Responders' Addr Spec> 20.1 SrvReq
- Service Request <predicate> 5.4 SrvReq
- URL 20.2 SrvReg,
- SrvDereg,
- SrvRply
- <attr-list> 20.3 SrvReg,
- SrvRply,
- AttrRply
- <Service Registration Information> 9 SrvReg
- <Service Deregister Information> 11 SrvDereg
- <Service Type String> 20.2.1 AttrRqst
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 52]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 20.1. Previous Responders' Address Specification
-
- The previous responders' Address Specification is specified as
-
- <Previous Responders' Address Specification> ::=
- <addr-spec> |
- <addr-spec>, <Previous Responders' Address Specification>
-
- i.e., a list separated by commas with no intervening white space.
- The Address Specification is the address of the Directory Agent or
- Service Agent which supplied the previous response. The format for
- Address Specifications in Service Location is defined in section
- 20.4. The comma delimiter is required between each <addr-spec>. The
- use of dotted decimal IP address notation should only be used in
- environments which have no Domain Name Service.
-
- Example:
-
- RESOLVO.NEATO.ORG,128.127.203.63
-
- 20.2. Formal Definition of the "service:" Scheme
-
- A URL with a "service:" scheme is used in the SrvReg, SrvDereg,
- SrvRply and AttrRqst messages in Service Location. URLs are defined
- in RFC 1738 [6]. A URL with the "service:" scheme must contain at
- least:
-
- <url> ::= service:<srvtype>://<addr-spec>
-
- where:
-
- service the URL scheme for Service Location, to return
- Replies.
-
- <srvtype> a string; Service Types may be standardized
- by developing a specification for the "service
- type"-specific part and registering it with IANA.
- See sections 20.2.1 and 3.3.
-
- <addr-spec> the service access point of the service. It is the
- network address or domain name where the service can
- be accessed. See section 20.4.
-
- The "service:" scheme may be followed by any legal URL. The a
- particular service. The protocol used to access the service at the
- given service access <addr-spec> may be implicit in the Service Type
- name. If this is not the case, the Service Type MUST be defined in
- such a way that attribute information will include all necessary
-
-
-
- Veizades, et. al. Standards Track [Page 53]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- configuration and protocol information. A User Agent MUST therefore
- be able to use either a "service:" URL alone or a "service:" URL in
- conjunction with service attributes to make use of a service.
-
- 20.2.1. Service Type String
-
- The Service Type is a string describing the type of service. These
- strings may only be comprised of alphanumeric characters, '+', and
- Type names.
-
- If the Service Type name is followed by a '.' and a string (which
- has the same limitations) the 'suffix' is considered to be the Naming
- Authority of the service. If the Naming Authority is omitted, IANA
- is assumed to be the Naming Authority.
-
- Service Types developed for in-house or experimental use may have any
- name and attribute semantics provided that they do not conflict with
- the standardized Service Types.
-
- 20.3. Attribute Information
-
- The <attr-list> is returned in the Attribute Reply if the Attribute
- Request does not result in an empty result.
-
- <attr-list> ::= <attribute> | <attribute>, <attr-list>
- <attribute> ::= (<attr-tag>=<attr-val-list>) | <keyword>
- <attr-val-list> ::= <attr-val> | <attr-val>, <attr-val-list>
-
- An <attr-list> must be scanned prior to evaluation for all
- occurrences of the string "" followed by one or more digit followed
- by ';'. See Section 17.1.1.
-
- A keyword has only an <attr-tag>, and no values.
-
- A comma cannot appear in an <attr-val>, as the comma is used as the
- multiple value delimiter. Examples of an <attr-list> are:
-
- (SCOPE=ADMINISTRATION)
- (COLOR=RED, WHITE, BLUE)
- (DELAY=10 MINS),BUSY,(LATEST BUILD=10-5-95),(PRIORITY=L,M,H)
-
- The third example has three attributes in the list. Color can take
- on the values red, white and blue. There are several other examples
- of replies throughout the document.
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 54]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 20.4. Address Specification in Service Location
-
- The address specification used in Service Location is:
-
- <addr-spec> ::= [<user>:<password>@]<host>[:<port>]
-
- <host> ::= Fully qualified domain name |
- dotted decimal IP address notation
-
- When no Domain Name Server is available, SAs and DAs must use dotted
- decimal conventions for IP addresses. Otherwise, it is preferable to
- use a fully qualified domain name wherever possible as renumbering of
- host addresses will make IP addresses invalid over time.
-
- Generally, just the host domain name (or address) is returned. When
- there is a non-standard port for the protocol, that should be
- returned as well. Some applications may make use of the
- <user>:<password>@ syntax, but its use is not encouraged in this
- context until mechanisms are established to maintain confidentiality.
-
- Address specification in Service Location is consistent with standard
- URL format [6].
-
- 20.5. Attribute Value encoding rules
-
- Attribute values, and attribute tags are CASE INSENSITIVE for
- purposes of lexical comparison.
-
- Attribute values are strings containing any characters with the
- exception of '(', ')', '=', '>', '<', '/', '*', and ',' (the comma)
- except in the case described below where opaque values are encoded.
- These characters may be included using the character value escape
- mechanism described in section 17.1.1.
-
- While an attribute can take any value, there are three types of
- values which differentiate themselves from general strings:
- Booleans, Integers and Opaque values.
-
- - Boolean values are either "TRUE" or "FALSE". This is the case
- regardless of the language (i.e. in French or Telugu, Boolean
- TRUE is "TRUE", as well as in English.) Boolean attributes can
- take only one value.
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 55]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- - Integer values are expressed as a sequence of numbers. The
- range of allowable values for integers is "-2147483648" to
- "2147483647". No other form of numeric representation is
- interpreted as such except integers. For example, hexadecimal
- numbers such as "0x342" are not interpreted as integers, but as
- strings.
-
- - Opaque values (i.e. binary values) are expressed in radix-64
- notation. The syntax is:
-
- <opaque-val> ::= (<len>:<radix-64-data>)
- <len> ::= number of bytes of the original data
- <radix-64-data> ::= radix-64 encoding of the original data
-
- <len> is a 16-bit binary number. Radix-64 encodes every 3 bytes
- of binary data into 4 bytes of ASCII data which is in the range
- of characters which are fully printable and transferable by mail.
- For a formal definition of the Radix-64 format see RFC 1521 [7],
- MIME Part One, Section 5.2 Base64 Content Transfer Encoding, page
- 21.
-
- 21. Protocol Requirements
-
- In this section are listed various protocol requirements for User
- Agents, Service Agents, and Directory Agents.
-
- 21.1. User Agent Requirements
-
- A User Agent MAY:
-
- - Provide a way for the application to configure the default DA, so
- that it can be used without needing to find it each initially.
-
- - Be able to request the address of a DA from DHCP, if configured
- to do so.
-
- - Ignore any unauthenticated Service Reply.
-
- - Be able to issue requests in any language or character set
- provided that it can switch to the default language and character
- set if the request can not be serviced by DAs and SAs at the
- site.
-
- - Require an authentication block in any URL entry returned as
- part of a Service Request, before making use of the advertised
- service.
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 56]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A User Agent SHOULD:
-
- - Try to contact DHCP to obtain the address of a DA.
-
- - Use a scope in all requests, if possible.
-
- - Issue requests to scoped DAs if the UA has been configured with a
- scope.
-
- - Listen on the Service Location General Multicast address for
- unsolicited DA Advertisements. This will increase the set of
- Directory Agents available to it for making requests. See
- Section 15.2.
-
- - Be able to be configured to require an authentication block in
- any received URL entry advertised as belonging to a protected
- scope, before making use of the service.
-
- If the UA does not listen for DA Advertisements, new DAs will not be
- passively detected. A UA which does not have a configured DA and has
- not yet discovered one and is not listening for unsolicited DA
- Advertisements will remain ignorant of DAs. It may then do a DA
- discovery before each query performed or it may simply use multicast
- queries to Service Agents.
-
- A User Agent MUST:
-
- - Be able to unicast requests and receive replies from a DA.
- Transactions should be made reliable by using retransmission of
- the request if the reply does not arrive within a timeout
- interval.
-
- - Be able to detect DAs using a Directory Agent Discovery request
- issued when the UA starts up.
-
- - Be able to send requests to a multicast address. Service
- Specific Multicast addresses are computed based on a hash of the
- Service Type. See Section 3.6.2.
-
- - Be able to handle numerous replies after a multicast request.
- The implementation may be configurable so it will either return
- the first reply, all replies until a timeout or keep trying till
- the results converge.
-
- - Ignore any unauthenticated Service Reply or Attribute Reply when
- an appropriate IPSec Security Association for that Reply exists.
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 57]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- - Whenever it obtains its IP address from DHCP in the first place,
- also attempt to obtain scope information, and the address of a
- DA, from DHCP.
-
- - Use the IP Authentication Header or IP Encapsulating Payload in
- all Service Location messages, whenever an appropriate IPSec
- Security Association exists.
-
- - Be able to issue requests using the US-ASCII character set.
-
- - If configured to use a protected scope, be able to use
- "md5WithRSAEncryption" [4] to verify the signed data.
-
- 21.2. Service Agent Requirements
-
- A Service Agent MAY be able to:
-
- - Get the address of a local Directory Agent by way of DHCP.
-
- - Accept requests in non-US-ASCII character encodings. This is
- encouraged, especially for UNICODE [1] and UTF-8 [24] encodings.
-
- - Register services with a DA in non-US-ASCII character encodings.
- This is encouraged, especially for UNICODE [1] and UTF-8 [24]
- encodings.
-
- A Service Agent SHOULD be able to:
-
- - Listen to the service-specific multicast address of the service
- it is advertising. The incoming requests should be filtered: If
- the Address Specification of the SA is in the Previous Responders
- Address Specification list, the SA SHOULD NOT respond.
- Otherwise, a response to the multicast query SHOULD be unicast to
- the UA which sent the request.
-
- - Listen for and respond to broadcast requests and TCP connection
- requests, to the Service Location port.
-
- - Be configurable to calculate authentication blocks and thereby
- be enabled to register in protected scopes. This requires that the
- service agent be configured to possess the necessary keys to
- calculate the authenticator.
-
- A Service Agent MUST be able to:
-
- - Listen to the Service Location General Multicast address for
- queries (e.g., Service Type Requests). If the query can be
- replied to by the Service Agent, the Service Agent MUST do so.
-
-
-
- Veizades, et. al. Standards Track [Page 58]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- It MUST check first to make sure it is not on the list of
- 'previous responders.'
-
- - Listen to the Service Location General Multicast address for
- unsolicited DA Advertisements. If one is detected, and the DA
- has the right scope, (or has no scope), all services which are
- currently being advertised MUST be registered with the DA (unless
- configured to only use a single DA (see section 22.1), or the DA
- has already been detected, subject to certain rules (see section
- 15.2)).
-
- - Whenever it obtains its IP address from DHCP in the first place,
- also attempt to obtain scope information, and the address of a
- DA, from DHCP.
-
- - Unicast registrations and deregistrations to a DA. Transactions
- should be made reliable by using retransmission of the request if
- the reply does not arrive within a timeout interval.
-
- - Be able to detect DAs using a Directory Agent Discovery request
- issued when the SA starts up (unless configured to only use a
- single DA, see section 22.1.)
-
- - Use the IP Authentication Header or IP Encapsulating Payload in
- all Service Location messages, whenever an appropriate IPSec
- Security Association exists.
-
- - Be able to register service information with a DA using US-ASCII
- character encoding. It must also be able to reply to requests
- from UAs which use US-ASCII character encoding.
-
- - Reregister with a DA before the Lifetime of registered service
- information elapses.
-
- - If configured to use a protected scope, be able to use
- "md5WithRSAEncryption" [4] to produce the signed data.
-
- 21.3. Directory Agent Requirements
-
- A Directory Agent MAY:
-
- - Accept registrations and requests in non-US-ASCII character
- encodings. This is encouraged, especially for UNICODE [1] and
- UTF-8 [24] encodings.
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 59]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A Directory Agent SHOULD:
-
- - Be able to configure certain scopes as protected scopes, so that
- registrations within those scopes require the calculation of
- cryptographically strong authenticators. This requires that the
- DA be able to possess the keys needed for the authentication, or
- that the DA be able to acquire a certificate generated by a
- trusted Certificate Authority [23], before completing Service
- Registrations for protected scopes.
-
- A Directory Agent MUST be able to:
-
- - Send an unsolicited DA Advertisements to the Service Location
- General Multicast address on startup and repeat it periodically.
- This reply has an XID which is incremented by one each time. If
- the DA starts with state, it initializes the XID to 0x0100. If
- it starts up stateless, it initializes the XID to 0x0000.
-
- - Ignore any unauthenticated Service Registration or Service
- Deregistration from an entity with which it maintains a security
- association.
-
- - Listen on the Directory Agent Discovery Multicast Address for
- Directory Agent Discovery requests. Filter these requests if the
- Previous Responder Address Specification list includes the DA's
- Address Specification.
-
- - Listen for broadcast requests to the Service Location port.
-
- - Listen on the TCP and UDP Service Location Ports for unicast
- requests, registrations and deregistrations and service them.
-
- - Provide a way in which scope information can be used to configure
- the Directory Agent.
-
- - Expire registrations when the service registration's lifetime
- expires.
-
- - When a Directory Agent has been configured with a scope, it MUST
- refuse all requests and registrations which do not have this
- scope. The DA replies with a SCOPE_NOT_SUPPORTED error. There
- is one exception: All DAs MUST respond to DA discovery requests
- which have no scope.
-
- - When a Directory Agent has been configured without a scope, it
- MUST accept ALL registrations and requests.
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 60]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- - Ignore any unauthenticated Service Location messages when an
- appropriate IPSec Security Association exists for that request.
-
- - Use the IP Authentication and IP Encapsulating Security Payload
- in Service Location messages whenever an appropriate IPSec
- Security Association exists.
-
- - Accept requests and registrations in US-ASCII.
-
- - If configured with a protected scope, be able to authenticate (at
- least by using "md5WithRSAEncryption" [4]) Service Registrations
- advertising services purporting to belong to such configured
- protected scopes.
-
- 22. Configurable Parameters and Default Values
-
- There are several configuration parameters for Service Location.
- Default values are chosen to allow protocol operation without the
- need for selection of these configuration parameters, but other
- values may be selected by the site administrator. The configurable
- parameters will allow an implementation of Service Location to be
- more useful in a variety of scenarios.
-
- Multicast vs. Broadcast
- All Service Location entities must use multicast by
- default. The ability to use broadcast messages must be
- configurable for UAs and SAs. Broadcast messages are to
- be used in environments where not all Service Location
- entities have hardware or software which supports
- multicast.
-
- Multicast Radius
- Multicast requests should be sent to all subnets in a
- site. The default multicast radius for a site is 32.
- This value must be configurable. The value for the
- site's multicast TTL may be obtained from DHCP using an
- option which is currently unassigned.
-
- Directory Agent Address
- The Directory Agent address discovery mechanism must be
- configurable. There are three possibilities for this
- configuration: A default address, no default address and
- the use of DHCP to locate a DA as described in section
- 15.2. The default value should be use of DHCP, with "no
- default address" used if DHCP does not respond. In this
- case the UA or SA must do a Directory Agent Discovery
- query.
-
-
-
-
- Veizades, et. al. Standards Track [Page 61]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Directory Agent Scope Assignment
- The scope or scopes of a DA must be configurable. The
- default value for a DA is to have no scope if not
- otherwise configured.
-
- Path MTU
- The default path MTU is assumed to be 1400. This value
- may be too large for the infrastructure of some sites.
- For this reason this value MUST be configurable for all
- SAs and DAs.
-
- Keys for Protected Scopes
-
- If the local administration designates certain scopes as
- "protected scopes", the agents making use of those scopes
- have to be able to acquire keys to authenticate data sent
- by services along with their advertised URLs for services
- within the protected scope. For instance, service agents
- would use a private key to produce authentication data.
- By default, service agents use "md5WithRSAEncryption" [4]
- to produce the signed data, to be be included with
- service registrations and deregistrations (see appendix
- B, 4.3). This authentication data could be verified by
- user agents and directory agents that possess the
- corresponding public key.
-
- 22.1. Service Agent: Use Predefined Directory Agent(s)
-
- A Service Agent's default configuration is to do passive and active
- DA discovery and to register with all DAs which are properly scoped.
-
- A Service Agent SHOULD be configurable to allow a special mode of
- operation: They will use only preconfigured DAs. This means they
- will *NOT* actively or passively detect DAs.
-
- If a Service Agent is configured this way, knowledge of the DA must
- come through another channel, either static configuration or by the
- use of DHCP.
-
- The availability of the Service information will not be consistent
- between DAs. The mechanisms which achieve eventual consistency
- between DAs are ignored by the SA, so their service information will
- not be distributed. This leaves the SA open to failure if the DA
- they are configured to use fails.
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 62]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- 22.2. Time Out Intervals
-
- These values should be configurable in case the site deploying
- Service Location has special requirements (such as very slow links.)
-
- Interval name Section Default Value Meaning
- ----------------- ------- ------------- -----------------------
- CONFIG_INTERVAL_0 4.1 1 minute Cache replies by XID.
- CONFIG_INTERVAL_1 4.4 10800 seconds registration Lifetime,
- (ie. 3 hours)after which ad expires
- CONFIG_INTERVAL_2 5 each second, Retry multicast query
- backing off until no new values
- gradually arrive.
- CONFIG_INTERVAL_3 5 15 seconds Max time to wait for a
- complete multicast query
- response (all values.)
- CONFIG_INTERVAL_4 9 3 seconds Wait to register on
- reboot.
- CONFIG_INTERVAL_5 5.2 3 seconds Retransmit DA discovery,
- try it 3 times.
- CONFIG_INTERVAL_6 5.2 5 seconds Give up on requests sent
- to a DA.
- CONFIG_INTERVAL_7 5.2 15 seconds Give up on DA discovery
- CONFIG_INTERVAL_8 5.1 15 seconds Give up on requests
- sent to SAs.
- CONFIG_INTERVAL_9 15.2 3 hours DA Heartbeat, so that SAs
- passively detect new DAs.
- CONFIG_INTERVAL_10 15.2 1-3 seconds Wait to register services
- on passive DA discovery.
- CONFIG_INTERVAL_11 9 1-3 seconds Wait to register services
- on active DA discovery.
- CONFIG_INTERVAL_12 18.1 5 minutes DAs and SAs close idle
- connections.
-
- A note on CONFIG_INTERVAL_9: While it might seem advantageous to
- have frequent heartbeats, this poses a significant risk of generating
- a lot of overhead traffic. This value should be kept high to prevent
- routine protocol operations from using any significant bandwidth.
-
- 23. Non-configurable Parameters
-
- IP Port number for unicast requests to Directory Agents:
-
- UDP and TCP Port Number: 427
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 63]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Multicast Addresses
-
- Service Location General Multicast Address: 224.0.1.22
- Directory Agent Discovery Multicast Address: 224.0.1.35
-
- A range of 1024 contiguous multicast addresses for use as Service
- Specific Discovery Multicast Addresses will be assigned by IANA.
-
- Error Codes:
-
- No Error 0
- LANGUAGE_NOT_SUPPORTED 1
- PROTOCOL_PARSE_ERROR 2
- INVALID_REGISTRATION 3
- SCOPE_NOT_SUPPORTED 4
- CHARSET_NOT_UNDERSTOOD 5
- AUTHENTICATION_ABSENT 6
- AUTHENTICATION_FAILED 7
-
-
- 24. 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. Harry
- Harjono and Charlie Perkins supplied the basis for the URL based wire
- protocol in their Resource Discovery Protocol. Thanks also to
- Peerlogic, Inc. for supporting this work. Lastly, thanks to Jeff
- Schiller for his help in shaping the security architecture specified
- in this document.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 64]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- A. Appendix: 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 [14] is Infoterm, Osterreiches Normungsinstitut (ON),
- Postfach 130, A-1021 Vienna, Austria. Contains additions from ISO
- 639/RA Newsletter No.1/1989. See also RFC 1766.
-
- aa Afar ga Irish mg Malagasy
- ab Abkhazian gd Scots Gaelic mi Maori
- af Afrikaans gl Galician mk Macedonian
- am Amharic gn Guarani ml Malayalam
- ar Arabic gu Gujarati mn Mongolian
- as Assamese mo Moldavian
- ay Aymara ha Hausa mr Marathi
- az Azerbaijani he Hebrew ms Malay
- hi Hindi mt Maltese
- ba Bashkir hr Croatian my Burmese
- be Byelorussian hu Hungarian
- bg Bulgarian hy Armenian na Nauru
- bh Bihari ne Nepali
- bi Bislama ia Interlingua nl Dutch
- bn Bengali; Bangla in Indonesian no Norwegian
- bo Tibetan ie Interlingue
- br Breton ik Inupiak oc Occitan
- is Icelandic om (Afan) Oromo
- ca Catalan it Italian or Oriya
- co Corsican ja Japanese
- cs Czech jw Javanese pa Punjabi
- cy Welsh pl Polish
- ka Georgian ps Pashto, Pushto
- da Danish kk Kazakh pt Portuguese
- de German kl Greenlandic
- dz Bhutani km Cambodian qu Quechua
- rw Kinyarwanda
- el Greek kn Kannada rm Rhaeto-Romance
- en English ko Korean rn Kirundi
- eo Esperanto ks Kashmiri ro Romanian
- es Spanish ku Kurdish ru Russian
- et Estonian ky Kirghiz
- eu Basque
- la Latin
- fa Persian ln Lingala
- fi Finnish lo Laothian
- fj Fiji lt Lithuanian
- fo Faeroese lv Latvian, Lettish
- fr French
- fy Frisian
-
-
-
- Veizades, et. al. Standards Track [Page 65]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- sa Sanskrit ta Tamil ug Uigar
- sd Sindhi te Telugu uk Ukrainian
- sg Sangro tg Tajik ur Urdu
- sh Serbo-Croatian th Thai uz Uzbek
- si Singhalese ti Tigrinya
- sk Slovak tk Turkmen vi Vietnamese
- sl Slovenian tl Tagalog vo Volapuk
- sm Samoan tn Setswana
- sn Shona to Tonga wo Wolof
- so Somali tr Turkish
- sq Albanian ts Tsonga xh Xhosa
- sr Serbian tt Tatar
- ss Siswati tw Twi yi Yiddish
- st Sesotho yo Yoruba
- su Sundanese
- sv Swedish za Zhuang
- sw Swahili zh Chinese
- zu Zulu
-
-
- B. SLP Certificates
-
- Certificates may be used in SLP in order to distribute the public
- keys of trusted protected scopes. Assuming public keys, this
- appendix discusses the use of such certificates in the Service
- Location Protocol.
-
- Possession of the private key of a protected scope is equivalent to
- being a trusted SA. The trustworthiness of the protected scope
- depends upon all of these private keys being held by trusted hosts,
- and used only for legitimate service registrations and
- deregistrations.
-
- With access to the proper Certificate Authority (CA), DAs and UAs do
- not need (in advance) hold public keys which correspond to these
- protected scopes. They do require the public key of the CA. The CA
- produces certificates using its unique private key. This private key
- is not shared with any other system, and must remain secure. The
- certificates declare that a given protected scope has a given public
- key, as well as the expiration date of the certificate.
-
- The ASCII (mail-safe) string format for the certificate is the
- following list of tag and value pairs:
-
- "certificate-alg=" 1*ASN1CHAR CRLF
- "scope-charset=" 1*DIGIT CRLF
- "scope=" 1*RADIX-64-CHAR CRLF
- "timestamp=" 16HEXDIGIT CRLF
-
-
-
- Veizades, et. al. Standards Track [Page 66]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- "public-key=" 1*RADIX-64-CHAR CRLF
- "cert-digest=" 1*RADIX-64-CHAR CRLF
-
- ASN1CHAR = DIGIT | '.'
- HEXDIGIT = DIGIT | 'a'..'f' | 'A'..'F'
- RADIX-64-CHAR = DIGIT | 'a'..'z' | 'A'..'Z' | '+' | '/' | '='
-
- The radix-64 notation is described in RFC 1521 [7]. Spaces are
- ignored in the computation of the binary value corresponding to a
- Radix-64 string. If the value for scope, public-key or cert-digest
- is greater than 72 characters, the Radix-64 notation may be broken up
- on to separate lines. The continuation lines must be preceded by one
- or more spaces. Only the tags listed above may start in the first
- column of the certificate string. This removes ambiguity in parsing
- the Radix-64 values (since the tags consist of legal Radix-64
- values.)
-
- The certificate-alg is the ASN.1 string for the Object Identifier
- value of the algorithm used to produce the "cert-digest". The
- scope-charset is a decimal representation of the MIBEnum value for
- the character set in which the scope is represented.
-
- The radix-64 encoding of the scope string will allow the ASCII
- rendering of a scope string any character set.
-
- The 8 byte NTP format timestamp is represented as 16 hex digits.
- This timestamp is the time at which the certificate will expire.
-
- The format for the public key will depend on the type of cryptosystem
- used, which is identified by the certificate-alg. When the CA
- generated the certificate holding the public key being obtained, it
- used the message digest algorithm identified by certificate-alg to
- calculate a digest D on the string encoding of the certificate,
- excepting the cert-digest. The CA then encrypted this value using
- the CA's private key to produce the cert-digest, which is included in
- the certificate.
-
- The CA generates the certificate off-line. The mechanism to
- distibute certificates is not specified in the Service Location
- Protocol, but may be in the future. The CA specifies the algorithms
- to use for message digest and public key decryption. The DA or SA
- need only obtain the certificate, have a preconfigured public key for
- the CA and support the algorithm specified in the certificate-alg in
- order to obtain certified new public keys for protected scopes.
-
- The DA or UA may confirm the certificate by calculating the message
- digest D, using the message digest algorithm identified by the
- certificate-alg. The input to the message digest algorithm is the
-
-
-
- Veizades, et. al. Standards Track [Page 67]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- string encoding of the certificate, excepting the cert-digest. The
- cert-digest is decrypted using the CA's public key to produce D'. If
- D is the same as D', the certificate is legitimate. The public-key
- for the protected scope may be used until the expiration date
- indicated by the certificate timestamp.
-
- The certificate may be distributed along untrusted channels, such as
- email or through file transfer, as it must be verified anyhow. The
- CA's public key must be delivered using a trusted channel.
-
- C. Example of deploying SLP security using MD5 and RSA
-
- In our site, we have a protected scope "CONTROLLED". We generate a
- private key - public key pair for the scope, using RSA. The private
- key is maintained on a secret key ring by all SAs in the protected
- scope. The public key is available to all DAs which support the
- protected scope and to all UAs which will use it.
-
- In order to register or deregister a URL, the data required to be
- authenticated (as described in section 4.3) is digestified using MD5
- [22] to create a digital signature, then encrypted by RSA with the
- protected scope's private key. The output of RSA is used in the
- authenticator data field of the authenticator block.
-
- The DA or UA discovers the appropriate method for verifying the
- authentication by looking inside the authentication block. Suppose
- that the "md5WithRSAEncryption" [4] algorithm has to be used to
- verify the signed data. The DA or UA calculates the message digest
- of the URL Entry by using md5, exactly as the SA did. The
- authenticator block is decrypted using the public key for the
- "CONTROLLED" scope, which is stored in the public key ring of the UA
- or DA under the name "CONTROLLED". If the digest calculated by the
- UA or DA matches that of the SA, the URL Entry has been validated.
-
- D. Example of use of SLP Certificates by mobile nodes
-
- Say a mobile node needs to make use of protected scopes. The mobile
- node is first preconfigured by adding a single public key to its
- public key ring: We will call it the CA-Key. This key will be used
- to obtain SLP certificates in the format described in Appendix B.
- The corresponding private key will be used by the CA to create the
- certificates in the necessary format.
-
- The CA might be operated by a system administrator using a computer
- which is not connected to any networks. The certificate's duration
- will depend on the policy of the site. The duration, scope, and
- public key for the protected scope, are used as input to 'md5sum'.
- This sum is then encrypted with RSA using the CA's private key. The
-
-
-
- Veizades, et. al. Standards Track [Page 68]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- radix 64 encoding of this is added to the mail-safe string based
- certificate encoding defined in Appendix B.
-
- The certificate, say for the protected scope "CONTROLLED" could be
- made available to the mobile node. For example, it might be on a web
- page. The mobile node could then process the certificate in order to
- obtain the public key for the CONTROLLED scope. There is still no
- reason to *trust* this key is really the one to use (as in Appendix
- C). To trust it, calculate the md5 checksum of the ascii encoded
- certificate, excluding the cert-digest. Next, decrypt the cert-
- digest using the CA's public key and RSA. If the cert-digest matches
- the output of MD5, the certificate may be trusted (until it expires).
-
- The mobile node requires only one key (CA-key) in order to obtain
- others dynamically and make use of protected scopes. Notice that we
- do not define any method for access control by arbitrary UAs to SAs
- in protected scopes.
-
- E. Appendix: For Further Reading
-
- Three related resource discovery protocols are NBP and ZIP which are
- part of the AppleTalk protocol family [12], the Legato Resource
- Administration Platform [25], and the Xerox Clearinghouse system
- [20]. Domain names and representation of addresses are used
- extensively in the Service Location Protocol. The references for
- these are RFCs 1034 and 1035 [17, 18]. Example of a discovery
- protocol for routers include Router Discovery [10] and Neighbor
- Discovery [19].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 69]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- References
-
- [1] Unicode Technical Report #4. The unicode standard, version 1.1
- (volumes 1 and 2). Technical Report (ISBN 0-201-56788-1) and
- (ISBN 0-201-60845-6), Unicode Consortium, 1994.
-
- [2] Alexander, S. and R. Droms. DHCP Options and BOOTP Vendor
- Extensions. RFC 2131, March 1997.
-
- [3] Atkinson, R. IP Encapsulating Security Payload. RFC 1827,
- August 1995.
-
- [4] Balenson, D. Privacy Enhancement for Internet Electronic
- Mail: Part III: Algorithms, Modes, and Identifiers. RFC 1423,
- February 1993.
-
- [5] Berners-Lee, T. and D. Connolly. Hypertext Markup Language -
- 2.0. RFC 1866, November 1995.
-
- [6] Berners-Lee, T., L. Masinter, and M. McCahill. Uniform Resource
- Locators (URL). RFC 1738, December 1994.
-
- [7] Borenstein, N. and N. Freed. MIME (Multipurpose Internet Mail
- Extensions) Part One: Mechanisms for Specifying and Describing
- the Format of Internet Message Bodies. RFC 2045, November 1996.
-
- [8] Bradner, Scott. Key words for use in RFCs to Indicate
- Requirement Levels. BCP 14, RFC 2119, March 1997.
-
- [9] CCITT. Specification of the Abstract Syntax Notation One
- (ASN.1). Recommendation X.208, 1988.
-
- [10] Deering, Stephen E., editor. ICMP Router Discovery Messages.
- RFC 1256, September 1991.
-
- [11] Droms, Ralph. Dynamic Host Configuration Protocol. RFC 2131,
- March 1997.
-
- [12] Gursharan, S., R. Andrews, and A. Oppenheimer. Inside
- AppleTalk. Addison-Wesley, 1990.
-
- [13] Guttman, E. The service: URL scheme, November 1996.
- Work In Progress.
-
- [14] Geneva ISO. Code for the representation of names of languages.
- ISO 639:1988 (E/F), 1988.
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 70]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- [15] ISO 8879, Geneva. Information Processing -- Text and Office
- Systems - Standard Generalized Markup Language (SGML).
- <URL:http://www.iso.ch/cate/d16387.html>, 1986.
-
- [16] Mills, D. Simple Network Time Protocol (SNTP) Version 4 for
- IPv4, IPv6 and OSI. RFC 2030, October 1996.
-
- [17] Mockapetris, P. Domain Names - Concepts and Facilities. STD 13,
- RFC 1034, November 1987.
-
- [18] Mockapetris, P. DOMAIN NAMES - IMPLEMENTATION AND
- SPECIFICATION. STD 13, RFC 1035, November 1987.
-
- [19] Narten, T., E. Nordmark, and W. Simpson. Neighbor Discovery for
- IP version 6 (IPv6). RFC 1970, August 1996.
-
- [20] Oppen, D. and Y. Dalal. The clearinghouse: A decentralized
- agent for locating named objects in a distributed environment.
- Technical Report Tech. Rep. OPD-78103, Xerox Office Products
- Division, 1981.
-
- [21] Perkins, C. DHCP Options for Service Location Protocol, August
- 1996. Work In Progress.
-
- [22] Rivest, Ronald. The MD5 Message-Digest Algorithm. RFC 1321,
- April 1992.
-
- [23] Schneier, Bruce. Applied Cryptography: Protocols, Algorithms,
- and Source Code in C. John Wiley, New York, NY, USA, 1994.
-
- [24] X/Open Preliminary Specification. File System Safe UCS
- Transformation Format (FSS_UTF). Technical Report Document
- Number: P316, X/Open Company Ltd., 1994.
-
- [25] Legato Systems. The Legato Resource Administration Platform.
- Legato Systems, 1991.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 71]
-
- RFC 2165 Service Location Protocol June 1997
-
-
- Authors' Addresses
-
- Questions about this memo can be directed to:
-
- John Veizades Erik Guttman
- @Home Network Sun Microsystems
- 385 Ravendale Dr. Gaisbergstr. 6
- Mountain View, CA 94043 69115 Heidelberg Germany
-
- Phone: +1 415 944 7332 Phone: +1 415 336 6697
- Fax: +1 415 944 8500
-
- Email: veizades@home.com Email: Erik.Guttman@eng.sun.com
-
- Charles E. Perkins Scott Kaplan
- Sun Microsystems
- 2550 Garcia Avenue 346 Fair Oaks St.
- Mountain View, CA 94043 San Francisco, CA 94110
-
- Phone: +1 415 336 7153 Phone: +1 415 285 4526
- Fax: +1 415 336 0670
-
- EMail: cperkins@Corp.sun.com Email: scott@catch22.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Veizades, et. al. Standards Track [Page 72]
-
-