rfc-2609

Service Templates and Service: Schemes

E. Guttman, C. Perkins, J. Kempf
date1999-06 streamIETF areaint wgsvrloc statusPROPOSED STANDARD pages33 canonicalhttps://www.rfc-editor.org/rfc/rfc2609 doi10.17487/RFC2609
This document describes a formal procedure for defining and standardizing new service types and attributes for use with the "service:" scheme. [STANDARDS-TRACK]

updates

Extracted elements (28)

design-rationale §2.5.1

Abstract service types SHOULD be used when a service can be accessed via multiple protocols (e.g., 'device-drivers' via ftp, tftp, or http) rather than encoding a concrete protocol name as the service type. This allows SLP queries for the abstract type to return all protocol variants, letting the client select the most appropriate one.

design-rationale §3.2.6.1

Attribute identifiers are restricted to URL-unreserved characters because services may display prominent attributes directly in their service: URL registrations. Translation of attribute identifiers is explicitly prohibited because they can be embedded in URLs or program code, analogous to variable identifiers.

design-rationale §2.2

Attributes are typically stored and retrieved separately from the service: URL using SLP rather than embedded in the URL. Only attributes required to access a particular service (such as an authentication mechanism) are included in the service: URL itself, keeping URLs compact while supporting rich service description.

design-rationale §3.2.3

Version numbering follows major.minor semantics: adding optional attributes increments only the minor version (backward compatible — a 1.x client can use 1.y where x<y by ignoring unknown attributes), while adding required attributes, removing attributes, or changing definitions increments the major version (incompatible change).

interoperability-note §1.2.1

For SLPv1 compatibility: abstract service types must not be used (SLPv1 does not support them); opaque values must be converted from '\FF' hex notation to radix-64; escape characters must use HTML convention '&#DIGIT;' rather than '\' HEXDIG HEXDIG.

interoperability-note §3.2

The template-type, template-version, template-description, and template-url-syntax items are defined as SLPv2 attributes and MAY accompany any service registration, enabling a recipient to discover exactly which template version was used to register the service.

interoperability-note §6.1

Translation between template languages requires the same ordered attribute definitions across language versions. Non-literal attribute identifiers, type names, flags, and boolean constants 'true'/'false' are never translated; only attribute values and descriptive help text are translatable. A 'localize-<tag>' attribute naming convention is suggested for localizing attribute identifier display names.

normative-requirement §3.2.6.3 SHOULD

Clients SHOULD include attributes marked with the 'x' flag in requests for services; neglecting to include this attribute will not sufficiently differentiate the service and may result in obtaining useless services.

normative-requirement §2.5 MUST NOT

Concrete service templates MUST NOT redefine attributes already defined in the abstract service template from which they are derived; all abstract attributes are implicitly inherited by the concrete template.

normative-requirement §7 MUST

Each Service Template submitted to IANA MUST include a security considerations section describing security issues specific to using the service scheme for that service type.

security, registry

normative-requirement §3.2.6.4 REQUIRED

If an optional attribute's definition includes an allowed values list, a default value or list is required (not optional), ensuring the default is always a member of the allowed set. Translations of default and allowed value lists MUST maintain their original order.

normative-requirement §1.1 SHOULD

If the service type name denotes a particular protocol, the service type name SHOULD either be assigned the name of a well-known port by convention or be the Assigned Numbers name for the service.

normative-requirement §3.2.6.2 MUST

Keyword attribute definitions MUST have no flag information, no default values list, and no allowed values list. Boolean attributes are single-value only — multi-valued boolean attributes are not allowed.

normative-requirement §4 MUST

New service type templates submitted for standardization MUST set 'template-version' to 0.0. Templates below version 1.0 are not submitted to IANA; the template is reissued at 1.0 once consensus is achieved.

registry

normative-requirement §5 REQUIRED

No service type template will be accepted for inclusion in the IANA registry unless the submission includes a security considerations section and contact information for the template document author.

registry, security

normative-requirement §3.1 MUST

Reserved characters (';', '%', '=', ',', '#', LF, CR) MUST be escaped in service template documents. String matching SHOULD be case insensitive after decoding character escapes and trimming whitespace.

normative-requirement §2.5.1 MUST

The abstract service type MUST be well specified, providing either an access protocol with network address or an embedded URL for a standardized scheme that fully describes how to access the service.

normative-requirement §5 MUST

The service template submission MUST follow a specified format including: Name of submitter, Language of service template, Security Considerations, and Template Text delimited by 'template begins here' / 'template ends here' markers to allow trivial cut-and-paste extraction.

registry

normative-requirement §3.2.5 MUST

The syntax for the <url-path> field MUST accompany the definition of a new service type unless the URL scheme has already been standardized and is not a service: URL. Abstract service types may defer this to their concrete instance templates.

normative-requirement §2.1 MUST

The syntax of a service: URL MUST conform to an 'absolute URI' as defined by RFC 2396. Service type names are case-folded to lower case; 'http' and 'HTTP' designate the same service type.

normative-requirement §3.1 MUST

The template used for standardization MUST be encoded in the 0x00–0x7F subrange of UTF-8 (ASCII) and be in English. All characters outside the ASCII range MUST be escaped using '\' HEXDIG HEXDIG syntax.

protocol-element §3.2.1

A service template has four required identification items: template-type (service type name and optional naming authority), template-version (major.minor version number), template-description (human-readable text), and template-url-syntax (ABNF for the url-path production). These are followed by zero or more attribute definitions, each terminated by a blank line.

protocol-element §3.2.6.3

Attribute flags follow the type on the same line and may appear in any order: 'o'/'O' (optional; absence means required), 'm'/'M' (multi-valued unordered set; deletions of individual values not supported), 'l'/'L' (literal; not to be translated), 'x'/'X' (clients SHOULD include this attribute in service requests to differentiate the service).

protocol-element §3.2.6.2

Attributes can be one of five types: string (UTF-8, set determined at registration time), integer (signed 32-bit), boolean (single-valued only), opaque ('\FF' followed by hex-encoded bytes), or keyword (existence-only attribute with no type, flags, or values). Each attribute identifier must be unique within a template and is case-folded.

registry §5

IANA maintains a registry of service type templates, including both the templates themselves and all previous versions, keyed by naming convention '<service-type>.<version-no>.<langtag>'. Submissions are reviewed by a Designated Expert appointed by the IESG and require a security considerations section and author contact information.

registry

security-consideration §7

If service type templates are modified or false templates are distributed, services may register incorrectly or clients may misinterpret service information. Service: URLs could be distributed to redirect clients to incorrect services; SLPv2 provides an authentication mechanism allowing registered service: URLs to be signed and verified.

security

wire-format §3.1

String values in templates are sequences of non-whitespace tokens potentially with embedded whitespace; interior runs of whitespace are collapsed to a single space and leading/trailing whitespace is removed. Value lists are comma-separated; a line ending with a comma continues onto the next line.

wire-format §2.1

The service: URL ABNF defines fields: service-type (abstract-type ':' url-scheme or concrete-type), sap (site + url-part), where site supports ipsite (IP/DNS with '//' prefix), ipxsite (IPX: 8-hex network, 12-hex node, 4-hex socket), and atsite (AppleTalk: 1–31 AppleAscii chars each for object, type, zone). The url-part contains optional url-path and attr-list of semicolon-separated attribute assignments.