INTERNET DRAFT                                            Weibin Zhao
October 7, 2005                                   Henning Schulzrinne
Expires: April 8, 2006                            Columbia University



  Enabling Global Service Attributes in the Service Location Protocol
                       draft-zhao-slp-attr-04.txt


Status of This Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   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 use Internet- Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on April 8, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   This document describes enabling global service attributes in the
   Service Location Protocol (SLP). A global service attribute describes
   a service property common to all service types. Its name begins with
   the "service-" prefix. It is defined via an attribute template, and
   can be imported into any service template. A single Service Request
   (SrvRqst) message can use global service attributes to search
   services across multiple service types. Global service attributes can



Zhao/Schulzrinne            Expires: April 8, 2006              [Page 1]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   be associated with certain special characteristics so as to support
   advanced discovery scenarios, such as URL changes, multi-access-point
   services, multi-function devices and replicated services.

1. Introduction

   A global service attribute describes a service property common to all
   service types. For example, transport protocol (such as TCP and UDP)
   is a global service attribute since it describes a property common to
   all service types. In contrast, a local service attribute describes a
   service property specific to certain service type. For example,
   printing quality (such as draft, normal and high) is a property
   unique to printers, thus it is a local service attribute.

   Currently, all service attributes in the Service Location Protocol
   (SLP) [RFC2608] are local because they are named, defined and used in
   the context of a particular service type. Specifically, each service
   type defines its own attribute set via a service template [RFC2609];
   an attribute name is unique only within its service type (i.e., two
   different service types may use the same attribute name); and an
   attribute is always used along with its service type. By only using
   local service attributes, SLP cannot efficiently support certain
   discovery scenarios. For example, if a User Agent (UA) wants to find
   all services supporting SCTP (Stream Control Transmission Protocol)
   [RFC2960], it needs three steps in current SLP: sending a Service
   Type Request (SrvTypeRqst) message to obtain a list of service types,
   then using a separate Service Request (SrvRqst) message to search
   services of each type, and finally combining the search results. As a
   SrvRqst message can only search services of a single type, n+1
   searches are needed for n service types, which is inefficient if n is
   large.

   This document describes enabling global service attributes in SLP,
   which can improve SLP efficiency and support advanced discovery
   scenarios.

1.1. Notation Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in BCP 14, RFC 2119
   [RFC2119].

2. Enabling Global Service Attributes in SLP

   To enable global service attributes in SLP, we need to assign a
   separate namespace to global service attributes, define them via
   attribute templates, and using them properly in searching services



Zhao/Schulzrinne            Expires: April 8, 2006              [Page 2]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   across multiple service types.

2.1. Namespace

   A global service attribute can be used with any service type. If it
   has the same name as a local service attribute, then there will be a
   confusion on which is which. Therefore, a separate namespace is
   needed for global service attributes. To follow the common practice
   of prefixing an attribute name with its service type, the "service-"
   prefix MUST be used in naming global service attributes.

2.2. Definition

   A global service attribute is defined using an attribute template.
   Normally each global service attribute is defined using a separate
   attribute template; several global service attributes MAY be defined
   in the same attribute template only if they are to be used together.
   Any service type that uses a global service attribute imports the
   attribute's definition into its service template, similar to the C
   include and Java import mechanisms. In this way, a global service
   attribute only has one definition, and can be used consistently
   across all service types.

2.2.1. Attribute Template Syntax

   An attribute template is a simplified version of the service type
   template [RFC2609]. It is defined using the following ABNF [RFC2234]:

   attr-template = version attr-defs
   version       = "# attribute-template-version" version-no term
   version-no    = version-no from Section 3.1 of RFC 2609
   term          = term from Section 3.1 of RFC 2609
   attr-defs     = 1*(attr-def)
   attr-def      = attr-def from Section 3.1 of RFC 2609

2.2.2. Attribute Template File Name

   Similar to the service type template file [RFC2609], an attribute
   template file has a naming convention defined using the following
   ABNF.

   attr-tem-fname = attribute-name "." version-no "." langtag
   attribute-name = id from Section 3.1 of RFC 2609
   version-no     = version-no from Section 3.1 of RFC 2609
   langtag        = langtag from Section 3.1 of RFC 2609

   The file name of an attribute template is derived from the first
   attribute name it defines. For example, if a global service attribute



Zhao/Schulzrinne            Expires: April 8, 2006              [Page 3]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   "service-attr-x" is the first attribute in an attribute template, the
   version number is 1.0, and the language tag is "en", then the
   attribute template file name is "service-attr-x.1.0.en".

2.2.3. Importing Global Service Attributes

   To support importing global service attributes, the ABNF of the
   service type template defined in RFC 2609 is extended as follows.

   attr-defs      = *( attr-def / keydef / import-line )
   import-line    = "import" attr-tem-fname
   attr-tem-fname = attr-tem-fname from Section 2.2.2 of this document

2.3. Basic Usages

   A global service attribute can appear in any place where a local
   service attribute is appropriate, such as the attribute predicate in
   a SrvRqst message, the attribute list in a Service Registration
   (SrvReg) or Attribute Reply (AttrRply) message, and the attribute tag
   in a Service Deregistration (SrvDeReg) or Attribute Request
   (AttrRqst) message.

   In a SrvRqst message, when local service attributes are used, exactly
   one service type MUST be specified; but when only global service
   attributes are used, multiple service types or a service type
   wildcard can be specified. A service type wildcard is defined as an
   empty service type string; the length of the service type string is
   zero. Therefore, a single SrvRqst message can use global service
   attributes to search services across multiple or all service types.
   For example, to find all services supporting SCTP, we can use a
   single SrvRqst message that has a service type wildcard, and an
   attribute predicate of "service-transport-protocol=sctp".

