<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<rfc category="std" ipr="full3978" docName="draft-ietf-ntp-dhcpv6-ntp-opt-02.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 NTP (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] or greater 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.
    DNS can be used to redirect misconfigured clients to an 
    unexisting IPv6 address instead of having to change the 
    address of the NTP Server itself.</t>

<t> While the NTP 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. This option MUST include one,
    and only one, time source suboption. The currently defined 
    time source suboptions are: NTP_OPTION_SRV_ADDR, NTP_OPTION_SRV_MC_ADDR, 
    NTP_OPTION_SRV_FQDN. It carries the NTP server location,
    as a  unicast or multicast IPv6 address or as an NTP server FQDN.
    More time source suboptions may be defined in the future.
    While the FQDN option offers the most deployment flexibility,
    resiliency as well as security, the IP address options are  
    defined to cover cases where a dependancy to DNS is not desirable.</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 sent to this group in 
    order to synchronize its clock. </t>

<figure><artwork align="left"><![CDATA[
The format of the NTP Server Option is:

   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           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         suboption-1                           |
  :                                                               :
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         suboption-2                           |
  :                                                               :
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  :                                                               :
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         suboption-n                           |
  :                                                               :
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
    option-code: OPTION_NTP_SERVER (TBD_IANA),

    option-len: Total length of the included suboptions. 
]]></artwork></figure>

<t> A client that receives this option SHOULD use the specified 
    NTP server to synchronize its 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 title="NTP Server Address Suboption">

<t> This suboption is intended to appear inside the
    OPTION_NTP_SERVER option. It specifies the IPv6 unicast address
    of an NTP server available to the client. An example of
    use is present in <xref target="examples"/>.</t>


<figure><artwork align="left"><![CDATA[
The format of the NTP Server Address Suboption is:

   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 of NTP server                  |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    suboption-code: NTP_SUBOPTION_SRV_ADDR (1),
  
    suboption-len: 16.
]]></artwork></figure>

</section>
<!---------------------------------------------------------------->

<section title="NTP Multicast Address Suboption">

<t> This suboption is intended to appear inside the
    OPTION_NTP_SERVER option. It specifies the IPv6 address
    of the IPv6 multicast group address used by NTP on the local network.
    An example of  use is present in <xref target="examples"/>.</t>

<figure><artwork align="left"><![CDATA[
The format of the NTP Multicast Address Suboption is:

   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_MC_ADDR      |        suboption-len = 16     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                                                               |
  |                   Multicast IPv6 address                      |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    suboption-code: NTP_SUBOPTION_MC_ADDR (2),
  
    suboption-len: 16.
]]></artwork></figure>

</section>
<!---------------------------------------------------------------->


<section title="NTP Server FQDN Suboption">

<t> This suboption is intended to appear inside the
    OPTION_NTP_SERVER option. It specifies the FQDN of an NTP server 
    available to the client. </t>

<figure><artwork align="left"><![CDATA[
The format of the NTP Server FQDN Suboption is:

   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         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                      FQDN of NTP server                       |
  :                                                               :
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    suboption-code: NTP_SUBOPTION_SRV_FQDN (3),

    suboption-len: Length of the included FQDN field,
       
    FQDN: Fully Qualidied Domain Name of the NTP server. This
          field MUST be encoded as described in [RFC3315], 
          section 8.
]]></artwork></figure>

</section>
</section>
<!---------------------------------------------------------------->

<section anchor="examples" title="Examples of use">

<t> To instruct a client to use an NTP server located at 
    address 2001:db8::1, a DHCP server shall use the following
    format: </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                  |
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure><artwork align="left"><![CDATA[
To to enable a client to use the 'ntp.example.com' server, a DHCP 
server shall use 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_NTP_SERVER        |        option-len = 21        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    NTP_SUBOPTION_SRV_FQDN     |        suboption-len = 17     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       3       |      'n'      |      't'      |      'p'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       7       |      'e'      |      'x'      |      'a'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      'm'      |      'p'      |      'l'      |      'e'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       3       |      'c'      |      'o'      |      'm'      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       0       |
  +-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t> To instruct a client to join the FF05::101 NTP multicast group, 
    a DHCP server shall use the following format: </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_MC_ADDR      |        suboption-len = 16     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                   IPv6 address  =  FF05::101                  |
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></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: </t>
   
<figure><artwork align="left"><![CDATA[
   -  using the NTPv4 Autokey public key authentication, as defined 
      in [draft-autokey] or,

   -  using authenticated DHCP as described in [RFC3315] section 21.
]]></artwork></figure>

</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>
