<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<rfc category="std" ipr="full3978" docName="draft-gayraud-dhcpv6-ntp-opt-01.txt">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="no"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<front>
  <title abbrev="NTP Server Option for DHCPv6">
    Network Time Protocol (NTP) Server Option for DHCPv6
  </title>

  <author fullname="Richard Gayraud" initials="R.G." surname="Gayraud">
    <organization>Cisco Systems, Inc.</organization>
    <address>
      <postal>
        <street>Village ent. GreenSide, Bat T3,</street>
        <street>400, Av de Roumanille,</street>
        <city>06410 BIOT - Sophia-Antipolis Cedex</city>
        <country>France</country>
      </postal>
      <phone>+33 4 97 23 26 49</phone>
      <email>rgayraud@cisco.com</email>
    </address>
  </author>

  <author fullname="Benoit Lourdelet" initials="B.L." surname="Lourdelet">
    <organization>Cisco Systems, Inc.</organization>
    <address>
      <postal>
        <street>Village ent. GreenSide, Bat T3,</street>
        <street>400, Av de Roumanille,</street>
        <code></code>
        <city>06410 BIOT - Sophia-Antipolis Cedex</city>
        <country>France</country>
      </postal>
      <phone>+33 4 97 23 26 23</phone>
      <email>blourdel@cisco.com</email>
    </address>
  </author>

  <date/>

  <abstract>
  <t> The NTP Server Option for DHCPv6 provides NTPv4 (Network Time 
      Protocol version 4) configuration information to DHCPv6 hosts.</t>
  </abstract>
</front>

<middle>

<section title="Requirements notation">

<t> 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 <xref target="RFC2119"/>. </t>

</section>

<!---------------------------------------------------------------->

<section title="Introduction">

<t> This document defines a DHCPv6 option and associated
    suboptions to provide Network Time Protocol version 4 
    [draft-ntpv4] configuration information to DHCPv6 hosts. </t>

<section title="Related Work and Usage Model">

<t> <xref target="RFC4075"/> (SNTP Configuration Option for DHCPv6)
    provides some degree of automatic time server configuration 
    for IPv6, as it specifies how to transmit SNTP 
    <xref target="RFC4330"/> servers addresses through DHCPv6.
    However, this approach is not suitable for all NTP deployments.
    The use of the SNTP protocol is only authorized at the root and
    leafs, of an NTP tree (i.e. stratum 1 servers and highest stratum
    clients). But, NTP servers that receive time from an upstream source,
    and redistribute it to LAN workstations are not allowed to run SNTP.
    This is why SNTP is not the protocol of choice for general purpose
    NTP servers  directly used by client workstations.
    Additionally the approach of only offering IPv6 addresses to specify
    server location does not meet NTP requirements that make uses of a
    FQDN (Fully Qualified Domain Name) as well.</t>

<t> The NTP service is publicly offered on the Internet by a number
    of organizations. Those servers can be used but not abused, so
    any method which is tasked to disseminate locations of NTP servers
    must act responsibly in a manner that does not lead to public
    server overloading.
    When using DHCPv6 to offer NTP server location, and if there is a
    need to distribute a device with a hardcoded configuration,
    this configuration MUST NOT include server location that is
    not part of the organization that distribute this device.
    Typical usage of this option is to specify an NTP server that
    is part of the organization that operates the DHCPv6 server. </t>

<t> The location of the NTP service, like any other Internet service, 
    can be specified by an IP address or an FQDN. By design, DHCP 
    offers information to multiple devices and is prone to 
    amplification of mistakes, so great care must be taken to 
    define its configuration. Specification of the NTP service by
    FQDN offers a level of indirection that works as
    a possible mitigation tool in case of misconfiguration.</t>

<t> While the NTPv4 specification defines a comprehensive set of
    configuration parameters, modification of those parameters is best
    left to the decision of the client itself. The DHCPv6 option for
    NTP is then restricted to server location. </t>

</section>

</section>

<!---------------------------------------------------------------->

<section title="NTP Server Option for DHCPv6">

<t> This option serves as a container for all the information 
    related to one NTP server. This option can appear multiple 
    times in a DHCPv6 message. Each instance of this option is 
    to be considered by the NTP client as a server to include
    in its configuration. </t>

<t> The option itself does not contain any value. Instead, it 
    contains one or several suboptions that carry NTP server 
    configuration information. The first suboption in this 
    option MUST be either NTP_OPTION_SRV_ADDR or 
    NTP_OPTION_SRV_FQDN. It carries the NTP server location,
    as an IPv6 address or as an NTP server FQDN (Fully Qualified 
    Domain Name).</t>
    
<t> If the NTP server location is an IPv6 multicast address,
    the client SHOULD use this address as an NTP multicast
    group address and listen to messages on this group in 
    order to synchronize its clock. </t>

<t> As an example, the format of this option when pointing
    to an NTP server located at address 2001:db8::1 is: </t>

<figure><artwork align="left"><![CDATA[
   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_NTP_SERVER        |        option-len = 20        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    NTP_SUBOPTION_SRV_ADDR     |        suboption-len = 16     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                 IPv6 address  =  2001:db8::1                  |
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    option-code: OPTION_NTP_SERVER (TBD_IANA)

    option-len:  4 bytes + suboptions len
]]></artwork></figure>

<t> A client that receives this option SHOULD use the specified 
    NTP server to synchronize its own clock. </t>
    
