view Side-By-Side changes
draft-ietf-svrloc-protocol-06.txtdraft-ietf-srvloc-protocol-07.txt John Veizades INTERNET-DRAFT TGV, Inc. Scott KaplanCoroNet Systems Inc.Erik GuttmanPeerlogic, Inc. July 6,October 24, 1995 Service Location Protocol 1.0 Status of this memo This draft document is a product of the IETF Service Location Working Group; it will be submitted to the RFC editor as a standards document. Please respond with comments to the srvloc@tgv.com mailing list. This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months. Internet-Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet-Drafts as reference material or to cite them other than as a "working draft" or "work in progress." To learn the current status of any Internet-Draft, please check the 1id-abstracts.txt listing contained in the Internet-Drafts Shadow Directories on ds.internic.net, nic.nordu.net, ftp.nisc.sri.com, or munnari.oz.au. 2.0 Abstract The service location protocol provides a framework for the discovery and selection of network services. It relies on multicast support at the network layer of the protocol stack it is using. It does not specifically rely upon the TCP/IP protocol stack but makes use of concepts that are found in most TCP/IP protocol implementations. Traditionally, users find services using the name of a network host (a human readable text string) which is an alias for a network address. The service location protocol eliminates the need for a user to know the name of a network host supporting a service. Rather, the user supplies a set of attributes which describe the service. The service location protocol allows the user to bind this description to the network address of the service. Service Location provides a dynamic configuration mechanism for applications in a tightly coupled set of local area networks. It is not a global resolution system for the entire Internet, rather it is intended to serve institutional networks with shared services. Service Location WG ExpiresJanuary 6,April 24, 1996 [Page 1] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 Table of Contents 1.0 Status of this memo..............................................1 2.0 Abstract.........................................................1 3.0 Notation Conventions.............................................3 4.0 Terminology......................................................3 5.0 ProtocolOverview................................................5Overview................................................4 5.1 Protocol Transactions........................................4 5.2 Service and Predicate Representation.........................5 5.3 Additional Notes.............................................6 5.3.1 Interpretation Service Location Replies...............6 5.3.2 Use of TCP and Multicast in Service Location..........6 5.3.3 Linguistic Localization...............................6 5.3.4 Standard Attribute Definitions........................7 5.4 Service Location PDUheader..................................6 5.1.1 Version...............................................6 5.1.2 Functions.............................................6 5.1.3header..................................7 5.4.1 Version...............................................7 5.4.2 Functions.............................................7 5.4.3 Length................................................75.1.45.4.4 ErrorCodes...........................................7 5.1.5 XID...................................................7 5.1.6 Locale................................................7 5.1.7 Flags.................................................7 5.1.8Codes...........................................8 5.4.5 Transaction Identifier (XID)..........................8 5.4.6 Flags.................................................8 5.4.7 Time To Live..........................................85.25.4.8 Character Encoding....................................8 5.5 Service Request and Reply....................................8 5.6 Directory Agent Discovery Request...........................10 5.7 Distinguished AttributeRequest..............................8 5.3Request.............................11 5.8 Get AttributesRequest and Reply.............................9 5.4 Service Request and Reply...................................10 5.5Request......................................12 5.9 ServiceAttributes Request and Reply........................12Discovery Request...................................13 6.0 DirectoryAgents................................................12Agents................................................14 6.1Introduction................................................12Introduction................................................14 6.2 Directory AgentDiscovery...................................13Discovery...................................15 6.3 ServiceRegistration........................................14Registration........................................15 6.4 ServiceUnregister..........................................14Unregister..........................................17 6.5 SCOPE Discovery andUse.....................................15 6.6 SCOPE Propogation...........................................17Use.....................................18 7.0Service Information Versions....................................17 7.1 Information Versions........................................18 7.2 User Agents.................................................18 7.3 Directory Agents............................................19 7.4 Service Agents..............................................19 8.0Server Location Connections.....................................19 8.0 Security Considerations.........................................20 9.0Special Data Types..............................................20 9.1 Function Resolution.........................................20 9.2 Opaque......................................................20 10.0 Authentication.................................................21 11.0Multicast vs.Broadcast........................................21 11.1Broadcast.........................................20 9.1 Non-internetednetworks...................................21 11.2networks.....................................20 9.2 Internetedsite...........................................21 11.3site.............................................20 9.3 Service MulticastAddress.................................21 12.0 Data Element Formats...........................................22 12.1 Attributes................................................22 12.2 Service Instance..........................................23 12.3 Addresses.................................................24 12.4 Predicate.................................................24 13.0 Predicate Language.............................................25Address...................................20 10.0 Protocol Formats...............................................21 10.1 Fields Used in Service Location Packets....................21 10.1.1 Previous Responder's URL............................21 10.1.2 Service Request Predicate...........................21 10.1.3 Reply...............................................23 10.1.4 Service Registration Information....................24 10.1.5 Service Unregister Information......................24 10.1.6 Attribute List......................................25 10.1.7 Language of Reply...................................25 10.1.8 Service Scheme......................................25 10.2 URLs in Service Location...................................25 10.3 Attribute Value encoding rules.............................25 11.0 Implementation Requirements....................................27 Veizades, Kaplan, Guttman [Page 2] INTERNET-DRAFT Service Location ProtocolJuly-95 14.0October-95 12.0 InterestingConstants..........................................27Constants..........................................28 13.0 Acknowledgments................................................29 14.0 References.....................................................29 15.0Acknowledgments................................................28 16.0 References.....................................................28 17.0Author'sAddress...............................................29 18.0Addresses.............................................30 16.0 DocumentExpiration............................................29Expiration............................................30 Appendix A - Technical contents of ISO639:1988 (E/F)...............30639:1988.....................31 3.0 Notation Conventions <> Values set off in this manner are fully described in section12.0.10.0. In General, all definitions of items in packets are described in section12.0.10.0. | | \ \ Packet layouts with this notation indicate a variable length | | field. 4.0 Terminology User Agent (UA) A process working on the user's behalf to acquire service attributes and configuration. Theuser agentUser Agent retrieves service information from theservice agents.Service Agents. Service Agent (SA) A process working on the behalf of one or more services to advertise service attributes and configuration.There can only beService Application A process working on behalf of one or more services to advertise service attributes and configuration. Unlike an SAper a given host.the application will not directly respond to service queries and will merely register with Directory Agents. Service Instance The address (service access point) of one service, together with service specific configuration information. Service Information A collection of attributes and configuration information associated with a single service. Theservice agentsService Agents advertise service information for a collection of service instances. Service The service is a process or system providing a facility to the network. The goal of service location is to provide sufficient information to the user, via theuser agent,User Agent, to find the service. The service itself is out of band of the service location protocol. Directory Agent (DA) A process which collects information fromservice agentsVeizades, Kaplan, Guttman [Page 3] INTERNET-DRAFT Service Location Protocol October-95 Service Agents to provide a single repository of service information in order to centralizeVeizades, Kaplan, Guttman [Page 3] INTERNET-DRAFT Service Location Protocol July-95it for efficient access by User Agents. There can only be one DA present per given host. Distinguished Attribute A special attribute at the top level of the service location namingtaxonomy. The Distinguished Attribute has "DIST ATTR" as its class name, a 32 bit value describingtaxonomy which defines the type of service. Each type of serviceandhas atext string as its value. The 32 bit quantityunique Distinguished Attribute. This isregistered with IANA.also referred to as 'SCHEME' in what follows. Attribute A {class, value} pair describing a characteristic of a service. Note that a class is a string and the value can be offivefour types: integer, string,boolean, function (see section 9.0),boolean and opaque. The service information advertised by a Service Agent may include more than one value per class.Standard Attribute An attribute whose class name and values have a standard interpretation. These should be clearly defined and registered with a standards organization. Predicate A boolean expression of attributes, relationsPredicate A boolean expression of attributes, relations and logical operators. The predicate is used to find services which satisfy particular requirements. See section12.4 and 13.0.Scope A collection of systems, networks and other network components that make up a logical group. See section 6.5 and 6.6. Campus A campus is a collection of networks, hosts and related network infrastructure that is grouped together for geographical or political reasons. Agent's Internet All the hosts accessible within theagent'sAgent's multicast radius. If the network does not support multicast, the agent's internet is defined by its broadcast radius. The discovery method used by the service location protocol requires these techniques to start up and provide stable operation. Servers outside of theagent'sAgent's radius are considered "outside of the user's internet."Veizades, Kaplan, Guttman [Page 4] INTERNET-DRAFT Service Location Protocol July-955.0 Protocol Overview 5.1 Protocol Transactions The following describes the operations an end system needs to perform to find services on the attachednetwork.Internet. Theuser agent,User Agent, an end system, does not need any configuration to begin network interaction. Theuser agentUser Agent builds on the information it retrieves in earlier network requests to find theservice agentsService Agents advertising service information, then finds the terms used to describe services that it is interested in. Theuser agentUser Agent can use this information to send Veizades, Kaplan, Guttman [Page 4] INTERNET-DRAFT Service Location Protocol October-95 out predicates which describe the services that match the user's needs.The service location protocol requiresA User Agent will operate two ways: If theimplementationUser Agent has already obtained the location of aconnectionless andDirectory Agent, the User Agent will unicast aconnection oriented transport protocols, this would be UDP and TCPrequest to it, inthe Internet protocol suite. These protocols should be supported overorder to resolve anetwork protocol layer that supports internetwork wide multicast.particular request. TheprotocolDirectory Agent willoperate inunicast abroadcast enviroment with the limitations outlined in section 11. Note: When implementing this protocol over IP version 4reply to thefollowing must be observed. 1. The constants specified in Section 14 must be used. 2.User Agent. Theaddress format for describing IP addresses specified in section 12.3 must be used. 3. ICMP error messages should not be sent in responseUser Agent will retry a request tomulticast datagrams. The service location protocol usesamulticast request/unicastDirectory Agent till it gets a reply, so if the Directory Agent cannot service the request (say it has no information) it must return an responseinteraction. Sincewith zero values, possibly with an error code set. If therequesterUser Agent does notknow the numberhave knowledge ofresponders toarequest, the request may generate more responses thanDirectory Agent or if there are no Directory Agents available on therequesterUser Agent's internet, a second mode of discovery isableused. The User Agent multicasts a request tohandle. Thereforetherequester sends a series of requests. Each request containsservice multicast address, which theinformation learned inservice it wishes to locate will respond to. All theprevious requests. The protocol requires respondersService Agents which are listening toscanthislist and respond only ifmulticast address will respond, provided they can satisfy the User Agent's request. Service Agents which have no informationnot infor thelist. Character strings are represented as a {type, length, value} tuple. ImplementersUser Agent DO NOT respond. This will cause an 'implosion' ofthis specification are strongly encouraged to be able to send and receive Unicode [15] as oneresponses. The most important case of discovery is that of locating a Directory Agent. In thestring data types. Replies should be considered to be valid atcase where thetimeUser Agent wishes to obtain a complete answer, an enumeration ofdelivery.ALL services which satisfy the query, there is a retransmission/convergence algorithm. Theservice may, however, fail or change betweenUser Agent resends thetimerequest, together with a list of previous responders. Only those Service Agents which are not on thereply and the moment an application seekslist respond. Once there are no new responses tomake use oftheservice. The end system making userequest the accumulation ofservice location must be preparedresponses is deemed complete. It is important to stress that while the multicast/convergence model is important for discovering services (such as Directory Agents) it is thepossibility thatexception rather than the rule. Once a User Agent knows of the location of a Directory Agent, it will use a unicast request/response transaction. A serviceinformation providediseither stale or incomplete. In the case whereadvertised by an application which registers the service informationprovided does not allow an end system to connect towith aserviceDirectory Agent. This Directory Agent will resolve requests from User Agents asdesired, the request must be resent. Veizades, Kaplan, Guttman [Page 5] INTERNET-DRAFT Service Location Protocol July-95 5.1 Service Location PDU header 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | version = 1 | function | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Error Code | XID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locale | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |O|M| flags | +-+-+-+-+-+-+-+-+ 5.1.1 Versiondescribed above. Thisprotocol document defines version 1 ofmeans that a Directory Agent must first be discovered, using the multicast mechanism described above. If the servicelocation protocol. 5.1.2 Functions Service location datagrams can be identified asis totheir operation bybecome unavailable, it must be unregistered with thefunction field.Directory Agent. The Directory Agent responds with an acknowledgment to either a registration or unregistration. Thefollowing are the defined operations: Packet Types Abbreviation Function Value Distinguished Attribute Request DistAttrRqst 1 Distinguished Attribute Reply DistAttrRply 2 Attribute Class Request AttrRqst 3 Attribute Class Reply AttrRply 4ServiceRequest SrvRqst 5Agent or Application must register with an available Directory Agent. The ServiceReply SrvRply 6Agent must additionally listen for multicast requests on the service specific multicast address. ServiceRegistration SrvReg 7Applications will fail in an internet where there are no Directory Agents. ServiceUnregister SrvUnreg 8Applications are present in this protocol to provide a lightweight service registration mechanism. 5.2 ServiceAcknowledge SrvAck 9and Predicate Representation ServiceAttributes Request SrvAttrRqst 10 Version Request VerRqst 11 Version Reply VerRply 12 Function Resolve Request FuncReslvRqst 13 Function Resolve Reply FuncReslvRply 14 Scope Request ScopeRqst 15 Scope Reply ScopeRply 16information is represented in a text format. The goal is that Veizades, Kaplan, Guttman [Page6]5] INTERNET-DRAFT Service Location ProtocolJuly-95 5.1.3 Length The length isOctober-95 thenumber of bytes afterformat be human readable and transmittable via email. The location of network services is encoded in a URL like format which is also comprehensible and well known. Only theService Location PDU Header. 5.1.4 Error Codes Errorsdatagram headers areonly validinreply and service acknowledgement datagrams.an encoded form which is not human readable. 5.3 Additional Notes 5.3.1 Interpretation Service Location Replies Repliesthat completed successfullyshouldhave a zero value forbe considered to be valid at theerror code. 5.1.5 Transaction Identifier (XID)time of delivery. TheXID (transaction ID) field allowsservice may, however, fail or change between therequester to match replies to individual requests. Retransmissiontime of thesame service location datagram should not contain an updated XID. The requester createsreply and theXID frommoment aninitial random seed and increments it by one for each request it makes. The XIDs will eventually wrap backapplication seeks tozero and continue incrementing from there.make use of the service. Theresponder copiesend system making use of service location must be prepared for theXID frompossibility that therequest into its reply. 5.1.6 Locale Allservicelocation requests and responses containinformation provided is either stale or incomplete. In the"locale" field. This allows clientscase where the service information provided does not allow an end system toadvertise their preference asconnect to a service as desired, thelanguage in which responses shouldrequest must bereturned. The locale field is comprised of four 8 bit values using the lower case ASCII representationresubmitted. 5.3.2 Use ofthe symbols defined in ISO 639 (reprintedTCP and Multicast inAppendix A).Service Location Thefirst two bytes should be left zeroed (0x0) for further expansion. Services should haveservice location protocol requires the implementation of adefault locale. If they are able to respond inconnectionless and alanguage that corresponds with the client's requested locale they should, otherwise they should respondconnection oriented transport protocols. The latter is used for bulk transfer, only when necessary. The Service Location discovery mechanisms use internetwork wide multicast. The protocol will operate in a broadcast environment withdatalimitations detailed intheir default localesection 9.0. 5.3.3 Linguistic Localization All Service Registrations andset the locale code toUnregistrations are localized with codes which declare in which language strings in thedefault locale. 5.1.7 Flags The flags field is a bit field. Bit 0 isService attributes are written. For each language the'Overflow bit.' See section 8.0 forService advertises, acomplete description forseparate registration takes place. The Service needs to be unregistered only once, since theuseService Instance information associated with it will be unique (i.e. there can only be one service ofthis field. Bit 1a given type at a given URL location, even if it isthe 'Monolingual bit.'registered in multiple languages.) All Service Requestswith this bit set indicate that the end systeminclude a language identifier. The Directory Agent or Service Agent willonly accept responsesrespond in the same languagethat is indicatedas the request, if it has a registration in thelocale field ofsame language as theheader. Replies in other languages should not be sent for thisrequest.All other bits must be set to zero. 5.1.8 Time to Live The TTL field is set toIf thenumber of seconds'monolingual bit' is not set, and the request is in an unsupported language, a reply can becached by any intermediary service. A value of 0 meanssent in theinformation must not be cached. NOTE: The preceding headerdefault language (which isusedEnglish.) This is only possible when there are no language specific attributes inall ofthepacket discriptions below and is abbreviated by using "Sevice location header" followed byrequest. For example one which includes attributes tags in the request predicate. The class names of the attributes will be incomprehensible except where the language is supported. A Directory Agent will reply with zero values and the error code set to LANGUAGE_NOT_SUPPORTED. Service Agents will not reply. Veizades, Kaplan, Guttman [Page7]6] INTERNET-DRAFT Service Location ProtocolJuly-95 the function being used. 5.2 Distinguished Attribute Request The client uses the DistinguishedOctober-95 5.3.4 Standard AttributeRequest to find all the types of services that are available on a network.Definitions Serviceagents respondschemes registered witha list of Distinguished Attributes that they support. Like mostthe IANA for use with the service locationPDUs, a client can issue more than one request to insure that all repliesprotocol must havebeen received. In each subsequent request, a user agent adds the list of distinguished attributes that it is aware of toan accompanying document which describes the"distinguished attributes" fieldfollowing: Scheme of thedatagram. The "Num Dist Attrs found" indicates how many "previously found" Distinguishedservice Mutlicast address Attributeswill follow.(Tag and values) Attribute Descriptions and interpretations Serviceagents look for distinguished attributes that they support but are not in the list. If any such distinguished attributes exist, the service agent replies with these distinguished attributes. The numberschemes can be defined out ofdistinguished attributes the service agent returns is in the datagram as "Num Dist Attrs found". The service agent's reply is sent tothis standardization process through theunicast addressuse ofthe sender. The service agent should wait before responding. The wait time should be a random interval betweenexperimental multicast addresses. 5.4 Service Location PDU header 0and 2 seconds. User agent requests that are generated by a genesis event, i.e., the rebooting of a system, loading of the network kernel, etc. should be sent after a random interval between 0 and 5 seconds. A distinguished attribute defines a class of objects of a particular type, i.e., printers, modems, file servers, etc. These attributes are registered through the Internet Numbering Authority (IANA). Examples are "DIST ATTR" as the class and "PRINTER" as the value, or "NFS FILE SERVER" as the value. Since the class "DIST ATTR" is standardized, this class name should not be used in any other attribute. 0 11 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 (functionversion =DistAttrRqst)1 | function | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Num Dist Attrs foundError Code |<Distinguished Attribute>XID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live |O|M| flags |\ <Distinguished Attribute> (cont.) \ |char encoding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Distinguished Attributes Request Veizades, Kaplan, Guttman [Page 8] INTERNET-DRAFT Service Location Protocol July-95 0 1 2 3 0 1 2 3 4 5 6 7 8 9 05.4.1 Version This protocol document defines version 12 3 4 5 6 7 8 9 0of the service location protocol. 5.4.2 Functions Service location datagrams can be identified as to their operation by the function field. The following are the defined operations: Packet Type Abbreviation Function Value Service Request SrvRqst 1 Service Reply SrvRply 2 Service Registration SrvReg 3 Service Unregister SrvUnreg 4 Service Acknowledge SrvAck 5 Attribute Request AttrRqst 6 Attribute Reply AttrRply 78 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = DistAttrRply) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Num5.4.3 Length The length is the number ofDist Attrs returned | <Distinguished Attribute> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Distinguished Attribute> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Distinguished Attributes Reply 5.3 Get Attributes Requestbytes after the Service Location PDU Header. Veizades, Kaplan, Guttman [Page 7] INTERNET-DRAFT Service Location Protocol October-95 5.4.4 Error Codes Errors are only valid in reply andReply Once a user agent selectsservice acknowledgment datagrams. Replies that completed successfully should have asingle distinguished attribute, it sends a "get attributes request" to find allzero value for theattributes associated with that distinguished attribute. Since different services with a particular distinguished attribute can have different attributes,error code. 5.4.5 Transaction Identifier (XID) The XID (transaction ID) field allows the requester tofind allmatch replies to individual requests. A Service Reply will contain theattributes associated with a distinguished attribute,same XID as theuser agent must form a union of all attributes returned by all service agents. If a user agent is unable to process allService Request. A Service Acknowledge will contain thereplies fromsame XID as theservice agents it may reissueService Register or Unregister. Retransmission of therequest. It can getsame service location datagram should not contain an updated XID. The requester creates theattributesXID fromthese service agentsan initial random seed and increments it byreissuing the request.one for each request it makes. Theuser agent placesXIDs will eventually wrap back to zero and continue incrementing from there. 5.4.6 Flags The flags field is a bit field. Bit 0 is theaddresses'Overflow bit.' See Section 7.0 for a complete description for the use of this field. Bit 1 is theservice agents'Monolingual bit.' Requests with this bit set indicate thatit already has replies from inthe"service addresses" field ofend system will only accept responses in therequest.language that is indicated Serviceagentsor Attribute Request. Replies in other languages shouldonly reply if they arenotonbe sent for this request. All other bits must be set to zero. 5.4.7 Time to Live The TTL field is set to the"service addresses" listnumber of minutes therequest. With a packet length of 1500 bytes, this protocolreply cansupport ~200 IPv4 respondents. Networksbe cached by any intermediary service. A value of 0 means the information must not be cached. 5.4.8 Character Encoding The encoding will determine the interpretation of all character data which follows. There is no way to mix ASCII and UNICODE, for example. See the list of interesting constants for a list of supported character set encodings. This list is by no means complete and can be added to. NOTE: The preceding header is used in all of the packet descriptions below and is abbreviated by using "Service location header" followed by the function being used. 5.5 Service Request and Reply The Service Request is used to obtain nearly all information in the Service Location Protocol. It is a general mechanism for delivering a query to a Directory Agent or Service Agents. Depending on the format of the query, different information can be obtained. There are four general types of query: Directory Agent Discovery Request, Distinguished Attributes, Services Discovery and Service Attributes. These are described in the sections which follow. Veizades, Kaplan, Guttman [Page 8] INTERNET-DRAFT Service Location Protocol October-95 There is an additional mechanism for determining the range of service attributes. This is the Attribute Request. It is used to obtain the tags and values of attributes which will be used to formulate Service Discovery Requests. The Attribute Request and Attribute Reply will be described later. While all of these types of queries may be useful, the only one which is essential is the Service Discovery Request. If a User Agent has enough a priori knowledge of what it is looking for it can simply issue a Service Discovery Request and be done withgreater than 200it. The point of the other requests is to allow a User Agent to formulate a query when it has limited or no a priori knowledge of the services available and their attributes. The Service Request allows the User Agent to specify the Distinguished Attribute or Scheme of the serviceagents needand a Predicate in a specific language. The general form of a Service Request is shown below: SCHEME/SCOPE/LANGUAGE/SELECT CLAUSE/WHERE CLAUSE Briefly, the SCHEME of the service is a unique service type name. The SCOPE is used for range of the query (SCOPEs are determined administratively, not by network topology as will be described later.) The LANGUAGE is a 2 letter code which defines which language the attributes will be transmitted in (See Appendix A for a complete list of values). The SELECT CLAUSE determines what attribute information to return with the reply. The WHERE CLAUSE determines which services fit the request. In the case of a multicast request, a list of previous responders is sent. This list will prevent those in the list from responding, toinstallbe sure that responses from other sources are not drowned out. The request is multicast repeatedly (with adirectory agent (see Section 6.0).recommended wait interval of a second) until there are no new responses, or a certain time has elapsed. The User Agent may configure a certain 'time out' duration for example, with the Service Location implementation or in the case where the User Agent doesn't need ALL the replies, as when any one service will do. Veizades, Kaplan, Guttman [Page 9] INTERNET-DRAFT Service Location Protocol October-95 The format of the Service Request is as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function =AttrRqst)SrvRqst) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |number ofservices agents found| <Dist Attr>previous responders | <Previous Responders URLs> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \<Dist. Attr> (cont.)<Previous Responders URLs> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <ServiceAddresses>Request Predicate> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+AttributesService Request The reply has the following fields: Distinguished Attribute or Scheme of the service, the URL of the service (this is the location that will be used by the User Agent to bind to the service), a language is included to designate what language was used in the strings in the reply, and lastly, a list of attributes (tags and values) which are returned as per the selection in the query. The general form of an individual reply is as follows: SCHEME / URL / LANGUAGE / [(ATTR1 = VAL), (ATTR2 = VAL1, VAL2)] / The reply will always contain the Scheme and the URL. The TTL in the header should be set to a value no greater than the shortest TTL of the list of services in the reply. The language is only required if attributes are returned. Attributes are included in the reply depending on the "select clause" of the query. A NULL selection will not include any attribute information. A LIST selection will specify which attributes to return information about. A WILD selection will return information about all attributes. (See Section 5.7.) Veizades, Kaplan, Guttman [Page9]10] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 The format of a Service Reply is: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function =AttrRply)SrvRply) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | number ofAttrsreplies returned |<Attribute<Reply 1> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |<Attribute<Reply 1> (cont.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . | \ . \ | . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |<Attribute<Reply N> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Attributes Reply 5.4ServiceRequest andReplyHaving obtained5.6 Directory Agent Discovery Request This request is generated by theentire listUser Agent or Service Agent or Service Application in order to discover a Directory Agent. The query is ofattributes whichtheservice agent usesform: DIRECTORY AGENT//en/SCOPE/() This query is todescribe services,theuser agent can buildDirectory Agent multicast address. The scheme of aquery predicate that describesDirectory Agent is 'DIRECTORY AGENT' hence it is theservice needs ofscheme used in theuser.request. No scope is included in the request, since the query is GLOBAL in scope. We want to reach all the available directory agents. The query selects "SCOPE", so SCOPE attribute information will be returned, if there isa predicate based onany. The where clause is empty in thelistquery, so all Directory Agents will match the request. English is used as the locale for this example. Typically the language ofattributes received.the system or the user would be used. If no responses are received in the language specified the system should use the default language, which is English (en). Thequeryreplies will arrive from different sources. They will be similar to: DIRECTORY AGENT/srvloc-resolver.catch22.com/en/(SCOPE=Accounting)/ DIRECTORY AGENT/204.182.15.66/en/(SCOPE=Janitorial Services)/ If the goal ismulticastto discover all reachable Directory Agents, the request must be resent after an interval (recommended time is one second.) This resent request will include a list of DAs which have already responded. This list takes the same form as the list of DAs above: Simply a series of "DIRECTORY AGENT/URL///" strings. Directory Agents which receive Directory Agent requests will only respond if they are not on this list. After there are no new replies, the series of requests has discovered all Directory Agents. Veizades, Kaplan, Guttman [Page 10] INTERNET-DRAFT Service Location Protocol October-95 5.7 Distinguished Attribute Request The User Agent uses themulticast address ofDistinguished Attribute Request to find all thedistinguished attributetypes oftheservices that are available on a network. Like most servicewhich is being queried for or unicastlocation PDUs, a client can issue more than one request toservice agents that support the indicated distinguished attribute. Service agentsinsure thatcan satisfy the predicate reply withall replies have been received. In each subsequent request, a User Agent adds theattributeslist of Distinguished Attributes (schemes) thatthey used to satisfy the predicate.it is aware of. Thereply contains the setformat ofall attributes which satisfy the predicate. The reply is unicast tothesender. One reply packetDistinguished Attribute Request isreturned for each service that the the service agent finds which will fulfill the requested predicate. Asspecial inthe case of the Get Attributes Request,that it specifies no 'Scheme' for the servicereply must be localizedtype. Instead a '*' is used to denote asingle language.'wild card.' Thelocale field of the Service Reply's header mustrequest may besetsent to any Directory Agent. This will return all thelanguage of the reply.service types that it knows about. The requestpredicate can onlymay also besatisfiedsent to the General Multicast Address, in order to find out all service available on thecontext ofUser Agent's internet (which are advertised by Directory Agents and Service Agents.) *//en//() * is thelanguagewildcard scheme. There is no scope specified inwhichthis example, as the scope is unrestricted. The select clause is empty, as no attributeclassesinformation will be returned. Finally, the where clause is empty so the request will match all services. Replies are sent by each Directory Agent andvaluesby Service Agents. These replies take the form: printer/224.0.3.10/// <- these multicast addresses arestated in.http/224.0.3.24/en// examples only. The actual official nntp/224.0.3.85/en// numbers have not been assigned! nfs/224.0.3.115/// TheService Reply containsscheme defines theaddresstype of service, theagent which fulfilleddistinguished attribute. The address to therequest. Thisright of it defines the multicast addressshouldwhich can be usedin future requests forto send queries to Service Agents. No other informationabout the service. The specific service may not be usingis returned in theservice locaton protocol andreplies, since theagent is acting on behalfselect-clause ofthis service, so service locationthe requestmust be sent towas NULL. All schemes were returned since theagent specified by this address.where-clause was NULL. If theService Information AddessUser Agent iszeroalready aware of certain Distinguished Attributes, as in theagentcase where it has already received several replies, but wants to be sure that all Distinguished Attributes are discovered, another request is multicast, with a selection specifying which Distinguished Attribute information it is NOT interested in, as: *//en//(& (SCHEME != PRINTER) (SCHEME != HTTP) (SCHEME != NNTP) (SCHEME != NFS)) Only Directory Agents and Service Agents which have services other than these four types will respond to the request. When no new replies arrive from a request, the User Agent has acquired a complete set of available service types. Veizades, Kaplan, Guttman [Page 11] INTERNET-DRAFT Service Location Protocol October-95 User Agent requests that arecollocated. Ifgenerated by aserver contains more than one instancegenesis event, i.e., the rebooting of a system, loading of the network kernel, etc. should be sent after a random interval between 0 and 5 seconds. 5.8 Attribute Request and Attribute Reply Once a User Agent selects a single distinguished attribute, it may issue a "get attributes request" to find all the attributes associated with that distinguished attribute. Since different services with a particular distinguished attribute can have different attributes, to find all the attributes associated with a distinguished attribute, the User Agent must form aparticular typeunion ofserviceallthese services maybeattributes returnedin a single datagram. Veizades, Kaplan, Guttman [Page 10] INTERNET-DRAFTby all service Agents. The Attribute information will be used to form ServiceLocation Protocol July-95Queries. It has the following form: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function =SrvRqst)AttrRqst) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |number ofservices agents found| <Predicate> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Predicate> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Service Addresses> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Service Request 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = SrvRply) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Information Version | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Information Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Services | <Service Instance> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Service Instance> (cont) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Attributes | <Attribute 1> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+previous responders |<Attribute 1> (cont.)<Previous Responders URLs> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |.| \.<Previous Responders URLs> \ |. | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | <Attribute N>| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Service Reply Veizades, Kaplan, Guttman [Page 11] INTERNET-DRAFT Service Location Protocol July-95 5.5 Service Attributes Request and Reply After a user agent has received a response to its Service Request it will know the address of one or more services, as well as the attribute values used to satisfy the query. That gives the user agent sufficient information to know that a service is useful and how to access it. The user agent may desire further information, however. The Service Attributes Request returns all the advertised attributes and their range of values for a given service instance. The user agent can then provide a complete profile of a given service, which might be| Reserved | <Language ofinterestReply> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Service Scheme> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Attribute Request If sent to auser. The service request containsDirectory Agent, theservice instancenumber of previous responders is zero and there are no Previous Responder URLs. These fields are used for repeated multicasting, exactly as for theservice in question. This request should be unicast to the service agent orService Request. The Language field determines thedirectory agentlanguage in whichprovided the user agent withthe attribute tags and string values should be returned in. The ServiceReply from whichScheme is theService Instance information was extracted. The responseservice tothis request should be sent in aget attributes for. Veizades, Kaplan, Guttman [Page 12] INTERNET-DRAFT ServiceReply packet.Location Protocol October-95 The replies take the form: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function =SrvAttrRqst)AttrRply) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | <Language of reply> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \<Service Instance><Attribute List> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Service Attributes Request 6.0 Directory Agents 6.1 Introduction A directory agent acts as a proxy for many service agents. It acquires information from service agents and acts as a single point of contact to supply that information. A service agent registers information with the directory agent so it can reply to service location requests the way that the service agent would.Thedirectory agent should be able to respond in a timely fashion to user agent requests and return accurate information aboutattribute list has theservices that are being exported bysame form as theservice agent. The queries thatattribute list at the end of auser agent sends to service agents (i.e.reply. For example, say I issue anenvironment without a directory agent) are the same queries thatAttribute Request for "printer". I might receive theuser agent unicasts to a directory agent. A user agent may cache information aboutfollowing reply (the language field is set to 'en'): (PAPER COLOR=WHITE,BLUE), (PAPER SIZE=LEGAL,LETTER,ENVELOPE,TRACTOR FEED), (PAGES PER MINUTE=1,3,12), (LOCATION=12'th floor,outside deb's cube) 5.9 Service Discovery Request Having obtained thepresenceentire list ofother directory agentsattributes used touse as fall back directory agents in casedescribe aselected directory agent fails. In scalingparticular kind of servicelocation systems to the sizefrom a Get Attributes Request, (or using a priori knowledge of acampusservice's attributes,) the User Agent can build acentral Veizades, Kaplan, Guttman [Page 12] INTERNET-DRAFT Service Location Protocol July-95 repositoryquery predicate that describes the service needs of the user. This query isaddedsent directly tolimita Directory Agent. Following theamountexample ofgeneral queries inthenetwork infrastructure. A site may also grow to suchlast section, say I wanted asizeprinter thatit is not feasible to maintain only one central repository of service information. In this case another directory agentisinstanciated. Multiple directory agents are supported withinon theframework of this protocol. Each SA registers with each DA and hosts may either use each DA in a round robin fashion or may pick12th floor whichDA to use inprints 12 pages per minute. I know there is anondeterministic fashion. 6.2printer on the 12th floor and that there is one that prints 12 pages per minute from the response I got from my Get Attribute Request. I am hopeful that they are one and the same printer. Therefore I issue the following request: printer//en//(& (PAGES PER MINUTE==12) (LOCATION==12th floor)) Now, there is no such printer. The Directory AgentDiscovery Whenresponds with adirectory agent first comes on line it sends an unsolicited AttributesService Replytowith 0 in thegeneral service location multicast address. Ifnumber of responses and no reply values. The User Agent then tries aDA supportsless restrictive query to find aparticular scope or set of scopes these are placed inprinter, using thereply12th floor asan attribute value of"where" criteria, but selecting theservice. The class for this attribute is "SCOPE".PAGES PER MINUTE attribute, to find out how slow it will be: printer//en/PAGES PER MINUTE/(LOCATION==12th floor) Veizades, Kaplan, Guttman [Page 13] INTERNET-DRAFT Serviceagents upon receivingLocation Protocol October-95 In thisreply must waitcase, we get one reply: printer/igore.wco.ftp.com:515/en/(PAGES PER MINUTE = 3)/ The URL fora random interval of between 0 and 10 seconds and then begin registration of eachthe printer here, igore.wco.ftp.com:515 is the location of theservicesprinter. You can spool to that port on that host and print. In theservice agent advertises. When a service agent or user agent first comes on-line it issuesabsence of aserviceDirectory Agent, the requestforabove could be multicast. In this case it would be sent to thedistinguished attribute "DIR AGENT"; directory agents replyprinter Multicast Address and not tothis query. A service agent may examinetheenclosed authorization informationDirectory Agent address above. Service Agents that can satisfy the predicate will reply. Service Agents which cannot satisfy the reply do not send any reply at all. The only way a User Agent can be sure there are no services which match the query is by retrying the request (say 3 times, 15 seconds apart). If no response comes, the User Agent gives up anddetermine ifassumes there are no such printers. One final note: The select field of thedirectory agentquery isan authorized agent. A service agent registersused to control how much informationwith all directory agents when either ofis returned by theabove two events take place. When scopesDirectory Agent or Service Agent. As described in full in Section 10.1.2, there arebeing used on3 different selections possible. A NULL selection will return no attribute information, merely acampusscheme, the URL. A LIST selection specifies which attributes should be returned. Finally, a WILD selection can be sent, which will return all attributes/values. This WILD selection may produce a large reply, so a TCP connection may need to be established. Refer to Section 7.0 for details. 6.0 Directory Agents 6.1 Introduction A Directory Agent acts as aservice agent may chooseproxy for many Service Agents and Service Applications. It acquires information from them and acts as asetsingle point ofscopescontact tobe advertised in and need only register with directory agentssupply thatsupport the scopes in which they wishinformation tobe registered. Once a user agent becomes aware of a directory agent it will unicast itsUser Agents. The queriesto it. In the eventthatmore than one directory agents are detected, it will select onea User Agent multicasts tocommunicate with. When scopesService Agents (in an environment without a Directory Agent) aresupported,theuser agent will direct itssame queriesto different directory agents depending on which scopes are appropriate domains forthat thequeryUser Agent unicasts tobe answered in.a Directory Agent. Adirectory agent continues to sendUser Agent may cache information about theabove reply at a periodpresence of5 minutes. SAs that failother Directory Agents todetect this heart beat from the DAuse as fall back Directory Agents inwhich they are registered with should checkcase a selected Directory Agent fails. In scaling service location systems tosee iftheDA is still alive. The SA should sendsize of aVersion Request (see section 7.2)campus a central repository is added todetermine if the DA still haslimit themost recent versionamount of general queries in theservice informationnetwork infrastructure. A site may also grow to such a size thatthe SA had previously registered with the DA. Ifitfailsis not feasible torespond, the SA should mark the registration as inactive. When the DA appears againmaintain only one central repository of service information. In this case another Directory Agent is needed. Multiple Directory Agents are supported within theSA reregistersframework of this protocol. Each Service Agent or application registers withthe DA. If theeach DA and hosts may either use each DAresponds incorrectly, the SA should reregister with it. If all the DAsin ascope are inactive the SA should reregister in another scope for itround robin fashion or may pick which DA tobe made available. After a service agent has founduse in adirectory agent, it beginsnondeterministic fashion. Directory Agents, in the future, may use mechanisms outside of this protocol toregister its advertised services one at a time. A service agent mustscale to larger global Internets. Veizades, Kaplan, Guttman [Page13]14] INTERNET-DRAFT Service Location ProtocolJuly-95 6.3October-95 6.2 Directory Agent Discovery When a Directory Agent first comes on-line it sends an unsolicited ServiceRegistrationReply to the general service location multicast address. If a DA supports a particular scope or set of scopes these are placed in the reply as an attribute value of the service. The class for this attribute is "SCOPE". Service Agents and Service Applications will, upon receiving this reply, wait forsomea random interval of between 0 and310 secondsbetweenand then begin registration of eachregistration. Registration is done using the Service Registration packet specifying all attributes for a service. A Service Registration Packet has the same format as a Service Reply packet, except forof thefunction type. They are different in order to avoid ambiguities. Aservices they advertise. An example of what such an unsolicited reply would look like is: directoryagent must acknowledge each service registration request. Service registration may use a connectionless protocol (e.g. UDP), or a connection oriented protocol (e.g. TCP). The registration operation may contain more information thanagent/srvloc-resolver.catch22.com/en/(SCOPE=ADMIN)/ This directory agent can besent in one datagram. In this casereached at theservice agent must use a connection oriented protocol to register itself withURL specified, and supports theDA.SCOPE called 'ADMIN'. When aservice agentService Agent or Application, or User Agent first comes on-line it issues a Directory Agent Discovery Request, as defined in 5.6 above. A Service Agent or Application registers information with ALL newly discovered Directory Agents when either of thesame attribute class more than once forabove two events take place. When scopes are being used on aservice instance, the directory agent overwrites the all the values associated with that attribute class. Separate registrations mustcampus a Service Agent or Application may choose a set of scopes to bemade for each localeadvertised in and need only register with Directory Agents that support theservice isscopes in which they wish to beadvertised in. If a subsequent registration hasregistered. Once adifferent version number (see section 7.0) fromUser Agent becomes aware of aprior one, for the same service, the new packetDirectory Agent it willbe taken as an update. The version number ofunicast its queries there. In theserviceevent that more than one Directory Agents are detected, it willbe changedselect one to communicate with. When scopes are supported, themost recent version number inUser Agent will direct its queries to different Directory Agents depending on which scopes are appropriate domains for the query to be answered in. A Directory Agent'sservice information cache. The DA must send a service acknowledgment for every registration. The directory agent may return a server error inunsolicited Service Reply to theacknowledgment, if for instance,General Multicast address should always be treated as aregistered service lacks an addresss. This error is carried insituation where theError Codes field ofDA has become available for theservice location packet header.first time. Anon-error acknowledgement must have the error code set to zero. OnceService Agent or Application should register services with it even if it had done so previously. 6.3 Service Registration After aDA acknowledgesService Agent has found aservice registrationDirectory Agent, itmakes the information availablebegins toclients. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9register its advertised services one at a time. A Service Agent must wait for some random interval between 01 2and 34 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = SrvAck) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Service Acknowledgment 6.4 Service Unregister When a serviceseconds between each registration. Registration isno longer available for use,done using theservice must unregister itself from directory agents that it has been registered with.Service Registration packet specifying all attributes for a service. A Directory Agent must acknowledge each serviceuses the following PDU to unregister itself.registration request. Veizades, Kaplan, Guttman [Page14]15] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 The format of a Service Reply is: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function =SrvUnreg)SrvReg) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . | \ <ServiceInstance>Registration Information> \ | . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ServiceUnregisterRegistration Service registration may use a connectionless protocol (e.g. UDP), or a connection oriented protocol (e.g. TCP). Theservice agent should retry thisregistration operationif there is no response from the directory agent. The directory agent acknowledgesmay contain more information than can be sent in one datagram. In thisoperationcase the Service Agent or Application must use a connection oriented protocol to register itself with the DA. When aservice acknowledgment. OnceService Agent or Application registers the same attribute class more than once for a serviceagent receives this acknowledgment, it can assumeinstance, the Directory Agent overwrites the all the values associated with that attribute class. Separate registrations must be made for each language that the service isno longerto be advertisedby the directory agent. 6.5 SCOPE Discovery and Use The scope mechanismin. Service Registration information is sent in exactly the same form as a Service Reply: SCHEME / URL / LOC / (ATTR1 = VALUE), (ATTR2 = VAL1, VAL2) / An example of a servicelocation protocolregistration isan important feature to enhance its scalability.as follows: printer/igore.wco.ftp.com:515/en/(SCOPE=DEVELOPMENT), (PAPER COLOR=WHITE), (PAPER SIZE=LETTER), (LANGUAGE=POSTSCRIPT, HPGCL), (LOCATION=12th Floor))/ Theprimary use of scopessame registration could be done again, in German (note that 'printer' the scheme, isto providean IANA term, so it will remain in thecapability to organize a campus along conceptual lines. A setlanguage it was originally registered in with IANA, i.e. in English): printer/igore.wco.ftp.com:515/de/(SCOPE=ENTWICKLUNG), (PAPIERFARBE=WEISS), (PAPIERFORMAT=BRIEF), (DRUECKERSPRACHE=POSTSCRIPT,HPGCL), (STELLE=12te Etage) / Registrations must contain an Attribute ofservices canSCOPE unless they are unscoped and then they must beassigned to a given department of an organization, toregistered with all directory agents. See example above. The Directory Agent may return acertain building or geographical area orserver error in the acknowledgment, if for instance, acertain purpose. The usersregistered service lacks an address. This error is carried in the Error Codes field of thesystem can be presented with these organizational elements as a top level selection, before services within this domain are sought.service location packet header. Veizades, Kaplan, Guttman [Page 16] INTERNET-DRAFT Service Location Protocol October-95 Acampus that has grown beyond a size that can be reasonably serviced by a few DAs can use the SCOPE mechanism. DAsnon-error acknowledgment must have theattribute class "SCOPE". The values for this attribute areerror code set to zero. Once alist of strings that representDA acknowledges a service registration it makes theadministrative areas for which this directory agent is an authority. The semanticsinformation available to clients. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = SrvAck) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Service Acknowledgment Service Agents andlanguage ofApplications should start thestringsregistration process before the TTL they used for registration expires if they want todescribe the SCOPE are entirely the choice of the administrative entity of the particular domain in which these SCOPEs exist. Directory agents advertise the list of all scopes that are available. A service agent chooses at least one scope in whichcontinue to beregistered. Aadvertised. 6.4 Service Unregister When a serviceagentis no longer available for use, the Service Agent or Application mustregister with all directory agents in that scope. Being a member of a scope means that you use a specific set of directory agentsunregister itself from Directory Agents thatsupport your scope. User agents send all requests to DAs which supportit has been registered with. A service uses theindicated scope.following PDU to unregister itself. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ServiceAgents register withlocation header (function = SrvUnreg) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Service Unregister Information> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Service Unregister The Service Agent should retry this operation if there is no response from theDA(s) in their scope. For a UA to findDirectory Agent. The Directory Agent acknowledges this operation with a service acknowledgment. Once the Service Agent receives this acknowledgment, it can assume thatis registered in a particular scope they must contact a DA which supportstheindicated scope. Thereservice is nolimitation on scope membership built intolonger advertised by theprotocol; that isDirectory Agent. The Service Unregister Information sent tosay, a user agent orthe Directory Agent has the following form: SCHEME / URL / LOC / [(Attr1), ... ,(AttrN)]/ This will unregister the serviceagent mayfrom the Directory Agent in every language it was registered in. To unregister the printer above, use: printer/igore.wco.ftp.com:515//en// If attributes are included in the unregistration, the attributes will bea member of more than one scope. Membershipunregistered, but not the entire service. That isopento say that the class Attr1 and allagents, unless some authorization mechanism is added to limit access.its values will no longer be advertised Veizades, Kaplan, Guttman [Page15]17] INTERNET-DRAFT Service Location ProtocolJuly-95 An end system findsOctober-95 for thescopesgiven service. Notice thatare available in a campusthe language for the attributes must be included. An example of unregistering the PAPER SIZE attribute would be: printer/igore.wco.ftp.com:515/en/(SCOPE=DEVELOPMENT),(PAPER SIZE)/ printer/igore.wco.ftp.com:515/de/(SCOPE=ENTWICKLUNG),(PAPIERFORMAT)/ Two unregistrations would have to be sent; one for English and one for German. More than one attribute can be unregistered, bymulticastinginserting aDA discovery request to all directory agents.list, i.e. nfs/23.34.45.11/en/(DESCRIPTION),(MOUNT POINTS)/ 6.5 SCOPE Discovery and Use Thediscovery message contains thescopeor scopes, if known, that are being used, as partmechanism in the service location protocol is an important feature to enhance its scalability. The primary use ofthe attribute request. Directory Agents that support the scope(s) in question return reply. If no scopescopes isspecified, all directory agents respondtothis request. This exchange will giveprovide theend systemcapability to organize alistcampus along administrative lines. A set ofall scopes that itservices canuse for scope membership but this may not be the list of all scopes available on the users internet. Some scopes maybeshielded from registration and queries using an access control system as described above. A SA may not register with scopes outsideassigned to a given department ofthe SA's internet. Afteranend system has picked a scopeorganization, touse as its default scope it may askadirectory agentcertain building or geographical area or forthe lista certain purpose. The users ofall available scopes known totheDA, including those that are notsystem can be presented with these organizational elements as a top level selection, before services withinthe user agent's internet. To getthislist the user agent sends a scope list request to the directory agent. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = ScopeRqst) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Scope List Request The directory agent responds withdomain are sought. A campus that has grown beyond ascope list reply. Every scopesize thatis available forcan be reasonably serviced by a few DAs can useto the user agent is listed in the reply. In addition to the list of all scopesthedirectory agent also returnsSCOPE mechanism. DAs have the attribute class "SCOPE". The values for this attribute are a list ofscopesstrings thatare outside of the boundaries of the user agents internet. For each foreign scope the directory agent returnsrepresent thescope nameadministrative areas for which this Directory Agent is an authority. The semantics and language of thehosting directory agents' service instances. Foreign directory agents and scopes maybestrings used tosupport name spaces that are outside of the autonomous domaindescribe theuser agent belongs to. Resources within those foreign networks can be found usingSCOPE are entirely thenormal service location queries. The propogationchoice offoreign scopes to directory agents in the user agents multicast perimeter is outsidethescope of this document though global directory services may provide this service. Veizades, Kaplan, Guttman [Page 16] INTERNET-DRAFT Service Location Protocol July-95 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = ScopeRply) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | number of local scopes | number of foreign scopes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Local Scope List> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Foreign Scope List> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Scope List Reply 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Scope Name (Typed String) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | numadministrative entity ofsupporting DAs | Service Instance List | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service Instance List(cont) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Foreign Scope 6.6 SCOPE Propagation Userthe particular domain in which these SCOPEs exist. Directory Agentscontact their DA foradvertise the list of allknownscopesboth foreignthat are available. A Service Agent or Service Application chooses at least one scope in which to be registered, andlocal. To build this list of scopes, DAsmustpropagate thisregister with all Directory Agents in that scope. A Directory Agent which has a SCOPE will send replies to Directory Agent Discovery requests with the scope informationfromincluded. Note that Directory Agent Requests MUST ALWAYS select that SCOPE information be returned. The query: directory agent//en/SCOPE/() Could receive the following reply: directory agent/diragent.void.com/en/(SCOPE=ADMINISTRATION)/ The same Directory Agent which does not support any scopes would reply: directory agent/diragent.void.com/en// Veizades, Kaplan, Guttman [Page 18] INTERNET-DRAFT Service Location Protocol October-95 If a Directory Agent supported more than oneDAscope it would reply as: directory agent/123.12.34.56/en/(SCOPE=ADMIN,DEV,SALES)/ Normally all Directory Agents respond toanother. DAsa Directory Agent Request. If only Directory Agents of a particular set of scopes are desired, issue a query like the following: directory agent/ADMIN,SALES/en//() Here the SCOPE field of the request is filled in with a list of the scopes which can be used to satisfy the request. Being a member of a scope means that you use amulticast addressspecific set of Directory Agents that support your scope. User Agents send all requests to DAs which support the indicated scope. Services are registered with the DA(s) in their scope. For a UA topropagate this information fromfind a service that is registered in a particular scope they must send requests to a DA which supports the indicated scope. There is no limitation on scope membership built into the protocol; that is to say, a User Agent or Service Agent or Application may be a member of more than oneDAscope. Membership is open to all, unless some external authorization mechanism is added toanother.limit access. 7.0 Service Location Connections When anew DA comes online it sendsService Location Request results in aDA scope list request to the DA multicast address. Other DAs respond usingreply from a Service or Directory Agent that will overflow a datagram, theScope List Reply with allUser Agent can open a connection to thescopes they support both localeAgent andforeign. Atreissue theend of this interactionrequest over theDAconnection. The reply willknow about all available scopes and DAs which support them. 7.0 Service Information Versions Service location information can live in three locations: at the service agent,be returned with thedirectory agent and/oroverflow bit set (see section 5.4.6) The reply will contain data, as much as will fit into a single packet. If no MTU information is available for theuser agent.route, assume that a maximum packet size is 1460. Aservice agent hasUser Agent that wishes to obtain theauthoritative version ofoverflowed data must establish a connection with theservice information.Directory Agent or Service Agent with the data. Thedirectory agentsrequest is simply sent again (with a new XID, however.) The reply is returned over the connection stream. A Service registration which exceeds one packet in length should be made by establishing a connection with a Directory Agent and sending theuser agents have copies ofregistration over theservice agent's information. The "information version" provides an indicationconnection stream. Directory Agents and Service Agents must respond to connection requests and Services whose registration can exceed a packet in length must be able to connect and send. User Agents should be able to make requests over a connection. If they fail to implement this, they must be able to interpret partial replies and/or reissue requests with more selective criteria to reduce theuser and directory agents that the copies that they hold are outsize ofsync with the authoritative database in the service agent. In addition totheinformation version a time to live is set with each reply packetreplies. Veizades, Kaplan, Guttman [Page17]19] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 8.0 Security Considerations There are no provisions in thisvalueprotocol to insure data integrity, data authority or data confidentiality. Mechanisms inseconds isthemaximum time a value maybe cached reguardless ofunderlying network layer protocol or at theinformation version. A value of 0 indicated that informationservice access point maynotbecached. 7.1 Information Versions For everyused to provide these functions. 9.0 Multicast vs. Broadcast The serviceinstance advertisement,location protocol was designed for use in networks where multicast at theservice agent attachesnetwork layer is supported; in some instances multicast may not be supported. To support this protocol in networks where multicast is not supported the following modifications are made to support the protocol in aninformation versionenvironment where network layer broadcast is supported. 9.1 Single Subnet If a network is not connected to any other networks simple network layer broadcasts will work in place of multicast. 9.2 Multiple Subnets The Directory Agent provides a central clearing house of information for User Agents. If theadvertisement. This version numbernetwork is designed so that awayDirectory Agent address is statically configured with each User Agent, the directory Agent will act as a bridge for information that resides on different subnets. The Directory Agent address can be dynamically configured with end systems using a protocol like the IP Dynamic Host Configuration Protocol. 9.3 Service Multicast Address Each serviceagentmust have a unique multicast address totag the current state ofwhich it belongs to. This multicast address is obtained from theinformation that itIANA. This mechanism isadvertising. When this information changes,used so that the number of datagrams any one serviceagent increments the version. Agents thatreceives is minimized. When undirected queries arecachingmade concerning thisinformation can ask the service agent for the versiontype of service, thecurrent service information. For very volatile information, which mustquery should begathered each time a request is made, the service agent implements the value as a 'function'. This means that on replyingsent toeach request,theservice agent or directory agent must resolvematching multicast address. If thefunction. The version numbersubnet does notneedsupport multicast then the query should be broadcast tochange whenthefunction's resolution value does. This mechanism allows caching of service information and version state, evenService Location port. Veizades, Kaplan, Guttman [Page 20] INTERNET-DRAFT Service Location Protocol October-95 10.0 Protocol Formats 10.1 Fields Used in Service Location Packets The following section supplies formal definitions forvery volatile information or information which may depend onall protocol elements introduced in thestatesections above. Protocol Element Used in ----------------------------------- ------------- 10.1.1 <Previous Responder's URL> SrvRqst 10.1.2 <Service Request Predicate> SrvRqst 10.1.3 <Reply> SrvRply 10.1.4 <Service Registration Information> SrvReg 10.1.5 <Service Unregister Information> SrvUnReg 10.1.6 <Attribute List> AttrRply 10.1.7 <Language oftransactions withinReply> AttrRqst & AttrRply 10.1.8 <Service Scheme> AttrRqst 10.1.1 Previous Responders URL The previous responder's URL is specified as <Previous Responder's URL> ::= URL, | URL,<Previous Responder's URL> followed by adistributed system. (See section 9.0 for details on function resolution.) SAs may not respond to UAscomma withunresolved function values.no white space. Theinformation contained in such repliesURL isvery volitile and should not be cachedtheinformation version is set to zero and these replies may not be cached. 7.2 User Agents When a user agent caches information that it has received from a service agentaddress of the Directory Agent ordirectory agent it should verifyService Agent which supplied the previous response. The format for URLs in Service Location is defined in 12.2. Example: some.corp.com,128.127.203.63, 10.1.2 Service Request Predicate The following grammar expresses theversion numberform of a Service Request Predicate: <predicate> ::= <scheme>/<scope>/<lang>/<select>/<where> <scheme> ::= string representing type of service. '/' isstill valid. It can donot allowed in thisby requesting the service instance's current version number from the source ofstring. <scope> ::= string representing thecached information. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1directory agent scope. '/', ':' are not allowed in this string. The scope 'LOCAL' and 'REMOTE' are reserved. <lang> ::= 23 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service location header (function = VerRqst) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |letter code, as described in Appendix A. <select> ::= <select-list> |\ <Service Instance> \<select-all> | <select-none> <select-list> ::= <select-item> |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version Request<select-item>, <select-list> <select-item> ::= <attr-tag> Veizades, Kaplan, Guttman [Page18]21] INTERNET-DRAFT Service Location ProtocolJuly-95 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+October-95 <attr-tag> ::= class name of an attribute of a given scheme This tag cannot have include the following characters: '(', ')', ',', '=', '!', '>', '<', '/' <select-all> ::= * <select-none> ::= That is NOTHING or white space. <where> ::= <where-any> |Service location header (function = VerRply)<where-list> <where-any> ::= () <where-list> ::= (& <query-item> <query-list>) | (| <query-item> <query-list>) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<query-item> <query-list> ::= <where-list> |Information Version<query-item> |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version Reply The information may be invalid<query-item> <query-list> <query-item> ::= (<attr-tag> <comp-op> <attr-val>) | <where-list> <comp-op> ::= != | == | < | <= | > | >= <attr-val> ::= any string (see Section 10.3 forseveral reasons. The service agent may not exist, the service instance may no longer exist ortheend systemways in which attr-vals are interpreted.) Value strings may not contain '/', ',' '=', '<', '>'. '(' and ')' can only beauthorized to use the service. Error values are returnedused foralltheabove reasons. When an error is receivedpurpose of encoding auser agent must invalidate the cached information. A user agentbinary values. Binary encodings (See Section 10.3) maytry to revalidate the information, unicastinginclude theoriginal predicateabove reserved characters. Note on string matches: All strings are case insensitive, with respect tothe service agentstring matching on queries. All preceding ormay trytrailing blanks should not be considered for a match, but blanks internal toreacquireaservice provider multicasting the original predicate. 7.3 Directory Agents Directory agents must return correct information since theystring areactingrelevant. For example " Some String " matches "SOME STRING" but not "some string". A predicate has a simple structure, which depends onbehalf of service agents. Service agents must update directory agents when their databases change. The service agent must unregister any service instance before any information abouttheservice is changed. This limitsparentheses, commas and slashes to delimit theavailabilityelements. Examples ofany incorrect or transient false advertisements. As soon asproper usage have been given throughout theservice agent hasdocument. The terms used above are described below: predicate: Placed in anew set of service information to advertise, it reregisters it with the Directory Agent. AService Request, this is interpreted by a Service Agent or Directory Agentwill still needtoverify that the information it is caching is accurate, as a service agent might have gone down. It can do this by periodically sending version number requests of services that it hasdetermine what informationcached about. These requests are senttothe service agent that registered the information. 7.4 Service Agents Service agents advertisereturn. select-clause: This determines what informationthat they authoritatively own. When a service agent advertises information, it also indicates theto return. There are 4 types of select-clause: NULL, ANY and LIST. NULL: The reply returns no attribute informationversion. When the service agent registers with a directory agent, the service agent is responsibleforinvalidating the directory agent's cached state beforetheinformation changes atPARTICULAR services which satisfy theservice agent.where-clause. ANY: Theservice agent must then reregisterreply returns all attribute information, as above. LIST: The reply returns thenewattribute informationwithfor theDirectory Agent. 8.0 Service Location Connections When a service location request results in a reply from a service or directory agentattributes whose class names are listed, as above. Recall thatwill overflow a datagram, the user agent can openan attribute has aconnection to the agentclass name andreissue the request over the connection.a set Veizades, Kaplan, Guttman [Page19]22] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 of values. Theresponselist contains a set of class names. where-clause: This determines which services the request matches. An empty where-clause will match all services. The request will bereceived overlimited to services which have thesame connection. A directory or service agent indicates an overflow viaScheme which was defined prior to theoverflow flagpredicate, so the where-clause is not the sole factor in picking out which services match theservice location packet header.request. where-list: Theoperations thatwhere-list is a logical expression. It canoverflow arebe a single expression, a disjunction or a conjunction. A single expression must apply for theattribute reply,where-clause to match. A disjunction matches if any expression in theservice reply and service register. This operation requiresdisjunctive list matches. A conjunction matches only if all elements in theimplementationconjunction match. Note that there is no logical negation operator: This is because there is no notion of returning "everything except" what matches areliable byte stream protocol, like TCP, by the user, service,given criteria. A where-list can be nested anddirectory agents. 9.0 Special Data Types 9.1 Function Resolution The attribute value of an attributecomplex. For example: (& (| <query-item> <query-item> <query-item>) <query-item> (& <query-item> <query-item> <query-item> <query-item>) ) Notice that white space, tabs or carriage returns can bea function.added anywhere outside query-items. Each list has 2 or more items in it, and lists can be nested. Services which fulfill the entire logical expression match the where-clause. query-item: Afunctionquery item has the form: (<attr-tag> <comp-op> <attr-val>) Examples of this would be: (SOME ATTRIBUTE == SOME VALUE) (STATUS != RESERVED) (QUEUE LENGTH <= 234) 10.1.3 Reply Service Replies have the following form: SCHEME / URL / LANGUAGE / [ <attr-list> ] / SCHEME is ahandle for a rapidly changing attribute value that must be resolved atstring. Schemes are standardized by registering them with the IANA. URL is the serviceagent (e.g. a pieceaccess point ofcode thatthe service. It is the network address or domain name where the serviceagent runs to determine an attribute like whether acan be accessed. Veizades, Kaplan, Guttman [Page 23] INTERNET-DRAFT Service Location Protocol October-95 LANGUAGE codifies the language in which the attributes of the service have been registered. The language ison-line).a two letter code listed in Appendix A. Thefunction data that<attr-list> ispassed toreturned if theservice agentselect-clause of the query is not NULL. <attr-list> ::= <attribute> | <attribute>, <attr-list> <attribute> ::= (<attr-tag>=<attr-val-list>) <attr-val-list> ::= <attr-val> | <attr-val>, <attr-val-list> A comma cannot appear in anopaqueattr-val, as the comma is used as the multiple valuethat allowsdelimiter. Examples of an attr-list are: (SCOPE=ADMINISTRATION) (COLOR=RED, WHITE, BLUE) (DELAY=10 Minutes),(MOST RECENT BUILD=10-5-95),(PRIORITY=LOW,HIGH) The third example has three attributes in theservice agent to identifylist. Color can take on themethod to determinevalues red, white and blue. There are several other examples of replies throughout theattribute's value.document. 10.1.4 Service Registration Information Thetype of any value that is returned inService Registration Information has the same form as aFunction ResolveReply in the section above. The attribute list must bea basic type: string, integer, boolean or opaque. A function resolve reply cannot return another function value. A Function Resolve Reply must have a TTL of zero. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |complete. 10.1.5 Servicelocation header (function = FuncReslvRqst) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Function Resolution Opaque Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Function Resolve Request 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Unregister Information The Servicelocation header (function = FuncReslvRply) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S| Attr Type | <Attribute> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Attribute> (cont.) \ |Unregister Information takes the form: SCHEME / URL / LANGUAGE / [ <tags> ] / SCHEME, URL, and LANGUAGE are described above. <tags> ::= <tag-list> <tag-list> ::= (<attr-tag>) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Function Resolve Reply 9.2 Opaque The Opaque data type allows for(<attr-tag>), <tag-list> Examples of tags: (COLOR) (COLOR), (STATUS), (PRIORITY) If there are no tags included in the unregistration, the entire service, in each language which it was registered, is removed from theinclusionstorage ofvendor defined data types. When this data type cannot be resolved byauser agent itDirectory Agent. If tags are included, each tag in the list is used to find the attribute for the service specified. In the first example, the COLOR attribute and all its values are unregistered. In the second example, COLOR, STATUS and PRIORITY are unregistered. Veizades, Kaplan, Guttman [Page20]24] INTERNET-DRAFT Service Location ProtocolJuly-95 shouldOctober-95 A separate Service Unregister must beignored. Directory agents should store and pass these values on unintrepreted. Opaque types are uniquely identified by their TAG underdone for each language in which the service was registered, providing agiven standarization authority. 10.0 Authentication There are no provisionslist of tags inthis protocol to insure data integrity, data authority or data confidentiality. Mechanismsthe language in question. Example (unregistering 2 attributes in English, German and French): service/12.34.56.78/en/(COLOR), (SIZE)/ service/12.34.56.78/de/(FARBE), (GROESSE)/ service/12.34.56.78/fr/(COLEUR), (TAILLE)/ 10.1.6 Attribute List The Attribute List is defined in 10.1.3 as <attr-list>. 10.1.7 Language of Reply The language of reply codifies theunderlying network layer protocol or atlanguage in which the attributes of the serviceaccess point may be used to provide these functions. 11.0 Multicast vs. Broadcasthave been registered. The language is a two letter code, listed in Appendix A. 10.1.8 Service Scheme The Service Scheme is a string describing the type of service. These strings are registered with IANA. They may not include '/' or ','. 10.2 URLs in Service Location A URL in the context of service locationprotocol was designed for use in networks where multicast atcan have thenetwork layerform: [(PROTOCOL)] URL PROTOCOL issupported; in some instances multicast mayoptional. If it is omitted, IPv4 is assumed. Other values have not yet been determined. The representation of the URL depends on the PROTOCOL. In the case of IPv4: (IPv4) URL ::= <address> [:<portnum>] <address> ::= <dns-name> | <dotted number> <dns-name> ::= A qualified domain name, as 'cs.stanford.edu' <dotted number> ::= An a.b.c.d representation of a 32 bit IP address. 10.3 Attribute Value encoding rules Attribute values, and attribute tags are CASE INSENSITIVE for purposes of lexical comparison. Attribute values can have besupported. To support this protocolany string with the exception of '(', ')', '=', '>', '<', '/' and ',' (the comma) except innetworksthe case described below wheremulticastopaque values are encoded. While an attribute can take any value, there are three types of values which differentiate themselves from general strings: Booleans, Integers and Opaque values. Veizades, Kaplan, Guttman [Page 25] INTERNET-DRAFT Service Location Protocol October-95 - Boolean values are either TRUE or FALSE. This isnot supportedthefollowing modifications are made to supportcase irrespective of theprotocollanguage (i.e. inan environment where network layer broadcastFrench or Tegulu, Boolean TRUE issupported. 11.1 Single Subnet If'TRUE', as well as in English.) Boolean attributes can take only one value. - Integer values are expressed as anetworksequence of numbers. The range of allowable values, for this 32 bit quantity, isnot connected-2147483648 toany other networks simple network layer broadcasts will work2147483647. - Opaque values (i.e. binary values) are expressed inplace of multicast. 11.2 Multiple Subnetsradix-64 notation. Thedirectory agent provides a central clearing housesyntax is: <opaque-val> ::= (<len>:<radix-64-data>) <len> ::= integer length ofinformation for user agents. Ifthenetwork is designed so that a directory agent address is statically configured with each user agent,original binary data <radix-64-data> ::= An encoding of thedirectory agent will act asbinary data into abridgenew format, see below forinformation that resides on different subnets. The directory agent address can be dynamically configured with end systems using a protocol like the IP Dynamic Host Configuration Protocol. 11.3 Service Multicast Address Each service must have a unique multicast address to which it belongs to. This multicast address is obtained fromtheIANA. This mechanismalgorithm: Radix-64 encodes every 3 bytes of binary data into 4 bytes of ASCII data which isused so thatin thenumberrange ofdatagrams any one service receives is minimized. When undirected queriescharacters which aremade concerning this typefully printable. The range ofservice,characters is from '0' through 'o'. This is thequery should be sentsame technique used by the uuencode program. To encode binary to radix-64: Take thematching multicast address.binary data input in sets of 3 bytes, call them B1, B2 and B3. If thesubnet doesbuffer has a number of bytes notsupport multicast then the query should be broadcastdivisible by three, pad it with NULL bytes to be divisible by three. Initialize theService Location port. Veizades, Kaplan, Guttman [Page 21] INTERNET-DRAFT Service Location Protocol July-95 12.0 Data Element Formats 12.1 Attributes 0 1 2 3 0 1 2 3target array of 45 6 7 8 9 0 1 2 3bytes b1, b2, b3 and b4 to 0x30. Add to this: b1 += (B1 & 0xFC) >> 2; b2 += (B1 & 0x03) << 45 6 7 8 9 0 1+ (B2 & 0xF0) >> 4; b3 += (B2 & 0x0F) << 23 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | length |S| Std. Auth. | num values | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Attribute Class> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Attribute Value> \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Length The number+ (B3 & 0xC0) >> 6; b4 += (B3 & 0x3F); To decode radix-64 to binary: Subtract 48 (that is 0x30) from each ofbytesb1, b2, b3 and b4. Initialize an array in theattribute, including the length field S bit set if the attribute is a standard attribute Standardization Authority A number assigned to an organization which defines semantics for attributes. (Registered with IANA) Numbersize ofValues Thethe number ofvalues returnedbytes given in theattribute value field. Attribute Class <typed string> Attribute Value <typed string> | <integer> | <function> | <boolean> | <opaque> | <distinguished attribute> Attributes are {class, value} pairs that define a characteristic of a service. There are three classeslength field ofattributes: distinguished attributes, standard attributes and regular attributes. A standard attribute is indicated by settingthestandard attribute bit. Standard attributes have a well defined interpretation within a given standardization authority. Distinguished attributes<opaque-val>. Then decode every three values: B1 = (b1) << 2 + (b2 & 0x30) >> 4; B2 = (b2 & 0x0F) << 4 + (b3 & 0x3C) >> 2; B3 = (b3 & 0x03) << 6 + (b4); Examples: (5:00000000) encodes 5 NULLs. (6:00000000) encodes 6 NULLs. They arestandard attributes in all standardization authorities. Athe same due to the padding. (6:J6E\K6lQ00) endodes "hello!" Opaque values can pass things such as bitmaps for building a service browsing graphical interface or application specific data. Veizades, Kaplan, Guttman [Page22]26] INTERNET-DRAFT Service Location ProtocolJuly-95 distinguished attribute is denoted by a standard attribute whoseOctober-95 - Keywords may be expressed as an attributeclass is "DIST ATTR".that has no values: (power pc enabled=) or (official use only=) 11.0 Implementation Requirements Adistinguished attribute is alwaysUser Agent MAY: - Listen on the32 bit multicastService Location General Multicast addressassigned by IANA followed by a typed string giving the ASCII representation offor unsolicited Directory Agent Replies. This will increase thedistinguished attribute. 12.2 Service Instance 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | length | Numset ofAddrs. | Addr 1 Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Addr 1 length | <Address 1> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Address 1> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Srv Info Length | <Service Info for Address 1> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Service Info for Address 1> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . . . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Addr N Type | Addr N length | <Address N> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Address N> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Srv Info Length | <Service InfoDirectory Agents available to it forAddress N> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Service Infomaking replies. See Section 6.2. - Provide a way forAddress N> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Service Instance A service instance isthe application to configure the default DA, so that this one can be used without needing to find it each initially. - Be able to multicast requests to a multicast address. If the multicast addressof the service in question, the port ofis not known, theservice access point and any additional service specific information neededUA must be able tomakeuse a Distinguished Attributes query to obtain theservice connection. A servicemulticast addressis typedfor the scheme of the request. - Be able tosupport a varietyhandle an implosion ofnetwork protocols.replies after a multicast request. Theservice specific informationimplementation may beservice layer protocol specific information that facilitatesconfigurable so it will either return theservice rendezvous. When more than one network interfacefirst reply, all replies until a timeout orprotocol is usedkeep trying till the results converge. A User Agent MUST: - Be able tosupportunicast requests and receive replies reliably from aservice on an end system, multiple addresses canDA. A Service Application MUST beaddedable to: - Listen toa service instance usingthenumber of addresses field. Veizades, Kaplan, Guttman [Page 23] INTERNET-DRAFTService LocationProtocol July-95 12.3 Addresses TheGeneral Multicast addresstypesfor unsolicited Directory Agent Replies. If one is detected, and the DA has the right scope, all services which arespecified incurrently being advertised must be registered with theassigned numbers RFC. Address representation will vary from one network protocolDA. See Section 6.2. - Unicast registrations and unregistrations reliably toanother. An IPv4a DA. A Service Agent MUST be able to: - Listen to the Service Location General Multicast address for unsolicited Directory Agent Replies. If one isrepresented as follows: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port | Protocol Bit Array | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Wheredetected, and the DA has the right scope, all services which are currently being advertised must be registered with theportDA. See Section 6.2. - Unicast registrations and unregistrations reliably to a DA. - Listen to the multicast address of the service it is advertising. The incoming requests should be filtered: If theredevous port forURL of theprotocolSA is inquestion andtheprotocol isPrevious Responders URL list, the SA should not respond. Otherwise, abit map ofresponse to the multicast query should be unicast to the UA whichprotocols are supported for connections. When bit 1 (LSB) is set UDP is supported and when bit two is set TCP is supported. 12.4 Predicate 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Predicate length | <Predicate> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | \ <Predicate> (cont.) \ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Predicate Veizades, Kaplan, Guttman [Page 24] INTERNET-DRAFTsent the request. - Listen to the Service LocationProtocol July-95 13.0 Predicate Language All values are represented in network byte order. <predicate> ::= <relational op> <attr class> <attr value> | <boolean op> <predicate> <predicate> <relational op> ::= '==' | '!=' | '<' '>' | '>=' | '<=' <boolean op> ::= '&' (logical AND) | '|' (logical OR) <attr class> ::= <typed string> <attr value> ::= <integer> | <typed string> | <function> | <boolean> | <opaque> | <distinguished attribute> <integer> ::= 'I' <int val> <int val> ::= 4 byte signed quantity <typed string> ::= 'S' <string type> <len> <string bytes> <string type> ::= 1 byte value, see 'String Types' below <len> ::= 2 byte value, counts number of string bytes <string bytes> ::= If ASCII typed, there is <len> numberGeneral Multicast address for queries ofcharacters.any type. IfISO646 or Unicode string type, then there are half of <len> in 2 byte characters inthestring bytes. <function> ::= 'F' <resolution> <resolution> ::= 4 byte unsigned quantity <boolean> ::= 'B' <bool val> <bool val> ::= 1 byte quantity, onlyquery can be replied to by thefirst bit inService Agent, thefield is read. 0 = FALSE, nonzero = TRUE <opaque> ::= 'O' <len> <opaque val> <opaque val> ::= a vendor intrepreted sequenceService Agent must do so. It must check first to make sure it is not on the list ofbytes <distinguished attribute> ::= 'D' <unsigned int> <typed string> <unsigned int> ::= 4 byte unsigned integer'previous responders.' It will receive 'Distinguished Attribute' requests this way. A Directory Agent MUST be able to: - Send an unsolicited Directory Agent Discovery reply to the Veizades, Kaplan, Guttman [Page25]27] INTERNET-DRAFT Service Location ProtocolJuly-95 Example: The predicate language is expressed in reverse polish notation. A predicate query reqeusting all printersOctober-95 Service Location General Multicast address on startup. See Section 6.2. - Listen on the12'th floor would read as follows (all quoted characters are ASCII representations ofDirectory Agent Multicast Address for Directory agent discovery requests. Filter these requests if the Previous Responder URL list includes the DA's URL. - Listen on the TCP and UDP ports for unicast requests, registrations and unregistrations and service them. - Provide aone byte value. Otherwise all bytes are toway in which SCOPE information can betaken as a literal decimal values). The example uses 239.56.125.101 asused to configure themulticast address for printers,Directory Agent. - Age out the services which have been registered so that when the service registration's TTL expires, the service advertisement isinvalid. Byte boundary 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ |'&'|'='|'='|'D'|239| 56|125|101|'S'| 1 | 0 | 9 |'D'|'I'|'S'|'T'| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ |' '|'A'|'T'|'T'|'R'|'S'| 1 | 0 | 7 |'P'|'R'|'I'|'N'|'T'|'E'|'R'| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ |'='|'='|'S'| 1 | 0 | 8 |'L'|'O'|'C'|'A'|'T'|'I'|'O'|'N'|'S'| 1 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | 0 | 11|'1'|'2'|'''|'T'|'H'|' '|'F'|'L'|'O'|'O'|'R'| +---+---+---+---+---+---+---+---+---+---+---+---+---+ 14.0withdrawn. NOTE: Service Applications, Service Agents and User Agents use ephemeral ports for transmitting information to the service location port. 12.0 Interesting Constants IP Port number for unicast requests to Directory Agents: UDP and TCP Port Number: 427 Multicast Addresses General Multicast Address: 224.0.1.22 Directory Agent Multicast Address: 224.0.1.35StringFurther multicast address will be assigned for specific types of service through the IANA. Character Encoding Types ASCII 1 ISO646 2 Unicode 3 JIS 4 SJIS 5 EUC 6 Error Codes No Error 0Other Error 255LANGUAGE_NOT_SUPPORTED 1 AUTHORITY_NOT_SUPPORTED 2 PROTOCOL_PARSE_ERROR 3 INVALID_REGISTRATION 4 Veizades, Kaplan, Guttman [Page26]28] INTERNET-DRAFT Service Location ProtocolJuly-95 15.0October-95 13.0 Acknowledgments This protocol owes some of the original ideas to other service location protocols found in many other networking protocols. Leo McLaughlin and Mike Ritter (Metricom) provided much input into early version of this document. Thanks also to Steve Deering (Xerox) for providing his insight into distributed multicast protocols.16.0Harry Harjono and Charlie Perkins supplied the basis for the URL based wire protocol in their Resource Discovery Protocol. Their comments have been very valuable. Thanks also to Peerlogic, Inc. for supporting this work. 14.0 References [1] Freier, A. O. "Network Binding Protocol" Xerox Corporation Unpublished, June 1986. [2] S. Gursharan, R. Andrews, A. Oppenheimer, Inside AppleTalk. Addison-Wesley Publishing. 1990 [3] Deering, S., "Host Extensions for IP Multicasting", RFC 1112, NIC, August 1989. [4] Saltzer, J., "On the Naming and Binding of Network Destinations", RFC 1498, M.I.T. Laboratory for Computer Science, August 1993. [5] Accetta, M. "Resource Location Protocol", RFC 887, NIC, December 1983. [6] Legato Systems, "The Legato Resource Administration Platform", Legato Systems, 1991. [7] C. McManis and R. Rom, "The Zeus Name Service Architecture", Sun Microsystems, 1990. [8] S. Dyer, "The Hesiod Name Server", Winter Usenix Conference, pp. 183-187, Feb 1988. [9] D. Oppen and Y. Dalal, "The Clearinghouse: A Decentralized Agent for Locating Named Objects in a Distributed Environment," Tech. Rep. OPD-78103, Xerox Office Products Division, 1981. [10] B. Lampson, "Designing a Global Name Service", Proceedings of the 5th ACM Symposium on Principles of Distributed Computing, pp. 1-10, 1986. [11] D. Cheriton and T. Mann, "Uniform Access to Distributed Name Interpretations in the V-system". [12] P. Mockapetris. "Domain Names - Concepts and Facilities". RFC 1034, NIC, November 1987 [13] P. Mockapetris. "Domain Names - Implementation and Specification". RFC 1035, NIC. November 1987 Veizades, Kaplan, Guttman [Page27]29] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 [14] S. Deering. "Router Discovery Protocol". RFC 1256, NIC 1991. [15] The Unicode Standard Version 1.0 Volume 1, Addison-Wesley Publishing (ISBN 0-201-56788-1). October 1991. [16] ISO 639:1988 (E/F) "Code for the representation of names of languages"; ISO, Geneve, 1988. [17] K. Lunde, "Understanding Japanese Information Processing," O'Reilly & Associates, Inc. 199317.015.0 Author's Addresses John Veizades TGV, Inc. 101 Cooper St Santa Cruz, CA 95060 Phone: +1 415 252 8203 Fax: +1 415 252 8248 Email: veizades@tgv.com Scott KaplanCoroNet Systems Inc. 5150 El Camino Real, Suite C-22 Los Altos,346 Fair Oaks St. San Francisco, CA9402294110 Phone: +1 415960 3255 x 216 Fax: +1 415 960 3288285 4526 Email:scott@coronet.comscott@catch22.com Erik GuttmanPeerLogic, Inc. 555 De Haro1920 Sacramento St.,Suite 300#8 San Francisco, CA9410794109 Phone: +1 415626 4545921 6570 Email: guttman@cs.stanford.edu18.016.0 Document Expiration This document expiresJanuary 6,April 24, 1996 Veizades, Kaplan, Guttman [Page28]30] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 Appendix A - Technical contents of ISO 639:1988 (E/F) "Code for the representation of names of languages". Two-letter lower-case symbols are used. The Registration Authority for ISO 639 is Infoterm,Osterreiches Normungsinstitut (ON), Postfach 130, A-1021 Vienna, Austria. aa Afar gn Guarani mr Marathi ab Abkhazian gu Gujarati ms Malay af Afrikaans mt Maltese am Amharic ha Hausa my Burmese ar Arabic hi Hindi as Assamese hr Croatian na Nauru ay Aymara hu Hungarian ne Nepali az Azerbaijani hy Armenian nl Dutch no Norwegian ba Bashkir ia Interlingua be Byelorussian ie Interlingue oc Occitan bg Bulgarian ik Inupiak om (Afan) Oromo bh Bihari in Indonesian or Oriya bi Bislama is Icelandic bn Bengali; Bangla it Italian pa Punjabi bo Tibetan iw Hebrew pl Polish br Breton ps Pashto, Pushto ja Japanese pt Portuguese ca Catalan ji Yiddish co Corsican jw Javanese qu Quechua cs Czech cy Welsh ka Georgian rm Rhaeto-Romance kk Kazakh rn Kirundi da Danish kl Greenlandic ro Romanian de German km Cambodian ru Russian dz Bhutani kn Kannada rw Kinyarwanda ko Korean el Greek ks Kashmiri sa Sanskrit en English ku Kurdish sd Sindhi eo Esperanto ky Kirghiz sg Sangro es Spanish sh Serbo-Croatian et Estonian la Latin si Singhalese eu Basque ln Lingala sk Slovak lo Laothian sl Slovenian fa Persian lt Lithuanian sm Samoan fi Finnish lv Latvian, Lettish sn Shona fj Fiji so Somali fo Faeroese sq Albanian fr French mg Malagasy sr Serbian fy Frisian mi Maori ss Siswati mk Macedonian st Sesotho ga Irish ml Malayalam su Sundanese gd Scots Gaelic mn Mongolian sv Swedish gl Galician mo Moldavian sw Swahili Veizades, Kaplan, Guttman [Page29]31] INTERNET-DRAFT Service Location ProtocolJuly-95October-95 ta Tamil te Tegulu tg Tajik th Thai ti Tigrinya tk Turkmen tl Tagalog tn Setswana to Tonga tr Turkish ts Tsonga tt Tatar tw Twi uk Ukrainian ur Urdu uz Uzbek vi Vietnamese vo Volapuk wo Wolof xh Xhosa yo Yoruba zh Chinese zu Zulu Veizades, Kaplan, Guttman [Page30]32] ----