Internet Engineering Task Force                                   SIP WG
Internet Draft                                      H.Schulzrinne/B.Volz
                                            Columbia University/Ericsson
draft-ietf-sip-dhcpv6-00.txt
April 7, 2002
Expires: October 2002


                     DHCPv6 Options for SIP Servers

STATUS OF THIS MEMO

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   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

   To view the list Internet-Draft Shadow Directories, see
   http://www.ietf.org/shadow.html.

Abstract

   This document defines a DHCPv6 option that contains a list of domain
   names or IPv6 addresses that can be mapped to one or more SIP
   outbound proxy servers. This is one of the many methods that a SIP
   client can use to obtain the addresses of such a local SIP server.


1 Terminology

   This document uses the DHCP terminology defined in [1].

   A SIP server is defined in RFC 3261 [2]. This server MUST be an
   outbound proxy server, as defined in [3].  In the context of this
   document, a SIP server refers to the host the SIP server is running
   on.




H.Schulzrinne/B.Volz                                          [Page 1]


Internet Draft                                             April 7, 2002


   A SIP client is defined in RFC 3261 [2]. The client can be a user
   agent client or the client portion of a proxy server. In the context
   of this document, a SIP client refers to the host the SIP client is
   running on.

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
   and "OPTIONAL" are to be interpreted as described in RFC 2119 [4].

2 Introduction

   The Session Initiation Protocol (SIP) [2] is an application-layer
   control protocol that can establish, modify and terminate multimedia
   sessions or calls. A SIP system has a number of logical components:
   user agents, proxy servers, redirect servers and registrars. User
   agents MAY contain SIP clients, proxy servers always do.

   This draft specifies two DHCPv6 options [1] that allows SIP clients
   to locate a local SIP server that is to be used for all outbound SIP
   requests, a so-called outbound proxy server. (SIP clients MAY contact
   the address identified in the SIP URL directly, without involving a
   local SIP server. However in some circumstances, when firewalls are
   present, SIP clients need to use a local server for outbound
   requests.) This is one of many possible solutions for locating the
   outbound SIP server; manual configuration is an example of another.