2.4. Advantages

   Using global service attributes can improve SLP efficiency. First,
   global service attributes only need to be defined once. Afterwards,
   they can be imported into any service template. This avoids defining
   the same attribute repeatedly in different service templates, and
   ensures a consistent definition. Secondly, by using global service
   attributes, a single SrvRqst message can search services across
   multiple service types, which is more efficient than using multiple
   SrvRqst messages, one for each service type.

3. Advanced Usages

   Global service attributes can be associated with certain special
   characteristics so as to support advanced discovery scenarios. For



Zhao/Schulzrinne            Expires: April 8, 2006              [Page 4]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   example, service identifiers and device identifiers are URIs
   [RFC2396], such as UUIDs [UUID]. They have two important
   characteristics: uniqueness and persistence, i.e., each of them
   uniquely and persistently identifies a service or a device. We can
   define service identifiers and device identifiers as global service
   attributes, and use them to support the following discovery
   scenarios.

3.1. Supporting URL Changes

   SLP uses service URLs as service keys, which may be changed (e.g.,
   when a service moves). Therefore, retrieving a service based on its
   service URLs may not always be feasible, but a UA can always find a
   service based on its service identifier.

3.2. Discovering Multi-Access-Point Services

   A multi-access-point service provides the same service via different
   access points (i.e., different IP addresses, port numbers or access
   protocols) residing at the same device. For example, a multi-protocol
   printer may support IPP [RFC2910] and LPR access protocols, and have
   two URLs as follows: service:printer:ipp://mpp.example.com and
   service:printer:lpr://mpp.example.com. A multi-access-point service
   advertises each access point separately, but all advertisements use
   the same service identifier and the same device identifier to
   indicate that they belong to the same service instance residing at
   the same device. A UA can discover all advertisements of a multi-
   access-point service by specifying the service identifier and the
   device identifier as well as the service type (or a service type
   wildcard) in a SrvRqst message.

3.3. Discovering Multi-Function Devices

   A multi-function device provides different types of services at the
   same device, such as a printing and scanning device. A multi-function
   device advertises each service type separately, but all
   advertisements use the same device identifier to indicate that they
   reside at the same device. A UA can discover all advertisements of a
   multi-function device by specifying the device identifier and a
   service type wildcard (or all the service types the device supports)
   in a SrvRqst message.

3.4. Discovering Replicated Services

   A replicated service provides the same service at different devices.
   It advertises the same service at each device separately, and all
   advertisements use the same service identifier but different device
   identifiers. A UA can discover all advertisements of a replicated



Zhao/Schulzrinne            Expires: April 8, 2006              [Page 5]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   service by specifying the service identifier and the service type (or
   a service type wildcard) in a SrvRqst message. Note that a replicated
   service uses different device identifiers in its advertisements
   whereas a multi-access-point service uses the same device identifier
   in its advertisements.

4. Security Considerations

   The security considerations for RFC 2609 apply to this document.

5. Acknowledgments

   Erik Guttman's draft on the serviceid: URI scheme [Serviceid]
   motivated this document directly. Jim Mayer, Mark Bakke and Ira
   McDonald gave good suggestions. The authors also benefit from the
   discussions in the SLP mailing list.

6. References

6.1. Normative References

   [RFC2608] E. Guttman, C. Perkins, J. Veizades and M. Day, "Service
             location protocol, version 2", RFC 2608, June 1999.

   [RFC2119] S. Bradner, "Key words for use in RFCs to indicate
             requirement levels", BCP 14, RFC 2119, March 1997.

6.2. Informative References

   [Serviceid] E. Guttman, "The serviceid: URI Scheme for Service
               Location", draft-guttman-svrloc-serviceid-02.txt,
               August 2002.

   [RFC2609]   E. Guttman, C. Perkins and J. Kempf, "Service
               Templates and Service: Schemes", RFC 2609, June, 1999.

   [RFC2234]   D. Crocker and P. Overell, "Augmented BNF for Syntax
               Specifications: ABNF", RFC 2234, November 1997.

   [RFC2396]   T. Berners-Lee, R. Fielding and L. Masinter, "Uniform
               Resource Identifiers (URI): Generic Syntax", RFC 2396,
               August 1998.

   [RFC2910]   R. Herriot, S. Butler, P. Moore, R. Turner and J. Wenn,
               "Internet Printing Protocol/1.1: Encoding and Transport",
               RFC 2910, September 2000.





Zhao/Schulzrinne            Expires: April 8, 2006              [Page 6]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   [RFC2960]   R. Stewart, Q. Xie, K. Morneault, C. Sharp,
               H. Schwarzbauer, T. Taylor, I. Rytina, M. Kalla,
               L. Zhang and V. Paxson, "Stream Control Transmission
               Protocol", RFC 2960, October 2000.

   [UUID]      Universal Unique Identifier,
               http://www.opengroup.org/onlinepubs/9629399/apdxa.htm.

7. Authors' Addresses

   Weibin Zhao
   Henning Schulzrinne
   Department of Computer Science
   Columbia University
   1214 Amsterdam Avenue, MC 0401
   New York, NY 10027-7003
   Email: {zwb,hgs}@cs.columbia.edu

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,



Zhao/Schulzrinne            Expires: April 8, 2006              [Page 7]


Internet Draft       SLP Global Service Attributes       October 7, 2005


   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.

Copyright Statement

   Copyright (C) The Internet Society (2005). This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

Acknowledgment

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





































Zhao/Schulzrinne            Expires: April 8, 2006              [Page 8]