Internet Engineering Task Force                               C. Perkins
INTERNET DRAFT                                                E. Guttman
                                                        Sun Microsystems
                                                          13 March
                                                        09 October  1998

               DHCP Options for Service Location Protocol
                       draft-ietf-dhc-slp-03.txt
                       draft-ietf-dhc-slp-04.txt

Status of This Memo

   This document is a submission by the Dynamic Host Configuration
   Working Group of the Internet Engineering Task Force (IETF).
   Comments should be submitted to the dhcp-v4@bucknell.edu 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 use Internet-Drafts Internet- Drafts as reference
   material or to cite them other than as ``work in progress.''

   To learn view the current status entire list of any Internet-Draft, current Internet-Drafts, please check
   the ``1id-abstracts.txt'' listing contained in the Internet-Drafts
   Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (North (Northern
   Europe), ftp.nis.garr.it (South (Southern Europe), munnari.oz.au (Pacific
   Rim),
   ds.internic.net ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).

Abstract

   The Dynamic Host Configuration Protocol provides a framework for
   passing configuration information to hosts on a TCP/IP network.
   Entities using the Service Location Protocol need to find out the
   address of Directory Agents in order to transact messages.  Another
   option provides an assignment of scope for configuration of SLP User
   and Service Agents.

1. Introduction

   The Dynamic Host Configuration Protocol [4] [3] provides a framework
   for passing configuration information to hosts on a TCP/IP network.
   Entities using the Service Location Protocol [7] Protocol, Version 2 [4] need to find out
   obtain the address of Directory Agents in order to transact messages and obtain
   the correct scope to be used in messages which are exchanged using
   the Scope configuration.  The
   Service Location Protocol.

   The scope MUST be encoded using the UTF8 character encoding [8] Protocol (SLP) provides a default configuration
   for Scopes and have the values referred by the MIBEnum value.  Note that
   each character Directory Agents may require two or more octets of data for its
   representation.

   Note that each option listed below MAY be included multiple times in
   the same DHCPOFFER discovered using multicast
   or DHCPREQUEST. If so, then the options SHOULD broadcast.  It is useful in a larger deployment to be
   included able
   to configure SLP Agents using DHCP, so as to centralize the
   administration and to deploy SLP in order of decreasing preference. networks where multicast routing
   is not available.

   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 [2]. [1].

2. Typed Scope Lists

   In Introduction

   The DHCP options described below are used to configure Agents using
   the Service Location Protocol, multiple service types can be hosted on
   the same network node.  However, DHCP typically configures computers
   based on their IP address.  It Version 2.

   The SLP Directory Agent option is possible that different service
   types on the same computer would be administered from different
   scopes.  Thus, options 78 and 79 have additional syntax used to allow this
   more detailed style of service configuration.

   In particular, configure User Agents and
   Service Agents with the list location of scopes contained Directory Agents in the options is
   syntactically separated into lists pertaining network.
   These Directory Agents are assumed to each service type.

   Grammatically, a typed-scope-list in a DHCPOFFER is structured as
   follows:

     typed-scope-list = one or more maybe-typed-scope-items,
                        separated by commas
     maybe-typed-scope-item = typed-scope-item, or scope-list
     typed-scope-item = '(' service-type '=' scope-list ')'
     scope-list = one or more scope-items, comma-separated

   A typed-scope-list in a DHCPREQUEST is structured as follows:

     typed-scope-list = one or more maybe-typed-scope-items,
                        separated support all of the scopes
   supplied by commas
     maybe-typed-scope-item = typed-scope-item, or
                                 maybe-empty-scope-list
     typed-scope-item = '(' service-type '=' maybe-empty-scope-list ')'
     maybe-empty-scope-list = zero or more scope-items, comma-separated

   A service type has the format defined in [5], and a scope-item has SLP Scope Option.

   If the format defined in [6] for "strval".  Basically, a scope-item SLP Scope Option is absent, the scope string "default" is
   used instead.  If there is a character scope string that has alphanumeric characters not including
   control characters or `(',`)',`,', \',`!',`<',`=',`>', or `~' Service
   schemes are special cases of schemes as defined for general URLs [1].

   The typed-scope-list MAY contain both untyped-scope-lists and
   typed-scope-lists.  Each scope-item in each untyped-scope-list
   applies to every service type on the node.

   As an example, the scope-list ``A,B,C'' denotes scopes A, B and C
   for all service types configured using local
   configuration on the client.  In a DHCPREQUEST, this scope
   string would indicate host that is used if no SLP Scope Option has
   been sent.  DHCP configuration takes precedence over the client wishes a directory agent which
   supports ANY local
   configuration of these three scopes.  In a DHCPOFFER, the SLP scope
   indicates that the directory agent supports ALL of the three scopes.

   Suppose instead that service types "netman" and "proxystuff" are
   residing on a DHCP client.  Then, the typed-scope-list in a DHCPOFFER
   could be,

        (netman=mgmt),(proxystuff=math-dept,labs)

   Assuming lists.  SLP Agents (be they Directory
   Agents, User Agents or Service Agents) which use the DHCP client SLP Directory
   Agent Option MUST be configured with two service types "netman" and
   "proxystuff" did not make any scope restriction, a corresponding
   typed-scope-list in a DHCPREQUEST could be,

        (netman=),(proxystuff=)

   asking for scopes for those service types. scope.

3. SLP Directory Agent Option

   This option requests or specifies a Directory Agent (DA), along with
   zero the location of one or more scopes supported by that directory agent. SLP Directory
   Agents.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Code = 78   |    Length     |D|F|M|S|        reserved     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       a1      |      a2       |          DA Length            |DA address (variable length) ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                Typed Scope List (variable length)      a3       |       a4      |       a1      |      ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      Code     78

      Length   (variable)
   The length of the option in bytes.

      D        If the 'D' bit is set, the Directory Agent field and the
               DA Length fields are present.

      F        If the 'F' bit is set, the SLP Directory Agent is indicated
               by including its variable length host name or Fully
               Qualified Domain Name (FQDN) instead Option specifies a list of its IP address.

      M        If the 'M' bit addresses
   for Directory Agents.  Directory Agents MUST be listed in order of
   preference, if there is set, an order of preference.

   The address of the Directory Agent address is given in network byte order.
   The length of the only one that may option MUST always be used, divisible by 4 and multicast methods for
               discovering has a
   minimum length of 4.

   The Directory Agents listed in this option MUST NOT be used.

      S        If configured with
   the 'S' bit is set, a non-empty subset of the scope is present.

      rsv      reserved; ignored upon reception; MUST be sent as zero

      DA Length The length (in octets) of list that the Directory Agent field. receiving the
   Directory Agent
               The Fully Qualified Domain Name (FQDN), host name, or IP
               address of Option is configured with.  See the Directory Agent.

      Typed Scope List
               The characters denoting the scope (see Section reftsl).

   In order to simplify administration of the configuration of Directory
   Agents for notes below.

   SLPv2 Service Location Protocol clients, Agents which are configured using the SLP Directory
   Agent
   can be indicated by presenting its FQDN or host name instead of its
   IP address.  This allows renumbering Option MUST send a SrvRqst to proceed more smoothly [3].
   When the FQDN or host name is used, DAs in the server DHCPOFFER. This
   SLPv2 SrvRqst sets the 'F' bit.  The
   host name can be distinguished from Scope List to the FQDN value configured by the presence of a '.'
   character.  In any case, SLP
   Scope Option if one was sent or "DEFAULT" otherwise.  The service
   type for the DA length field request is set to be the length
   of the Directory Agent field.  When "service:directory-agent" and the 'F' bit predicate
   is not set, omitted.  The reply will include the DA
   Length DA's attributes, scope list.

   The SA MUST be 4.

   Note that more than one Directory Agent option may be present in a
   DHCP message.  Each such option may have register all service with the same DA which it advertises
   which are advertised in one or different scope.

   The client may request any Directory Agent with a particular scope,
   by including more of the Directory Agent option scopes in a DHCP Request message
   with the DA's scope
   list.  The SA MUST register no Directory Agent address included (the 'D' bit set to zero),
   and faster than the characters denoting "min-lifetime" and not
   slower than the scope.

   The length "max-lifetime" attributes of the Typed Scope List is only indicated implicitly DA. These attributes
   are obtained in the DAAdvert solicited by the overall length of SA after it receives
   the option.  This string is NOT null
   terminated.

   The format of SLP Directory Agent Option DHCPOFFER.

   SLPv2 User Agents which are configured using the Typed Scope List field is described in section 2. SLP Directory Agent
   Option 78 MUST include one or more scopes if a DA address is
   returned.  Using option 78, it is not possible for different service
   types on the same node send their requests to be configured with different directory
   agents.  In other words, all service types on the same node will be
   configured with DAs listed, using the same directory agent. entire
   list of scopes they are configured with.

4. SLP Service Scope Option

   This option

   The scope list is a comma delimited list which indicates one or more the scopes
   that should be used by a Service SLP Agent (SA) [7], when responding is configured to Service Request messages as
   specified by the Service Location Protocol. use.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Code = 79   |    Length     |   Typed-Scope-List  <Typed Scope List> String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Code     79

   The Length   (variable) indicates the number of bytes which follow.  Since the
   Scope-List String is encoded using UTF8 characters, it may be the
   cast that the Length is not the same as the number of characters in
   the Scope-List String.

   The minimum length is 0, and the maximum length is 256.  This imposes
   a limit on the size of the Scope-List String which can be delivered
   which does not exist in SLP. DHCP administrators will therefore have
   to be careful to not configure very long scope names or very long
   lists of scopes for any Agents in their network.

   The Typed Scope List includes a list of scopes for the SLP Agent.
   The list may be a list of scopes, such as "north,south,east,west".

   The list may also include items which are 'typed scopes.'  These
   items indicate that SAs MUST advertise particular service types in
   a scope other than that given in the scope list.  UAs MUST issue
   requests for services of these types in the scopes listed, or some
   subset of the scopes.  DAs ignore typed scopes in the SLP Service
   Scope Option.

   For example, "default,(service:printer:lpr=Math Department)"
   indicates that SAs advertise all services in scope default except
   for lpr printers, which are advertised in the Math Department scope.
   UAs will request all services using the "default" scope, except lpr
   printers, which are advertised in the option "Math Department" scope.  DAs
   will simply be configured in bytes. the scope "default" since they ignore
   the typed scope argument.

   The grammar for the typed scope list is:

     ts-list    = ts-item / ts-item `,' ts-list
     ts-item    = scope-list / `(' srv-type `=' scope-list `)'
     srv-type   = ALPHA *srv-safe [ `.' 1*srv-safe ]
     srv-safe   = ALPHA / DIGIT / `+' / `-'
     scope-list = scope-item / scope-item "," scope-list
     scope-item = 1*safe-scope
     safe-scope = ; Any character except rsvd-scope.
                  ; Reserved characters must be escaped.
     rsvd-scope = `(' / `)' / `,' / `\' / `!'  / `<' / `=' / `>' / `~'
                  CTL / `;' / `*' / `+'
     escaped    = `$\backslash$' HEXDIGIT HEXDIGIT

   This grammar follows ABNF rules [2].  Reserved characters used in
   scope names must be escaped.  Reserved characters denoting in <srv-type> names
   are not allowed.  Note that <srv-type> names may include a Naming
   Authority extension.

4.1. Zero Length Scope-List String Configuration

   A SLP Service Scope Option which indicates a Length of 0 configures
   the scope.

   The Typed-Scope-List SLP Agent to use "User Selectable Scopes".

   If this is described done, the SLP Agent MUST NOT be configured using the SLP
   Directory Agent Option.

   Instead, the SLP Agent will discover scopes using Directory Agent
   discovery (or Service Agent Discovery) as defined in Section 2.  [4].

   The DHCP client
   (i.e., user agent or service agent) which receives this option SLP Agent will then use the indicated scope for in aggregation of all SLP requests and registrations.
   The scopes it
   discovers on the network to configure its own scope string must be UTF8 character encoded.  This string list.

   Note that this configuration is not
   null terminated.

   DHCP clients MAY use Option 79 tantamount to request scopes removing all
   centralized control of the configuration hosts on the network.  This
   makes it possible for one every User Agent to see every service.  This
   may not be desirable as users may not be able to or more
   particular service types. desire to decide
   which services are appropriate for them.

5. Security Considerations

   If a malicious host is able to insert fraudulent information in
   DHCPOFFER packets sent to a prospective client of the Service
   Location Protocol, SLP Agent then the client SLP Agent
   will be unable to obtain service, or may unwittingly be directed to
   use the incorrect services.

   Many opportunities for denial of service exist.  A service agent
   could find that it might rely on fraudulent or otherwise malicious
   directory agents to advertise its services.  DHCPOFFERs could prevent
   the regular SLP framework from functioning by directing clients to
   not use multicast, to use nonexistent directory agents and so on.

   These difficulties are inherited from the much larger and more
   serious problem, viz.  securing or authenticating any information
   whatsoever from a DHCP server (or client!)  is not possible in common
   DHCP deployments.

6. Acknowledgements

   Thanks to Erik Guttman for his helpful suggestions in the creation
   ane revision of this draft.

References

   [1] T. Berners-Lee, L. Masinter, and M. McCahill.  Uniform Resource
       Locators (URL).  RFC 1738, December 1994.

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

   [3] B. Carpenter

   [2] D. Crocker and Y. Rekhter.  Renumbering needs work. P. Overell.  Augmented BNF for Syntax
       Specifications:  ABNF.  RFC 1900,
       February 1996.

   [4] 2234, November 1997.

   [3] R. Droms.  Dynamic Host Configuration Protocol.  RFC 2131, March
       1997.

   [5] E. Guttman, C. Perkins, and J. Kempf.  Service Templates and
       service:  Schemes.  draft-ietf-svrloc-service-scheme-05.txt,
       November 1997.  (work in progress).

   [6]

   [4] E. Guttman, C. Perkins, J. Veizades, and M. Day.  Service
       Location Protocol version 2.  draft-ietf-svrloc-protocol-v2-04.txt,
       March 1998.  (work in progress).
       draft-ietf-svrloc-protocol-v2-04.txt,

   [7] J. Veizades, E. Guttman, C. Perkins, and S. Kaplan.  Service
       Location Protocol.  RFC 2165, July 1997.

   [8] F. Yergeau.  UTF-8, a transformation format of unicode and ISO
       10646.  RFC 2279, January 1998.

Author's Address

   Questions about this memo can be directed to:

  Charles E. Perkins                       Erik Guttman
  Technology Development Group             Technology Development Group
  Mail Stop MPK15-214
        Room 2682                      Mail Stop UFRA02
  Sun Microsystems, Inc.                   Sun Microsystems, Inc.
  15 Network Circle                        Bahnstr. 2
  Menlo Park, CA  94025
        ph#    1-650-786-6464
        fax#   1-650-786-6445                    74915 Waibstadt, Germany
  phone: +1 650-786-6464            phone: +49 7263 911 701
  fax:   +1 650-786-6445               or:  +1 650 786 5992
  email: charles.perkins@Sun.COM
                charles.perkins@Eng.sun.com
                cperkins@Eng.sun.com Charles.Perkins@Sun.Com           Erik.Guttman@Sun.Com
  Web: http://www.svrloc.org/~charliep