3 SIP Server DHCPv6 Option

   This document defines two DHCPv6 options that describe a local
   outbound SIP proxy: one carries a list of domain name (Section 3.1,
   the other a list of 128-bit (binary) IPv6 addresses (Section 3.2).


        Since DHCPv6 does not suffer from a shortage of option
        codes, we avoid the encoding byte found in the IPv4 DHCP
        option for SIP servers [5]. This makes the option shorter,
        easier to parse, simplifies appropriate word alignment for
        the numeric addresses and allows the client to request
        either numeric or domain name options using the "option
        request option".

   An implementation implementing this specification MUST support both
   options.

3.1 SIP Servers Domain Name List

   The option length is followed by a sequence of labels, encoded
   according to Section 3.1 of RFC 1035 [6], quoted below:



H.Schulzrinne/B.Volz                                          [Page 2]


Internet Draft                                             April 7, 2002


        "Domain names in messages are expressed in terms of a
        sequence of labels.  Each label is represented as a one
        octet length field followed by that number of octets. Since
        every domain name ends with the null label of the root, a
        domain name is terminated by a length byte of zero. The
        high order two bits of every length octet must be zero, and
        the remaining six bits of the length field limit the label
        to 63 octets or less. To simplify implementations, the
        total length of a domain name (i.e., label octets and label
        length octets) is restricted to 255 octets or less."


        RFC 1035 encoding was chosen to accomodate future
        internationalized domain name mechanisms.

   The option MAY contain multiple domain names, but these SHOULD refer
   to different NAPTR records, rather than different A records. The
   client MUST try the records in the order listed, applying the
   mechanism described in Section 4.1 of RFC XXXX [7] for each. The
   client only resolves the subsequent domain names if attempts to
   contact the first one failed or yielded no common transport protocols
   between client and server or denote a domain administratively
   prohibited by client policy. Domain names MUST be listed in order of
   preference.


        Use of multiple domain names is not meant to replace NAPTR
        or SRV records, but rather to allow a single DHCP server to
        indicate outbound proxy servers operated by multiple
        providers.

   Clients MUST support compression according to the encoding in Section
   4.1.4 of "Domain Names - Implementation And Specification" [6].

   The DHCPv6 option has 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      OPTION_SIP_SERVER_D      |         option-length         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    SIP Server Domain List                     |
      |                              ...                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+






H.Schulzrinne/B.Volz                                          [Page 3]


Internet Draft                                             April 7, 2002


        option-code: OPTION_SIP_SERVER_D (TBD)

        option-length: Length of the 'SIP Server Domain Name List' field
             in octets; variable

        SIP Server Domain List: The domain names of the SIP outbound
             proxy servers for the client to use. The domain names are
             encoded as specified in section "Representation and use of
             domain names" of the DHCPv6 specification [1].

3.2 SIP Servers IPv6 Address List

   This option specifies a list of IPv6 addresses indicating SIP
   outbound proxy servers available to the client. Servers MUST be
   listed in order of preference.


       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      OPTION_SIP_SERVER_A      |           option-len          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                   SIP server (IP address)                     |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                   SIP server (IP address)                     |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              ...                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



        option-code: OPTION_SIP_SERVER_A (TBD)

        option-length: Length of the 'options' field in octets; must be
             a multiple of 16.

        SIP server: IPv6 address of a SIP server for the client to use.
             The servers are listed in the order of preference for use
             by the client.

4 Client Operation

   A client may request either or both of the SIP Servers Domain Name



H.Schulzrinne/B.Volz                                          [Page 4]


Internet Draft                                             April 7, 2002


   List and SIP Servers IPv6 Address List options in an Options Request
   Option (ORO) as described in [1],

   If a client receives both the SIP Servers Domain Name List and SIP
   Servers IPv6 Address List options, it SHOULD use the SIP Servers
   Domain Name List option and ignore the SIP Servers IPv6 Address List
   option.

5 Server Operation

   A server MAY be configured to provide the SIP Servers Domain Name
   List and SIP Servers IPv6 Address List options. A server MAY send a
   client one or both of the SIP Servers Domain Name List and SIP
   Servers IPv6 Address List options.

   A server MAY send a client only one of these options, even if both
   are requested by the client or configured in the server, but in this
   case it SHOULD send the SIP Servers Domain Name List.

   However, a server configured with the SIP Servers IPv6 Address List
   option MUST send a client the SIP Servers IPv6 Address List option if
   that client requested the SIP Servers IPv6 Address List option and
   not the SIP Servers Domain Name List option in an ORO (see [1]).

   The following table summarizes the server's response:


   Client sends in ORO            Domain Name List  IPv6 Address List
   __________________________________________________________________
   Neither option                 SHOULD            MAY
   SIP Servers Domain Name List   SHOULD            MAY
   SIP Servers IPv6 Address List  MAY               SHOULD
   Both options                   SHOULD            MAY


6 Security Consideration

   The security considerations in RFC XXXX [1], RFC 3261 [2] and RFC
   3263 [3] apply. If an adversary manages to modify the response from a
   DHCP server or insert its own response, a SIP user agent could be led
   to contact a rogue SIP server, possibly one that then intercepts call
   requests or denies service. A modified DHCP answer could also omit
   host names that translated to TLS-based SIP servers, thus
   facilitating intercept.

7 IANA Considerations

   IANA has assigned a DHCPv6 option number of TBD for the "SIP Servers
   Domain Name List" and the DHCPv6 option number of TBD for the "SIP


H.Schulzrinne/B.Volz                                          [Page 5]


Internet Draft                                             April 7, 2002


   Servers IPv6 Address List" defined in this document.

8 Acknowledgements

   TBD.

9 Authors' Addresses

   Henning Schulzrinne
   Dept. of Computer Science
   Columbia University
   1214 Amsterdam Avenue, MC 0401
   New York, NY 10027
   USA
   electronic mail: schulzrinne@cs.columbia.edu

   Bernie Volz
   Ericsson
   959 Concord Street
   Framingham, MA 01701
   USA
   electronic mail: Bernie.Volz@am1.ericsson.se

10 Bibliography

   [1] J. Bound, M. Carney, C. Perkins, T. Lemon, B. Volz, and R. Droms,
   "Dynamic host configuration protocol for IPv6 (DHCPv6)," Internet
   Draft, Internet Engineering Task Force, Feb. 2002.  Work in progress.

   [2] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J.
   Peterson, R. Sparks, M. Handley, and E. Schooler, "Sip: Session
   initiation protocol," Request for Comments 3261, Internet Engineering
   Task Force, Mar. 2002.

   [3] J. Rosenberg and H. Schulzrinne, "Sip: Locating sip servers,"
   Request for Comments 3263, Internet Engineering Task Force, Mar.
   2002.

   [4] S. Bradner, "Key words for use in RFCs to indicate requirement
   levels," Request for Comments 2119, Internet Engineering Task Force,
   Mar. 1997.

   [5] H. Schulzrinne, "DHCP option for SIP servers," Internet Draft,
   Internet Engineering Task Force, Mar. 2002.  Work in progress.

   [6] P. V. Mockapetris, "Domain names - implementation and
   specification," Request for Comments 1035, Internet Engineering Task
   Force, Nov. 1987.



H.Schulzrinne/B.Volz                                          [Page 6]


Internet Draft                                             April 7, 2002


   [7] H. Schulzrinne and J. Rosenberg, "SIP: Locating SIP servers,"
   Internet Draft, Internet Engineering Task Force, Feb. 2002.  Work in
   progress.
















































H.Schulzrinne/B.Volz                                          [Page 7]