6.3 DNS and DHCPv6

6.3.1 RDNSS and DNSSL #

Each server of an RDNSS option, and each domain of a DNSSL option, is held for the option's lifetime from the moment the advertisement arrived. 0xffffffff is forever, and a lifetime of zero removes that server or domain at once. A server or domain advertised again has its lifetime replaced.

6.3.2 Stateless DHCPv6 #

Peios gets IPv6 addresses by SLAAC alone. DHCPv6 is used for configuration only: an INFORMATION-REQUEST (RFC 8415 §18.2.6) for DNS servers and search domains. The stateful address exchange is not implemented, and an advertisement's M flag is treated as O.

6.3.2.1 When it runs #

A DHCPv6 client starts on an interface once its router-discovery engine has seen an advertisement with M or O (§6.1), provided the interface has a non-tentative link-local address and a MAC, and its socket opens. netd logs interface <name>: dhcpv6 information request. It stops with router discovery.

6.3.2.2 The socket #

UDP, bound with SO_BINDTODEVICE to the interface and to its link-local address on port 546, so two interfaces' clients never share a port. Messages go to ff02::1:2 port 547.

6.3.2.3 The request #

An INFORMATION-REQUEST (type 11) with a random 3-byte transaction id and these options:

OptionContent
1, client identifierthe machine's DUID (§5.7)
8, elapsed timehundredths of a second since this exchange began, capped at 65535
6, option request23 (DNS servers), 24 (domain list), 32 (information refresh time)

The first is sent when the exchange begins. Retransmissions follow after 1 s, doubling up to 3600 s, each with a jitter of ±10%, and never stop until a reply is accepted.

6.3.2.4 The reply #

A datagram is accepted only while an exchange is running, and only when:

  • it is a REPLY (type 7) with the exchange's transaction id;
  • it carries a client identifier equal to the machine's DUID;
  • it carries a non-empty server identifier.

Anything else is ignored, and retransmission continues. From an accepted reply, option 23 gives the DNS servers — when its length is a whole number of addresses, up to 16, with unspecified, multicast and loopback addresses dropped — and option 24 the search domains, read as a DNSSL's are (§6.1).

6.3.2.5 Refresh #

After a reply, the client asks again after the reply's information refresh time (option 32), or one day when there is none, but never sooner than 600 s. Each refresh is a new exchange with a new transaction id.

An answer that differs from the last logs dhcpv6 answered and leads to a reconcile and a publish. An identical one changes nothing.

6.3.3 Where these go #

Advertised and DHCPv6 servers and domains reach name resolution only through the profile's Dns.Offered, including link-local servers with the interface supplied by their DNS scope (§8.3). They are always part of what a network has shown for its identity and its record (§7).

Edit this page