summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2608.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2608.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2608.txt')
-rw-r--r--doc/rfc/rfc2608.txt3027
1 files changed, 3027 insertions, 0 deletions
diff --git a/doc/rfc/rfc2608.txt b/doc/rfc/rfc2608.txt
new file mode 100644
index 0000000..fa7de62
--- /dev/null
+++ b/doc/rfc/rfc2608.txt
@@ -0,0 +1,3027 @@
+
+
+
+
+
+
+Network Working Group E. Guttman
+Request for Comments: 2608 C. Perkins
+Updates: 2165 Sun Microsystems
+Category: Standards Track J. Veizades
+ @Home Network
+ M. Day
+ Vinca Corporation
+ June 1999
+
+
+ Service Location Protocol, Version 2
+
+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.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+Abstract
+
+ The Service Location Protocol provides a scalable framework for the
+ discovery and selection of network services. Using this protocol,
+ computers using the Internet need little or no 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
+ 1.1. Applicability Statement . . . . . . . . . . . . . . . 3
+ 2. Terminology 4
+ 2.1. Notation Conventions . . . . . . . . . . . . . . . . . 4
+ 3. Protocol Overview 5
+ 4. URLs used with Service Location 8
+ 4.1. Service: URLs . . . . . . . . . . . . . . . . . . . . 9
+ 4.2. Naming Authorities . . . . . . . . . . . . . . . . . 10
+ 4.3. URL Entries . . . . . . . . . . . . . . . . . . . . . 10
+ 5. Service Attributes 10
+ 6. Required Features 12
+ 6.1. Use of Ports, UDP, and Multicast . . . . . . . . . . 13
+
+
+
+Guttman, et al. Standards Track [Page 1]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ 6.2. Use of TCP . . . . . . . . . . . . . . . . . . . . . 14
+ 6.3. Retransmission of SLP messages . . . . . . . . . . . 15
+ 6.4. Strings in SLP messages . . . . . . . . . . . . . . . 16
+ 6.4.1. Scope Lists in SLP . . . . . . . . . . . . . . 16
+ 7. Errors 17
+ 8. Required SLP Messages 17
+ 8.1. Service Request . . . . . . . . . . . . . . . . . . . 19
+ 8.2. Service Reply . . . . . . . . . . . . . . . . . . . . 21
+ 8.3. Service Registration . . . . . . . . . . . . . . . . . 22
+ 8.4. Service Acknowledgment . . . . . . . . . . . . . . . . 23
+ 8.5. Directory Agent Advertisement. . . . . . . . . . . . . 24
+ 8.6. Service Agent Advertisement. . . . . . . . . . . . . . 25
+ 9. Optional Features 26
+ 9.1. Service Location Protocol Extensions . . . . . . . . . 27
+ 9.2. Authentication Blocks . . . . . . . . . . . . . . . . 28
+ 9.2.1. SLP Message Authentication Rules . . . . . . . 29
+ 9.2.2. DSA with SHA-1 in Authentication Blocks . . . 30
+ 9.3. Incremental Service Registration . . . . . . . . . . 30
+ 9.4. Tag Lists . . . . . . . . . . . . . . . . . . . . . . 31
+ 10. Optional SLP Messages 32
+ 10.1. Service Type Request . . . . . . . . . . . . . . . . 32
+ 10.2. Service Type Reply . . . . . . . . . . . . . . . . . 32
+ 10.3. Attribute Request . . . . . . . . . . . . . . . . . . 33
+ 10.4. Attribute Reply . . . . . . . . . . . . . . . . . . . 34
+ 10.5. Attribute Request/Reply Examples . . . . . . . . . . . 34
+ 10.6. Service Deregistration . . . . . . . . . . . . . . . 36
+ 11. Scopes 37
+ 11.1. Scope Rules . . . . . . . . . . . . . . . . . . . . . 37
+ 11.2. Administrative and User Selectable Scopes. . . . . . . 38
+ 12. Directory Agents 38
+ 12.1. Directory Agent Rules . . . . . . . . . . . . . . . . 39
+ 12.2. Directory Agent Discovery . . . . . . . . . . . . . . 39
+ 12.2.1. Active DA Discovery . . . . . . . . . . . . . 40
+ 12.2.2. Passive DA Advertising . . . . . . . . . . . . 40
+ 12.3. Reliable Unicast to DAs and SAs. . . . . . . . . . . . 41
+ 12.4. DA Scope Configuration . . . . . . . . . . . . . . . 41
+ 12.5. DAs and Authentication Blocks. . . . . . . . . . . . . 41
+ 13. Protocol Timing Defaults 42
+ 14. Optional Configuration 43
+ 15. IANA Considerations 44
+ 16. Internationalization Considerations 45
+ 17. Security Considerations 46
+ A. Appendix: Changes to the Service Location Protocol from
+ v1 to v2 48
+ B. Appendix: Service Discovery by Type: Minimal SLPv2 Features 48
+ C. Appendix: DAAdverts with arbitrary URLs 49
+ D. Appendix: SLP Protocol Extensions 50
+ D.1. Required Attribute Missing Option . . . . . . . . . . 50
+
+
+
+Guttman, et al. Standards Track [Page 2]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ E. Acknowledgments 50
+ F. References 51
+ G. Authors' Addresses 53
+ H. Full Copyright Statement 54
+
+1. Introduction
+
+ The Service Location Protocol (SLP) provides a flexible and scalable
+ framework for providing hosts with access to information about the
+ existence, location, and configuration of networked services.
+ Traditionally, users have had to find services by knowing the name of
+ a network host (a human readable text string) which is an alias for a
+ network address. SLP eliminates the need for a user to know the name
+ of a network host supporting a service. Rather, the user supplies
+ the desired type of service and a set of attributes which describe
+ the service. Based on that description, the Service Location
+ Protocol resolves the network address of the service for the user.
+
+ SLP provides a dynamic configuration mechanism for applications in
+ local area networks. Applications are modeled as clients that need
+ to find servers attached to any of the available networks within an
+ enterprise. 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.
+
+ This document updates SLPv1 [RFC 2165], correcting protocol errors,
+ adding some enhancements and removing some requirements. This
+ specification has two parts. The first describes the required
+ features of the protocol. The second describes the extended features
+ of the protocol which are optional, and allow greater scalability.
+
+1.1. Applicability Statement
+
+ SLP is intended to function within networks under cooperative
+ administrative control. Such networks permit a policy to be
+ implemented regarding security, multicast routing and organization of
+ services and clients into groups which are not be feasible on the
+ scale of the Internet as a whole.
+
+ SLP has been designed to serve enterprise networks with shared
+ services, and it may not necessarily scale for wide-area service
+ discovery throughout the global Internet, or in networks where there
+ are hundreds of thousands of clients or tens of thousands of
+ services.
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 3]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+2. Terminology
+
+ User Agent (UA)
+ A process working on the user's behalf to establish
+ contact with some service. The UA 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 the services.
+
+ Directory Agent (DA) A process which collects service
+ advertisements. There can only be one DA present per
+ given host.
+
+ Service Type Each type of service has a unique Service Type
+ string.
+
+ Naming Authority The agency or group which catalogues given
+ Service Types and Attributes. The default Naming
+ Authority is IANA.
+
+ Scope A set of services, typically making up a logical
+ administrative group.
+
+ URL A Universal Resource Locator [8].
+
+2.1. Notation Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [9].
+
+ Syntax Syntax for string based protocols follow the
+ conventions defined for ABNF [11].
+
+ Strings All strings are encoded using the UTF-8 [23]
+ transformation of the Unicode [6] character set and
+ are NOT null terminated when transmitted. Strings
+ are preceded by a two byte length field.
+
+ <string-list> A comma delimited list of strings with the
+ following syntax:
+
+ string-list = string / string `,' string-list
+
+ In format diagrams, any field ending with a \ indicates a variable
+ length field, given by a prior length field in the protocol.
+
+
+
+
+Guttman, et al. Standards Track [Page 4]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+3. Protocol Overview
+
+ The Service Location Protocol supports a framework by which client
+ applications are modeled as 'User Agents' and services are advertised
+ by 'Service Agents.' A third entity, called a 'Directory Agent'
+ provides scalability to the protocol.
+
+ The User Agent issues a 'Service Request' (SrvRqst) on behalf of the
+ client application, specifying the characteristics of the service
+ which the client requires. The User Agent will receive a Service
+ Reply (SrvRply) specifying the location of all services in the
+ network which satisfy the request.
+
+ The Service Location Protocol framework allows the User Agent to
+ directly issue requests to Service Agents. In this case the request
+ is multicast. Service Agents receiving a request for a service which
+ they advertise unicast a reply containing the service's location.
+
+ +------------+ ----Multicast SrvRqst----> +---------------+
+ | User Agent | | Service Agent |
+ +------------+ <----Unicast SrvRply------ +---------------+
+
+ In larger networks, one or more Directory Agents are used. The
+ Directory Agent functions as a cache. Service Agents send register
+ messages (SrvReg) containing all the services they advertise to
+ Directory Agents and receive acknowledgements in reply (SrvAck).
+ These advertisements must be refreshed with the Directory Agent or
+ they expire. User Agents unicast requests to Directory Agents
+ instead of Service Agents if any Directory Agents are known.
+
+ +-------+ -Unicast SrvRqst-> +-----------+ <-Unicast SrvReg- +--------+
+ | User | | Directory | |Service |
+ | Agent | | Agent | | Agent |
+ +-------+ <-Unicast SrvRply- +-----------+ -Unicast SrvAck-> +--------+
+
+ User and Service Agents discover Directory Agents two ways. First,
+ they issue a multicast Service Request for the 'Directory Agent'
+ service when they start up. Second, the Directory Agent sends an
+ unsolicited advertisement infrequently, which the User and Service
+ Agents listen for. In either case the Agents receive a DA
+ Advertisement (DAAdvert).
+
+ +---------------+ --Multicast SrvRqst-> +-----------+
+ | User or | <--Unicast DAAdvert-- | Directory |
+ | Service Agent | | Agent |
+ +---------------+ <-Multicast DAAdvert- +-----------+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 5]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ Services are grouped together using 'scopes'. These are strings
+ which identify services which are administratively identified. A
+ scope could indicate a location, administrative grouping, proximity
+ in a network topology or some other category. Service Agents and
+ Directory Agents are always assigned a scope string.
+
+ A User Agent is normally assigned a scope string (in which case the
+ User Agent will only be able to discover that particular grouping of
+ services). This allows a network administrator to 'provision'
+ services to users. Alternatively, the User Agent may be configured
+ with no scope at all. In that case, it will discover all available
+ scopes and allow the client application to issue requests for any
+ service available on the network.
+
+ +---------+ Multicast +-----------+ Unicast +-----------+
+ | Service | <--SrvRqst-- | User | --SrvRqst-> | Directory |
+ | Agent | | Agent | | Agent |
+ | Scope=X | Unicast | Scope=X,Y | Unicast | Scope=Y |
+ +---------+ --SrvRply--> +-----------+ <-SrvRply-- +-----------+
+
+ In the above illustration, the User Agent is configured with scopes X
+ and Y. If a service is sought in scope X, the request is multicast.
+ If it is sought in scope Y, the request is unicast to the DA.
+ Finally, if the request is to be made in both scopes, the request
+ must be both unicast and multicast.
+
+ Service Agents and User Agents may verify digital signatures provided
+ with DAAdverts. User Agents and Directory Agents may verify service
+ information registered by Service Agents. The keying material to use
+ to verify digital signatures is identified using a SLP Security
+ Parameter Index, or SLP SPI.
+
+ Every host configured to generate a digital signature includes the
+ SLP SPI used to verify it in the Authentication Block it transmits.
+ Every host which can verify a digital signature must be configured
+ with keying material and other parameters corresponding with the SLP
+ SPI such that it can perform verifying calculations.
+
+ SAs MUST accept multicast service requests and unicast service
+ requests. SAs MAY accept other requests (Attribute and Service Type
+ Requests). SAs MUST listen for multicast DA Advertisements.
+
+ The features described up to this point are required to implement. A
+ minimum implementation consists of a User Agent, Service Agent or
+ both.
+
+ There are several optional features in the protocol. Note that DAs
+ MUST support all these message types, but DA support is itself
+
+
+
+Guttman, et al. Standards Track [Page 6]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ optional to deploy on networks using SLP. UAs and SAs MAY support
+ these message types. These operations are primarily for interactive
+ use (browsing or selectively updating service registrations.) UAs
+ and SAs either support them or not depending on the requirements and
+ constraints of the environment where they will be used.
+
+ Service Type Request A request for all types of service on the
+ network. This allows generic service browsers
+ to be built.
+
+ Service Type Reply A reply to a Service Type Request.
+
+ Attribute Request A request for attributes of a given type of
+ service or attributes of a given service.
+
+ Attribute Reply A reply to an Attribute Request.
+
+ Service Deregister A request to deregister a service or some
+ attributes of a service.
+
+ Service Update A subsequent SrvRqst to an advertisement.
+ This allows individual dynamic attributes to
+ be updated.
+
+ SA Advertisement In the absence of Directory Agents, a User
+ agent may request Service Agents in order
+ to discover their scope configuration. The
+ User Agent may use these scopes in requests.
+
+ In the absence of Multicast support, Broadcast MAY be used. The
+ location of DAs may be staticly configured, discovered using SLP as
+ described above, or configured using DHCP. If a message is too large,
+ it may be unicast using TCP.
+
+ A SLPv2 implementation SHOULD support SLPv1 [22]. This support
+ includes:
+
+ 1. SLPv2 DAs are deployed, phasing out SLPv1 DAs.
+
+ 2. Unscoped SLPv1 requests are considered to be of DEFAULT scope.
+ SLPv1 UAs MUST be reconfigured to have a scope if possible.
+
+ 3. There is no way for an SLPv2 DA to behave as an unscoped SLPv1
+ DA. SLPv1 SAs MUST be reconfigured to have a scope if possible.
+
+ 4. SLPv2 DAs answer SLPv1 requests with SLPv1 replies and SLPv2
+ requests with SLPv2 replies.
+
+
+
+
+Guttman, et al. Standards Track [Page 7]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ 5. SLPv2 DAs use registrations from SLPv1 and SLPv2 in the same
+ way. That is, incoming requests from agents using either version
+ of the protocol will be matched against this common set of
+ registered services.
+
+ 6. SLPv2 registrations which use Language Tags which are greater
+ than 2 characters long will be inaccessible to SLPv1 UAs.
+
+ 7. SLPv2 DAs MUST return only service type strings in SrvTypeRply
+ messages which conform to SLPv1 service type string syntax, ie.
+ they MUST NOT return Service Type strings for abstract service
+ types.
+
+ 8. SLPv1 SrvRqsts and AttrRqsts by Service Type do not match Service
+ URLs with abstract service types. They only match Service URLs
+ with concrete service types.
+
+ SLPv1 UAs will not receive replies from SLPv2 SAs and SLPv2 UAs will
+ not receive replies from SLPv1 SAs. In order to interoperate UAs and
+ SAs of different versions require a SLPv2 DA to be present on the
+ network which supports both protocols.
+
+ The use of abstract service types in SLPv2 presents a backward
+ compatibility issue for SLPv1. It is possible that a SLPv1 UA will
+ request a service type which is actually an abstract service type.
+ Based on the rules above, the SLPv1 UA will never receive an abstract
+ Service URL reply. For example, the service type 'service:x' in a
+ SLPv1 AttrRqst will not return the attributes of 'service:x:y://orb'.
+ If the request was made with SLPv2, it would return the attributes of
+ this service.
+
+4. URLs used with Service Location
+
+ A Service URL indicates the location of a service. This URL may be
+ of the service: scheme [13] (reviewed in section 4.1), or any other
+ URL scheme conforming to the URI standard [8], except that URLs
+ without address specifications SHOULD NOT be advertised by SLP. The
+ service type for an 'generic' URL is its scheme name. For example,
+ the service type string for "http://www.srvloc.org" would be "http".
+
+ Reserved characters in URLs follow the rules in RFC 2396 [8].
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 8]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+4.1. Service: URLs
+
+ Service URL syntax and semantics are defined in [13]. Any network
+ service may be encoded in a Service URL.
+
+ This section provides an introduction to Service URLs and an example
+ showing a simple application of them, representing standard network
+ services.
+
+ A Service URL may be of the form:
+
+ "service:"<srvtype>"://"<addrspec>
+
+ The Service Type of this service: URL is defined to be the string up
+ to (but not including) the final `:' before <addrspec>, the address
+ specification.
+
+ <addrspec> is a hostname (which should be used if possible) or dotted
+ decimal notation for a hostname, followed by an optional `:' and
+ port number.
+
+ A service: scheme URL may be formed with any standard protocol name
+ by concatenating "service:" and the reserved port [1] name. For
+ example, "service:tftp://myhost" would indicate a tftp service. A
+ tftp service on a nonstandard port could be
+ "service:tftp://bad.glad.org:8080".
+
+ Service Types SHOULD be defined by a "Service Template" [13], which
+ provides expected attributes, values and protocol behavior. An
+ abstract service type (also described in [13]) has the form
+
+ "service:<abstract-type>:<concrete-type>".
+
+ The service type string "service:<abstract-type>" matches all
+ services of that abstract type. If the concrete type is included
+ also, only these services match the request. For example: a SrvRqst
+ or AttrRqst which specifies "service:printer" as the Service Type
+ will match the URL service:printer:lpr://hostname and
+ service:printer:http://hostname. If the requests specified
+ "service:printer:http" they would match only the latter URL.
+
+ An optional substring MAY follow the last `.' character in the
+ <srvtype> (or <abstract-type> in the case of an abstract service type
+ URL). This substring is the Naming Authority, as described in Section
+ 9.6. Service types with different Naming Authorities are quite
+ distinct. In other words, service:x.one and service:x.two are
+ different service types, as are service:abstract.one:y and
+ service:abstract.two:y.
+
+
+
+Guttman, et al. Standards Track [Page 9]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+4.2. Naming Authorities
+
+ A Naming Authority MAY optionally be included as part of the Service
+ Type string. 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 typically a string
+ which uniquely identifies an organization. IANA is the implied
+ Naming Authority when no string is appended. "IANA" itself MUST NOT
+ be included explicitly.
+
+ Naming Authorities may define Service Types which are experimental,
+ proprietary or for private use. Using a Naming Authority, one may
+ either simply ignore attributes upon registration or create a local-
+ use only set of attributes for one's site. 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 8.1 and 8.3. Service Types SHOULD be registered with IANA
+ to allow for Internet-wide interoperability.
+
+4.3. URL Entries
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reserved | Lifetime | URL Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |URL len, contd.| URL (variable length) \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |# of URL auths | Auth. blocks (if any) \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ SLP stores URLs in protocol elements called URL Entries, which
+ associate a length, a lifetime, and possibly authentication
+ information along with the URL. URL Entries, defined as shown above,
+ are used in Service Replies and Service Registrations.
+
+5. Service Attributes
+
+ A service advertisement is often accompanied by Service Attributes.
+ These attributes are used by UAs in Service Requests to select
+ appropriate services.
+
+ The allowable attributes which may be used are typically specified by
+ a Service Template [13] for a particular service type. Services
+ which are advertised according to a standard template MUST register
+ all service attributes which the standard template requires. URLs
+ with schemes other than "service:" MAY be registered with attributes.
+
+
+
+Guttman, et al. Standards Track [Page 10]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ Non-standard attribute names SHOULD begin with "x-", because no
+ standard attribute name will ever have those initial characters.
+
+ An attribute list is a string encoding of the attributes of a
+ service. The following ABNF [11] grammar defines attribute lists:
+
+ attr-list = attribute / attribute `,' attr-list
+ attribute = `(' attr-tag `=' attr-val-list `)' / attr-tag
+ attr-val-list = attr-val / attr-val `,' attr-val-list
+ attr-tag = 1*safe-tag
+ attr-val = intval / strval / boolval / opaque
+ intval = [-]1*DIGIT
+ strval = 1*safe-val
+ boolval = "true" / "false"
+ opaque = "\FF" 1*escape-val
+ safe-val = ; Any character except reserved.
+ safe-tag = ; Any character except reserved, star and bad-tag.
+ reserved = `(' / `)' / `,' / `\' / `!' / `<' / `=' / `>' / `~' / CTL
+ escape-val = `\' HEXDIG HEXDIG
+ bad-tag = CR / LF / HTAB / `_'
+ star = `*'
+
+ The <attr-list>, if present, MUST be scanned prior to evaluation for
+ all occurrences of the escape character `\'. Reserved characters
+ MUST be escaped (other characters MUST NOT be escaped). All escaped
+ characters must be restored to their value before attempting string
+ matching. For Opaque values, escaped characters are not converted -
+ they are interpreted as bytes.
+
+ Boolean Strings which have the form "true" or "false" can
+ only take one value and may only be compared with
+ '='. Booleans are case insensitive when compared.
+
+ Integer Strings which take the form [-] 1*<digit> and fall
+ in the range "-2147483648" to "2147483647" are
+ considered to be Integers. These are compared using
+ integer comparison.
+
+ String All other Strings are matched using strict lexical
+ ordering (see Section 6.4).
+
+ Opaque Opaque values are sequences of bytes. These are
+ distinguished from Strings since they begin with
+ the sequence "\FF". This, unescaped, is an illegal
+ UTF-8 encoding, indicating that what follows is a
+ sequence of bytes expressed in escape notation which
+ constitute the binary value. For example, a '0' byte
+ is encoded "\FF\00".
+
+
+
+Guttman, et al. Standards Track [Page 11]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ A string which contains escaped values other than from the reserved
+ set of characters is illegal. If such a string is included in an
+ <attr-list>, <tag-list> or search filter, the SA or DA which receives
+ it MUST return a PARSE_ERROR to the message.
+
+ A keyword has only an <attr-tag>, and no values. Attributes can have
+ one or multiple values. All values are expressed as strings.
+
+ When values have been advertised by a SA or are registered in a DA,
+ they can take on implicit typing rules for matching incoming
+ requests.
+
+ Stored values must be consistent, i.e., x=4,true,sue,\ff\00\00 is
+ disallowed. A DA or SA receiving such an <attr-list> MUST return an
+ INVALID_REGISTRATION error.
+
+6. Required Features
+
+ This section defines the minimal implementation requirements for SAs
+ and UAs as well as their interaction with DAs. A DA is not required
+ for SLP to function, but if it is present, the UA and SA MUST
+ interact with it as defined below.
+
+ A minimal implementation may consist of either a UA or SA or both.
+ The only required features of a UA are that it can issue SrvRqsts
+ according to the rules below and interpret DAAdverts, SAAdverts and
+ SrvRply messages. The UA MUST issue requests to DAs as they are
+ discovered. An SA MUST reply to appropriate SrvRqsts with SrvRply or
+ SAAdvert messages. The SA MUST also register with DAs as they are
+ discovered.
+
+ UAs perform discovery by issuing Service Request messages. SrvRqst
+ messages are issued, using UDP, following these prioritized rules:
+
+ 1. A UA issues a request to a DA which it has been configured with
+ by DHCP.
+
+ 2. A UA issues requests to DAs which it has been statically
+ configured with.
+
+ 3. UA uses multicast/convergence SrvRqsts to discover DAs, then uses
+ that set of DAs. A UA that does not know of any DAs SHOULD retry
+ DA discovery, increasing the waiting interval between subsequent
+ attempts exponentially (doubling the wait interval each time.)
+ The recommended minimum waiting interval is CONFIG_DA_FIND
+ seconds.
+
+
+
+
+
+Guttman, et al. Standards Track [Page 12]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ 4. A UA with no knowledge of DAs sends requests using multicast
+ convergence to SAs. SAs unicast replies to UAs according to the
+ multicast convergence algorithm.
+
+ UAs and SAs are configured with a list of scopes to use according to
+ these prioritized rules:
+
+ 1. With DHCP.
+
+ 2. With static configuration. The static configuration may be
+ explicitly set to NO SCOPE for UAs, if the User Selectable Scope
+ model is used. See section 11.2.
+
+ 3. In the absence of configuration, the agent's scope is "DEFAULT".
+
+ A UA MUST issue requests with one or more of the scopes it has been
+ configured to use.
+
+ A UA which has been statically configured with NO SCOPE LIST will use
+ DA or SA discovery to determine its scope list dynamically. In this
+ case it uses an empty scope list to discover DAs and possibly SAs.
+ Then it uses the scope list it obtains from DAAdverts and possibly
+ SAAdverts in subsequent requests.
+
+ The SA MUST register all its services with any DA it discovers, if
+ the DA advertises any of the scopes it has been configured with. A
+ SA obtains information about DAs as a UA does. In addition, the SA
+ MUST listen for multicast unsolicited DAAdverts. The SA registers by
+ sending SrvReg messages to DAs, which reply with SrvReg messages to
+ indicate success. SAs register in ALL the scopes they were
+ configured to use.
+
+6.1. Use of Ports, UDP, and Multicast
+
+ DAs MUST accept unicast requests and multicast directory agent
+ discovery service requests (for the service type "service:directory-
+ agent").
+
+ SAs MUST accept multicast requests and unicast requests both. The SA
+ can distinguish between them by whether the REQUEST MCAST flag is set
+ in the SLP Message header.
+
+ The Service Location Protocol uses multicast for discovering DAs and
+ for issuing requests to SAs by default.
+
+ The reserved listening port for SLP is 427. This is the destination
+ port for all SLP messages. SLP messages MAY be transmitted on an
+ ephemeral port. Replies and acknowledgements are sent to the port
+
+
+
+Guttman, et al. Standards Track [Page 13]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ from which the request was issued. The default maximum transmission
+ unit for UDP messages is 1400 bytes excluding UDP and other headers.
+
+ If a SLP message does not fit into a UDP datagram it MUST be
+ truncated to fit, and the OVERFLOW flag is set in the reply message.
+ A UA which receives a truncated message MAY open a TCP connection
+ (see section 6.2) with the DA or SA and retransmit the request, using
+ the same XID. It MAY also attempt to make use of the truncated reply
+ or reformulate a more restrictive request which will result in a
+ smaller reply.
+
+ SLP Requests messages are multicast to The Administratively Scoped
+ SLP Multicast [17] address, which is 239.255.255.253. The default
+ TTL to use for multicast is 255.
+
+ In isolated networks, broadcasts will work in place of multicast. To
+ that end, SAs SHOULD and DAs MUST listen for broadcast Service
+ Location messages at port 427. This allows UAs which do not support
+ multicast the use of Service Location on isolated networks.
+
+ Setting multicast TTL to less than 255 (the default) limits the range
+ of SLP discovery in a network, and localizes service information in
+ the network.
+
+6.2. Use of TCP
+
+ A SrvReg or SrvDeReg may be too large to fit into a datagram. To
+ send such large SLP messages, a TCP (unicast) connection MUST be
+ established.
+
+ To avoid the need to implement TCP, one MUST insure that:
+
+ - UAs never issue requests larger than the Path MTU. SAs can omit
+ TCP support only if they never have to receive unicast requests
+ longer than the path MTU.
+
+ - UAs can accept replies with the 'OVERFLOW' flag set, and make use
+ of the first result included, or reformulate the request.
+
+ - Ensure that a SA can send a SrvRply, SrvReg, or SrvDeReg in
+ a single datagram. This means limiting the size of URLs,
+ the number of attributes and the number of authenticators
+ transmitted.
+
+ DAs MUST be able to respond to UDP and TCP requests, as well as
+ multicast DA Discovery SrvRqsts. SAs MUST be able to respond to TCP
+ unless the SA will NEVER receive a request or send a reply which will
+ exceed a datagram in size (e.g., some embedded systems).
+
+
+
+Guttman, et al. Standards Track [Page 14]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ A TCP connection MAY be used for a single SLP transaction, or for
+ multiple transactions. Since there are length fields in the message
+ headers, SLP Agents can send multiple requests along a connection and
+ read the return stream for acknowledgments and replies.
+
+ The initiating agent SHOULD close the TCP connection. The DA SHOULD
+ wait at least CONFIG_CLOSE_CONN seconds before closing an idle
+ connection. DAs and SAs SHOULD close an idle TCP connection after
+ CONFIG_CLOSE_CONN seconds to ensure robust operation, even when the
+ initiating agent neglects to close it. See Section 13 for timing
+ rules.
+
+6.3. Retransmission of SLP messages
+
+ Requests which fail to elicit a response are retransmitted. The
+ initial retransmission occurs after a CONFIG_RETRY wait period.
+ Retransmissions MUST be made with exponentially increasing wait
+ intervals (doubling the wait each time). This applies to unicast as
+ well as multicast SLP requests.
+
+ Unicast requests to a DA or SA should be retransmitted until either a
+ response (which might be an error) has been obtained, or for
+ CONFIG_RETRY_MAX seconds.
+
+ Multicast requests SHOULD be reissued over CONFIG_MC_MAX seconds
+ until a result has been obtained. UAs need only wait till they
+ obtain the first reply which matches their request. That is,
+ retransmission is not required if the requesting agent is prepared to
+ use the 'first reply' instead of 'as many replies as possible within
+ a bounded time interval.'
+
+ When SLP SrvRqst, SrvTypeRqst, and AttrRqst messages are multicast,
+ they contain a <PRList> of previous responders. Initially the
+ <PRList> is empty. When these requests are unicast, the <PRList> is
+ always empty.
+
+ Any DA or SA which sees its address in the <PRList> MUST NOT respond
+ to the request.
+
+ The message SHOULD be retransmitted until the <PRList> causes no
+ further responses to be elicited or the previous responder list and
+ the request will not fit into a single datagram or until
+ CONFIG_MC_MAX seconds elapse.
+
+ UAs which retransmit a request use the same XID. This allows a 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. XIDs SHOULD be randomly chosen to avoid
+
+
+
+Guttman, et al. Standards Track [Page 15]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ duplicate XIDs in requests if UAs restart frequently.
+
+6.4. Strings in SLP messages
+
+ The escape character is a backslash (UTF-8 0x5c) followed by the two
+ hexadecimal digits of the escaped character. Only reserved
+ characters are escaped. For example, a comma (UTF-8 0x29) is escaped
+ as `\29', and a backslash `\' is escaped as `\5c'. String lists used
+ in SLP define the comma to be the delimiter between list elements, so
+ commas in data strings must be escaped in this manner. Backslashes
+ are the escape character so they also must always be escaped when
+ included in a string literally.
+
+ String comparison for order and equality in SLP MUST be case
+ insensitive inside the 0x00-0x7F subrange of UTF-8 (which corresponds
+ to ASCII character encoding). Case insensitivity SHOULD be supported
+ throughout the entire UTF-8 encoded Unicode [6] character set.
+
+ The case insensitivity rule applies to all string matching in SLPv2,
+ including Scope strings, SLP SPI strings, service types, attribute
+ tags and values in query handling, language tags, previous responder
+ lists. Comparisons of URL strings, however, is case sensitive.
+
+ White space (SPACE, CR, LF, TAB) internal to a string value is folded
+ to a single SPACE character for the sake of string comparisons.
+ White space preceding or following a string value is ignored for the
+ purposes of string comparison. For example, " Some String "
+ matches "SOME STRING".
+
+ String comparisons (using comparison operators such as `<=' or `>=')
+ are done using lexical ordering in UTF-8 encoded characters, not
+ using any language specific rules.
+
+ The reserved character `*' may precede, follow or be internal to a
+ string value in order to indicate substring matching. The query
+ including this character matches any character sequence which
+ conforms to the letters which are not wildcarded.
+
+6.4.1. Scope Lists in SLP
+
+ Scope Lists in SLPv2 have the following grammar:
+
+ scope-list = scope-val / scope-val `,' scope-list
+ scope-val = 1*safe
+ safe = ; Any character except reserved.
+ reserved = `(' / `)' / `,' / `\' / `!' / `<' / `=' / `>' / `~' / CTL
+ / `;' / `*' / `+'
+ escape-val = `\' HEXDIG HEXDIG
+
+
+
+Guttman, et al. Standards Track [Page 16]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ Scopes which include any reserved characters must replace the escaped
+ character with the escaped-val format.
+
+7. Errors
+
+ If the Error Code in a SLP reply message is nonzero, the rest of the
+ message MAY be truncated. No data is necessarily transmitted or
+ should be expected after the header and the error code, except
+ possibly for some optional extensions to clarify the error, for
+ example as in section D.1.
+
+ Errors are only returned for unicast requests. Multicast requests
+ are silently discarded if they result in an error.
+
+ LANGUAGE_NOT_SUPPORTED = 1: There is data for the service type in
+ the scope in the AttrRqst or SrvRqst, but not in the requested
+ language.
+ PARSE_ERROR = 2: The message fails to obey SLP syntax.
+ INVALID_REGISTRATION = 3: The SrvReg has problems -- e.g., a zero
+ lifetime or an omitted Language Tag.
+ SCOPE_NOT_SUPPORTED = 4: The SLP message did not include a scope in
+ its <scope-list> supported by the SA or DA.
+ AUTHENTICATION_UNKNOWN = 5: The DA or SA receives a request for an
+ unsupported SLP SPI.
+ AUTHENTICATION_ABSENT = 6: The DA expected URL and ATTR
+ authentication in the SrvReg and did not receive it.
+ AUTHENTICATION_FAILED = 7: The DA detected an authentication error in
+ an Authentication block.
+ VER_NOT_SUPPORTED = 9: Unsupported version number in message header.
+ INTERNAL_ERROR = 10: The DA (or SA) is too sick to respond.
+ DA_BUSY_NOW = 11: UA or SA SHOULD retry, using exponential back off.
+ OPTION_NOT_UNDERSTOOD = 12: The DA (or SA) received an unknown option
+ from the mandatory range (see section 9.1).
+ INVALID_UPDATE = 13: The DA received a SrvReg without FRESH set, for
+ an unregistered service or with inconsistent Service Types.
+ MSG_NOT_SUPPORTED = 14: The SA received an AttrRqst or SrvTypeRqst
+ and does not support it.
+ REFRESH_REJECTED = 15: The SA sent a SrvReg or partial SrvDereg to a
+ DA more frequently than the DA's min-refresh-interval.
+
+8. Required SLP Messages
+
+ All length fields in SLP messages are in network byte order. Where '
+ tuples' are defined, these are sequences of bytes, in the precise
+ order listed, in network byte order.
+
+ SLP messages all begin with the following header:
+
+
+
+
+Guttman, et al. Standards Track [Page 17]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ 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-ID | Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length, contd.|O|F|R| reserved |Next Ext Offset|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next Extension Offset, contd.| XID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Language Tag Length | Language Tag \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Message Type Abbreviation Function-ID
+
+ Service Request SrvRqst 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
+ SA Advertisement SAAdvert 11
+
+ SAs and UAs MUST support SrvRqst, SrvRply and DAAdvert. SAs MUST
+ also support SrvReg, SAAdvert and SrvAck. For UAs and SAs, support
+ for other messages are OPTIONAL.
+
+ - Length is the length of the entire SLP message, header included.
+ - The flags are: OVERFLOW (0x80) is set when a message's length
+ exceeds what can fit into a datagram. FRESH (0x40) is set on
+ every new SrvReg. REQUEST MCAST (0x20) is set when multicasting
+ or broadcasting requests. Reserved bits MUST be 0.
+ - Next Extension Offset is set to 0 unless extensions are used.
+ The first extension begins at 'offset' bytes, from the message's
+ beginning. It is placed after the SLP message data. See
+ Section 9.1 for how to interpret unrecognized SLP Extensions.
+ - XID is set to a unique value for each unique request. If the
+ request is retransmitted, the same XID is used. Replies set
+ the XID to the same value as the xid in the request. Only
+ unsolicited DAAdverts are sent with an XID of 0.
+ - Lang Tag Length is the length in bytes of the Language Tag field.
+ - Language Tag conforms to [7]. The Language Tag in a reply MUST
+ be the same as the Language Tag in the request. This field must
+ be encoded 1*8ALPHA *("-" 1*8ALPHA).
+
+
+
+
+Guttman, et al. Standards Track [Page 18]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ If an option is specified, and not included in the message, the
+ receiver MUST respond with a PARSE_ERROR.
+
+8.1. Service Request
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Service Location header (function = SrvRqst = 1) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <PRList> | <PRList> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <service-type> | <service-type> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <scope-list> | <scope-list> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of predicate string | Service Request <predicate> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <SLP SPI> string | <SLP SPI> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ In order for a Service to match a SrvRqst, it must belong to at least
+ one requested scope, support the requested service type, and match
+ the predicate. If the predicate is present, the language of the
+ request (ignoring the dialect part of the Language Tag) must match
+ the advertised service.
+
+ <PRList> is the Previous Responder List. This <string-list> contains
+ dotted decimal notation IP (v4) addresses, and is iteratively
+ multicast to obtain all possible results (see Section 6.3). UAs
+ SHOULD implement this discovery algorithm. SAs MUST use this to
+ discover all available DAs in their scope, if they are not already
+ configured with DA addresses by some other means.
+
+ A SA silently drops all requests which include the SA's address in
+ the <PRList>. An SA which has multiple network interfaces MUST check
+ if any of the entries in the <PRList> equal any of its interfaces.
+ An entry in the PRList which does not conform to an IPv4 dotted
+ decimal address is ignored: The rest of the <PRList> is processed
+ normally and an error is not returned.
+
+ Once a <PRList> plus the request exceeds the path MTU, multicast
+ convergence stops. This algorithm is not intended to find all
+ instances; it finds 'enough' to provide useful results.
+
+ The <scope-list> is a <string-list> of configured scope names. SAs
+ and DAs which have been configured with any of the scopes in this
+ list will respond. DAs and SAs MUST reply to unicast requests with a
+
+
+
+Guttman, et al. Standards Track [Page 19]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ SCOPE_NOT_SUPPORTED error if the <scope-list> is omitted or fails to
+ include a scope they support (see Section 11). The only exceptions
+ to this are described in Section 11.2.
+
+ The <service-type> string is discussed in Section 4. Normally, a
+ SrvRqst elicits a SrvRply. There are two exceptions: If the
+ <service-type> is set to "service:directory-agent", DAs respond to
+ the SrvRqst with a DAAdvert (see Section 8.5.) If set to
+ "service:service-agent", SAs respond with a SAAdvert (see Section
+ 8.6.) If this field is omitted, a PARSE_ERROR is returned - as this
+ field is REQUIRED.
+
+ The <predicate> is a LDAPv3 search filter [14]. This field is
+ OPTIONAL. Services may be discovered simply by type and scope.
+ Otherwise, services are discovered which satisfy the <predicate>. If
+ present, it is compared to each registered service. If the attribute
+ in the filter has been registered with multiple values, the filter is
+ compared to each value and the results are ORed together, i.e.,
+ "(x=3)" matches a registration of (x=1,2,3); "(!(Y=0))" matches
+ (y=0,1) since Y can be nonzero. Note the matching is case
+ insensitive. Keywords (i.e., attributes without values) are matched
+ with a "presence" filter, as in "(keyword=*)".
+
+ An incoming request term MUST have the same type as the attribute in
+ a registration in order to match. Thus, "(x=33)" will not match '
+ x=true', etc. while "(y=foo)" will match 'y=FOO'.
+ "(|(x=33)(y=foo))" will be satisfied, even though "(x=33)" cannot be
+ satisfied, because of the `|' (boolean disjunction).
+
+ Wildcard matching MUST be done with the '=' filter. In any other
+ case, a PARSE_ERROR is returned. Request terms which include
+ wildcards are interpreted to be Strings. That is, (x=34*) would
+ match 'x=34foo', but not 'x=3432' since the first value is a String
+ while the second value is an Integer; Strings don't match Integers.
+
+ Examples of Predicates follow. <t> indicates the service type of the
+ SrvRqst, <s> gives the <scope-list> and <p> is the predicate string.
+
+ <t>=service:http <s>=DEFAULT <p>= (empty string)
+ This is a minimal request string. It matches all http
+ services advertised with the default scope.
+
+ <t>=service:pop3 <s>=SALES,DEFAULT <p>=(user=wump)
+ This is a request for all pop3 services available in
+ the SALES or DEFAULT scope which serve mail to the user
+ `wump'.
+
+
+
+
+
+Guttman, et al. Standards Track [Page 20]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ <t>=service:backup <s>=BLDG 32 <p>=(&(q<=3)(speed>=1000))
+ This returns the backup service which has a queue length
+ less than 3 and a speed greater than 1000. It will
+ return this only for services registered with the BLDG 32
+ scope.
+
+ <t>=service:directory-agent <s>=DEFAULT <p>=
+ This returns DAAdverts for all DAs in the DEFAULT scope.
+
+ DAs are discovered by sending a SrvRqst with the service type set to
+ "service:directory-agent". If a predicate is included in the
+ SrvRqst, the DA SHOULD respond only if the predicate can be satisfied
+ with the DA's attributes. The <scope-list> MUST contain all scopes
+ configured for the UA or SA which is discovering DAs.
+
+ The <SLP SPI> string indicates a SLP SPI that the requester has been
+ configured with. If this string is omitted, the responder does not
+ include any Authentication Blocks in its reply. If it is included,
+ the responder MUST return a reply which has an associated
+ authentication block with the SLP SPI in the SrvRqst. If no replies
+ may be returned because the SLP SPI is not supported, the responder
+ returns an AUTHENTICATION_UNKNOWN error.
+
+8.2. Service Reply
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Service Location header (function = SrvRply = 2) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error Code | URL Entry count |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | <URL Entry 1> ... <URL Entry N> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The service reply contains zero or more URL entries (see Section
+ 4.3). A service reply with zero URL entries MUST be returned in
+ response to a unicast Service Request, if no matching URLs are
+ present. A service reply with zero URL entries MUST NOT be sent in
+ response to a multicast or broadcast service request (instead, if
+ there was no match found or an error processing the request, the
+ service reply should not be generated at all).
+
+ If the reply overflows, the UA MAY simply use the first URL Entry in
+ the list. A URL obtained by SLP may not be cached longer than
+ Lifetime seconds, unless there is a URL Authenticator block present.
+
+
+
+
+
+Guttman, et al. Standards Track [Page 21]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ In that case, the cache lifetime is indicated by the Timestamp in the
+ URL Authenticator (see Section 9.2).
+
+ An authentication block is returned in the URL Entries, including the
+ SLP SPI in the SrvRqst. If no SLP SPI was included in the request,
+ no Authentication Blocks are returned in the reply. URL
+ Authentication Blocks are defined in Section 9.2.1.
+
+ If a SrvRply is sent by UDP, a URL Entry MUST NOT be included unless
+ it fits entirely without truncation.
+
+8.3. Service Registration
+
+ 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 = 3) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | <URL-Entry> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of service type string | <service-type> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <scope-list> | <scope-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of attr-list string | <attr-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |# of AttrAuths |(if present) Attribute Authentication Blocks...\
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The <entry> is a URL Entry (see section 4.3). The Lifetime defines
+ how long a DA can cache the registration. SAs SHOULD reregister
+ before this lifetime expires (but SHOULD NOT more often than once per
+ second). The Lifetime MAY be set to any value between 0 and 0xffff
+ (maximum, around 18 hours). Long-lived registrations remain stale
+ longer if the service fails and the SA does not deregister the
+ service.
+
+ The <service-type> defines the service type of the URL to be
+ registered, regardless of the scheme of the URL. The <scope-list>
+ MUST contain the names of all scopes configured for the SA, which the
+ DA it is registering with supports. The default value for the
+ <scope-list> is "DEFAULT" (see Section 11).
+
+ The SA MUST register consistently with all DAs. If a SA is
+ configured with scopes X and Y and there are three DAs, whose scopes
+ are "X", "Y" and "X,Y" respectively, the SA will register the with
+ all three DAs in their respective scopes. All future updates and
+ deregistrations of the service must be sent to the same set of DAs in
+
+
+
+Guttman, et al. Standards Track [Page 22]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ the same scopes the service was initially registered in.
+
+ The <attr-list>, if present, specifies the attributes and values to
+ be associated with the URL by the DA (see Section 5).
+
+ A SA configured with the ability to sign service registrations MUST
+ sign each of the URLs and Attribute Lists using each of the keys it
+ is configured to use, and the DA it is registering with accepts.
+ (The SA MUST acquire DAAdverts for all DAs it will register with to
+ obtain the DA's SLP SPI list and attributes, as described in Section
+ 8.5). The SA supplies a SLP SPI in each authentication block
+ indicating the SLP SPI configuration required to verify the digital
+ signature. The format of the digital signatures used is defined in
+ section 9.2.1.
+
+ Subsequent registrations of previously registered services MUST
+ contain the same list of SLP SPIs as previous ones or else DAs will
+ reject them, replying with an AUTHENTICATION_ABSENT error.
+
+ A registration with the FRESH flag set will replace *entirely* any
+ previous registration for the same URL in the same language. If the
+ FRESH flag is not set, the registration is an "incremental"
+ registration (see Section 9.3).
+
+8.4. Service Acknowledgment
+
+ 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 = 5) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ A DA returns a SrvAck to an SA after a SrvReg. It carries only a two
+ byte Error Code (see Section 7).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 23]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+8.5. Directory Agent Advertisement
+
+ 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 = 8) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error Code | DA Stateless Boot Timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |DA Stateless Boot Time,, contd.| Length of URL |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ \ URL \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <scope-list> | <scope-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <attr-list> | <attr-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <SLP SPI List> | <SLP SPI List> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | # Auth Blocks | Authentication block (if any) \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The Error Code is set to 0 when the DAAdvert is multicast. If the
+ DAAdvert is being returned due to a unicast SrvRqst (ie. a request
+ without the REQUEST MCAST flag set) the DA returns the same errors a
+ SrvRply would.
+
+ The <scope-list> of the SrvRqst must either be omitted or include a
+ scope which the DA supports. The DA Stateless Boot Timestamp
+ indicates the state of the DA (see section 12.1).
+
+ The DA MAY include a list of its attributes in the DAAdvert. This
+ list SHOULD be kept short, as the DAAdvert must fit into a datagram
+ in order to be multicast.
+
+ A potential scaling problem occurs in SLPv2 if SAs choose too low a
+ Lifetime. In this case, an onerous amount of reregistration occurs
+ as more services are deployed. SLPv2 allows DAs to control SAs
+ frequency of registration. A DA MAY reissue a DAAdvert with a new
+ set of attributes at any time, to change the reregistration behavior
+ of SAs. These apply only to subsequent registrations; existing
+ service registrations with the DA retain their registered lifetimes.
+
+ If the DAAdvert includes the attribute "min-refresh-interval" it MUST
+ be set to a single Integer value indicating a number of seconds. If
+ this attribute is present SAs MUST NOT refresh any particular service
+ advertisement more frequently than this value. If SrvReg with the
+ FRESH FLAG not set or SrvDereg with a non-empty tag list updating a
+
+
+
+Guttman, et al. Standards Track [Page 24]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ particular service are received more often than the value for the
+ DA's advertised "min-refresh-interval" attribute the DA SHOULD reject
+ the message and return a REFRESH_REJECTED error in the SrvAck.
+
+ The URL is "service:directory-agent://"<addr> of the DA, where <addr>
+ is the dotted decimal numeric address of the DA. The <scope-list> of
+ the DA MUST NOT be NULL.
+
+ The SLP SPI List is the list of SPIs that the DA is capable of
+ verifying. SAs MUST NOT register services with authentication blocks
+ for those SLP SPIs which are not on the list. DAs will reject
+ service registrations which they cannot verify, returning an
+ AUTHENTICATION_UNKNOWN error.
+
+ The format of DAAdvert signatures is defined in Section 9.2.1.
+
+ The SLP SPI which is used to verify the DAAdvert is included in the
+ Authentication Block. When DAAdverts are multicast, they may have to
+ transmit multiple DAAdvert Authentication Blocks. If the DA is
+ configured to be able to generate signatures for more than one SPI,
+ the DA MUST include one Authentication Block for each SPI. If all
+ these Authentication Blocks do not fit in a single datagram (to
+ multicast or broadcast) the DA MUST send separate DAAdverts so that
+ Authentication Blocks for all the SPIs the DA is capable of
+ generating are sent.
+
+ If the DAAdvert is being sent in response to a SrvRqst, the DAAdvert
+ contains only the authentication block with the SLP SPI in the
+ SrvRqst, if the DA is configured to be able to produce digital
+ signatures using that SLP SPI. If the SrvRqst is unicast to the DA
+ (the REQUEST MCAST flag in the header is not set) and an unsupported
+ SLP SPI is included, the DA replies with a DAAdvert with the Error
+ Code set to an AUTHENTICATION_UNKNOWN error.
+
+ UAs SHOULD be configured with SLP SPIs that will allow them to verify
+ DA Advertisements. If the UA is configured with SLP SPIs and
+ receives a DAAdvert which fails to be verified using one of them, the
+ UA MUST discard it.
+
+8.6. Service Agent Advertisement
+
+ User Agents MUST NOT solicit SA Advertisements if they have been
+ configured to use a particular DA, if they have been configured with
+ a <scope-list> or if DAs have been discovered. UAs solicit SA
+ Advertisements only when they are explicitly configured to use User
+ Selectable scopes (see Section 11.2) in order to discover the scopes
+ that SAs support. This allows UAs without scope configuration to
+ make use of either DAs or SAs without any functional difference
+
+
+
+Guttman, et al. Standards Track [Page 25]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ except performance.
+
+ A SA MAY be configured with attributes, and SHOULD support the
+ attribute 'service-type' whose value is all the service types of
+ services represented by the SA. SAs MUST NOT respond if the SrvRqst
+ predicate is not satisfied. For example, only SAs offering 'nfs'
+ services SHOULD respond with a SAAdvert to a SrvRqst for service type
+ "service:service-agent" which includes a predicate "(service-
+ type=nfs)".
+
+ 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 = SAAdvert = 11) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of URL | URL \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <scope-list> | <scope-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <attr-list> | <attr-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | # auth blocks | authentication block (if any) \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The SA responds only to multicast SA discovery requests which either
+ include no <scope-list> or a scope which they are configured to use.
+
+ The SAAdvert MAY include a list of attributes the SA supports. This
+ attribute list SHOULD be kept short so that the SAAdvert will not
+ exceed the path MTU in size.
+
+ The URL is "service:service-agent://"<addr> of the SA, where <addr>
+ is the dotted decimal numeric address of the SA. The <scope-list> of
+ the SA MUST NOT be null.
+
+ The SAAdvert contains one SAAdvert Authentication block for each SLP
+ SPI the SA can produce Authentication Blocks for. If the UA can
+ verify the Authentication Block of the SAAdvert, and the SAAdvert
+ fails to be verified, the UA MUST discard it.
+
+9. Optional Features
+
+ The features described in this section are not mandatory. Some are
+ useful for interactive use of SLP (where a user rather than a program
+ will select services, using a browsing interface for example) and for
+ scalability of SLP to larger networks.
+
+
+
+
+
+Guttman, et al. Standards Track [Page 26]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+9.1. Service Location Protocol Extensions
+
+ The format of a Service Location Extension 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension ID | Next Extension Offset |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Offset, contd.| Extension Data \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Extension IDs are assigned in the following way:
+
+ 0x0000-0x3FFF Standardized. Optional to implement. Ignore if
+ unrecognized.
+ 0x4000-0x7FFF Standardized. Mandatory to implement. A UA or SA
+ which receives this option in a reply and does not understand
+ it MUST silently discard the reply. A DA or SA which receives
+ this option in a request and does not understand it MUST return
+ an OPTION_NOT_UNDERSTOOD error.
+ 0x8000-0x8FFF For private use (not standardized). Optional to
+ implement. Ignore if unrecognized.
+ 0x9000-0xFFFF Reserved.
+
+ The three byte offset to next extension indicates the position of the
+ next extension as offset from the beginning of the SLP message.
+
+ The offset value is 0 if there are no extensions following the
+ current extension.
+
+ If the offset is 0, the length of the current Extension Data is
+ determined by subtracting total length of the SLP message as given in
+ the SLP message header minus the offset of the current extension.
+
+ Extensions defined in this document are in Section D. See section 15
+ for procedures that are required when specifying new SLP extensions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 27]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+9.2. Authentication Blocks
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Block Structure Descriptor | Authentication Block Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SLP SPI String Length | SLP SPI String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Structured Authentication Block ... \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Authentication blocks are returned with certain SLP messages to
+ verify that the contents have not been modified, and have been
+ transmitted by an authorized agent. The authentication data
+ (contained in the Structured Authentication Block) is typically case
+ sensitive. Even though SLP registration data (e.g., attribute
+ values) are typically are not case sensitive, the case of the
+ registration data has to be preserved by the registering DA so that
+ UAs will be able to verify the data used for calculating digital
+ signature data.
+
+ The Block Structure Descriptor (BSD) identifies the format of the
+ Authenticator which follows. BSDs 0x0000-0x7FFF will be maintained
+ by IANA. BSDs 0x8000-0x8FFF are for private use.
+
+ The Authentication Block Length is the length of the entire block,
+ starting with the BSD.
+
+ The Timestamp is the time that the authenticator expires (to prevent
+ replay attacks.) The Timestamp is a 32-bit unsigned fixed-point
+ number of seconds relative to 0h on 1 January 1970. SAs use this
+ value to indicate when the validity of the digital signature expires.
+ This Timestamp will wrap back to 0 in the year 2106. Once the value
+ of the Timestamp wraps, the time at which the Timestamp is relative
+ to resets. For example, after 06h28 and 16 seconds 5 February 2106,
+ all Timestamp values will be relative to that epoch date.
+
+ The SLP Security Parameters Index (SPI) string identifies the key
+ length, algorithm parameters and keying material to be used by agents
+ to verify the signature data in the Structured Authentication Block.
+ The SLP SPI string has the same grammar as the <scope-val> defined in
+ Section 6.4.1.
+
+ Reserved characters in SLP SPI strings must be escaped using the same
+ convention as used throughout SLPv2.
+
+
+
+Guttman, et al. Standards Track [Page 28]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ SLP SPIs deployed in a site MUST be unique. An SLP SPI used for
+ BSD=0x0002 must not be the same as used for some other BSD.
+
+ All SLP agents MUST implement DSA [20] (BSD=0x0002). SAs MUST
+ register services with DSA authentication blocks, and they MAY
+ register them with other authentication blocks using other
+ algorithms. SAs MUST use DSA authentication blocks in SrvDeReg
+ messages and DAs MUST use DSA authentication blocks in unsolicited
+ DAAdverts.
+
+9.2.1. SLP Message Authentication Rules
+
+ The sections below define how to calculate the value to apply to the
+ algorithm identified by the BSD value. The components listed are
+ used as if they were a contiguous single byte aligned buffer in the
+ order given.
+
+ URL
+ 16-bit Length of SLP SPI String, SLP SPI String.
+ 16-bit Length of URL, URL,
+ 32-bit Timestamp.
+
+ Attribute List
+ 16-bit Length of SLP SPI String, SLP SPI String,
+ 16-bit length of <attr-list>, <attr-list>,
+ 32-bit Timestamp.
+
+ DAAdvert
+ 16-bit Length of SLP SPI String, SLP SPI String,
+ 32-bit DA Stateless Boot Timestamp,
+ 16-bit Length of URL, URL,
+ 16-bit Length of <attr-list>, <attr-list>,
+ 16-bit Length of DA's <scope-list>, DA's <scope-list>,
+ 16-bit Length of DA's <SLP SPI List>, DA's <SLP SPI List>,
+ 32-bit Timestamp.
+
+ The first SLP SPI is the SLP SPI in the Authentication
+ Block. This SLP SPI indicates the keying material and other
+ parameters to use to verify the DAAdvert. The SLP SPI List is
+ the list of SLP SPIs the DA itself supports, and is able to
+ verify.
+
+ SAAdvert
+ 16-bit Length of SLP SPI String, SLP SPI String,
+ 16-bit Length of URL, URL,
+ 16-bit Length of <attr-list>, <attr-list>,
+ 16-bit Length of <scope-list>, <scope-list>,
+ 32-bit Timestamp.
+
+
+
+Guttman, et al. Standards Track [Page 29]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+9.2.2 DSA with SHA-1 in Authentication Blocks
+
+ BSD=0x0002 is defined to be DSA with SHA-1. The signature
+ calculation is defined by [20]. The signature format conforms to
+ that in the X.509 v3 certificate:
+
+ 1. The signature algorithm identifier (an OID)
+ 2. The signature value (an octet string)
+ 3. The certificate path.
+
+ All data is represented in ASN.1 encoding:
+
+ id-dsa-with-sha1 ID ::= {
+ iso(1) member-body(2) us(840) x9-57 (10040)
+ x9cm(4) 3 }
+
+ i.e., the ASN.1 encoding of 1.2.840.10040.4.3 followed immediately
+ by:
+
+ Dss-Sig-Value ::= SEQUENCE {
+ r INTEGER,
+ s INTEGER }
+
+ i.e., the binary ASN.1 encoding of r and s computed using DSA and
+ SHA-1. This is followed by a certificate path, as defined by X.509
+ [10], [2], [3], [4], [5].
+
+ Authentication Blocks for BSD=0x0002 have the following format. In
+ the future, BSDs may be assigned which have different formats.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ASN.1 encoded DSA signature \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+9.3. Incremental Service Registration
+
+ Incremental registrations update attribute values for a previously
+ registered service. Incremental service registrations are useful
+ when only a single attribute has changed, for instance. In an
+ incremental registration, the FRESH flag in the SrvReg header is NOT
+ set.
+
+ The new registration's attributes replace the previous
+ registration's, but do not affect attributes which were included
+ previously and are not present in the update.
+
+
+
+
+Guttman, et al. Standards Track [Page 30]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ For example, suppose service:x://a.org has been registered with
+ attributes A=1, B=2, C=3. If an incremental 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.
+
+ Incremental registrations MUST NOT be performed for services
+ registered with Authentication Blocks. These must be registered with
+ ALL attributes, with the FRESH flag in the SrvReg header set. DAs
+ which receive such registration messages return an
+ AUTHENTICATION_FAILED error.
+
+ If the FRESH flag is not set and the DA does not have a prior
+ registration for the service, the incremental registration fails with
+ error code INVALID_UPDATE.
+
+ The SA MUST use the same <scope-list> in an update message as was
+ used in the prior registration. If this is not done, the DA returns
+ a SCOPE_NOT_SUPPORTED error. In order to change the scope of a
+ service advertisement it MUST be deregistered first and reregistered
+ with a new <scope-list>.
+
+ The SA MUST use the same <service-type> in an update message as was
+ used in a prior registration of the same URL. If this is not done,
+ the DA returns an INVALID_UPDATE error.
+
+9.4. Tag Lists
+
+ Tag lists are used in SrvDeReg and AttrReq messages. The syntax of a
+ <tag-list> item is:
+
+ tag-filter = simple-tag / substring
+ simple-tag = 1*filt-char
+ substring = [initial] any [final]
+ initial = 1*filt-char
+ any = `*' *(filt-char `*')
+ final = 1*filt-char
+ filt-char = Any character excluding <reserved> and <bad-tag> (see
+ grammar in Section 5).
+
+ Wild card characters in a <tag-list> item match arbitrary sequences
+ of characters. For instance "*bob*" matches "some bob I know",
+ "bigbob", "bobby" and "bob".
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 31]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+10. Optional SLP Messages
+
+ The additional requests provide features for user interaction and for
+ efficient updating of service advertisements with dynamic attributes.
+
+10.1. Service Type Request
+
+ The Service Type Request (SrvTypeRqst) allows a UA to discover all
+ types of service on a network. This is useful for general purpose
+ service browsers.
+
+ 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 = 9) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of PRList | <PRList> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of Naming Authority | <Naming Authority String> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <scope-list> | <scope-list> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The <PRList> list and <scope-list> are interpreted as in Section 8.1.
+
+ The Naming Authority string, if present in the request, will limit
+ the reply to Service Type strings with the specified Naming
+ Authority. If the Naming Authority string is absent, the IANA
+ registered service types will be returned. If the length of the
+ Naming Authority is set to 0xFFFF, the Naming Authority string is
+ omitted and ALL Service Types are returned, regardless of Naming
+ Authority.
+
+10.2. Service Type Reply
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Service Location header (function = SrvTypeRply = 10) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error Code | length of <srvType-list> |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | <srvtype--list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The service-type Strings (as described in Section 4.1) are provided
+ in <srvtype-list>, which is a <string-list>.
+
+
+
+
+Guttman, et al. Standards Track [Page 32]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ If a service type has a Naming Authority other than IANA it MUST be
+ returned following the service type string and a `.' character.
+ Service types with the IANA Naming Authority do not include a Naming
+ Authority string.
+
+10.3. Attribute Request
+
+ The Attribute Request (AttrRqst) allows a UA to discover attributes
+ of a given service (by supplying its URL) or for an entire service
+ type. The latter feature allows the UA to construct a query for an
+ available service by selecting desired features. The UA may request
+ that all attributes are returned, or only a subset of them.
+
+ 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 = 6) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of PRList | <PRList> String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of URL | URL \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <scope-list> | <scope-list> string \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <tag-list> string | <tag-list> string \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length of <SLP SPI> string | <SLP SPI> string \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The <PRList>, <scope-list> and <SLP SPI> string are interpreted as in
+ Section 8.1.
+
+ The URL field can take two forms. It can simply be a Service Type
+ (see Section 4.1), such as "http" or "service:tftp". In this case,
+ all attributes and the full range of values for each attribute of all
+ services of the given Service Type is returned.
+
+ The URL field may alternatively be a full URL, such as
+ "service:printer:lpr://igore.wco.ftp.com:515/draft" or
+ "nfs://max.net/znoo". In this, only the registered attributes for
+ the specified URL are returned.
+
+ The <tag-list> field is a <string-list> of attribute tags, as defined
+ in Section 9.4 which indicates the attributes to return in the
+ AttrRply. If <tag-list> is omitted, all attributes are returned.
+ <tag-list> MUST be omitted and a full URL MUST be included when
+ attributes when a SLP SPI List string is included, otherwise the DA
+ will reply with an AUTHENTICATION_FAILED error.
+
+
+
+Guttman, et al. Standards Track [Page 33]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+10.4. Attribute Reply
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Service Location header (function = AttrRply = 7) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error Code | length of <attr-list> |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | <attr-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |# of AttrAuths | Attribute Authentication Block (if present) \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The format of the <attr-list> and the Authentication Block is as
+ specified for SrvReg (see Section 9.2.1).
+
+ Attribute replies SHOULD be returned with the original case of the
+ string registration intact, as they are likely to be human readable.
+ In the case where the AttrRqst was by service type, all attributes
+ defined for the service type, and all their values are returned.
+
+ Although white space is folded for string matching, attribute tags
+ and values MUST be returned with their original white space
+ preserved.
+
+ Only one copy of each attribute tag or String value should be
+ returned, arbitrarily choosing one version (with respect to upper and
+ lower case and white space internal to the strings): Duplicate
+ attributes and values SHOULD be removed. An arbitrary version of the
+ string value and tag name is chosen for the merge. For example:
+ "(A=a a,b)" merged with "(a=A A,B)" may yield "(a=a a,B)".
+
+10.5. Attribute Request/Reply Examples
+
+ Suppose that printer services have been registered as follows:
+
+ Registered Service:
+ URL = service:printer:lpr://igore.wco.ftp.com/draft
+ scope-list = Development
+ Lang. Tag = en
+ Attributes = (Name=Igore),(Description=For developers only),
+ (Protocol=LPR),(location-description=12th floor),
+ (Operator=James Dornan \3cdornan@monster\3e),
+ (media-size=na-letter),(resolution=res-600),x-OK
+
+ URL = service:printer:lpr://igore.wco.ftp.com/draft
+ scope-list = Development
+
+
+
+Guttman, et al. Standards Track [Page 34]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ Lang. Tag = de
+ Attributes = (Name=Igore),(Description=Nur fuer Entwickler),
+ (Protocol=LPR),(location-description=13te Etage),
+ (Operator=James Dornan \3cdornan@monster\3e),
+ (media-size=na-letter),(resolution=res-600),x-OK
+
+ URL = service:printer:http://not.wco.ftp.com/cgi-bin/pub-prn
+ scope-list = Development
+ Lang. Tag = en
+ Attributes = (Name=Not),(Description=Experimental IPP printer),
+ (Protocol=http),(location-description=QA bench),
+ (media-size=na-letter),(resolution=other),x-BUSY
+
+ Notice the first printer, "Igore" is registered in both English and
+ German. The `<' and `>' characters in the Operator attribute value
+ which are part of the Email address had to be escaped, as they are
+ reserved characters for values.
+
+ Attribute tags are not translated, though attribute values may be,
+ see [13].
+
+ The attribute Request:
+
+ URL = service:printer:lpr://igore.wco.ftp.com/draft
+ scope-list = Development
+ Lang. Tag = de
+ tag-list = resolution,loc*
+
+ receives the Attribute Reply:
+
+ (location-description=13te Etage),(resolution=res-600)
+
+ The attribute Request:
+
+ URL = service:printer
+ scope-list = Development
+ Lang. Tag = en
+ tag-list = x-*,resolution,protocol
+
+ receives an Attribute Reply containing:
+
+ (protocols=http,LPR),(resolution=res-600,other),x-OK,x-BUSY
+
+ The first request is by service instance and returns the requested
+ values, in German. The second request is by abstract service type
+ (see Section 4) and returns values from both "Igore" and "Not".
+
+
+
+
+
+Guttman, et al. Standards Track [Page 35]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ An attribute Authentication Block is returned if an authentication
+ block with the SLP SPI in the AttrRqst can be returned. Note that
+ the <attr-list> returned from a DA with an Authentication Block MUST
+ be identical to the <attr-list> registered by a SA, in order for the
+ authentication verification calculations to be possible.
+
+ A SA or DA only returns an Attribute Authentication Block if the
+ AttrRqst included a full URL in the request and no tag list.
+
+ If an SLP SPI is specified in a unicast request (the REQUEST MCAST
+ flag in the header is not set) and the SA or DA cannot return an
+ Authentication Block with that SLP SPI, an AUTHENTICATION_UNKNOWN
+ error is returned. The # of Attr Auths field is set to 0 if there no
+ Authentication Block is included, or 1 if an Authentication Block
+ follows.
+
+10.6. Service Deregistration
+
+ A DA deletes a service registration when its Lifetime expires.
+ Services SHOULD be deregistered when they are no longer available,
+ rather than leaving the registrations to time out.
+
+ 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 = 4) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <scope-list> | <scope-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | URL Entry \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length of <tag-list> | <tag-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The <scope-list> is a <string-list> (see section 2.1).
+
+ The SA MUST retry if there is no response from the DA, see Section
+ 12.3. The DA acknowledges a SrvDeReg with a SrvAck. Once the SA
+ receives an acknowledgment indicating success, the service and/or
+ attributes are no longer advertised by the DA. The DA deregisters the
+ service or service attributes from every scope specified in the
+ SrvDeReg which it was previously registered in.
+
+ The SA MUST deregister all services with the same scope list used to
+ register the service with a DA. If this is not done in the SrvDeReg
+ message, the DA returns a SCOPE_NOT_SUPPORTED error. The Lifetime
+ field in the URL Entry is ignored for the purposes of the SrvDeReg.
+
+
+
+
+Guttman, et al. Standards Track [Page 36]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ The <tag-list> is a <string-list> of attribute tags to deregister as
+ defined in Section 9.4. If no <tag-list> is present, the SrvDeReg
+ deregisters the service in all languages it has been registered in.
+ If the <tag-list> is present, the SrvDeReg deregisters the attributes
+ whose tags are listed in the tag spec. Services registered with
+ Authentication Blocks MUST NOT include a <tag-list> in a SrvDeReg
+ message: A DA will respond with an AUTHENTICATION_FAILED error in
+ this case.
+
+ If the service to be deregistered was registered with an
+ authentication block or blocks, a URL authentication block for each
+ of the SLP SPIs registered must be included in the SrvDeReg.
+ Otherwise, the DA returns an AUTHENTICATION_ABSENT error. If the
+ message fails to be verified by the DA, an AUTHENTICATION_FAILED
+ error is returned by the DA.
+
+11. Scopes
+
+ Scopes are sets of services. The primary use of Scopes is to provide
+ the ability to create administrative groupings of services. A set of
+ services may be assigned a scope by network administrators. A client
+ seeking services is configured to use one or more scopes. The user
+ will only discover those services which have been configured for him
+ or her to use. By configuring UAs and SAs with scopes,
+ administrators may provision services. Scopes strings are case
+ insensitive. The default SCOPE string is "DEFAULT".
+
+ Scopes are the primary means an administrator has to scale SLP
+ deployments to larger networks. When DAs with NON-DEFAULT scopes are
+ present on the network, further gains can be had by configuring UAs
+ and SAs to have a predefined non-default scope. These agents can
+ then perform DA discovery and make requests using their scope. This
+ will limit the number of replies.
+
+11.1. Scope Rules
+
+ SLP messages which fail to contain a scope that the receiving Agent
+ is configured to use are dropped (if the request was multicast) or a
+ SCOPE_NOT_SUPPORTED error is returned (if the request was unicast).
+ Every SrvRqst (except for DA and SA discovery requests), SrvReg,
+ AttrRqst, SrvTypeRqst, DAAdvert, and SAAdvert message MUST include a
+ <scope-list>.
+
+ A UA MUST unicast its SLP messages to a DA which supports the desired
+ scope, in preference to multicasting a request to SAs. A UA MAY
+ multicast the request if no DA is available in the scope it is
+ configured to use.
+
+
+
+
+Guttman, et al. Standards Track [Page 37]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+11.2. Administrative and User Selectable Scopes
+
+ All requests and services are scoped. The two exceptions are
+ SrvRqsts for "service:directory-agent" and "service:service-agent".
+ These MAY have a zero-length <scope-list> when used to enable the
+ user to make scope selections. In this case UAs obtain their scope
+ list from DAAdverts (or if DAs are not available, from SAAdverts.)
+
+ Otherwise, if SAs and UAs are to use any scope other than the default
+ (i.e., "DEFAULT"), the UAs and SAs are configured with lists of
+ scopes to use by system administrators, perhaps automatically by way
+ of DHCP option 78 or 79 [21]. Such administrative scoping allows
+ services to be provisioned, so that users will only see services they
+ are intended to see.
+
+ User configurable scopes allow a user to discover any service, but
+ require them to do their own selection of scope. This is similar to
+ the way AppleTalk [12] and SMB [19] networking allow user selection
+ of AppleTalk Zone or workgroups.
+
+ Note that the two configuration choices are not compatible. One
+ model allows administrators control over service provision. The
+ other delegates this to users (who may not be prepared to do any
+ configuration of their system).
+
+12. Directory Agents
+
+ DAs cache service location and attribute information. They exist to
+ enhance the performance and scalability of SLP. Multiple DAs provide
+ further scalability and robustness of operation, since they can each
+ store service information for the same SAs, in case one of the DAs
+ fails.
+
+ A DA provides a centralized store for service information. This is
+ useful in a network with several subnets or with many SLP Agents.
+ The DA address can be dynamically configured with UAs and SAs using
+ DHCP, or by using static configuration.
+
+ SAs configured to use DAs with DHCP or static configuration MUST
+ unicast a SrvRqst to the DA, when the SA is initialized. The SrvRqst
+ omits the scope list and sets the service type of the request to
+ "service:directory-agent". The DA will return a DAAdvert with its
+ attributes, SLP SPI list, and other parameters which are essential
+ for proper SA to DA communication.
+
+ Passive detection of DAs by SAs enables services to be advertised
+ consistently among DAs of the same scope. Advertisements expire if
+ not renewed, leaving only transient stale registrations in DAs, even
+
+
+
+Guttman, et al. Standards Track [Page 38]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ in the case of a failure of a SA.
+
+ A single DA can support many UAs. UAs send the same requests to DAs
+ that they would send to SAs and expect the same results. DAs reduce
+ the load on SAs, making simpler implementations of SAs possible.
+
+ UAs MUST be prepared for the possibility that the service information
+ they obtain from DAs is stale.
+
+12.1. Directory Agent Rules
+
+ When DAs are present, each SA MUST register its services with DAs
+ that support one or more of its scope(s).
+
+ UAs MUST unicast requests directly to a DA (when scoping rules
+ allow), hence avoiding using the multicast convergence algorithm, to
+ obtain service information. This decreases network utilization and
+ increases the speed at which UAs can obtain service information.
+
+ DAs MUST flush service advertisements once their lifetime expires or
+ their URL Authentication Block "Timestamp" of expiration is past.
+
+ DAAdverts MUST include DA Stateless Boot Timestamp, in the same
+ format as the Authentication Block (see Section 9.2). The Timestamp
+ in the Authentication Block indicates the time at which all previous
+ registrations were lost (i.e., the last stateless reboot). The
+ Timestamp is set to 0 in a DAAdvert to notify UAs and SAs that the DA
+ is going down. DAs MUST NOT use equal or lesser Boot Timestamps to
+ previous ones, if they go down and restart without service
+ registration state. This would mislead SAs to not reregister with
+ the DA.
+
+ DAs which receive a multicast SrvRqst for the service type
+ "service:directory-agent" MUST silently discard it if the <scope-
+ list> is (a) not omitted and (b) does not include a scope they are
+ configured to use. Otherwise the DA MUST respond with a DAAdvert.
+
+ DAs MUST respond to AttrRqst and SrvTypeRqst messages (these are
+ OPTIONAL only for SAs, not DAs.)
+
+12.2. Directory Agent Discovery
+
+ UAs can discover DAs using static configuration, DHCP options 78 and
+ 79, or by multicasting (or broadcasting) Service Requests using the
+ convergence algorithm in Section 6.3.
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 39]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ See Section 6 regarding unsolicited DAAdverts. Section 12.2.2
+ describes how SAs may reduce the number of times they must reregister
+ with DAs in response to unsolicited DAAdverts.
+
+ DAs MUST send unsolicited DAAdverts once per CONFIG_DA_BEAT. An
+ unsolicited DAAdvert has an XID of 0. SAs MUST listen for DAAdverts,
+ passively, as described in Section 8.5. UAs MAY do this. If they do
+ not listen for unsolicited DAAdverts, however, they will not discover
+ DAs as they become available. UAs SHOULD, in this case, do periodic
+ active DA discovery, see Section 6.
+
+ A URL with the scheme "service:directory-agent" indicates the DA's
+ location as defined in Section 8.5. For example:
+ "service:directory-agent://foobawooba.org".
+
+ The following sections suggest timing algorithms which enhance the
+ scalability of SLP.
+
+12.2.1. Active DA Discovery
+
+ After a UA or SA restarts, its initial DA discovery request SHOULD be
+ delayed for some random time uniformly distributed from 0 to
+ CONFIG_START_WAIT seconds.
+
+ The UA or SA sends the DA Discovery request using a SrvRqst, as
+ described in Section 8.1. DA Discovery requests MUST include a
+ Previous Responder List. SrvRqsts for Active DA Discovery SHOULD NOT
+ be sent more than once per CONFIG_DA_FIND seconds.
+
+ After discovering a new DA, a SA MUST wait a random time between 0
+ and CONFIG_REG_ACTIVE seconds before registering their services.
+
+12.2.2. Passive DA Advertising
+
+ A DA MUST multicast (or broadcast) an unsolicited DAAdvert every
+ CONFIG_DA_BEAT seconds. CONFIG_DA_BEAT SHOULD be specified to
+ prevent DAAdverts from using more than 1% of the available bandwidth.
+
+ All UAs and SAs which receive the unsolicited DAAdvert SHOULD examine
+ its DA stateless Boot Timestamp. If it is set to 0, the DA is going
+ down and no further messages should be sent to it.
+
+ If a SA detects a DA it has never encountered (with a nonzero
+ timestamp,) the SA must register with it. SAs MUST examine the
+ DAAdvert's timestamp to determine if the DA has had a stateless
+ reboot since the SA last registered with it. If so it registers with
+ the DA. SAs MUST wait a random interval between 0 and
+ CONFIG_REG_PASSIVE before beginning DA registration.
+
+
+
+Guttman, et al. Standards Track [Page 40]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+12.3. Reliable Unicast to DAs and SAs
+
+ If a DA or SA fails to respond to a unicast UDP message in
+ CONFIG_RETRY seconds, the message should be retried. The wait
+ interval for each subsequent retransmission MUST exponentially
+ increase, doubling each time. If a DA or SA fails to respond after
+ CONFIG_RETRY_MAX seconds, the sender should consider the receiver to
+ have gone down. The UA should use a different DA. If no such DA
+ responds, DA discovery should be used to find a new DA. If no DA is
+ available, multicast requests to SAs are used.
+
+12.4. DA Scope Configuration
+
+ By default, DAs are configured with the "DEFAULT" scope.
+ Administrators may add other configured scopes, in order to support
+ UAs and SAs in non default scopes. The default configuration MUST
+ NOT be removed from the DA unless:
+
+ - There are other DAs which support the "DEFAULT" scope, or
+
+ - All UAs and SAs have been configured with non-default scopes.
+
+ Non-default scopes can be phased-in as the SLP deployment grows.
+ Default scopes should be phased out only when the non-default scopes
+ are universally configured.
+
+ If a DA and SA are coresident on a host (quite possibly implemented
+ by the same process), configuration of the host is considerably
+ simplified if the SA supports only scopes also supported by the DA.
+ That is, the SA SHOULD NOT advertise services in any scopes which are
+ not supported by the coresident DA. This means that incoming requests
+ can be answered by a single data store; the SA and DA registrations
+ do not need to be kept separately.
+
+12.5. DAs and Authentication Blocks
+
+ DAs are not configured to sign service registrations or attribute
+ lists. They simply cache services registered by Service Agents. DAs
+ MUST NOT accept registrations including authentication blocks for SLP
+ SPIs which it is not configured with, see Section 8.5.
+
+ A DA protects registrations which are made with authentication blocks
+ using SLP SPIs it is configured to use. If a service S is
+ registered, a subsequent registration (which will replace the
+ adertisement) or a deregistration (which will remove it) MUST include
+ an Authentication Block with the corresponding SLP SPI, see Section
+ 8.3 and Section 10.6.
+
+
+
+
+Guttman, et al. Standards Track [Page 41]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ Example:
+
+ A DA is configured to be able to verify Authentication Blocks with
+ SLP SPIs "X,Y", that is X and Y.
+
+ An SA registers a service with an Authentication Block with SPI "Z".
+ The DA stores the registration, but discards the Authentication
+ Block. If a UA requests a service with an SLP SPI string "Z", the DA
+ will respond with an AUTHENTICATION_UNKNOWN error.
+
+ An SA registers a service S with Authentication Blocks including SLP
+ SPIs "X" and "Y". If a UA requests a service with an SLP SPI string
+ "X" the DA will be able to return S (if the service type, language,
+ scope and predicate of the SrvRqst match S) The DA will also return
+ the Authentication Block with SLP SPI set to "X". If the DA receives
+ a subsequent SrvDeReg for S (which will remove the advertisement) or
+ a subsequent SrvReg for S (which will replace it), the message must
+ include two URL Authentication Blocks, one each for SPIs "X" and "Y".
+ If either of these were absent, the DA would return an
+ AUTHENTICATION_ABSENT error.
+
+13. Protocol Timing Defaults
+
+Interval name Section Default Value Meaning
+------------------- ------- ------------- ------------------------
+CONFIG_MC_MAX 6.3 15 seconds Max time to wait for a
+ complete multicast query
+ response (all values.)
+CONFIG_START_WAIT 12.2.1 3 seconds Wait to perform DA
+ discovery on reboot.
+CONFIG_RETRY 12.3 2 seconds Wait interval before
+ initial retransmission
+ of multicast or unicast
+ requests.
+CONFIG_RETRY_MAX 12.3 15 seconds Give up on unicast
+ request retransmission.
+CONFIG_DA_BEAT 12.2.2 3 hours DA Heartbeat, so that SAs
+ passively detect new DAs.
+CONFIG_DA_FIND 12.3 900 seconds Minimum interval to wait
+ before repeating Active
+ DA discovery.
+CONFIG_REG_PASSIVE 12.2 1-3 seconds Wait to register services
+ on passive DA discovery.
+CONFIG_REG_ACTIVE 8.3 1-3 seconds Wait to register services
+ on active DA discovery.
+CONFIG_CLOSE_CONN 6.2 5 minutes DAs and SAs close idle
+ connections.
+
+
+
+
+Guttman, et al. Standards Track [Page 42]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+14. Optional Configuration
+
+ Broadcast Only
+ Any SLP agent SHOULD be configurable to use broadcast
+ only. See Sections 6.1 and 12.2.
+
+ Predefined DA
+ A UA or SA SHOULD be configurable to use a predefined DA.
+
+ No DA Discovery
+ The UA or SA SHOULD be configurable to ONLY use
+ predefined and DHCP-configured DAs and perform no active
+ or passive DA discovery.
+
+ Multicast TTL
+ The default multicast TTL is 255. Agents SHOULD be
+ configurable to use other values. A lower value will
+ focus the multicast convergence algorithm on smaller
+ subnetworks, decreasing the number of responses and
+ increases the performance of service location. This
+ may result in UAs obtaining different results for the
+ identical requests depending on where they are connected
+ to the network.
+
+ Timing Values
+ Time values other than the default MAY be configurable.
+ See Section 13.
+
+ Scopes
+ A UA MAY be configurable to support User Selectable
+ scopes by omitting all predefined scopes. See
+ Section 11.2. A UA or SA MUST be configurable to use
+ specific scopes by default. Additionally, a UA or SA
+ MUST be configurable to use specific scopes for requests
+ for and registrations of specific service types. The
+ scope or scopes of a DA MUST be configurable. The
+ default value for a DA is to have the scope "DEFAULT" if
+ not otherwise configured.
+
+ DHCP Configuration
+ DHCP options 78 and 79 may be used to configure SLP. If
+ DA locations are configured using DHCP, these SHOULD
+ be used in preference to DAs discovered actively or
+ passively. One or more of the scopes configured using
+ DHCP MUST be used in requests. The entire configured
+ <scope-list> MUST be used in registration and DA
+ configuration messages.
+
+
+
+
+Guttman, et al. Standards Track [Page 43]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ Service Template
+ UAs and SAs MAY be configured by using Service Templates.
+ Besides simplifying the specification of attribute
+ values, this also allows them to enforce the inclusion
+ of 'required' attributes in SrvRqst, SrvReg and SrvDeReg
+ messages. DAs MAY be configured with templates to
+ allow them to WARN UAs and SAs in these cases. See
+ Section 10.4.
+
+ SLP SPI for service discovery
+ Agents SHOULD be configurable to support SLP SPIs using
+ the following parameters: BSD=2 (DSA with SHA-1) and
+ a public key identified by the SLP SPI String. In
+ the future, when a Public Key Infrastructure exists,
+ SLP Agents may be able to obtain public keys and
+ cryptographic parameters corresponding to the names used
+ in SLP SPI Strings.
+
+ Note that if the SLP SPI string chosen is identical
+ to a scope string, it is effectively the same as a
+ Protected Scope in SLPv1. Namely, every SA advertising
+ in that scope would be configured with the same Private
+ Key. Every DA and UA of that scope would be configured
+ with the appropriate Public Key to verify signatures
+ produced by those SAs. This is a convenient way to
+ configure SLP deployments in the absence of a Public Key
+ Infrastructure. Currently, it would be too difficult to
+ manage the keying of UAs and DAs if each SA had its own
+ key.
+
+ SLP SPI for Directory Agent discovery
+ Agents SHOULD be configurable to support SLP SPIs as
+ above, to be used when discovering DAs. This SPI SHOULD
+ be sent in SrvRqsts to discover DAs and be used to verify
+ multicast DAAdvert messages.
+
+ SA and DA Private Key
+ SAs and DAs which can generate digital signatures require
+ a Private Key and a corresponding SLP SPI indentifier
+ to include in the Authentication Block. The SLP SPI
+ identifies the Public Key to use to verify the digital
+ signature in the Authentication Block.
+
+15. IANA Considerations
+
+ SLP includes four sets of identifiers which may be registered with
+ IANA. The policies for these registrations (See [18]) are noted in
+ each case.
+
+
+
+Guttman, et al. Standards Track [Page 44]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ The Block Structure Descriptor (BSD) identifies the format of the
+ Authenticator which follows. BSDs 0x8000-0x8FFF are for Private Use.
+
+ Further Block Structured Descriptor (BSD) values, from the range
+ 0x0003-0x7FFF may be standardized in the future by submitting a
+ document which describes:
+
+ - The data format of the Structured Authenticator block.
+
+ - Which cryptographic algorithm to use (including a reference
+ to a technical specification of the algorithm.)
+
+ - The format of any keying material required for
+ preconfiguring UAs, DAs and SAs. Also include any
+ considerations regarding key distribution.
+
+ - Security considerations to alert others to the strengths and
+ weaknesses of the approach.
+
+ The IANA will assign Cryptographic BSD numbers on the basis of IETF
+ Consenus.
+
+ New function-IDs, in the range 12-255, may be standardized by the
+ method of IETF Consensus.
+
+ New SLP Extensions with types in the range 2-65535 may be registered
+ following review by a Designated Expert.
+
+ New error numbers in the range 15-65535 are assigned on the basis of
+ a Standards Action.
+
+ Protocol elements used with Service Location Protocol may also
+ require IANA registration actions. SLP is used in conjunction with
+ "service:" URLs and Service Templates [13]. These are standardized
+ by review of a Designated Expert and a mailing list (See [13].)
+
+16. Internationalization Considerations
+
+ SLP messages support the use of multiple languages by providing a
+ Language Tag field in the common message header (see Section 8).
+
+ Services MAY be registered in multiple languages. This provides
+ attributes so that users with different language skills may select
+ services interactively.
+
+ Attribute tags are not translated. Attribute values may be
+ translated unless the Service Template [13] defines the attribute
+ values to be 'literal'.
+
+
+
+Guttman, et al. Standards Track [Page 45]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ A service which is registered in multiple languages may be queried in
+ multiple languages. The language of the SrvRqst or AttrRqst is used
+ to satisfy the request. If the requested language is not supported,
+ a LANGUAGE_NOT_SUPPORTED error is returned. SrvRply and AttrRply
+ messages are always in the same language of the request.
+
+ A DA or SA MAY be configured with translations of Service Templates
+ [13] for the same service type. This will allow the DA or SA to
+ translate a request (say in Italian) to the language of the service
+ advertisement (say in English) and then translate the reply back to
+ Italian. Similarly, a UA MAY use templates to translate outgoing
+ requests and incoming replies.
+
+ The dialect field in the Language Tag MAY be used: Requests which
+ can be fulfilled by matching a language and dialect will be preferred
+ to those which match only the language portion. Otherwise, dialects
+ have no effect on matching requests.
+
+17. Security Considerations
+
+ SLP provides for authentication of service URLs and service
+ attributes. This provides UAs and DAs with knowledge of the
+ integrity of service URLs and attributes included in SLP messages.
+ The only systems which can generate digital signatures are those
+ which have been configured by administrators in advance. Agents
+ which verify signed data may assume it is 'trustworthy' inasmuch as
+ administrators have ensured the cryptographic keying of SAs and DAs
+ reflects 'trustworthiness.'
+
+ 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.
+
+ If Agents are not configured to generate Authentication Blocks and
+ Agents are not configured to verify them, 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 SLP SPIs prior to deploying the sensitive directory
+ agents or service agents.
+
+
+
+Guttman, et al. Standards Track [Page 46]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ SLP 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. SLP 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 Authentication Blocks if
+ cryptographic information and SLP SPIs can be preconfigured with the
+ end systems before they use SLP.
+
+ SLPv2 enables a number of security policies with the mechanisms it
+ includes. A SLPv2 UA could, for instance, reject any SLP message
+ which did not carry an authentication block which it could verify.
+ This is not the only policy which is possible to implement.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 47]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+A. Appendix: Changes to the Service Location Protocol from v1 to v2
+
+ SLP version 2 (SLPv2) corrects race conditions present in SLPv1 [22].
+ In addition, authentication has been reworked to provide more
+ flexibility and protection (especially for DA Advertisements). SLPv2
+ also changes the formats and definition of many flags and values and
+ reduces the number of 'required features.' SLPv2 clarifies and
+ changes the use of 'Scopes', eliminating support for 'unscoped
+ directory agents' and 'unscoped requests'. SLPv2 uses LDAPv3
+ compatible string encodings of attributes and search filters. Other
+ changes (such as Language and Character set handling) adopt practices
+ recommended by the Internet Engineering Steering Group.
+
+ Effort has been made to make SLPv2 operate the same whether DAs are
+ present or not. For this reason, a new message (the SAAdvert) has
+ been added. This allows UAs to discover scope information in the
+ absence of administrative configuration and DAs. This was not
+ possible in SLPv1.
+
+ SLPv2 is incompatible in some respects with SLPv1. If a DA which
+ supports both SLPv1 and SLPv2 with the same scope is present,
+ services advertised by SAs using either version of the protocol will
+ be available to both SLPv1 and SLPv2 UAs. SLPv1 DAs SHOULD be phased
+ out and replace with SLPv2 DAs which support both versions of the
+ protocol.
+
+ SLPv1 allows services to be advertised and requested without a scope.
+ Further, DAs can be configured without a scope. This is incompatible
+ with SLPv2 and presents scalability problems. To facilitate this
+ forward migration, SLPv1 agents MUST use scopes for all registrations
+ and requests. SLPv1 DAs MUST be configured with a scope list. This
+ constitutes a revision of RFC 2165 [22].
+
+B. Appendix: Service Discovery by Type: Minimal SLPv2 Features
+
+ Service Agents may advertise services without attributes. This will
+ enable only discovery of services by type. Service types discovered
+ this way will have a Service Template [13] defined which specifies
+ explicitly that no attributes are associated with the service
+ advertisement. Service types associated with Service Templates which
+ specify attributes MUST NOT be advertised by SAs which do not support
+ attributes.
+
+ While discovery of service by service type is a subset of the
+ features possible using SLPv2 this form of discovery is consistent
+ with the current generation of products that allow simple browsing of
+ all services in a 'zone' or 'workgroup' by type. In some cases,
+ attribute discovery, security and feature negotiation is handled by
+
+
+
+Guttman, et al. Standards Track [Page 48]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ application layer protocols - all that is required is the basic
+ discovery of services that support a certain service.
+
+ UAs requesting only service of that service type would only need to
+ support service type and scope fields of the Service Request. UAs
+ would still perform DA discovery and unicast SLPv2 SrvRqst messages
+ to DAs in their scope once they were discovered instead of
+ multicasting them.
+
+ SAs would also perform DA discovery and use a SLPv2 SrvReg to
+ register all their advertised services with SLPv2 DAs in their scope.
+ These advertisements would needless to say contain no attribute
+ string.
+
+ These minimal SAs could ignore the Language Tag in requests since
+ SrvRqst messages would contain no attributes, hence no strings would
+ be internationalized. Further, any non-null predicate string would
+ fail to match a service advertisement with no attributes, so these
+ SAs would not have to parse and interpret search filters. Overflow
+ will never occur in SrvRqst, SrvRply or SrvReg messages so TCP
+ message handling would not have to be implemented. Finally, all
+ AttrRqst messages could be dropped by the SA, since no attributes are
+ supported.
+
+C. Appendix: DAAdverts with arbitrary URLs
+
+ Using Active DA Discovery, a SrvRqst with its service type field set
+ to "service:directory-agent". DAs will respond with a DAAdvert
+ containing a URL with the "service:directory-agent:" scheme. This is
+ the same DAAdvert that such a DA would multicast in unsolicited DA
+ advertisements.
+
+ A UA or SA which receives an unsolicited DAAdvert MUST examine the
+ URL to determine if it has a recognized scheme. If the UA or SA does
+ not recognize the DAAdvert's URL scheme, the DAAdvert is silently
+ discarded. This document specifies only how to use URLs with the
+ "service:directory-agent:" scheme.
+
+ This provides the possibility for forward compatibility with future
+ versions of SLP and enables other services to advertise their ability
+ to serve as a clearinghouse for service location information.
+
+ For example, if LDAPv3 [15] is used for service registration and
+ discovery by a set of end systems, they could interpret a LDAP URL
+ [16] to passively discover the LDAP server to use for this purpose.
+ This document does not specify how this is done: SLPv2 agents
+ without further support would simply discard this DAAdvert.
+
+
+
+
+Guttman, et al. Standards Track [Page 49]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+D. Appendix: SLP Protocol Extensions
+
+D.1. Required Attribute Missing Option
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Type = 0x0001 | Extension Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Template IDVer Length | Template IDVer String \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |Required Attr <tag-list> Length| Required Attr <tag-list> \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Required attributes and the format of the IDVer string are defined by
+ [13].
+
+ If a SA or DA receives a SrvRqst or a SrvReg which fails to include a
+ Required Attribute for the requested Service Type (according to the
+ Service Template), it MAY return the Required Attribute Extension in
+ addition to the reply corresponding to the message. The sender
+ SHOULD reissue the message with a search filter including the
+ attributes listed in the returned Required Attribute Extension.
+ Similarly, the Required Attribute Extension may be returned in
+ response to a SrvDereg message that contains a required attribute
+ tag.
+
+ The Template IDVer String is the name and version number string of
+ the Service Template which defines the given attribute as required.
+ It SHOULD be included, but can be omitted if a given SA or DA has
+ been individually configured to have 'required attributes.'
+
+ The Required Attribute <tag-list> MUST NOT include wild cards.
+
+E. Acknowledgments
+
+ This document incorporates ideas from work on several discovery
+ protocols, including RDP by Perkins and Harjono, and PDS by Michael
+ Day. We are grateful for contributions by Ye Gu and Peter Ford.
+ John Veizades was instrumental in the standardization of the Service
+ Location Protocol. Implementors at Novell, Axis Communications and
+ Sun Microsystems have contributed significantly to make this a much
+ clearer and more consistent document.
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 50]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+F. References
+
+ [1] Port numbers, July 1997.
+ ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers.
+
+ [2] ISO/IEC JTC1/SC 21. Certificate Extensions. Draft Amendment
+ DAM 4 to ISO/IEC 9594-2, December 1996.
+
+ [3] ISO/IEC JTC1/SC 21. Certificate Extensions. Draft Amendment
+ DAM 2 to ISO/IEC 9594-6, December 1996.
+
+ [4] ISO/IEC JTC1/SC 21. Certificate Extensions. Draft Amendment
+ DAM 1 to ISO/IEC 9594-7, December 1996.
+
+ [5] ISO/IEC JTC1/SC 21. Certificate Extensions. Draft Amendment
+ DAM 1 to ISO/IEC 9594-8, December 1996.
+
+ [6] Unicode Technical Report #8. The Unicode Standard, version 2.1.
+ Technical report, The Unicode Consortium, 1998.
+
+ [7] Alvestrand, H., "Tags for the Identification of Languages",
+ RFC 1766, March 1995.
+
+ [8] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
+ Resource Identifiers (URI): Generic Syntax", RFC 2396,
+ August 1998.
+
+ [9] Bradner, S., "Key Words for Use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+ [10] CCITT. The Directory Authentication Framework. Recommendation
+ X.509, 1988.
+
+ [11] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+ [12] S. Gursharan, R. Andrews, and A. Oppenheimer. Inside AppleTalk.
+ Addison-Wesley, 1990.
+
+ [13] Guttman, E., Perkins, C. and J. Kempf, "Service Templates and
+ service: Schemes", RFC 2609, June 1999.
+
+ [14] Howes, T., "The String Representation of LDAP Search Filters",
+ RFC 2254, December 1997.
+
+ [15] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
+ Access Protocol (v3)", RFC 2251, December 1997.
+
+
+
+
+Guttman, et al. Standards Track [Page 51]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+ [16] Howes, T. and M. Smith, "The LDAP URL Format", RFC 2255,
+ December 1997.
+
+ [17] Meyer, D., "Administratively Scoped IP Multicast", RFC 2365,
+ July 1998.
+
+ [18] Narten, T. and H. Alvestrand, "Guidelines for Writing
+ an IANA Considerations Section in RFCs, BCP 26, RFC 2434,
+ October 1998.
+
+ [19] Microsoft Networks. SMB File Sharing Protocol Extensions 3.0,
+ Document Version 1.09, November 1989.
+
+ [20] National Institute of Standards and Technology. Digital
+ signature standard. Technical Report NIST FIPS PUB 186, U.S.
+ Department of Commerce, May 1994.
+
+ [21] Perkins, C. and E. Guttman, "DHCP Options for Service Location
+ Protocol", RFC 2610, June 1999.
+
+ [22] Veizades, J., Guttman, E., Perkins, C. and S. Kaplan, "Service
+ Location Protocol", RFC 2165, July 1997.
+
+ [23] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
+ RFC 2279, January 1998.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 52]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+G. Authors' Addresses
+
+ Erik Guttman
+ Sun Microsystems
+ Bahnstr. 2
+ 74915 Waibstadt
+ Germany
+
+ Phone: +49 7263 911 701
+ EMail: Erik.Guttman@sun.com
+
+
+ Charles Perkins
+ Sun Microsystems
+ 901 San Antonio Road
+ Palo Alto, CA 94040
+ USA
+
+ Phone: +1 650 786 6464
+ EMail: cperkins@sun.com
+
+
+ John Veizades
+ @Home Network
+ 425 Broadway
+ Redwood City, CA 94043
+ USA
+
+ Phone: +1 650 569 5243
+ EMail: veizades@home.net
+
+
+ Michael Day
+ Vinca Corporation.
+ 1201 North 800 East
+ Orem, Utah 84097 USA
+
+ Phone: +1 801 376-5083
+ EMail: mday@vinca.com
+
+
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 53]
+
+RFC 2608 Service Location Protocol, Version 2 June 1999
+
+
+H. Full Copyright Statement
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Guttman, et al. Standards Track [Page 54]
+