rfc9660v2.txt | rfc9660.txt | |||
---|---|---|---|---|
skipping to change at line 105 ¶ | skipping to change at line 105 ¶ | |||
because synchronization can never be instantaneous, and some uses of | because synchronization can never be instantaneous, and some uses of | |||
DNS do not require strong coherency anyway. This means that a record | DNS do not require strong coherency anyway. This means that a record | |||
obtained by one response could be out of sync with other | obtained by one response could be out of sync with other | |||
authoritative sources of the same data at the same point in time. | authoritative sources of the same data at the same point in time. | |||
This can make it difficult to debug some problems when there is a | This can make it difficult to debug some problems when there is a | |||
need to couple the data with the version of the zone it came from. | need to couple the data with the version of the zone it came from. | |||
Furthermore, in today's Internet, it is common for high volume and | Furthermore, in today's Internet, it is common for high volume and | |||
important DNS zones to utilize IP anycast (Section 4.9 of [RFC4786]) | important DNS zones to utilize IP anycast (Section 4.9 of [RFC4786]) | |||
and/or load-balanced backend servers. In general, there is no way to | and/or load-balanced backend servers. In general, there is no way to | |||
ensure that two separate queries are delivered to the same server. | ensure that two separate queries are delivered to the same server. | |||
The ZONEVERSION option both simplifies and improves the DNS | The ZONEVERSION option both simplifies and improves DNS monitoring | |||
monitoring and debugging by directly associating the data and the | and debugging by directly associating the data and the version | |||
version together in a single response. | together in a single response. | |||
The SOA SERIAL field (Section 4.3.5 of [RFC1034]) is one example of | The SOA SERIAL field (Section 4.3.5 of [RFC1034]) is one example of | |||
zone versioning. Its purpose is to facilitate the distribution of | zone versioning. Its purpose is to facilitate the distribution of | |||
zone data between primary and secondary name servers. It is also | zone data between primary and secondary name servers. It is also | |||
often useful in DNS monitoring and debugging. This document | often useful in DNS monitoring and debugging. This document | |||
specifies the SOA SERIAL as one type of ZONEVERSION data. | specifies the SOA SERIAL as one type of ZONEVERSION data. | |||
Some DNS zones may use other distribution and synchronization | Some DNS zones may use other distribution and synchronization | |||
mechanisms that are not based on the SOA SERIAL number, such as | mechanisms that are not based on the SOA SERIAL number, such as | |||
relational databases or other proprietary methods. In those cases, | relational databases or other proprietary methods. In those cases, | |||
skipping to change at line 220 ¶ | skipping to change at line 220 ¶ | |||
2.2. Presentation Format | 2.2. Presentation Format | |||
The presentation format of the ZONEVERSION option is as follows: | The presentation format of the ZONEVERSION option is as follows: | |||
The OPTION-CODE field MUST be represented as the mnemonic value | The OPTION-CODE field MUST be represented as the mnemonic value | |||
ZONEVERSION. | ZONEVERSION. | |||
The OPTION-LENGTH field MAY be omitted, but if present, it MUST be | The OPTION-LENGTH field MAY be omitted, but if present, it MUST be | |||
represented as an unsigned decimal integer. | represented as an unsigned decimal integer. | |||
The LABELCOUNT value of OPTION-DATA field MAY be omitted, but if | The LABELCOUNT value of the OPTION-DATA field MAY be omitted, but if | |||
present, it MUST be represented as an unsigned decimal integer. The | present, it MUST be represented as an unsigned decimal integer. The | |||
corresponding zone name SHOULD be displayed (i.e., LABELCOUNT labels | corresponding zone name SHOULD be displayed (i.e., LABELCOUNT labels | |||
of the original QNAME) for easier human consumption. | of the original QNAME) for easier human consumption. | |||
The TYPE and VERSION fields of the option SHOULD be represented | The TYPE and VERSION fields of the option SHOULD be represented | |||
according to each specific TYPE. | according to each specific TYPE. | |||
3. ZONEVERSION Processing | 3. ZONEVERSION Processing | |||
3.1. Initiators | 3.1. Initiators | |||
skipping to change at line 349 ¶ | skipping to change at line 349 ¶ | |||
1-octet LABELCOUNT, the 1-octet TYPE with value 0, and the 4-octet | 1-octet LABELCOUNT, the 1-octet TYPE with value 0, and the 4-octet | |||
SOA-SERIAL value. | SOA-SERIAL value. | |||
The example below demonstrates expected output of a diagnostic tool | The example below demonstrates expected output of a diagnostic tool | |||
that implements the ZONEVERSION option, displaying a response from a | that implements the ZONEVERSION option, displaying a response from a | |||
compliant authoritative DNS server: | compliant authoritative DNS server: | |||
$ dig @ns.example.com www.example.com aaaa +zoneversion \ | $ dig @ns.example.com www.example.com aaaa +zoneversion \ | |||
+norecurse +nocmd | +norecurse +nocmd | |||
; (1 server found) | ||||
;; global options: +cmd | ||||
;; Got answer: | ;; Got answer: | |||
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7077 | ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7077 | |||
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 | ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 | |||
;; OPT PSEUDOSECTION: | ;; OPT PSEUDOSECTION: | |||
; EDNS: version: 0, flags:; udp: 1232 | ; EDNS: version: 0, flags:; udp: 1232 | |||
; ZONEVERSION: 02 00 78 95 a4 e9 ("SOA-SERIAL: 2023073001 \ | ; ZONEVERSION: 02 00 78 95 a4 e9 ("SOA-SERIAL: 2023073001 \ | |||
; (example.com.)") | ; (example.com.)") | |||
;; QUESTION SECTION: | ;; QUESTION SECTION: | |||
;www.example.com. IN AAAA | ;www.example.com. IN AAAA | |||
skipping to change at line 558 ¶ | skipping to change at line 556 ¶ | |||
Hardaker, "Message Digest for DNS Zones", RFC 8976, | Hardaker, "Message Digest for DNS Zones", RFC 8976, | |||
DOI 10.17487/RFC8976, February 2021, | DOI 10.17487/RFC8976, February 2021, | |||
<https://www.rfc-editor.org/info/rfc8976>. | <https://www.rfc-editor.org/info/rfc8976>. | |||
[RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219, | [RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219, | |||
RFC 9499, DOI 10.17487/RFC9499, March 2024, | RFC 9499, DOI 10.17487/RFC9499, March 2024, | |||
<https://www.rfc-editor.org/info/rfc9499>. | <https://www.rfc-editor.org/info/rfc9499>. | |||
Appendix A. Implementation Considerations | Appendix A. Implementation Considerations | |||
With very few exceptions, EDNS options that elicit an EDNS option in | With very few exceptions, EDNS(0) option values in a response are | |||
the response are independent of the queried name. This is not the | independent of the queried name. This is not the case for | |||
case for ZONEVERSION, so its implementation may be more or less | ZONEVERSION, so its implementation may be more or less difficult, | |||
difficult, depending on how EDNS options are handled in the name | depending on how EDNS(0) options are handled in the name server. | |||
server. | ||||
Appendix B. Implementation References | Appendix B. Implementation References | |||
There is a patched NSD server (version 4.7.0) with support for | There is a patched NSD server (version 4.7.0) with support for | |||
ZONEVERSION with an experimental opcode as well as live test servers | ZONEVERSION as well as live test servers installed for compliance | |||
installed for compliance tests. Also, there is a client command | tests. Also, there is a client command "dig" with added zoneversion | |||
"dig" with added zoneversion support, along with test libraries in | support, along with test libraries in Perl, Python, and Go. See | |||
Perl, Python, and Go. See [ImplRef] for more information. | [ImplRef] for more information. | |||
Acknowledgements | Acknowledgements | |||
The authors are thankful for all the support and comments made in the | The authors are thankful for all the support and comments made in the | |||
DNSOP Working Group mailing list, chats, and discussions. A special | DNSOP Working Group mailing list, chats, and discussions. A special | |||
thanks for suggestions to generalize the option using a registry of | thanks for suggestions to generalize the option using a registry of | |||
types from Petr Špaček and Florian Obser, suggestions for | types from Petr Špaček and Florian Obser, suggestions for | |||
implementation from Stéphane Bortzmeyer, clarifications on security | implementation from Stéphane Bortzmeyer, clarifications on security | |||
from George Michaelson, zone name disambiguation from Joe Abley and | from George Michaelson, zone name disambiguation from Joe Abley and | |||
Brian Dickson, and reviews from Tim Wicinski and Peter Thomassen. | Brian Dickson, and reviews from Tim Wicinski and Peter Thomassen. | |||
End of changes. 5 change blocks. | ||||
15 lines changed or deleted | 12 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |