Network Time Protocol (NTP) Server Option for DHCPv6
Extracted elements (19)
IPv6 address suboptions (unicast and multicast) are defined alongside the FQDN suboption to cover deployments where a DNS dependency is undesirable, ensuring the option is usable in DNS-free or DNS-unreliable environments.
Specifying the NTP service by FQDN rather than IP address provides indirection that mitigates misconfiguration: DNS can redirect misconfigured clients to an unrouted address without requiring the NTP server's IP address to change. The FQDN suboption is preferred for its deployment flexibility, resiliency, and security.
The DHCPv6 option for NTP is deliberately restricted to server location information only. While NTPv4 defines many configuration parameters, modification of those parameters is best left to the client itself.
RFC 4075 (SNTP Configuration Option for DHCPv6) is deprecated by this document. RFC 4075 was not extensible, introduced semantic confusion via the 'SNTP' acronym, and did not support FQDN-based server location, making it unsuitable for full NTP deployments.
If the NTP/SNTP server location is an IPv6 multicast address, the client SHOULD use that address as an NTP multicast group address and listen to messages sent to that group to synchronize its clock.
The FQDN field in NTP_SUBOPTION_SRV_FQDN MUST be encoded as described in RFC 3315 Section 8. Internationalized domain names are not allowed.
The OPTION_NTP_SERVER option MUST include one, and only one, time source suboption (NTP_OPTION_SRV_ADDR, NTP_OPTION_SRV_MC_ADDR, or NTP_OPTION_SRV_FQDN).
The OPTION_NTP_SERVER option MUST NOT appear in DHCPv6 messages other than Solicit, Advertise, Request, Renew, Rebind, Information-Request, and Reply. If it appears in other messages, the receiver MUST ignore it.
The option number for OPTION_NTP_SERVER MAY appear in the Option Request option in Solicit, Request, Renew, Rebind, Information-Request, and Reconfigure messages. If it appears in other message types, the receiver SHOULD ignore it.
When distributing a device with hardcoded DHCPv6-based NTP configuration, that configuration MUST NOT include server locations not part of the distributing organization, to avoid overloading public NTP servers.
The OPTION_NTP_SERVER option (code 56) acts as a container for NTP/SNTP server location information. It can appear multiple times in a DHCPv6 message; each instance represents a distinct server for the client to include in its configuration. The order of multiple instances is not significant.
IANA assigned option code 56 (OPTION_NTP_SERVER) in the DHCPv6 Options Codes registry for this option.
IANA is required to maintain a new number space for NTP time source suboptions in the BOOTP-DHCP Parameters Registry, with initial suboptions NTP_SUBOPTION_SRV_ADDR (1), NTP_SUBOPTION_MC_ADDR (2), and NTP_SUBOPTION_SRV_FQDN (3). Future suboptions require IETF Consensus per RFC 5226.
An intruder could advertise a malicious NTP server via this option, adversely affecting clock synchronization on the network. This is critical because many security protocols depend on time synchronization; for example, an attacker could break SEND-enabled node connectivity (RFC 3971) by skewing their clocks.
To mitigate rogue NTP server advertisement attacks, operators SHOULD secure OPTION_NTP_SERVER use by employing either NTPv4 Autokey public key authentication (RFC 5906) or authenticated DHCPv6 as described in RFC 3315 Section 21.
The NTP_SUBOPTION_MC_ADDR suboption (code 2) carries the IPv6 multicast group address used by NTP on the local network. It has a fixed suboption-len of 16 bytes containing the 128-bit multicast IPv6 address.
The NTP_SUBOPTION_SRV_ADDR suboption (code 1) carries the IPv6 unicast address of an NTP/SNTP server. It has a fixed suboption-len of 16 bytes containing the 128-bit IPv6 address.
The NTP_SUBOPTION_SRV_FQDN suboption (code 3) carries the Fully-Qualified Domain Name of an NTP/SNTP server. The suboption-len reflects the variable length of the FQDN field, encoded per RFC 3315 Section 8. Internationalized domain names are not allowed.
The OPTION_NTP_SERVER option (code 56) carries a variable-length sequence of suboptions. The 2-byte option-code field is set to 56, followed by a 2-byte option-len giving the total length of all included suboptions. The option itself holds no value directly.