<t> This document does not define any priority between the client's 
    embedded configuration and the NTP servers discovered via this 
    option. In particular, the client is allowed to simultaneously
    use its own configured NTP servers and the servers discovered 
    via DHCP. </t>

</section>
<!---------------------------------------------------------------->

<section title="NTP Server Address Sub-Option">

<t> This sub-option is intended to appear inside the
    OPTION_NTP_SERVER option. It specifies the IPv6 address
    of an NTP server available to the client. An example of
    use is present in the previous section.</t>

<t> This suboption can also be used to carry the IPv6
    multicast address of a multicast group used on
    the local network to carry NTP multicast messages. </t>

<t> As an example, the content of this Sub-Option to enable the
    client to join the FF05::101 NTP multicast group is: </t>

<figure><artwork align="left"><![CDATA[
   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    NTP_SUBOPTION_SRV_ADDR     |        suboption-len = 16     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                   IPv6 address  =  FF05::101                  |
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    sub-option-code: NTP_SUBOPTION_SRV_ADDR (1)
  
    sub-option-len:  16
]]></artwork></figure>

</section>
<!---------------------------------------------------------------->

<section title="NTP Server FQDN Sub-Option">

<t> This sub-option is intended to appear inside the
    OPTION_NTP_SERVER option. It specifies the FQDN of an NTP server 
    available to the client. </t>

<t> As an example, the content of this Sub-Option to enable the
    client to use the 'ntp.example.com' server is: </t>

<figure><artwork align="left"><![CDATA[
   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    NTP_SUBOPTION_SRV_FQDN     |        suboption-len = 15     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      'n'      |      't'      |      'p'      |      '.'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      'e'      |      'x'      |      'a'      |      'm'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      'p'      |      'l'      |      'e'      |      '.'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      'c'      |      'o'      |      'm'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
    sub-option-code: NTP_SUBOPTION_SRV_FQDN  (2)
  
    sub-option-len:  length of the included FQDN (15)
]]></artwork></figure>

</section>

<!---------------------------------------------------------------->

<section title="Appearance of this Option">

<t> The OPTION_NTP_SERVER option can appear multiple times in a
    DHCPv6 message. The order in which these options appear is not 
    significant. The client uses its usual algorithms to determine 
    which server(s) or multicast group(s) should be prefered to 
    synchronize its clock.</t>

<t> The OPTION_NTP_SERVER option MUST NOT appear in messages other 
    than the following: Solicit, Advertise, Request, Renew, Rebind, 
    Information-Request, and Reply. If this option appears in messages 
    other than those specified above, the receiver SHOULD ignore it.</t>

<t> The option number for this option MAY appear in the "Option
    Request" option <xref target="RFC3315"/> in the following
    messages: Solicit, Request, Renew, Rebind, Information-Request,
    and Reconfigure. If this option number appears in the
    "Option Request" option in messages other than those specified
    above, the receiver SHOULD ignore it.</t>

</section>

<!---------------------------------------------------------------->

<section title="Security Considerations">

<t> This option could be used by an intruder to advertise the 
    address of a malicious NTP server and adversely affect
    the clock of clients on the network. The consequences of such 
    an attack can be critical, because many security protocols 
    depend on time synchronization to run their algorithms. 
    As an example, an attacker could break connectivity 
    between SEND-enabled nodes <xref target="RFC3971"/>, simply
    by affecting the clock on these nodes.</t>

<t> To prevent these attacks, it is strongly advisable to 
    secure the use of this option either by:
    
    <list style="symbols">
      <t> using the NTPv4 Autokey public key authentication, as 
          defined in <xref target="draft-autokey"/> or,</t>
          
      <t> using authenticated DHCP as described in 
          <xref target="RFC3315"/> section 21. </t>
    </list>
    </t>

</section>

<!---------------------------------------------------------------->

<section title="IANA Considerations">

<t>  When this document is published, the IANA is requested to
     assign an option code from the "DHCPv6 Options Codes" registry
     for OPTION_NTP_SERVER.</t>

</section>

</middle>

<!---------------------------------------------------------------->

<back>
<references title='Normative References'>

   <?rfc include="reference.RFC.3315" ?>
   
   <reference anchor="draft-ntpv4">
     <front>
       <title>
         Network Time Protocol Version 4 Protocol And
         Algorithms Specification
       </title>
       <author surname="Burbank" initials="J">
         <organization/></author>
       <author surname="Kasch" initials="W">
         <organization/></author>
       <author surname="Martin" initials="J">
         <organization/></author>
       <author surname="Mills" initials="D">
         <organization/></author>
       <date month="November" year="2007" />
     </front>
     <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-ntpv4-proto-08" />
   </reference>
    
  <!---<?rfc include="reference.I-D.ietf-ntp-autokey" ?>--->

   <reference anchor="draft-autokey">
     <front>
       <title>
         Network Time Protocol Version 4 Autokey Specification
       </title>
       <author surname="Haberman" initials="B">
         <organization/></author>
       <author surname="Mills" initials="D">
         <organization/></author>
       <date month="September" year="2007" />
     </front>
     <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-autokey-00" />
   </reference>
</references>

<references title='Informative References'>

   <?rfc include="reference.RFC.2119" ?>

   <?rfc include="reference.RFC.3971" ?>

   <?rfc include="reference.RFC.4075" ?>

   <?rfc include="reference.RFC.4330" ?>

</references>

</back>
</rfc>
