RFC 3224

Vendor Extensions for Service Location Protocol, Version 2

πŸ“… published January 2002, from ietf

Okay bestie, gather round πŸŽ€ this is RFC 3224, Vendor Extensions for Service Location Protocol, Version 2 πŸ’–. It came out of the Network Working Group, written by E. Guttman at Sun Microsystems, dated January 2002, and it's on the Standards Track πŸ”₯. It updates RFC 2608, which is "The Service Location Protocol" 🧚. Nothing is listed as obsoleted in the header ✨.


Status of This Memo πŸ“œ

This document specifies an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements πŸ’…. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) πŸ¦‹. Distribution of this memo is unlimited 🌈.

Copyright (C) The Internet Society (2002). All Rights Reserved. πŸ’œ

Abstract πŸ¦‹

This document explains how the features of the Service Location Protocol, Version 2 allow for vendor extensibility safely, with no possibility of collisions πŸ”₯. It introduces a brand new SLPv2 extension, the Vendor Opaque Extension πŸŽ€. Proprietary protocol extensions are not encouraged by IETF standards, but it's important that they don't hinder interoperability of compliant implementations when they happen πŸ’…. This document updates RFC 2608, "The Service Location Protocol." ✨

Table of Contents πŸ—‚οΈ

1.0   Introduction . . . . . . . . . . . . . . . . . . . . . . . .  2
   1.1   Terminology  . . . . . . . . . . . . . . . . . .  . . . .  2
2.0   Enterprise Numbers . . . . . . . . . . . . . . . . . . . . .  3
3.0   Naming Authorities . . . . . . . . . . . . . . . . . . . . .  3
4.0   Vendor Defined Attributes  . . . . . . . . . . . . . . . . .  4
5.0   Vendor Opaque Extension  . . . . . . . . . . . . . . . . . .  5
   5.1 Vendor Opaque Extension Format  . . . . . . . . . . . . . .  6
   5.2 Example: Acme Extension for UA Authentication . . . . . . .  6
6.0   Extensions Requiring IETF Action . . . . . . . . . . . . . .  7
7.0   IANA Considerations  . . . . . . . . . . . . . . . . . . . .  7
8.0   Security Considerations  . . . . . . . . . . . . . . . . . .  8
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . .  8
References . . . . . . . . . . . . . . . . . . . . . . . . . . . .  8
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . .  9
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 10

1.0 Introduction 🌸

The Service Location Protocol, Version 2 [1] has a bunch of features that are extensible 🧚. This document spells out exactly which mechanisms can be used for that (Sections 3-5) and which can't (Section 6) πŸ’–. It updates [1] and sets conventions so the protocol extension mechanisms in the SLPv2 specification won't have any possible ambiguous interpretations πŸ‘‘.

This spec introduces only one new protocol element, the Vendor Opaque Extension πŸŽ€. It lets a vendor extend SLP independently, once that vendor has registered with IANA and got an Enterprise Number ✨. It's super useful for vendor-specific applications πŸ’….

Vendor extensions to standard protocols come with a cost, though 😭:

  • Vendor extensions happen without review from the community. They may not make good engineering sense in the context of the protocol they extend, and the engineers responsible may find that out way too late πŸ’€.
  • Vendor extensions rule out interoperation with compliant but non-extended implementations. There's a real danger of incompatibility if different implementations support different feature sets πŸ™ˆ.
  • By extending SLPv2 privately, ubiquitous automatic configuration becomes impossible, and that's the primary benefit of a standard service discovery framework 🫢.

For these reasons, registering service templates with IANA is strongly encouraged! It's easy, and it has proved to be rapid, taking less than 2 weeks in most cases πŸ”₯πŸƒβ€β™€οΈ.

1.1 Terminology πŸ’œ

In this document, the key words "MAY", "MUST", "MUST NOT", "optional", "recommended", "SHOULD", and "SHOULD NOT", are to be interpreted as described in [2] ✨.

Service Location Protocol terminology is defined in [1]. IANA registration terminology is defined in [5] πŸŽ€.

2.0 Enterprise Number πŸŽ€

Enterprise Numbers are how IETF protocols tell different vendors apart 🧚. Vendor Extensions to SLPv2 SHOULD use these values so there's zero chance of a name space collision πŸ’–. Each vendor is responsible for making sure that vendor extensions under their own authority don't conflict πŸ’….

IANA keeps a repository of all 'SMI Network Management Private Enterprise Codes,' whose prefix is iso.org.dod.internet.private.enterprise (1.3.6.1.4.1) 🌈. The number that follows is unique and may be registered through an on-line form [3] πŸ¦‹.

The complete, up-to-date list of Enterprise Numbers is maintained by IANA [3] πŸ“œ.

3.0 Naming Authorities 🧚

Naming Authorities are defined by SLPv2 [1] as an agency or group that catalogues Service Types and attributes πŸ’….

A Service Type is a string representing a service that can be discovered by SLPv2 ✨. Attributes may be associated with a particular Service Type that's advertised by SLPv2 🌸.

Service Type strings and service attributes may be registered with IANA by creating a Service Template [4] πŸŽ€. The template is included in an internet draft, and an email message is sent to srvloc-list@iana.org requesting that the template be included in the Service Template registry πŸ’Œ. In this case, the naming authority for the service type is IANA πŸ‘‘.

It's also possible for a Vendor to create their own naming authority πŸ”₯. In this case, any service type or attribute may be used, and SLPv2 lets arbitrary naming authorities coexist πŸ¦‹. To use an explicit naming authority, a vendor simply uses their Enterprise Number as the naming authority πŸ’–. For example, take this (fictitious) Enterprise Number:

9999  Acme, Inc.              Erik Guttman  femur@example.com

The Naming Authority string to use would be "9999" 🫢. A service: URL that used this Naming Authority to advertise a Roadrunner Detector service could look like this:

service:roadrunner-detector.9999://example.com:9341

Service types defined under a naming authority based on an Enterprise Number are guaranteed not to conflict with other service type strings that mean something entirely different πŸ™ˆ. The same is true of attributes defined for service types under a naming authority πŸ’―.

To create a safe naming authority with no possibility of name collisions, a vendor SHOULD use their Enterprise Number as a naming authority πŸ›‘οΈβœ¨.

4.0 Vendor Defined Attributes πŸ’…

SLPv2 [1] suggests that:

Non-standard attribute names SHOULD begin with "x-", because no standard attribute name will ever have those initial characters.

It's possible that two non-standard attributes that both use the "x-" prefix notation will conflict 😬. For that reason, vendors SHOULD use "x-" followed by their Enterprise Number and then a "-" to guarantee that the non-standard attribute name's interpretation isn't ambiguous πŸŽ€.

For example, Acme, Inc.'s Enterprise Number is 9999 πŸ“. Say the Service Template for NetHive (a fictitious game) was:

     ------------------------------------------------------------
     template-type=NetHive

     template-version=1.0

     template-description=
       The popular NetHive game.

     template-url-syntax=
       url-path = ; There is no path for a NetHive service URL.

     features= string M O
     # The list of optional features the NetHive server supports.
     secure session, fast mode

     current-users= string M
     # The list of users currently playing
     ------------------------------------------------------------

Acme's server advertises a feature that isn't on the list of standard features, x-9999-cheat-mode πŸ™ˆ. Only an Acme client would request this attribute to discover servers, since it isn't standard πŸ•ΉοΈ.

5.0 Vendor Opaque Extension πŸ¦‹

SLPv2 [1] defines a protocol extensibility mechanism 🧚. SLPv2 Extensions get added at the end of a message and have the following format ✨:

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |         Extension ID          |       Next Extension Offset   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Offset, contd.|                Extension Data                 /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The format of the Extension Data depends on the Extension ID πŸ’–. Refer to [4] for a full description of the different mechanisms available for registering values with IANA πŸ“œ.

SLPv2 may be extended in any of three ways 🌈.

(1) Anyone may ask the designated expert for SLP to register a new extension ID with IANA πŸ’Œ. Send requests to svrloc-list@iana.org.

It's recommended that an internet draft specifying this extension be published, with the intention of publishing the document as an Informational RFC πŸŽ€. That way, others can use the extension too 🫢. This isn't a 'vendor extension,' since this is the preferred way of extending the protocol in a vendor neutral manner πŸ‘‘. If no specification is published and the extension is only meant for vendor specific use, then the 'Vendor Extension' option below probably makes more sense than assigning an extension ID πŸ™ƒ.

(2) An experimental extension may be done using the range 0x8000 to 0x8FFF πŸ§ͺ. There's always a risk, though, that another vendor will use the same ID, since these IDs aren't registered 😬.

(3) A Vendor Extension may be used πŸ†. This extension lets a Vendor define their own extensions, which are guaranteed to have a unique interpretation ✨. It is OPTIONAL to implement πŸ’….

