view Side-By-Side changes
Service Location Working Group Erik GuttmanInternet DraftINTERNET DRAFT Charles Perkins 6 June 1997 SunMicrosystems, Inc. Expires in six months TheMicrosystems Service Templates and service:URL Scheme <draft-ietf-svrloc-service-scheme-00.txt>Schemes draft-ietf-svrloc-service-scheme-01.txt Status of This Memo This document is a submission by the Service Location Working Group of the Internet Engineering Task Force (IETF). Comments should be submitted to the srvloc@corp.home.net mailing list. Distribution of this memo is unlimited. 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to useInternet- DraftsInternet-Drafts as reference material or to cite them other than as ``work in progress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in theInternet- DraftsInternet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net(Europe),(North Europe), ftp.nis.garr.it (South Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). AbstractThe service: URL scheme isService: schemes define URLs (called "service: URLs" in this document) which are primarily intended to be used by the Service Location Protocol in order toprovidedistribute service accessinformation for arbitrary network services.information. TheseURLsschemes provide an extensible framework for client based network software to obtain configuration information required to make use of network services.AWhen registering a service: URL with a Directory Agent, the URL may be accompanied by a set of well defined attributes which define thecharacteristicscharateristics of the service. These attributes may conveyprotocolconfiguration information to clientsoftwaresoftware, or service characteristics meaningful to end users. This document describes how to define and standardize new service types and attributes for use with the service: schemeand provides examples. Guttmanusing Service Guttman,Perkins Expires 6 December 1997 [Page1]i] Internet DraftThe Service: URL Scheme 20 November 1996 TableService Templates and URLs 6 June 1997 Templates. These templates are human and machine readable. They may be used by administrative tools to parse service registration information and by client applications to provide localized translations of service attribute strings. Guttman,Perkins Expires 6 December 1997 [Page ii] Internet Draft Service Templates and URLs 6 June 1997 Contents Status of This Memo i Abstract i 1. Introduction 2 1.1.The service: SchemeTerminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Service Schemes . . . . . . . . . . . . . . . . . . . . . 4 1.3. Related work2. Use of service: URLs 3. Specifying A New Service Type 3.1. A Service Type specification defines: 3.1.1. Service Type 3.1.2. The service: 'urlpath' information 3.1.3. Attributes 3.1.4. Service Discovery Multicast Address 3.2. Specifying Attributes 3.2.1. A subtlety 3.2.2. Types and String Encoding 3.2.3. Attributes with multiple values 3.2.4. Grouping attributes values together in records 3.3. Special Attributes 3.3.1. Service Discovery Multicast Address 3.3.2.. . . . . . . . . . . . . . . . . . . . . . 5 1.4. Changes made since the last version3.3.3. Language tag 3.4. Service Type templates 3.4.1. Definition 3.4.2. Manditory Attributes 3.4.3. Attribute syntax for Service Type templates 3.4.4.. . . . . . . . . . . 5 1.5. Open issues and work to be done . . . . . . . . . . . . . 6 2. Use oftemplates by the Service Location Protocol 4.service: URLs 6 3. Specifying AProcess For StandardizingNew ServiceTypes 5. Encoding Rules forType 7 3.1. Service TypeURLs 6. Examples 6.1. NFS 6.1.1. The NFSSpecifications . . . . . . . . . . . . . . . 7 3.1.1. Service Typetemplate 6.1.2. Example: A 'pub' directory 6.1.3. Example: A 'dist' directory 6.2. LPR 6.3. POP3 7. Security Considerations 8. Internationalization Considerations 8.1. Character Set identification and use 8.2. Language identification and translation 9. Bibliography 10. Author's Address 1. Introduction This document describes a URL scheme which will allow arbitrary network services to have a standard notation for defining their service access point. Guttman [Page 2] Internet Draft The Service: URL Scheme 20 November 1996 In addition it describes how to define a set of attributes to associate with service: URLs. These attributes will allow end users and programs to select between network services of the same type that have different capabilities.. . . . . . . . . . . . . . . . . . 7 3.1.2. Theuse of these attributes is recommended but not required to make use of theservice:URL. The minimal encoding rules for attributes are specified. Service Type templates are used to describe services which use the service: URL in a standard way. The rules for writing such a template are provided, as are three examples. All grammar encoding follows the Augmented BNF for syntax specifications [ABNF] with a few deviations. 1.1. The service: Scheme The service: scheme and all information which follows it MUST obey the URL conventions defined in [RFC1738]. The scheme specific'url-path' informationfollowing the service: scheme provides the service type and address of a network service. It may additionally include service type specific information. The form of a service: URL is as follows: serviceurl = "service:" service-type ":" service-part The formal syntax for a serviceurl is given in Section 5. The service-type string indicates a specific protocol, such that client software can be expected to unambiguously make use of the service. The. . . . . . 8 3.1.3. Attributes . . . . . . . . . . . . . . . . . . . 8 3.2. Specifying Attributes . . . . . . . . . . . . . . . . . . 8 3.2.1. ServiceType determines semantics of the service-partTemplates andtheattributesassociated. . . . . . . . 9 3.2.2. Service Templates String Encoding . . . . . . . . 9 3.2.3. Attributes withthe service: URL. The service-part includes an ip-schemepart. This will define either a domain name or a numerical ip address for the service and possibly more, such as a port number to use. The remainder of the service- part is intended to provide sufficient information for client software to be able to bind and make use of a service. The service-part allows for extensions to the basic tuple of Service Type and host (and possibly port number), so that more information may be provided to uniquely identify the resource. It is also possible, though less preferable, to provide uniquely identifying information in themultiple values . . . . . . . . . 12 3.2.4. Grouping attributeinformation associated with a service: URL. This string will be referred tovalues together inthis document as the 'urlpath' to be consistent with [RFC 1738]. Guttman [Page 3] Internet Draft The Service: URL Scheme 20 November 1996 Therecords . . 12 3.3. Special attributesassociated with the URL are not included in the URL. They are stored and retrieved using other mechanisms. The service: URL serves as a unique identifier, to be used in registering or requesting the attribute information. The. . . . . . . . . . . . . . . . . . . 13 3.3.1. ServiceLocation Protocol [SLP] specifies how such information may be advertised by network services and obtained by client software. Other facilities, such as Directory Services, could be used to distribute this information. Attributes are associated with service: URLsType Language . . . . . . . . . . . . . . 13 3.3.2. Version . . . . . . . . . . . . . . . . . . . . . 13 3.3.3. url-path rules . . . . . . . . . . . . . . . . . 14 4. A Process For Standardizing New Service Types 14 5. Encoding Rules forthree reasons: 1. They allow configuration of the client. Many servers have optional features. Clients which require or prefer to make use of these features can proceed to do so without protocol negotiation or feature selection. Client configuration parameters or server convention information may be obtained. 2. Client software may have particular requirements. The attributes associated with a given URL allow for automatic selection of services which have certain features. For example, client software may require a server which has a particular version or which has access to specific resources. 3. Attributes support end user selection by characteristic as opposed to simply by type. These attributes may be used to populate service browsing and choosing user interfaces, for example. 1.2. Related work The "Finding Stuff" work by Ryan Moats and Martin Hamilton uses service: URLs provide access information about arbitrary network protocols through DNS. [FINDING] They do not associate service attributes with these URLs. The URLs allow them to provide nonstandard service port information and to relate several protocols to single abstract services, such as white pages and yellow pages. 2. Use of service: URLs The service: URL is intended to allow arbitrary client server and peer to peer systems to make use of a standardized dynamic service access point discovery mechanism. It is intended that service: URLs be obtained with their associated attributes. In this way a client application may obtain theService Type URLsof several services of the same type and distinguish the most preferable among them by means of their attributes. Guttman [Page 4] Internet Draft The Service: URL Scheme 20 November 1996 These attributes will take the form specified by the "service- template", described below. Each service: URL SHOULD be accompanied by all attributes in the template (except the template specific special attributes.) The registration of this attribute information could be done using various mechanisms, one of which is the Service Location Protocol [SLP]. The client will use the service: URL to bind directly to a service. The client must have a priori knowledge of how to use the network protocol associated with the Service Type included in the service: URL. 3. Specifying A New Service Type A Service Type should be specified to be a close as possible to a particular protocol. It may be tempting to create a Service Type for a 'class of services', such as 'printer'. This will complicate the specification later on, as the single service type must be differentiated between the different protocols at the level of service specific information or attributes. It is much clearer if the protocol is simply named by a service type. The urlpath is normally used to supply additional naming information to uniquely identify the service. The attribute information can then be used to indicate configuration details, optional features available and characteristics (which may be relevant to a human user or to a program.) 3.1. A15 6. Examples 16 6.1. SLP Directory Agent . . . . . . . . . . . . . . . . . . . 16 6.2. POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . 16 7. General ServiceType specification defines: 3.1.1.Template 17 7.1. Obtaining ServiceType This is a string which will be prepended by the 'service:' scheme. It may be a name which is entirely invented or be the same as a well known service scheme. For example, service:http: might refer to a HTTP server, whereas the http: scheme used in a URL generally refers to a document. The meaning of this service type must be fully described by service type specification. A network protocol specification should be cited as the definitive reference for the protocol to use when binding to the service access point provided by the service: URL. 3.1.2. The service: 'urlpath' information This information is included in the URL in order to provide uniquely Guttman [Page 5] Internet Draft The Service: URL Scheme 20 November 1996 identifying information. This mechanism is used in the examples which follow in order to identify a mountable filesystem (using the 'nfs' service type) and an lpr print queue (using the 'lpr' service type). The syntax and interpretation of the urlpath must accompany the definition of a new Service Type. The 'default' urlpath definition is that it is entirely omitted except possibly a terminating slash. The syntax is: urlpath = [ "/" ] Every effort to remain consistent with the syntax forms and styles of other standardized urlpaths should be pursued. See [RFC1738] for examples and guidance. 3.1.3. Attributes This information provides information about the service's capabilities, characteristics and required client configuration. Each attribute which is defined must have a default value and definition of all values it can take. An attribute normally takes only one value, but optionally it may be defined to be able to take multiple values. The transmission of attributes is not described by this document. Attribute registration, deregistration and the use of attributes in queries may be accomplished using a number of different protocols. A future document (or possibly a later version of this document) will describe how to encode attributes for use with different services. The Service Location Protocol [SLP] defines one method of encoding attributes. 3.1.4. Service Discovery Multicast Address Service Types may be registered with IANA and obtain a unique Service Discovery Multicast Address. This address is to be used with the Service Location Protocol [SLP] as a means to specifically discover a single type of service in a network without burdening all other servers. This is purely optional: Services which use the service: scheme do not need to have a unique Service Discovery Multicast Address assigned to them. 3.2. Specifying Attributes Guttman [Page 6] Internet Draft The Service: URL Scheme 20 November 1996 Attributes are used to convey information about a given service for purposes of differentiating different services of the same type. They convey information to be used in the selection of which service to bind to, either for human consumption or for use by a program. Attributes may be encoded in different character sets and in different languages. The procedure for doing this is described in Section 8.0. Attributes have two components. The first is a 'tag'. This is a string with certain encoding rules. The second component is a set of values. The set of values may be NULL, in which case the attribute is a 'keyword'. The value or values of an attribute are typed, and must have the same type for each value if the attribute is multivalued. The rules for typing and encoding of attribute values is given in the rest of Section 3.1. 3.2.1. A subtlety There is a subtlety in the definition of attributes. A service may support 'feature A' and 'feature B'. It may also have 'enhancement C'. Suppose the enhancement is only available when feature B is used, in this case. If 'feature' is one attribute and 'enhancement' is a second attribute, we can describe the service with the following: feature = A, B enhancement = C It will be impossible to tell if there is any dependency between having feature B and enhancement C. Since the data relationships are flat in the attribute encodings, it is necessary to explicitely state all combinations as distinct values. This can be done in two ways. Either all combinations of features which may have dependencies must be given a well defined value or a 'record' format for an attribute value must be used. The combination method is only useful when there are very few values to be combined, as it will quickly become a very large set of values to define. In the case of the example we can define feature's values as: feature can take: "A" | "A enhanced by C" | "B" | "B enhanced by C" In our example: Guttman [Page 7] Internet Draft The Service: URL Scheme 20 November 1996 feature = "A" , "B enhanced by C" The suggested method for solving this problem with the 'record format' is described in Section 3.2.4. below. 3.2.2. Types and String Encoding Characters have been reserved in the specification of attributes in order to avoid ambiguity with respect to the delimiters in the string based protocol used in attribute lists. Further limitations may be imposed if the attributes are to be encoded using another protocol. The Service Location Protocol [SLP], for example, has several reserved characters that are not to be used in attributes. SLP provides an escape sequence to allow these characters to be used in attribute values (not attribute tags.) The same character escape mechanism is proposed here. esc-char = "&" "#" 1*DIGIT ";" The escaped character is replaced by a character sequence with no spaces. The digits are a decimal representation of the character value to be replaced, in the character set used for the attribute encoding. There are only three heavy handed syntactic devices used: 1. Blank lines are used to separate attributes. To add a blank line to text, one would have to escape the CRLF with 2. Commas are used to separate attribute values. To use a comma in attribute encodings, escape the comma with , 3. Sets of colons are used to mark a default value (see Section 3.4.3.) This means the string "::" must be escaped in attribute values to :: Attributes have the following grammar: attribute = keyword / tag "=" 1#value CRLF CRLF safe-chars = <any character except "," which is reserved.> white-sp = SPACE / CR / LF / TAB key-chars = <any safe-chars except for white-sp which is not allowed.> tag = 1*safe-chars Guttman [Page 8] Internet Draft The Service: URL Scheme 20 November 1996 keyword = 1*key-chars value = string / integer / boolean / opaque string = 1*safe-chars integer = [-] 1*DIGIT ; The integer MUST fall within the range of ; values a 32 bit integer may take, ie. ; "-2147483648" to "2147483647". boolean = "TRUE" / "FALSE" ; These values are the only exception to the ; Internationalization rules in Section 8.0. ; Independent of the translation of the ; attributes, the boolean values remain the ; indicated strings. rad64-char = ALPHA / DIGIT / "+" / "-" / white-sp opaque = 1*DIGIT ":" 4*rad64-char ; The digits define the original length of the ; opaque value. The restricted character string ; is the radix-64 encoding of the opaque value. ; See [RFC 1521], Section 5.2. ; NOTE: White space is ignored in decoding ; radix-64 values. Note on the use of white space: A string is considered to be a token in the case of a tag or <string> value. In this case, the string is 'trimmed'. White space interior to a string token is left alone, while white space between the tokens is removed. For example: " some name = some value , another example " would be trimmed to "some name" '=' "some value"Templates dynamically . . . . . . . . . 18 8. Internationalization Considerations 18 8.1. Character Set identification and"another example". Note on string matching: Attribute tagsuse . . . . . . . . . . 18 8.2. Language identification andvalues may be used by some protocols for directory look-up. In this case, the following rules should be applied for string matching of attribute strings. String matching MUST be done after character escape encoding has been Guttmantranslation . . . . . . . . . 19 Guttman,Perkins Expires 6 December 1997 [Page9]1] Internet DraftThe Service: URL Scheme 20 November 1996 removed, white space has been trimmed. In addition, string matching SHOULD be case insensitive. 3.2.3. Attributes with multiple values Attributes with multiple values must be defined so that the type of each value is the same. Attributes with a boolean value may not take multiple values. 3.2.4. Grouping attribute values together in records In order to make use of this value encoding strategy, the record format must be explicitely described. A 'delimiter' is used to separate the fields in the record, a 'tab' is suggested, but others are possible. Each field in the attribute 'record' value must be defined separately, as though it were an attribute value of its own. This means it needs to have a type, default value, whether it can have multiple valuesService Templates and URLs 6 June 1997 9. Security Considerations 19 1. Introduction This document describes adefinition for all values it can take. If a field is omitted, it is assumed to take its default value. It is wise to have the default value be "NONE" or "NOT APPLICABLE",class of schemes which will allow network services tomakedefine their service access information, using a standard notation. In addition itpossibledescribes how toexplicitely declare only the relevent field valuesdefine a set of attributes to associate with a service: URL. These attributes will allow end users andignore the others. It is also possibleprograms todeclareselect between network services of the same type that have different capabilities. A client may use these attributes to select a particular service (obtain thefieldservice: URL) that hasno default value, if it MUST be defined in each record. Followingtheexampleconfiguration it needs. The minimal encoding rules for attributes are specified. Service Type templates are used to describe inSection 3.1, we can definea standard way those services which use theattribute "feature" to haveservice: URL. The rules for specifying arecord structure, delimited by tabs. Both fieldsscheme aresingle valued strings. The first field isprovided, along with two examples. Templates are used the"feature name", and has no default value.following distinct purposes: 1. Standardization Thesecond fieldtemplate is reviewed before it is standardized. Once it is standardized, all versions of the"enhancement name", with "NO ENHANCEMENT" as the default value. The resulting value would be: "feature =" "A" TAB "," "B" TAB "C" The string "feature =" indicatestemplate are archived by IANA. 2. Service Registration Servers making use of theattribute 'feature' takesService Location Protocol will register themselves and their attributes. They will use thevaluetemplates to generate theright ofservice registrations; the service must pick from among theequals sign.allowable values. 3. Client presentation of Service Information Client applications may display service information. Thequotes willtemplate provides type information and explanatory text which may beused to indicate that this is not an ABNF syntax but ratherhelpful in producing user interfaces. 4. Internationalization If astring encoding resulting from rules given elsewhere. (In this caseclient application has therules weretemplate for a given service type inSection 3.1.1.). The feature "A" has no second field value,two different languages, thefirst value record is A with NO ENHANCEMENT. The second value record that featureattributes maytake is B withbe translated back and forth between theenhancement C. 3.3. Special attributes 3.3.1. Service Discovery Multicast Address Guttmantwo languages. Guttman,Perkins Expires 6 December 1997 [Page10]2] Internet DraftThe Service: URL Scheme 20 November 1996 This attribute is always included inServiceType templates. It takes a single valued which takes a numerical IP address specification. This should take the value of the assignedTemplates and URLs 6 June 1997 A ServiceDiscovery Multicast Address. If the servicemay use templates to register services in more than one language, though it hasnotbeenassigned one, this attribute should take the value NONE. The value that this attribute takes is definedconfigured by thefollowing syntax: discovery-addr = ipv4-addrport / ipv6-addrport / "NONE" byte = 1*3DIGIT ; This value MUST be between 0..255 ipv4-addrport = byte "." byte "." byte "." byte [":" 1*DIGIT] hex = DIGIT / "A" / "B" / "C" / "D" / "E" / "a" / "b" / "c" / "d" / "e" ipv6-addrport = 32hex [":" 1*DIGIT] The address must besystem administrator to register in avalid multicast address (accordingsingle language. QUESTION: Which of several homonyms would be the one known toeither IPv4 or IPv6 addressing rules. The port number identifiesuser agents processing theport number fortranslated information? All grammar encoding follows theservice discovery protocol. The Service Location Protocol [SLP] uses port 427, which isAugmented BNF (ABNF) [6] for syntax specifications with a few deviations. QUESTION: What are thedefault if no port numberdeviations? 1.1. Terminology In order to reduce confusion, some terminology isgiven. 3.3.2. Version This attribute hasintroduced. service: URL A URL, registered by astring valueservice agent ofthe form: version = 1*DIGIT '.' 1*DIGIT This is the versiona particular service type, that conforms to any "service scheme" definition. service type A type ofthe Service Type template. This attribute MUST be included in every collectionservice all ofattributes so as to identify which versionwhose agents are accessed by service: URLs of the same scheme (a service scheme, below). The name of thetemplate it used to determinetype of service is thesetpart ofattributes and attribute definitions. Client software can use these version numbers potentially to support old attributes, allowing a smooth migration to new template definitions.the service scheme name which follows the initial string "service:". service scheme AService Type template proposal starts at 0.0,scheme, whose name start with the string "service:" and is followed by theminor number increments once per revision. A standardized template starts at 1.0. Additions of attributes add oneservice type name, constructed according to theminor number, where changes of definition or removalrules in this document. service template A formal description of the service attributesor values adds one toand service scheme associated with a particular service type. a particular service may be selected by obtaining themajor number. See Section 4service: URL registered by that service. general service template A template formore detail on how to use the Version attribute. 3.3.3. Language tag Guttmandescribing service templates -- for instance as is contained within this document. Guttman,Perkins Expires 6 December 1997 [Page11]3] Internet DraftThe Service:Service Templates and URLs 6 June 1997 1.2. Service Schemes Each service scheme MUST obey the URLScheme 20 November 1996conventions defined in [4]. TheLanguage tag attribute must be included with each templatescheme specific information following the service: scheme provides the service type andwith each setaddress of a network service. It may additionally include service type specific information. The form ofattributes associated withaparticularservice:URL. This allows client applications to identify ifURL is as follows: "service:" service-type ":" service-part where theattributes which will be comprehensibleservice-part typically has the following form: /addr-family/addr-spec/url-path;FAQ and the last field is never required to exist in any service location registration, but is sometimes provided fora givenconvenience of interactive userand retrieve them. See 8.2. 3.4. Service Type templates 3.4.1. Definitionagents. TheService Typeformal syntax forthe Service Type templatea service: URL is"service-template".given in Section 5. The service-type string indicates the type of service. The service typespecific information which follows isdetermines thelocationsemantics of the service-part andpath informationofa hypertext document which describestheService Type template, which is to be accessed using http. For example, this template would be encoded as: <URL:service:srv-template://www.ietf.org/internet-drafts/ draft-ietf-svrloc-service-scheme-00.txt>attributes associated with the service: URL. Thedocument would be accessed<addr-family> is IP byusing: <URL:http://www.ietf.org/internet-drafts/ draft-ietf-svrloc-service-scheme-00.txt> 3.4.2. Mandatory Attributes The service-template Service Type has 3 mandatory attributes. The template must also supportdefault (if not present), but can be used to indicate thetwo special attributes version and Service Discovery Multicast Address,use other address families such asdefined in Section 3.3. These attributes are NOT specified in attributes which accompany service: URLs. These attributes are only to be specified in Service Type templates. service type The value ofIPX and Appletalk. In thisattributedocument, the addr-family> is always IP, so that the field can be omitted; all service-parts will start with "//". Next, the service-part includes aservice type string. Service Discovery Multicast Address See section 3.3.1. description The service type is described here. Thisaddress specification (an <addr-spec>), which is typically either aparagraphdomain name (DNS) orso of text which describes how to interpret the service: URLan IP address forthis particular service type. It shouldthe service, and possibly a port number. The service-part allows more information to beclear what protocol or protocolsprovided (by way of <url-path>) that canbind touniquely locate the serviceaccess point Guttman [Page 12] Internet Draftor resource if the <addr-spec> is not sufficient for that purpose. TheService: URL Scheme 20 November 1996 whichFAQ is actually composed of a list of "attribute = value" elements, describing for the user theservice: URL resolves to. Of theseattributestags, only "description" maythat are associated with the service: URL. This might betranslated into another language (see Section 8.0.) 3.4.3. Attribute syntax for Service Type templates For each attributedone in situations where theservice type supports, an additional attributeservice: URL isaddedused in a context where it was not automatically selected by picking desired attributes. When a human obtains a URL and needs to ask questions about how to use it, hopefully theservice type template. Thisattributehas the same tag asvalues provided in theservice type's attribute. The value ofFAQ can help. For instance, if theattribute haskeyword "PostScript" were provided in a service:printer URL, a user would be able to guess that thefollowing syntax: tmpl-attr = attr-tag attr-val safe-char = Any character otherprinter could correctly print PostScript documents. Other than","in a FAQ, attributes associated with the service: URL are not typically included in the URL. They are stored and":" attr-tag = 1*[safe-char] attr-val = [type] [m] [l] "::" default "::" description type = ["STRING" | "BOOLEAN" | "INTEGER" | "OPAQUE"] default = 1*[safe-char] description = 1*[safe-char] m = SPACE "M" l = SPACE "L"retrieved using other mechanisms. Thedefault is "STRING" if type is omitted. "M" indicates the attribute can have multiple values. If this fieldservice: URL isomitted ituniquely identified with a particular service agent, and isassumedused when registering Guttman,Perkins Expires 6 December 1997 [Page 4] Internet Draft Service Templates and URLs 6 June 1997 or requesting the attributecaninformation. The Service Location Protocol [10] specifies how such information may be advertised by network services and obtained by client software. Service agents would not typically advertise URLs with FAQs unless manually configured to do so by a system administrator, and a user agent that obtains a service: URLs by issuing a Service Request will already haveonly one value. "L" indicatesall the necessary attributeand its values must be considered literally, that is, they must not be translatedinformation toother languages. (See Section 8). The default field providesmake use of thedefault valueservice: URL. Attributes are associated with service: URLs forthe attribute. The description field should be a paragraphthree reasons: 1. Many servers have optional features. Clients which require or prefer to make use oftext describing the attribute and the all the values itthese features cantake on. This information will be used by those who develop user interfacesproceed todisplay servicedo so without protocol negotiation or feature selection. Attributes serve as a mechanism for servers to distribute information about their configuration, capabilities andthose who advertise services usingcharacteristics (even dynamic qualities, such as status or load.) 2. Client software may have particular requirements. The attributes associated withthe service: URL. 3.4.4. Usea given URL allow for automatic selection oftemplatesservices which have certain features. For example, client software may require a server which has a particular version of something, or which has access to specific resources. 3. Attributes support selection of service instances bythe Service Location Protocol Service templatescharacteristic as opposed to simply by type. These attributes may be usedbyto give users information enabling theService Location Protocol [SLP] in three important ways: Guttman [Page 13] Internet Draft The Service: URL Scheme 20 November 1996 First, those who program user interface front ends may useselection of particular services when browsing service directories or thetemplate to understandavailable services on theformat, rangelocal network. 1.3. Related work The "Finding Stuff" work by Ryan Moats andmeaning orMartin Hamilton uses service: URLs provide access information about arbitrary network protocols through DNS [9]. They do not associate service attributesavailable from Attribute Queries from Service Location. Second, the template provides requirements for those who program Service Agents for a particular Service Type.with these URLs. TheattributesURLs may contain nonstandard service port information for services advertised in theService Template must be assigned values to be associated with the service: URL advertisement. Finally, the template providesDNS. DNS SRV Resource Records are a mechanismfor the Service Location Protocolwhich provides a way todiscover Service Type specific Service Discovery Multicast Addresses. The template itself isobtain a serviceofby type"service-template". A User Agent obtains the template in order to discover which multicast address to useforissuing requests to Service Agents. Service Agents obtain the templatea given domain [7], without being able todiscoverspecify whichmulticast group to join in order to receive multicast User Agent requests. Bothof theDirectory Agent and Service Agent will use(possibly numerous) instances of thetemplates in order to associateservice type would satisfy the needs of the user agent. 1.4. Changes made since the last version Removed: Guttman,Perkins Expires 6 December 1997 [Page 5] Internet Draft ServiceType string withTemplates and URLs 6 June 1997 - The long template examples. - Description of thecorrectServiceDiscoverySpecific MulticastAddressAddresses (which are no longer needed in theSLP'sServiceType Reply. All that is requiredTemplates.) - 'Record based' attribute values. - The possibility for putting CR, LF, or TAB in most places. Added: - Terminology - Further explanation of Service Templates. - New syntax for Service Templates. - A proposal on how tomake this work, isuse Templates for internationalization. - Some security considerations. 1.5. Open issues and work torun a Service Agent which advertises the set of templates of all services supportedbe done - Justification will be added (as done in thenetwork. ("The network" here refers to a network which has multicast routing support with a maximum multicast TTL of 32. That is,URL process draft [3]). - Encoding rules for transforming a"site.") 4. A Process For Standardizing NewServiceTypes New Service Types canTemplate to an LDAP Schema will besuggested simply by providingadded. - The process for standardizing a new service type needes to be sharpened. In particular, feedback from the Applications Area Directors needs to be solicited. - Description of how ServiceType templateTemplates themselves may be registered and obtained in ashort description of the usenetwork is needed. Why isn't SLP enough forthethis purpose? 2. Use of service:URL. This should have its 'Version' attribute set to "0.0" initially.URLs Theminor version number will increment once with each change until it achieves 1.0. Thereservice: URL isno guarantee any versionintended to allow arbitrary client/server and peer to peer systems to make use ofthe service template will be backwards compatible before it reaches 1.0. Oncea standardized dynamic servicetemplate has reached 1.0, the definitionaccess point discovery mechanism. It is"frozen" forintended thatversion. New templates mayservice: URLs bedefined, of course,selected according torefine that definition, but they must follow these rules: - Any new attribute defined for the template will increase the minor version number by one. All other attributes fortheversion must continue to be supported as before.suitability of associated attributes. A clientwhich supports 1.x can still use later versionsapplication may obtain the URLs of1.y (where x<y) as it will ignore attributes it doesn't know about. Guttmanseveral services of the same type and distinguish Guttman,Perkins Expires 6 December 1997 [Page14]6] Internet DraftThe Service: URL Scheme 20 November 1996 - Deprecating or changingService Templates and URLs 6 June 1997 thedefinitionmost preferable among them by means ofan attribute requires changingtheir attributes. The client will use themajor version number ofservice: URL to bind directly to a service. These attributes will be specified as shown with the "service- template", described below. If a service: URL is stored by aservice template. Theclientmay be unable to make use of this information,orit may need to obtainan agent representing a client, the agent SHOULD also keep track of the attributes which characterize themost recentservicetemplate to helpoffered at theuser interpretnetwork location indicated by the URL, and can use the serviceinfo. Thetemplateshould be posted tofor additional information about those service attributes. The registration of this attribute information is typically done using the Service LocationWorking Group mailing list for review. Ideally, experts in the implementationProtocol [10], although manual techniques anddeployment ofother protocols may be possible. 3. Specifying A New Service Type A Service Type defines theparticular protocolsyntax for all URLs that will beconsulted so as to add more attributes or change their definition to make them as useful as possible. All published versionsregistered by services of thetemplate must be available on-line, including obsolete ones. Once thereparticular type. For instance, a 'Printer' service type isno more active dissentdefined with service: URLs in theService Type shouldfollowing form: service:printer://<address of printer>/<queue name> The service agent registering the printer service can bereissuedselected by clients specifying the protocol which matches the protocol attribute registered withpossible corrections, having its Version number set to "1.0". If there is no comment onthetemplate after 3 months, it shouldprinter URL above. The attribute information can beconsideredused tohave been accepted. At that time, the a Service Discovery Multicast addressindicate other configuration details, optional features available and characteristics (which may beobtained from IANA for use with therelevent to a human user or to a program.) 3.1. ServiceType. 5. Encoding Rules forType Specifications Service Type specifications define the fields described in the following subsections, and define the syntax of the service-part of service: URLsMuchofthis material is directly adapted from [RFC1738]. Notethat service type. 3.1.1. Service Type This is a string which will be prepended by thesyntax for'service:' scheme. It may be a name which is entirely invented or be theurlpath depends uponsame as a well known service scheme. For example, service:http: might refer to a HTTP server, whereas theService Type definition. See Section 3. The ABNF forhttp: scheme used in aserviceurl is: serviceurl = "service:" service-type ":" service-part service-type = 1*[ low-alpha / DIGIT / "+" / "-" / "." ] service-part = "//" login [ "/" urlpath ] login = [ user [ ":" password ] "@" ] hostport hostport = host [ ":" port ] host = hostname / hostnumber hostname = *[ domainlabel "." ] toplabel okchar = ALPHA / DIGIT domainlabel = okchar / okchar *[ okchar / "-" ] okchar toplabel = ALPHA / ALPHA *[ okchar / "-" ] okchar hostnumber = ipv4-number / ipv6-number ipv4-number = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT ipv6-number = 32hex port = 1*DIGIT user = *[ uchar / ";" / "?" / "&" / "=" ] password = *[ uchar / ";" / "?" / "&" / "=" ] GuttmanURL generally refers to a document. The meaning of this service type must be fully described by service type specification. A network protocol specification is often Guttman,Perkins Expires 6 December 1997 [Page15]7] Internet Draft Service Templates and URLs 6 June 1997 included as one of the attributes associated with the service, and may optionally be registered by some service agents as part of the service: URL include in the service registration. 3.1.2. TheService:service: 'url-path' information This information is included in the URLScheme 20 November 1996 urlpath = *xchar ; each Service Typein order to provide uniquely identifying information. This mechanism is used in the examples which follow in order to identify a mountable filesystem (using the 'nfs' service type) and an lpd print queue (as described above). The syntax and interpretation of the url-path mustdefine its own ; syntax.accompany the definition of a new Service Type. SeeSection safe = "$" / "-" / "_" / "." / "+" extra = "!" / "*" / "'" / "(" / ")" / "," hex = DIGIT / "A" / "B" / "C" / "D" / "E" / "a" / "b" / "c" / "d" / "e" escape = "%" hex hex reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" unreserved = ALPHA / DIGIT / safe / extra uchar = unreserved / escape xchar = unreserved / reserved / escape 6. Examplessection 3.3.3, describing the mandatory "template.url-path rules" attribute. Thepurpose of theseurl-path may be very simple, or even entirely omitted except possibly a terminating slash. See [4] for examples and general guidance. 3.1.3. Attributes This information provides information about the service's capabilities, characteristics and required client configuration. Each attribute which isdemonstratedefined must have a default value and definition of all values it can take. An attribute may take one or more values. A keyword does not take any values. Registration, deregistration and themanneruse ofspecifying new Service Types describedattributes inthis document. In addition, it will providequeries may be accomplished using Service Location Protocol, or possibly other means beyond the scope of this document. 3.2. Specifying Attributes Attributes are used to convey information about auseful starting pointgiven service forusing service: URLs in applications. In the casepurposes of differentiating different services offile servers, print spoolers and POP3 servers, the client software often requirestheusersame type. They convey information toknowbe used in thename and even parametersselection ofthe server before being ablewhich service to bind to, either browsers or for usethe service. A client which can obtain service:by a program. Attributes may be encoded in different character sets and in different languages. The procedure for doing this is described in Section 9. Attributes definitions have several components. 1. The first is a 'tag'. This is a string with certain encoding rules. Guttman,Perkins Expires 6 December 1997 [Page 8] Internet Draft Service Templates and URLs 6 June 1997 2. Attribute descriptors (type andassociated attributes dynamically will be able to bind to the server without any knowledgeflags) 3. Possibly, a set of typed values. 4. Descriptive help text explaining necessary information about what thenetwork at all, even the nameattribute is Attributes (but not keywords) may have one or more values. Values of an attribute are typed, and must have theserver host. Values givensame type forspecificeach value if the attributeassignments will be given in quotes.is multivalued. Thesyntaxrules for typing and encoding of attributedefinitions arevalues is given inSection 3.2.2. The syntax used to assignthe rest of section 3.2. 3.2.1. Service Templates andinterpretattributes Service Templates provide rules for attributes. They define: - Which attributes are REQUIRED with every service registration of a given service type, and which are OPTIONAL. - The type of values possible for the attribute (e.g., STRING). - Whether the attribute may take multiple values. - Whether the attribute may take arbitrary valuesfor attributesor only those provided in thetemplate (other thanlist. - Whether themandatory attributes)attribute may be translated to other languages or isgiven in section 3.4.3. Note that ina 'literal', ie. not meant for human readability. - Whether thetemplates commas are used to separate attributes and that commas themselves mustservice: URL can beescaped. The templates are assumed tobe supplied inthe [ASCII] character set, so escape values are expressed inresponse to a request thatcharacter set. Default values are given when they exist, otherwise thedoes not give a valueMUST be assignedforeach setthe attribute, when the attribute is used as part ofattributes associated with athe registration for that service: URL. 3.2.2. Service Templates StringvaluesEncoding Service templates areto be assigned descriptive valuesencoded inthe absence ofastandardized set of identifiers. The strings without standardized identifiers or integer values are intended tosimple form. They may beread by human beings. Tabs in the example strings are represented by "\t". Guttman [Page 16] Internet Draft The Service: URL Scheme 20 November 1996 6.1. NFS The service type for NFS is "NFS". The protocol it referstranslated tois defined in [RFC2055] and [RFC2054]. The URL has service specific information which specifies the mount path. The syntax forany language or character set, but theurlpathtemplate used forspecifying this is givenstandardization MUST be encoded in[NFSURL]. 6.1.1. NFS Service Type template "Service Discovery Multicast Address = NONE service type = NFS version = 0.0 Language tag = en description = The NFS service type provides attributes which define the contentsASCII [2] andpolicies of server mount points. It defines three types of storage: (1) installations (software ready to use) (2) distributions (software ready to install) (3) space (ready for others to use) Each of these attributes have record structuredbe in English. Between each attributevalues which are described below. authorization policy = :: NONE :: A text description of any authentication requirements for use of the NFS exported filesystem. For example: Only groups x, y and z - only users a, b, cdefinition there is a blank line. The rules for encoding attributes is given below. Reserved characters include ";", "&", "=", ",", "*", "#", TAB, LF, andso on. use policy = :: NONE :: The nfs exported file systemCR. Reserved characters may beintended for certain purposes or contain software with license restrictions. This text description will make this clear. distributions = M :: NONE :: Software distributions, ready to install on other systems.escaped. Thevalue will have 5 fields, separatedescaped character is replaced by atab.character sequence with no spaces. Thefields are: - distribution name including relative path from the mount point (could be the name of a tar file,digits are aself extracting archive, etc. (String) - platform the distribution is intended to be run on. Guttmandecimal representation of Guttman,Perkins Expires 6 December 1997 [Page17]9] Internet DraftThe Service: URL Scheme 20 November 1996 (String) -Service Templates and URLs 6 June 1997 thesize ofcharacter value to be replaced, in the character set used for thedistributionattribute encoding. Some attributes may take values only among those present inKB (requireda specified value list. A keyword has no value list included. Any attribute or keyword definition may include help text which can be used toinstall it). (Integer) -provide interactive descriptions helpful to people browsing thedate andavailable services. This descriptive text is often used to explain technical details about the attribute orversion number ofabout the values which thedistribution. (String)attribute can take. esc-char = "&" "#" 1*DIGIT ";" The following special case should be noted: - Commas are used to separate list elements (e.g., allowable attribute values. To use adescription ofcomma in attribute encodings, escape thedistribution. (String: default = NONE) installations = M :: NONE :: An installationcomma with , Service Templates have the following ABNF [6] grammar: NOTE that this grammar is not quite correct yet, because it needs aprogram which is availablelot of work ona file server. - relative path and namespecifying the scheme-def. template = scheme-props scheme-def attr-defs schemeatrs = schemevers schemelang schemetype schemetext schemevers = "Version" "=" 1*DIGIT "." 1*DIGIT schemelang = "Language" "=" 2*2lower-alpha schemetype = "Type" "=" *schemechar schemechar = ALPHA / DIGIT / "-" / "_" / "$" / "+" / "@" / "." / "|" / "<" / ">" / "~" schemetext = "Scheme-description" "=" [help-text] scheme-def = url-path-rules ; Rules for constructing service: URLs: ; The scheme-def part ofexecutable. (String) - platformtheinstalled program is intended totemplate will ; berun on. (String) -text describing thedate and version numberallowable format ; of information in theinstalled program. (String) - required configuration to use the program (set environment variables, required libraries, etc.) (String: default = NONE) - a descriptionurl-path of theinstalled program. (String) documents = M :: NONE:: A document or group; service-part ofdocuments can be advertised on a server so as to allow distributed search forthedocument. - relative pathservice scheme. ; The <addr-spec> andname of the document or document directory (String) - format the document(s) are in (String) - a list of keywords (separated by semicolons). These keywords may be determined by an organization which has an indexing policy, or done in an ad hoc manner. These keywordsFAQ fields do nothave to be guessed, they can be accumulated and presented to a user or queried for.) (String) - date and or version of the document. (String) - description of the document (String: default; require additional specification. attr-defs =NONE ) space*(attr-def/keydef) attr-def =M :: NONE :: Space indicates that a filesystem has room for temporary files. - Available space (in KB). (Integer) - Policy statement (how long can files be left on the server, will files be considered temporary and removed when convenient?) (String)" 6.1.2. Example: A 'pub' directory Suppose I have an NFS server which exports two filesystems. The first one is a 'pub' directory with some documents, the second onetag "=" attrtail newline keydef = keyword "=" "KEYWORD" newline attrtail = type flags newline [value-list] [help-text] value-list = 1#value newline help-text = 1#help-line ; This is a'dist' directory with both installed software and software ready to download and install. Guttmanhuman readable description of Guttman,Perkins Expires 6 December 1997 [Page18]10] Internet DraftThe Service: URL Scheme 20 November 1996 For the pub directory I will assign the followingService Templates and URLs 6 June 1997 ; this attribute and its values. help-line = *[white-sp] "#" *[ com-chars ] newline tag = 1*attrchar keyword = 1*attrchar attrchar = 1*(schemechar / ":" flags = ["M"] ["L"] ["X"] ["O"] ; M means multiple valuestoare allowed ; L "Literal", values MUST NOT be translated ; X means explicit match required ; O "Optional", theattributes above: "version = 0.0 Language tag = en authorization policyattribute may be omitted value =world readable use policystring / integer / boolean / opaque type =Documents here"STRING" / "INTEGER" / "BOOLEAN" | "OPAQUE" / "KEYWORD" ; These strings arefor internal company use only documentsnot to be translated. string =./slides \t powerpoint \t marketing, quarterly reports \t 10/15/96 \t This directory contains slides are from presentations made oversafe-char *[safe-chars / SPACE] safe-char integer = [-] 1*DIGIT ; The integer MUST fall within thelast year. ./meeting-notes \t text \t planning, update \t 10/22/96 \t This directory is a repository for all group meetings. We keep it up to date and hold our meetings once every 25 days., ./cartoons \t gif \t silly \t 3/23/96 \t This directory has a bunchrange ofsilly cartoons from a website I like. distributions=NONE installations=NONE space=NONE" Notice that there are multiple; valuesfor the attribute "documents." I useatab delimited format in order to group 5 items together in the same value. Carriage returns and white space is basically ignored BETWEEN values, but is relevent IN values. 6.1.3. Example: A 'dist' directory Here is an example of where I use an NFS server32 bit integer may take, ie. ; -2147483648 toprovide access2147483647. boolean = "TRUE" / "FALSE" ; These strings are not tosoftware. I will include software in distributed formatbe translated. com-chars = safe-char / white-sp / "*" / "," / ";"/ "&" safe-char = attrchar / " " / "!" / '"' / "%" / "'" / "(" / ")" / "+" / "," / "-" / "." / "|" / ":" / "=" / "?" / "[" / "]" / "" / "/" / "" / " " ; All ASCII printable characters are ; included except ",", "&", "*" andinstalled format."#". white-sp = SPACE / TAB rad64-char = ALPHA / DIGIT / "+" / "-" / white-sp opaque = 1*DIGIT ":" 4*rad64-char ; Thedistributed format allows someone to either download the distribution or install directly offdigits define thefileserver. The installation is already ready to run onoriginal length of ; thefileserver (ie. itopaque value. The restricted character ; string isa distribution which has been installed and resides onthefileserver, in my meaningradix-64 encoding of theword 'distribution.') This form of software distribution is unnecessary if you are using an 'applet' approach, butopaque ; value. See [5], Section 5.2. ; NOTE: White space isstill absolutely required if you are distributing full applications, scripts, documentation packages, etc. Say we have two pieces of software, a word processor WP and a Guttmanignored in decoding ; radix-64 values. newline = CR / ( CR LF ) Guttman,Perkins Expires 6 December 1997 [Page19]11] Internet DraftThe Service: URL Scheme 20 November 1996 Calendar program CP. The sofware runs on 3 platforms, Solaris 2.5 and up, Windows 95 and NT 4.0, and MacOS 7.5 and up. We will call these platforms Sol2.5, Win32 and MacOS7.5. Our file server will offer these preinstalled for Sol2.5Service Templates andMacOS7.5 but not for Windows - as software configuration for this platform very often requires modification of the individual host's registry file. The attributes for this content on the file server could be: "version = 0.0 Language tag = en authorization policy= The files available hereURLs 6 June 1997 ABNF shouldbe accessed only by the Sales Dept. of Acme Corp. use policy= The Sales Depthave some way ofAcme Corp. (and no one else) hasdenoting asoftware license for all software available here. space=NONE documents=NONE distributions= ./wp-zog/distrib/wp-zog-1-31-sol25.tar.Z \t Sol2.5 \t 2054 kb \t 01/13/96 \t version 1.31 \t Word processor from Zog Corp - for X/Motif., ./wp-zog/distrib/wp-zog-1-31-win32.zip \t Win32 \t 3056 kb \t 01/13/96 \t version 1.31 \t Word processor from Zog Corp - for Windows NT and 95, ./wp-zog/distrib/wp-zog-1-31-mac.hqx \t MacOS7.5 \t 1980 kb \t 02/23/96 \t version 1.31m \t Word processor from Zog Corp - for Macintosh, ./cp-foo/distrib/cp-foo-2-01-sol25.tar.Z \t Sol2.5 \t 1044 kb \t 08/02/95 version 2.01 \t Calender Program from Foo - for Solaris 2.5, ./cp-foo/distrib/cp-foo-2-11-win32.zip \t Win32 \t 2096 kb \t 11/30/95 \t version 2.11 \t Calander Program from Foo - for Windows 95, ./cp-foo/distrib/cp-foo-1-4-mac.hqx \t MacOS7.5 \t 733 kb \t 03/23/95 \t version 1.4 \t Calander Program from Foo - for Macintosh installations= ./wp-zog/sol-inst/wp-zog \t Sol2.5 \t 01/13/96 version 1.31 \t \t Word processor from Zog Corp - for X/Motif., ./wp-zog/mac-inst/wp-zog \t MacOS7.5 \t 02/23/96 version 1.31m \t Guttman [Page 20] Internet Draft The Service: URL Scheme 20 November 1996 Word processor from Zog Corp - for Macintosh, ./cp-foo/sol-inst/cp-foo \t Sol2.5 \t 08/02/95 version 2.01 \t Set CP-HOME environment variable to ./cp-foo/inst/cp-foo \t Calander Program from Foo - for Solaris 2.5, ./cp-foo/mac-inst/MyCal \t MacOS7.5 \t 03/23/95 version 1.4 \t \t Calander Program from Foo - for Macintosh" This could be registered as an attribute string associated with the URL "service:nfs://myhost.sun.com/dist". The attribute values MUST supplycontinuation line! Otherwise, it is ambiguous whether acomplete 'record'; they declare the contents of the file repository, the installation or the distribution. The notation used for platform name, configuration requirements and so forthnext line isinformal and MAY be formalized in the service template text.a continuation or starts with some bizarro nonterminal. Notethat in the example above, onlyon thethird installation had any special configurationuse of white space: A string is considered to bedone ona token in theclient. The other installations hadcase of ablank field where configuration details would normally be.tag or <string> value. In thiscase these take on the default value given incase, thetemplate (NONE). 6.2. Line Printer Daemon Protocol The service typestringfor the Line Printer Daemon Protocolis"LPR". The protocol it refers'trimmed'. White space interior to a string token isdefined in [RFC1179]. The URL has service specific information which specifies print queue name. The syntax forleft alone, while white space between theurlpath for specifying this is:tokens is removed. For example: " some name =1*[ DIGIT / ALPHA ] urlpath = "/" name The attributessome value , another example " would be trimmed to "some name" '=' "some value" and "another example". Notes on string matching: Attribute tags and values may be used by some protocols for directory look-up. In this case, thelpr service are largely derived fromfollowing rules should be applied for string matching of attribute strings. Decoding character escape and trimming white space MUST be performed before string matching. In addition, string matching SHOULD be case insensitive. 3.2.3. Attributes with multiple values Attributes with multiple values must be defined so that thePrinter MIB [RFC1759]. The attributes specified are a subsettype ofthoseeach value is the same. Boolean attributes may not take multiple values. Attributes and values must be given in exactly theMIB document, assame order in translated service templates. This will allow thegoals ofserviceattributes are different than that of system management. The attributes specified here are intendedtemplates tofacilitate automaticbe used to translate attributes anduser selection of services notvalues toprovide service statistics or notification. In short, the target audience ofother languages (using serviceattributes are users, either processes or people, where the audience of MIB statistics are network managers. In all cases thetemplates as look up tables.) 3.2.4. Grouping attribute valuesand termstogether in[RFC1759] take precedence over those listed below.records Somedefault "unknown" values have been addedattributes may be related, whichareis to say, notpart ofindependent. Each configuration, for instance, might have a limitation and a best use. If these were encoded in separate attributes, thePrinter MIB specification. Guttmandependency would not be clear: Guttman,Perkins Expires 6 December 1997 [Page21]12] Internet DraftThe Service: URL Scheme 20 November 1996 The service template for LPR follows: "Service Discovery Multicast Address = NONE service type = LPR versionService Templates and URLs 6 June 1997 Configuration =0.0 Language tagA,B,C Restriction =en Descriptionslow,large,unpredictable,low-priority Best Use = cpu-intensive,batch-jobs,interactive-use Which is slow, A, B or C? Are interactive jobs unpredictable? TheLPR service provides line printer spooling, usingsuggested convention is to choose one of theBSD Unix print spooling protocol, formalized in RFC 1179. Theattributesassociated with the LPR service referranges to be theprinter actual printing serviceattribute base. Here, it will beperformed. Status = INTEGER L :: 1 :: The status is taken fromthePrinter Status objectconfiguration. The others attributes are, by conventions, extensions ofthe host MIB, hrDeviceStatus.this record. Theenumerated values have thefollowingdefinitions: 1makes all dependencies explicit: Configuration-A.Restriction =unknown The state is unknown. 2slow,low-priority Configuration-A.Best-Use =running The device is up: No known errors. 3batch-jobs Configuration-B.Restriction =warning Still operational: Agent has been warned. 4unpredictable Configuration-B.Best-Use =testing Not available: In the 'testing' state. 5interactive-use Configuration-C.Restriction =down Not available. Location Descriptionlarge Configuration-C.Best-Use =:: NONE :: This is a text description of the location ofcpu-intensive Note that theprinter. It may makeuse ofoffice landmarks and so forth to guide people. Location Address = :: NONE :: Thissuch grouping isthe Postal Addressconventional, by use of theprinterdot asa minimum. It should also include any office number or other location notation used withinanorganization. Operator = :: NONE :: The name and possibly telephone number of the person responsible for operating the printer. This value should be obtained from the prtGeneralTable of the Printer MIB, from the prtGeneralCurrentOperator object of the prtGeneralEntry if possible. Service Person = :: NONE :: The name<tag> character, andpossibly telephone number of the person responsible for servicing the printer if it breaks down. This value should be obtained from the prtGeneralTable of Guttman [Page 22] Internet Draft The Service: URL Scheme 20 November 1996does not place any constraint on thePrinter MIB fromparsing mechanisms used by agents storing theprtGeneralCurrentOperator object ofvisually related attribute values. 3.3. Special attributes Every service template must define theprtGeneralEntry, if possible. Use policy = :: NONE :: Any restrictions to use, such as intended users should be described here. Feed type = INTEGER :: 2 ::following attributes: 3.3.1. Service Type Language Thisdescribesis a two letter code defining thefeeder mechanismlanguage of theprinter.template [8]. 3.3.2. Version Thevalue should be assigned from the prtInputDefaultIndex entryversion of theprtInputTable ofService Type template. A proposal starts at 0.0, and thePrinter MIB if possible. Thisminor number increments once per revision. The Version attributetakes thehas a string value of theprtInputType item inform: version = 1*DIGIT '.' 1*DIGIT A standardized template starts at 1.0. Additions of attributes add one to theprtInputEntry sequence. The textualminor number, where changes of definition or removal ofthe integer typeattributes or valuesare: 1 = other 2 = unknown 3 = sheetFeedAutoRemovableTrayadds one to the major number. See Section 4= sheetFeedAutoNonRemovableTray 5 = sheetFeedManualfor more detail on how to use the Version attribute. Guttman,Perkins Expires 6= continuousRoll 7 = continuousFanFold Media length = INTEGER :: -2 ::December 1997 [Page 13] Internet Draft Service Templates and URLs 6 June 1997 3.3.3. url-path rules Thisvalue indicatesis a text attribute which defines thelength (insemantics of thedirectionurl path of theprinter feed)service: URL of themedia.given type. Thevalue -2 indicates that<service-part> is of thelengthform: /<addr-family>/<addr-spec>/<url-path>;FAQ The <url-path> description specifies additional information to locate a service when the <addr-spec> isunknown, -1 means therenot sufficient, and isno limit. All other values area field whose content that distinguishes URLs of a particular service type from those of another service type. For instance, in theMedia units given below. This value should be obtained fromcase of a printer service: URL, thedefault prtInputEntry (see Feed type) fromurl-path will typically be a queue name, but not in theprtInputMediaDimFeedDirDeclared item. Media width = INTEGER :: -2 :: Ascase of a service: URL forMedia length. This value indicates the width (across the feed path)any other service type. 4. A Process For Standardizing New Service Types New Service Types can be suggested simply by providing a Service Type template and a short description of theMedia. The item touseis prtInputMediaDimXFeedDirDeclared. Media units = INTEGER :: -1 :: -1 indicates the units are unknown. The value fromfor thedefault prtInputEntry should be used (see Feed type). The prtInputDimUnit item should be used. The values are defined as: 3 = .0001 inches 4 = micrometers Media type = L :: stationary :: The Media type describes what isservice: URL. This MUST have its 'Version' attribute set tobe printed upon."0.0" initially. Thevalue fromminor version number will increment once with each change until it achieves 1.0. There is no guarantee any version of thedefault prtInputEntry shouldservice template will beused (see Feed type):backwards compatible before it reaches 1.0. Once a service template has reached 1.0, theitemdefinition isprtInputMediaType. The Guttman [Page 23] Internet Draft The Service: URL Scheme 20 November 1996 defined values are: stationery Separately cut sheets of an opaque material transparency Separately cut sheets of a transparent material envelope Envelopes that can be used"frozen" forconventional mailing purposes envelope-plain Envelopesthatare not preprinted and have no windows envelope-window Envelopesversion. New templates may be defined, of course, to refine thathave windowsdefinition, but they must follow these rules: - Any new attribute defined foraddressing purposes continuous-long Continuously connected sheetsthe template will increase the minor version number by one. All other attributes for the version must continue to be supported as before. A client which supports 1.x can still use later versions ofan opaque material connected along1.y (where x<y) as it will ignore attributes it doesn't know about. - Deprecating or changing thelong edge continuous-short Continuously connected sheetsdefinition of anopaque material connected alongattribute requires changing theshort edge tab-stock Media with tabs multi-part-form Form medium composedmajor version number ofmultiple layers not pre-attacheda service template. A user agent may be unable toone another; each sheetmake use of this information, or it may need to obtain the most recent service template to help the user interpret the service info. The template should bedrawn separately from an input source labels Label stock multi-layer Form medium composed of multiple layers which are pre-attachedposted toone another; e.g.,the Service Location Working Group mailing list foruse with impact printers Media color = L :: unknown :: The Media color describesreview. Ideally, experts in thecolorimplementation and deployment ofwhat is printed upon. The value fromthedefault prtInputEntry shouldparticular protocol will beused (see Feed type): the item is prtInputMediaColor. The defined values are: other unknown white pink yellow buff goldenrod blue green transparent Accordingconsulted so as to[RFC1759]: Implementors mayaddadditional string values. The naming conventions in ISO 9070 are recommended in orderGuttman,Perkins Expires 6 December 1997 [Page 14] Internet Draft Service Templates and URLs 6 June 1997 more attributes or change their definition toavoid potential name clashes. Max speed = INTEGER :: -1 :: The maximum speedmake them as useful as possible. All published versions of theprinter expressed in Speed units. This valuetemplate must be available on-line, including obselete ones. QUESTION: Where? Once there is no more active dissent the Service Type should beobtainedreissued with possible corrections, having its Version number set to "1.0". If there is no comment on the template after 3 months, it should be considered to have been accepted. 5. Encoding Rules for Service Type URLs Much of this material is directly adapted from [4]. Note that theprtMediaPathMaxSpeed object insyntax for thedefault prtMediaPathEntry . -1 indicates 'other', or 'unknown'. Speed unitsurl-path depends upon the Service Type definition. See Section 3. The ABNF for a service: URL is: service: URL = "service:" service-type ":" service-part service-type = 1*[ low-alpha / DIGIT / "+" / "-" / "." ] low-alpha = "a".."z" service-part = "//" login [ "/" url-path ] login = [ user "@" ] hostport hostport = host [ ":" port ] host = hostname / hostnumber hostname = hostlabel *[ "." domainlabel ] okchar = ALPHA / DIGIT domainlabel = okchar / okchar *[ okchar / "-" ] okchar hostlabel =INTEGER :: 8 :: This value determines unit of speed for the Max speed. The value should be obtained from the prtMediaPathMaxSpeedPrintUnit of the default prtMediaPathEntry. The definitions of the Guttman [Page 24] Internet Draft The Service: URL Scheme 20 November 1996 values are: 3ALPHA / ALPHA *[ okchar / "-" ] okchar hostnumber =tenThousandthsOfInchesPerHour -- .0001/hour 4ipv4-number / ipv6-number ipv4-number =micrometersPerHour 51*3DIGIT 3*3("." 1*3DIGIT) ipv6-number =charactersPerHour 632hex port =linesPerHour 71*DIGIT user =impressionsPerHour 8*[ uchar / ";" / "?" / "&" / "=" ] url-path =sheetsPerHour 9*xchar ; each Service Type must define its ; own syntax (section 3) safe =dotRowPerHour 16"$" / "-" / "_" / "." / "+" extra =feetPerHour 17"!" / "*" / "'" / "(" / ")" / "," hex =metersPerHour Interpreter LanguageDIGIT / "A".."F" / "a".."f" escape =M :: 37 \t 1 \t 1 :: The Interpreter Language determines what forms of input the printer can accept"%" hex hex reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" unreserved = ALPHA / DIGIT / safe / extra uchar = unreserved / escape xchar = unreserved / reserved / escape Guttman,Perkins Expires 6 December 1997 [Page 15] Internet Draft Service Templates andinterpret. Multiple values are possible; each of which has a tab delimited form with three values. The table is populated by a complete traversal of the prtInterpreterTable.URLs 6 June 1997 6. Examples Theitems to useService Templates for thefieldsSLP Directory Agent and POP3 service are given below.See [RFC1759] for their definitions. - prtInterpreterLangFamily (INTEGER: Default value is 37 or langAutomatic.) - prtInterpreterLangVersion (INTEGER: Default value is 1.) - prtInterpreterLangLevel (INTEGER: Default value is 1.)" 6.3. POP36.1. SLP Directory Agent ThePOP3directory-agent service typeis "POP3". The protocol it refers to is defined in [RFC1936]. The 'urlpath'hasthe default syntax. (See Section 3.1.2.) The service template forno attributes except scope. 6.2. POP3is as follows: "service typetemplate.service-type = STRING L POP3 # This is the template for the POP3Service Discovery Multicast Address = NONE versionservice. template.version = STRING L 0.0Language tag = en Description# This is the preliminary version of the template. template.description = STRING The question is how to make this string exceed one line # Clients which wish to make use of POP3servicesservice need to be # configured to use the correct POP3 server. The server may # or may not be able to use the APOP authentication mechanism. # Clients are able to discover which POP3 server is the correct # one for them and whether they can use the APOPGuttman [Page 25] Internet Draft The Service: URL Scheme 20 November 1996to authenticate # themselves.Finally,Finally, the POP3 server policystatementmay be # included. template.url-path-rules = STRING The url-path is omitted. # template.language = STRING L en # The default template is in English. Mailboxes = STRING M L:: NONE ::# This is a list ofall users (by user name) whichall users (by user name) which the POP3 # server supports. APOP = BOOLEAN L Guttman,Perkins Expires 6 December 1997 [Page 16] Internet Draft Service Templates and URLs 6 June 1997 FALSE # This determines whether the POP3 server supports APOP Policy = STRING O # This optional attribute describes the POP3 server's policy # regarding its use. For instance, are users dissuaded or # disallowed from keeping mail on the server? Is there a # quota? Is mail older than a certain number of days erased? 7. General Service Template The service-template Service Type has 4 attributes, followed by the service: URL definition for the service type and the collection of attribute specifications for the service type. version = STRING L # This is the version number of the template. # It is expressed in X.Y notation, where X is the major # and Y is the minor version number. service type = STRING L # The value of this attribute is a service type string. description = STRING # The service type is described here. This is a paragraph or # so of text which describes how to interpret the service: URL # for this particular service type. It should be clear what # protocol or protocols can bind to the service access point # which the service: URL resolves to. Language tag = STRING L en # The Language tag used in the service type template. This is # an ISO-639 two letter language code. service-URL = STRING # A way of describing thePOP3 server supports. APOPstructure of the <service-part> # is for the service type being specified. attr-specs =BOOLEAN L :: FALSE :: ThisSTRING M # The value of this attributedetermines whetheris thePOP3 server supportstemplate text, defining # all thePOP3 AUTHentication command [RFC1734]. Policy = :: NONE :: This describesservice type attributes. Of thePOP3 policy regarding use. In particular usersmandatory attribute tags, only "description" may bedissuaded from keeping mail on the server or keeping more thantranslated into another language (see Section 9.) Guttman,Perkins Expires 6 December 1997 [Page 17] Internet Draft Service Templates and URLs 6 June 1997 The description field should be acertain amountparagraph ofmail ontext describing theserver." Mail clients may discover POP3 servers which support these attributes in a new way. A user need only supply her user nameattribute and theclient can proceed to use a dynamic configuration protocol, such as Service Location, to determine the server and whether to use APOP. Ifall thePOP3 server is down, a backup server mayvalues it can take on. This information will bediscovered using the same mechanism, transparentlyused by those who develop user interfaces tothe user. An example ofdisplay service information and those who advertise services using attributes associated witha particular POP3 server might be: <URL:service:pop3://mailfriend.incog.com> "version = 0.0 Language tag = en Mailboxes = larry, curly, moe, shemp APOP = FALSE Policy = Mail should not be left ontheserver." A translation of these attributes could be associated withservice: URL. 7.1. Obtaining Service Templates dynamically The service template is registered as a service type by any SA which has a template. The SA SHOULD query thesame URLDA tomakedetermine if thepolicy readable to non-English speakers. For example,service template has already been registered, and if so, abstain from registering thefollowingservice template. This isa translation to German: "version = 0.0 Language tag = de Mailboxes = larry, curly, moe, shemp Guttman [Page 26] Internet Draftan area which definitely needs work. TheService: URL Scheme 20 November 1996 APOP = FALSE Anweisung = Mail darf nicht auf dem Server bleiben." Notedifficulty is thatonly the lastin order for a service template to be retrieved as an attributeis translated. That is because version and Language tag are not translated (see Section 3.4.2.)of some registered service: URL (presumably of type service:template:), one would have to allow extra newlines andMailboxesspace andAPOP are marked with a 'L'reserved characters in tricky places. On thePOP3 template. 7. Security Considerations Security considerations areother hand, devising a new method (a new service) of handing out such information is notdiscussed in this memo.immediately attractive. 8. Internationalization Considerations The service: URL itself must be encoded using the rules set forth in[RFC1738].[4]. The character set encoding is limited to specific ranges within the US-ASCII character set[ASCII].[2]. The attribute information associated with the service: URL may be expressed in any character set, and in any language. 8.1. Character Set identification and use The way of identifying the character set used is the IANA Character Set registry officialname. [CHAR-REG] It can be assumed thatname, found at: http://www.isi.edu/in-notes/iana/assignments/character-sets US-ASCII[ASCII] willMUST be supported. For other encodings, the repository of the service template or the protocol which transmits attributes (for registration or query purposes) must be able to identify the encoding using an external mechanism. It would make no sense to use an 'internal' designation for marking the character encoding, as the attribute information is itself string encoded. The Service Location Protocol[SLP][10] makes the Guttman,Perkins Expires 6 December 1997 [Page 18] Internet Draft Service Templates and URLs 6 June 1997 character encoding for each registration, query and query result explicit in the protocol header, for example. All attribute information in a single transmission, file, etc. MUST be in the same character encoding. 8.2. Language identification and translation The language used in attribute string should be identified using a Language tag as defined by[RFC1766].[1]. A program may translate a service advertisement from one language to another provided it has both the template of the language of the advertisement and the template of the desired target language. All standardized attributes will be in the same order in both templates. All non-arbitrary strings (such as tags and set members) will be directly translatable from one language to another. Free text and nonstandard attributes may not be automatically translated in this manner. Shouldn't help text be translatable? What is free text? All strings used in attributes (tags and values) are assumed to be able to be translated unless explicitely defined as should be literal, so that best effort translation (see below) will notGuttman [Page 27] Internet Draft The Service: URL Scheme 20 November 1996obfuscate strings which are meant to be interpreted by a program, not a person. There are two ways to go about translation: Standardization and best effort. When the service type is standardized, more than one document may be submitted for review. One service type description is registered for each language. These descriptions must be kept in sync, so that when a service type template is updated in one language, all the translationsare (or eventually are)(at least eventually) reflect the same semantics. If no document exists describing the standard translation of the service type, a 'best effort' translation for strings may be done.A given service: URL may have several sets of attributes associated with it. Each set9. Security Considerations Service type templates provide information which will be used to interpret information obtained by the Service Location Protocol. If these templates were modified or false templates were distributed, Guttman,Perkins Expires 6 December 1997 [Page 19] Internet Draft Service Templates and URLs 6 June 1997 services may not correctly register themselves or clients might not belocalizedable to interpret service information obtained by SLP. Service URLs themselves specify the service access point and protocol for a particularlanguage. Mechanisms for obtainingserviceattributes MUSTtype. These Service URLs could beparameterizeddistributed and indicate the location of a service other than that which a user would normally want toallow selectionuse. SLP distributes Service URLs and has an authentication mechanism which allows Service URLs oflanguageadvertised services to be signed and these signatures to be verified byLanguage tag. This way, users may access the same information in their own language. 9. Bibliography [ABNF] D. Crocker, "Augmented BNFclients. Guttman,Perkins Expires 6 December 1997 [Page 20] Internet Draft Service Templates and URLs 6 June 1997 References [1] H. Alvestrand. Tags forSyntax Specifications: ABNF", Work in progress, November 1996. [ASCII] "Codedthe Identification of Languages. RFC 1766, March 1995. [2] ANSI. Coded Character Set -- 7-bit American Standard code for InformationInterchange", ANSI X3.4-1986. [CHAR-REG] IANA Character Set registry, <URL:http://www.isi.edu /in-notes/iana/assignments/character-sets>. [FINDING]Interchange. X3.4-1986, 1986. [3] T. Berners-Lee, R.Moats, M. Hamilton, "Finding Stuff (Providing information to support service discovery)", Work in progress, November 1996. [NFSURL] B. Callaghan, "NFS URL Scheme", Work in progress, October, 1996. [RFC2055] B. Callaghan, "WebNFS Server Specification", RFC 2055. July 1996. [RFC2054] B. Callaghan, "WebNFS Client Specification", RFC 2054. July 1996. [RFC1939] J. Myers, M. Rose, "Post Office Protocol - Version 3", RFC 1939.Fielding, and L. Masinter. Uniform Resource Locators (URL): Generic Syntax and Semantics. draft-fielding-url-syntax-05.txt, May1996. Guttman [Page 28] Internet Draft The Service: URL Scheme 20 November 1996 [RFC1759] R. Smith, F. Wright, T. Hastings, S. Zilles, J. Gyllenskog, "Printer MIB", RFC 1759. March 1995. [RFC1766] H. Alvestrand, "Tags for the Identification of Languages", RFC 1766. March 1995. [RFC1738]1997. (work in progress). [4] T. Berners-Lee, L.Masinter &Masinter, and M.McCahill, "Uni- formMcCahill. Uniform Resource Locators(URL)",(URL). RFC1738.1738, December 1994.[RFC1734] J. Myers, "POP3 AUTHentication command",[5] N. Borenstein and N. Freed. MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies. RFC1734. December 1994. [RFC1179] L. McLaughlin III, "Line Printer Daemon Protocol",1521, September 1993. [6] D. Crocker and P Overell. Augmented BNF for Syntax Specifications: ABNF. draft-ietf-drums-abnf-02.txt, November 1996. (work in progress). [7] A. Gulbrandsen and P. Vixie. A DNS RR for specifying the location of services (DNS SRV). RFC1179. August 1990. [SLP]2052, October 1996. [8] Geneva ISO. Code for the representation of names of languages. ISO 639:1988 (E/F), 1988. [9] R. Moats and M. Hamilton. Finding Stuff(Providing information to support service discovery). draft-ietf-svrloc-advertise-00.txt, February 1997. (work in progress). [10] J. Veizades, E. Guttman, C.Perkins &Perkins, and S.Kaplan,Kaplan. Service LocationProtocol", Work in progress, November 1996. 10. Author's AddressProtocol, April 1997. draft-ietf-svrloc-protocol-17.txt (work in progress). Authors' Addresses Questions about this memo can be directed to: Erik Guttman Charles E. Perkins SunMicrosystems, Inc.Microsystems Sun Microsystems Gaisbergstr. 6 2550 Garcia Avenue D-69115 Heidelberg Mountain View, CA 94043 Germany USA Guttman,Perkins Expires 6 December 1997 [Page 21] Internet Draft Service Templates and URLs 6 June 1997 Phone: +1 415 336 6697 1 415 336 7153 email: Erik.Guttman@eng.sun.comThis memo expires on May 20,cperkins@corp.sun.com Guttman,Perkins Expires 6 December 1997Guttman[Page29]22] ----