5.2 Example: Acme Extension for UA Authentication ✨

okay so picture this πŸŽ€ Acme Corporation, whose Enterprise Number is 9999, is allowed to define an extension to SLP πŸ’… In this example, Acme makes one extension to add application level access control to service information πŸ” The vibe is that replies only go to clients who can prove who they are 🫢

The engineers at Acme give the Extension Data this form:

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |ACME Ext ID = 1|       Client ID  Length       |   Client ID ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                           Timestamp                           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                         Authenticator                        ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ACME Ext ID: the ACME engineers decided the first byte of their extension data is an extension ID field 🧚 Later, ACME might decide to define more than this one extension. Since there are 8 bits in the ID field, ACME can define up to 256 different extensions 🀯 If ACME skipped this field and started straight with their 'Extension for UA Authentication', they could only ever define one ACME specific SLP extension πŸ’€ For the 'Extension for UA Authentication,' the ACME Extension ID is set to 1. This ID has to be managed within ACME, so each new extension they invent gets a unique ID πŸ“

Client ID Length: this says how many bytes of Client ID data follow πŸ“

Client ID: the Acme application user ID πŸŽ€

Timestamp: # of seconds since January 1, 2000, 0:00 GMT ⏰

Authenticator: a 16 byte MD5 digest [6] calculated over the following data fields, concatenated together πŸ”‘

  • UA request bytes, including the header, but not any extensions.
  • UA SECRET PASS PHRASE
  • Acme UA Authentication Extension - Client ID
  • Acme UA Authentication Extension - Timestamp

okay the SA or DA that gets this extension, and supports it, checks three things πŸ‘€ First, does it (1) recognize the Client ID? Second, does it (2) have an associated SECRET PASS PHRASE for that Client ID? Third, (3) when it calculates an MD5 digest over the same data listed above, does it come out to the same Authenticator value that's in the extension? If all 3 of these steps succeed, the UA has been authenticated πŸ₯Ήβœ¨

ngl, this example is for explanatory purposes only πŸ™ˆ It would not work well in practice. It requires a shared secret to be configured in SAs and DAs, for every UA. Furthermore, the UA secret pass phrase would be susceptible to a dictionary attack. πŸ’€

6.0 Extensions Requiring IETF Action 🌈

so anything that changes or extends any feature of SLPv2 whatsoever is a different story, unless it's one of the things covered in Sections 3-5 of this document πŸ“š Those need a standards action as defined in [1] 🫠

Terminology and procedures for IETF Actions related to registering IDs with IANA are defined in [5]. Existing SLPv2 extension assignments are registered with IANA [3] πŸ—‚οΈ


7.0 IANA Considerations πŸ¦‹

this document clarifies procedures described in other documents [1] [4] πŸ’… The Vendor Opaque Extension ID has already been registered [3]. No additional IANA action is required for publication of this document βœ…


8.0 Security Considerations πŸ”πŸ’€

this part is seriously important, bestie 😭 Vendor extensions may introduce additional security considerations into SLP.

This memo describes mechanisms which are standardized elsewhere [1] [4]. The only protocol mechanism described in this document (see Section 5 above) is no less secure than 'private use' extensions defined in SLPv2 [1] πŸ”’

The example in Section 5.2 above shows how Vendor Opaque Extensions can be used to include an access control mechanism in SLP, so that SAs can enforce an access control policy using an authentication mechanism. This is merely an example, and protocol details were intentionally not provided. A vendor could, however, create a mechanism similar to this one and provide additional security services to SLPv2 in the manner indicated in the example πŸ›‘οΈβœ¨


Acknowledgements 🫢

Erik says thank you to the IESG πŸ™ for their usual persistence and attention to detail 🌸


References πŸ“š

[1] Guttman, E., Perkins, C., Veizades, J. and M. Day, "Service Location Protocol, Version 2", RFC 2608, July 1999.

[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[3] http://www.iana.org/numbers.html

[4] Guttman, E., Perkins, C. and J. Kempf, "Service Templates and URLs", RFC 2609, July 1999.

[5] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.

[6] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992.


Author's Address πŸ–ŠοΈ

Erik Guttman Sun Microsystems Eichhoelzelstr. 7 74915 Waibstadt Germany

Phone: +49 7263 911 701 Messages: +49 6221 356 202 EMail: erik.guttman@sun.com


Copyright (C) The Internet Society (2002). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Acknowledgement πŸ’–

Funding for the RFC Editor function is currently provided by the Internet Society. ✨

πŸ“¦ where this page comes from