RFC 8483
Yeti DNS Testbed
Title Block ๐ (RFC 8483)
Independent Submission ๐ Filed by L. Song, Ed., D. Liu (Beijing Internet Institute), P. Vixie (TISF), A. Kato (Keio/WIDE), and S. Kerr โจ
Category: Informational ๐ฆ ยท ISSN: 2070-1721 ยท Dated October 2018 ๐ธ
This one doesn't obsolete or update anything, so it's a totally fresh start, bestie ๐
Yeti DNS Testbed ๐ง
Abstract ๐
Okay so, Yeti DNS is an experimental, non-production root server testbed ๐. It gives people a playground where they can run technical and operational experiments without any risk to the real production root server infrastructure ๐ก๏ธโจ. This doc is only here to share the technical and operational experience of setting up a system that is similar to, but different from, the Root Server system (the one the Internet's Domain Name System is designed and built on) ๐.
Status of This Memo ๐ท
Lowkey important: this document is not an Internet Standards Track specification. It's published purely for informational purposes ๐.
It's a contribution to the RFC Series, independent of any other RFC stream ๐ . The RFC Editor picked to publish it at their discretion and makes no statement about whether it's worth implementing or deploying ๐. Documents the RFC Editor approves aren't candidates for any level of Internet Standard, so check out Section 2 of RFC 7841 if you wanna know more ๐ฅ.
Want the current status, errata, or a way to send feedback? Head to https://www.rfc-editor.org/info/rfc8483 ๐ซถ.
Copyright Notice ๐
Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved ๐.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they were in effect on the date of publication. Please read these carefully, because they spell out your rights and restrictions for this document ๐.
Table of Contents ๐ฆ
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Requirements Notation and Conventions . . . . . . . . . . . . 5
3. Areas of Study . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. Implementation of a Testbed like the Root Server System . 5
3.2. Yeti-Root Zone Distribution . . . . . . . . . . . . . . . 5
3.3. Yeti-Root Server Names and Addressing . . . . . . . . . . 5
3.4. IPv6-Only Yeti-Root Servers . . . . . . . . . . . . . . . 6
3.5. DNSSEC in the Yeti-Root Zone . . . . . . . . . . . . . . 6
4. Yeti DNS Testbed Infrastructure . . . . . . . . . . . . . . . 7
4.1. Root Zone Retrieval . . . . . . . . . . . . . . . . . . . 8
4.2. Transformation of Root Zone to Yeti-Root Zone . . . . . . 9
4.2.1. ZSK and KSK Key Sets Shared between DMs . . . . . . . 10
4.2.2. Unique ZSK per DM; No Shared KSK . . . . . . . . . . 10
4.2.3. Preserving Root Zone NSEC Chain and ZSK RRSIGs . . . 11
4.3. Yeti-Root Zone Distribution . . . . . . . . . . . . . . . 12
4.4. Synchronization of Service Metadata . . . . . . . . . . . 12
4.5. Yeti-Root Server Naming Scheme . . . . . . . . . . . . . 13
4.6. Yeti-Root Servers . . . . . . . . . . . . . . . . . . . . 14
4.7. Experimental Traffic . . . . . . . . . . . . . . . . . . 16
4.8. Traffic Capture and Analysis . . . . . . . . . . . . . . 16
5. Operational Experience with the Yeti DNS Testbed . . . . . . 17
5.1. Viability of IPv6-Only Operation . . . . . . . . . . . . 17
5.1.1. IPv6 Fragmentation . . . . . . . . . . . . . . . . . 18
5.1.2. Serving IPv4-Only End-Users . . . . . . . . . . . . . 19
5.2. Zone Distribution . . . . . . . . . . . . . . . . . . . . 19
5.2.1. Zone Transfers . . . . . . . . . . . . . . . . . . . 19
5.2.2. Delays in Yeti-Root Zone Distribution . . . . . . . . 20
5.2.3. Mixed RRSIGs from Different DM ZSKs . . . . . . . . . 21
5.3. DNSSEC KSK Rollover . . . . . . . . . . . . . . . . . . . 22
5.3.1. Failure-Case KSK Rollover . . . . . . . . . . . . . . 22
5.3.2. KSK Rollover vs. BIND9 Views . . . . . . . . . . . . 22
5.3.3. Large Responses during KSK Rollover . . . . . . . . . 23
5.4. Capture of Large DNS Response . . . . . . . . . . . . . . 24
5.5. Automated Maintenance of the Hints File . . . . . . . . . 24
5.6. Root Label Compression in Knot DNS Server . . . . . . . . 25
6. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 26
7. Security Considerations . . . . . . . . . . . . . . . . . . . 28
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.1. Normative References . . . . . . . . . . . . . . . . . . 29
9.2. Informative References . . . . . . . . . . . . . . . . . 29
Appendix A. Yeti-Root Hints File . . . . . . . . . . . . . . . . 33
Appendix B. Yeti-Root Server Priming Response . . . . . . . . . 34
Appendix C. Active IPv6 Prefixes in Yeti DNS Testbed . . . . . . 36
Appendix D. Tools Developed for Yeti DNS Testbed . . . . . . . . 36
Appendix E. Controversy . . . . . . . . . . . . . . . . . . . . 37
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 38
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39
1. Introduction ๐ธ
1. Okay, the vibe check ๐
The Domain Name System (DNS), as originally specified in [RFC1034] and [RFC1035], has proved to be an enduring and important platform that almost every end-user of the Internet relies on ๐. Even though it's been around forever, extensions, new implementations, and refinements to DNS operations keep popping up, both inside and outside the IETF โจ.
The Root Server system in particular has been on a major glow-up ๐. Think wide-scale anycast deployment, mitigating unwanted traffic on a global scale, widespread deployment of Response Rate Limiting [RRL], the introduction of IPv6 transport, the deployment of DNSSEC, changes in DNSSEC key sizes, and preparations to roll the root zone's Key Signing Key (KSK) and corresponding trust anchor ๐ฅ. These projects caused tremendous qualitative operational change and needed seriously impressive caution and study before implementation ๐. They happened alongside the quantitative expansion of delegations for new TLDs (see https://newgtlds.icann.org/) ๐ฆ.
Parts of the operational structure of the Root Server system have been described in documents like [TNO2009], [ISC-TN-2003-1], [RSSAC001], and [RFC7720] ๐. Taken together, those references give enough insight into how the whole system runs that it's easy to imagine structural changes to its infrastructure and wonder what the operational consequences would be ๐คโจ.
2. The origin story ๐ง
The Yeti DNS Project was conceived in May 2015 ๐. Its goal was a non-production testbed open to anyone in the technical community who wanted to propose or run experiments that answer questions like these ๐. Coordination was provided by BII, TISF, and the WIDE Project ๐ท. So, to be clear, Yeti DNS is independently coordinated and is not affiliated with the IETF, ICANN, IANA, or any Root Server Operator ๐ โโ๏ธ. The objectives of the Yeti Project were set by the participants, based on experiments they thought would provide valuable information ๐.
Many volunteers collaborated to build a distributed testbed that, at the time of writing, includes 25 Yeti root servers run by 16 operators ๐. It handles experimental traffic from individual volunteers, universities, DNS vendors, and distributed measurement networks ๐ซถ.
3. How it stays in sync ๐ฆ
By design, the Yeti testbed serves the root zone published by the IANA, with only those structural modifications needed to make it work usefully in the Yeti testbed instead of the production Root Server system ๐ . Specifically, no delegation for any top-level zone is changed, added, or removed from the IANA-published root zone to build the root zone the Yeti testbed serves, and changes in the root zone show up in the testbed in near real-time โก. In this document, for clarity, the zone derived from the IANA-published root zone is called the Yeti-Root zone ๐.
The Yeti DNS testbed does a similar job to the Root Server system, since both serve similar zones: the Yeti-Root zone and the IANA-published root zone ๐. The difference is that the Yeti DNS testbed only serves clients that are explicitly configured to take part in the experiment, while the Root Server system serves the whole Internet ๐. Because the Yeti end-users and systems are known and their operations are well-coordinated with the Yeti project, it has been possible to deploy structural changes in the testbed with effective measurement and analysis ๐ฅ. That's something that's hard, or simply impractical, in the production Root Server system ๐ญ.
4. What this doc covers ๐ท
This document describes the motivation behind the Yeti project, describes the Yeti testbed infrastructure, and shares the technical and operational experiences of some Yeti testbed users ๐ง. It does not address the policies under which the Root Server system is operated, and it makes no proposal for changing any aspect of its implementation or operation ๐ซถ.
2. Requirements Notation and Conventions ๐
Throughout the document, any mention of "Root" with an uppercase "R" and no other prefix refers to the "IANA Root" systems used in the production Internet ๐. Anything that's specifically about the Yeti infrastructure gets a "Yeti" prefix, like "Yeti-Root zone", "Yeti DNS", and so on ๐ธ.
3. Areas of Study ๐
This section gives some examples of topics the developers of the Yeti DNS testbed considered important ๐. As noted in Section 1, Yeti DNS is independently coordinated and is not affiliated with the IETF, ICANN, IANA, or any Root Server Operator ๐ โโ๏ธ. So the topics and areas for study were picked by (and for) the Yeti project's proponents, to address their own concerns, and in the hope that the information and tools would be of wider interest ๐ฆ.
Each example below comes with indicative questions ๐.
3.1. Implementation of a Testbed like the Root Server System ๐๏ธ
- How can a testbed be built and deployed on the Internet so that useful public participation happens without any risk of disrupting the Root Server system? ๐ก๏ธ
- How can representative traffic be introduced into such a testbed, so that the impact of specific differences between the testbed and the Root Server system can be observed? ๐
3.2. Yeti-Root Zone Distribution ๐
- What are the scaling properties of Yeti-Root zone distribution as the number of Yeti-Root servers, Yeti-Root server instances, or intermediate distribution points grows? ๐โจ
Part 1 of 9. More parts coming, bestie, so stay tuned ๐ซถ๐
3.3. Yeti-Root Server Names and Addressing โจ
3.3. Yeti-Root Server Names and Addressing ๐
Okay bestie, let's talk naming! ๐ These are the open questions the testbed folks still want answered:
- What naming schemes other than ones closely analogous to using ROOT-SERVERS.NET in the production root zone are practical, and what are their respective advantages and disadvantages? ๐ธ
- What are the risks and benefits of signing the zone that contains the names of the Yeti-Root servers? ๐
- What automatic mechanisms might be useful to improve the rate at which clients of Yeti-Root servers are able to react to a Yeti-Root server renumbering event? ๐ฆ
3.4. IPv6-Only Yeti-Root Servers ๐
Next up, the IPv6-only servers, and the questions are giving "is this a problem or a vibe?" ๐ซถ
- Are there negative operational effects in the use of IPv6-only Yeti-Root servers, compared to the use of servers that are dual-stack? ๐ค
- What effect does the IPv6 fragmentation model have on the operation of Yeti-Root servers, compared with that of IPv4? ๐ง
3.5. DNSSEC in the Yeti-Root Zone ๐ฅ
Ohhh, DNSSEC. Iconic, complicated, and absolutely needs a lot of testing. ๐
- Is it practical to sign the Yeti-Root zone using multiple, independently operated DNSSEC signers and multiple corresponding Zone Signing Keys (ZSKs)? ๐
- To what extent is [RFC5011] ("Automated Updates of DNS Security (DNSSEC) Trust Anchors") supported by resolvers? ๐
- Does the KSK Rollover plan designed and in the process of being implemented by ICANN work as expected on the Yeti testbed? ๐ธ
- What is the operational impact of using much larger RSA key sizes in the ZSKs used in a root? ๐
- What are the operational consequences of choosing DNSSEC algorithms other than RSA to sign a root? โจ
4. Yeti DNS Testbed Infrastructure ๐ง
Okay so the whole point of the testbed is this: DNS queries from stub resolvers, going through recursive resolvers, get delivered to Yeti-Root servers, and the responses the Yeti-Root servers generate get sent back the same way. Main character energy! ๐ Check out Figure 1 below. ๐
,----------. ,-----------. ,------------.
| stub +------> | recursive +------> | Yeti-Root |
| resolver | <------+ resolver | <------+ nameserver |
`----------' `-----------' `------------'
^ ^ ^
| appropriate | Yeti-Root hints; | Yeti-Root zone
`- resolver `- Yeti-Root trust `- with DNSKEY RRset
configured anchor signed by
Yeti-Root KSK
Figure 1: High-Level Testbed Components
To use the Yeti DNS testbed, a recursive resolver MUST be configured to use the Yeti-Root servers. ๐ซถ That configuration is a list of names and addresses for the Yeti-Root servers (people often call this a "hints file") that replaces the matching hints used for the production Root Server system (Appendix A). If resolvers are configured to validate DNSSEC, then they also need a DNSSEC trust anchor that matches a KSK used in the Yeti DNS Project, instead of the normal trust anchor set used for the Root Zone. ๐
Since the Yeti root(s) are signed with Yeti keys, not the ones used by the IANA Root, the resolver trust anchors need to change to match. The Yeti-Root hints file also needs corresponding changes (Appendix A). Any validator using the production Root Server system's root zone trust anchor set would properly reject those changes as bogus. ๐
Stub resolvers join the Yeti DNS testbed just by using recursive resolvers that are configured as described above. โจ
The data flow from IANA to stub resolvers through the Yeti testbed is shown in Figure 2, and the sections that follow go into more detail. ๐ฆ
,----------------.
,-- / IANA Root Zone / ---.
| `----------------' |
| | |
| | | Root Zone
,--------------. ,---V---. ,---V---. ,---V---.
| Yeti Traffic | | BII | | WIDE | | TISF |
| Collection | | DM | | DM | | DM |
`----+----+----' `---+---' `---+---' `---+---'
| | ,-----' ,-------' `----.
| | | | | Yeti-Root
^ ^ | | | Zone
| | ,---V---. ,---V---. ,---V---.
| `---+ Yeti | | Yeti | . . . . . . . | Yeti |
| | Root | | Root | | Root |
| `---+---' `---+---' `---+---'
| | | | DNS
| | | | Response
| ,--V----------V-------------------------V--.
`---------+ Yeti Resolvers |
`--------------------+---------------------'
| DNS
| Response
,--------------------V---------------------.
| Yeti Stub Resolvers |
`------------------------------------------'
The three coordinators of the Yeti DNS testbed:
BII : Beijing Internet Institute
WIDE: Widely Integrated Distributed Environment Project
TISF: A collaborative engineering and security project by Paul Vixie
Figure 2: Testbed Data Flow
Heads up: the roots are NOT bound to Distribution Masters (DMs). ๐ญ DMs update their zone on a schedule described in Section 4.1. Each DM that updates the latest zone can notify all roots, so the zone transfer can happen between any DM and any root. ๐
4.1. Root Zone Retrieval ๐
The Yeti-Root zone gets distributed inside the Yeti DNS testbed through a set of internal master servers called Distribution Masters (DMs). ๐ These server elements send the Yeti-Root zone out to all Yeti-Root servers. How the Yeti DMs build the Yeti-Root zone for distribution is explained below. ๐ง
Since Yeti DNS DMs don't receive DNS NOTIFY [RFC1996] messages from the Root Server system, they use a polling approach to figure out when new revisions of the root zone are available from the production Root Server system. Each Yeti DM MUST request the Root Zone SOA record from a Root server that permits unauthenticated zone transfers of the root zone, and it performs a zone transfer from that server if the retrieved value of SOA.SERIAL is greater than that of the last retrieved zone. ๐ฅ
At the time of writing, unauthenticated zone transfers of the Root Zone are available directly from B-Root, C-Root, F-Root, G-Root, K-Root, and L-Root; two servers XFR.CJR.DNS.ICANN.ORG and XFR.LAX.DNS.ICANN.ORG; and via FTP from sites maintained by the Root Zone Maintainer and the IANA Functions Operator. The Yeti DNS testbed retrieves the Root Zone using zone transfers from F-Root. The schedule on which F-Root is polled by each Yeti DM is as follows: ๐ฆ
+-------------+-----------------------+
| DM Operator | Time |
+-------------+-----------------------+
| BII | UTC hour + 00 minutes |
| WIDE | UTC hour + 20 minutes |
| TISF | UTC hour + 40 minutes |
+-------------+-----------------------+
The Yeti DNS testbed uses multiple DMs, and each one acts autonomously and equivalently to its siblings. ๐ Any single DM can distribute new revisions of the Yeti-Root zone, and it's also responsible for signing the RRsets that change during the transformation of the Root Zone into the Yeti-Root zone described in Section 4.2. This multiple DM model is meant to provide a basic structure for the idea of shared zone control proposed in [ITI2014]. ๐ธ
4.2. Transformation of Root Zone to Yeti-Root Zone ๐
Two distinct approaches have been deployed in the Yeti DNS testbed, separately, to transform the Root Zone into the Yeti-Root zone. ๐ At a high level they're equivalent: both replace a minimal set of information in the root zone with matching data for the Yeti DNS testbed. The mechanisms that execute the transforms are different, though. The approaches are discussed in Sections 4.2.1 and 4.2.2. โจ
A third approach has also been proposed, but it hasn't been implemented yet. The motivations and changes that approach would imply are described in Section 4.2.3. ๐ฎ
4.2.1. ZSK and KSK Key Sets Shared between DMs ๐
This approach was the first one implemented. ๐ฅ It features entirely autonomous operation of each DM, but it also requires the secret key material (the private key in each of the Yeti-Root KSK and ZSK key pairs) to be distributed and maintained on each DM in a coordinated way. ๐ซถ
The Root Zone is transformed as follows to produce the Yeti-Root zone. This transformation is carried out autonomously on each Yeti DNS Project DM. Each DM carries an authentic copy of the current set of Yeti KSK and ZSK key pairs, synchronized between all DMs (see Section 4.4). ๐
- SOA.MNAME is set to www.yeti-dns.org.
- SOA.RNAME is set to <dm-operator>.yeti-dns.org, where <dm-operator> is currently one of "wide", "bii", or "tisf".
- All DNSKEY, RRSIG, and NSEC records are removed.
- The apex Name Server (NS) RRset is removed, with the corresponding root server glue (A and AAAA) RRsets.
- A Yeti DNSKEY RRset is added to the apex, comprising the public parts of all Yeti KSK and ZSKs.
- A Yeti NS RRset is added to the apex that includes all Yeti-Root servers.
- Glue records (AAAA only, since Yeti-Root servers are v6-only) for all Yeti-Root servers are added.
- The Yeti-Root zone is signed: the NSEC chain is regenerated; the Yeti KSK is used to sign the DNSKEY RRset; and the shared ZSK is used to sign every other RRset.
Note that the SOA.SERIAL value published in the Yeti-Root zone is identical to that found in the root zone. ๐
4.2.2. Unique ZSK per DM; No Shared KSK โจ
Okay so this approach was the second one to get implemented and maintained as stable state ๐. Each DM gets its own dedicated ZSK key pairs, and they are NOT shared with other DMs ๐. A Yeti-Root DNSKEY RRset gets constructed and signed upstream of all the DMs. It's basically the union of the set of active Yeti-Root KSKs and the set of active ZSKs for every individual DM ๐งฉ. Now each DM only needs the secret part of its own dedicated ZSK key pairs available locally, and no other secret key material is shared. Literally so clean ๐ญ Figure 3 shows the high-level vibe:
,----------. ,-----------.
.--------> BII ZSK +---------> Yeti-Root |
| signs `----------' signs `-----------'
|
,-----------. | ,----------. ,-----------.
| Yeti KSK +-+--------> TISF ZSK +---------> Yeti-Root |
`-----------' | signs `----------' signs `-----------'
|
| ,----------. ,-----------.
`--------> WIDE ZSK +---------> Yeti-Root |
signs `----------' signs `-----------'
Figure 3: Unique ZSK per DM
The whole process of retrieving the Root Zone from the Root Server system and replacing and signing the apex DNSKEY RRset no longer happens on the DMs ๐ โโ๏ธ. Instead, it happens on a central Hidden Master ๐ฐ. Producing these signed DNSKEY RRsets is kinda like the Signed Key Responses (SKRs) made during ICANN KSK key ceremonies [ICANN2010] ๐.
Each DM now pulls its source data from the Yeti DNS Hidden Master instead of the Root Server system ๐ฆ. That data has a premodified, Yeti-signed DNSKEY RRset, but everything else is unchanged โจ.
Each DM does a similar transformation to the one in Section 4.2.1, except DMs no longer need to modify or sign the DNSKEY RRset ๐. The DM's unique local ZSK signs every other RRset instead ๐ .
4.2.3. Preserving Root Zone NSEC Chain and ZSK RRSIGs โจ
Okay, now for a plot twist ๐. A change to the transformation from Section 4.2.2 has been proposed as a Yeti experiment called PINZ [PINZ] ๐ฆ. The idea is to preserve the NSEC chain from the Root Zone and all RRSIG RRs generated using the Root Zone's ZSKs ๐ง. The DNSKEY RRset would still get modified to replace the Root Zone KSKs, but the Root Zone ZSKs would be kept intact. The Yeti KSK would be used to generate replacement signatures over the apex DNSKEY and NS RRsets ๐. Source data would keep flowing from the Root Server system through the Hidden Master to the set of DMs. No DNSSEC operations would be required on the DMs, and the source NSEC and most RRSIGs would stay intact ๐ธ.
The reason this is so iconic is that it keeps changes minimal from the IANA Root zone ๐. It also gives cryptographically verifiable confidence that no owner name in the root zone was changed while producing the Yeti-Root zone from the Root Zone ๐. That addresses one of the concerns described in Appendix E, and it can be verified automatically ๐ค. Main character energy ๐.
4.3. Yeti-Root Zone Distribution โจ
Each Yeti DM is configured with a full list of Yeti-Root server addresses to send NOTIFY [RFC1996] messages to ๐ฌ. This also forms the basis for an address-based access-control list for zone transfers. Authentication by address could be replaced with more rigorous mechanisms, like Transaction Signatures (TSIGs) [RFC2845] ๐. This hasn't been done at the time of writing ๐ฐ๏ธ. Address-based controls avoid the need to distribute shared secrets among the Yeti-Root server operators, so it's lowkey the smarter move right now ๐ซถ.
Individual Yeti-Root servers are configured with a full set of Yeti DM addresses. SOA and AXFR queries may be sent to those addresses in the conventional manner ๐.
4.4. Synchronization of Service Metadata โจ
Changes in the Yeti DNS testbed infrastructure, like adding or removing Yeti-Root servers, renumbering Yeti-Root servers, or DNSSEC key rollovers, require coordinated changes on all DMs ๐. The Yeti DNS testbed changes way more often than the Root Server system does, and it includes substantially more Yeti-Root servers than there are IANA Root Servers ๐. So a manual change process would be more likely to suffer from human error ๐ฌ. That's why an automated and cooperative process was implemented ๐ค๐.
The theory is that each DM operator runs a Git repository locally, containing all the service metadata involved in operating each DM ๐๏ธ. When a change is desired and approved among all Yeti coordinators, one DM operator (usually BII) updates the local Git repository โ๏ธ. A serial number in the future (in two days) is chosen for when the changes become active โณ. The DM operator then pushes the changes to the Git repositories of the other two DM operators, who get a chance to check and edit the changes ๐. When the serial number of the root zone passes the number chosen, the changes are pulled automatically to individual DMs and promoted to production ๐.
The three Git repositories are synchronized by configuring them as remote servers. For example, at BII we push to all three DMs' repositories like this:
$ git remote -v
origin yeticonf@yeti-conf.dns-lab.net:dm (fetch)
origin yeticonf@yeti-conf.dns-lab.net:dm (push)
origin yeticonf@yeti-dns.tisf.net:dm (push)
origin yeticonf@yeti-repository.wide.ad.jp:dm (push)
For more detailed info on DM synchronization, check out this document in Yeti's GitHub repository: https://github.com/BII-Lab/Yeti-Project/blob/master/doc/Yeti-DM-Sync.md ๐๐.
4.5. Yeti-Root Server Naming Scheme โจ
The current naming scheme for Root Servers was normalized to use single-character host names ("A" through "M") under the domain ROOT-SERVERS.NET, as described in [RSSAC023] ๐ค. The principal benefit was that DNS label compression could be used to produce a priming response that would fit within 512 bytes when it was introduced ๐. And 512 bytes is the maximum DNS message size using UDP transport without EDNS(0) [RFC6891], so that was a big deal back then ๐.
Yeti-Root servers don't use this optimization. They use free-form nameserver names chosen by their respective operators ๐จ. In other words, no attempt is made to minimize the size of the priming response through label compression. This approach aims to challenge the need to minimize the priming response in a modern DNS ecosystem where EDNS(0) is prevalent ๐ .
Priming responses from Yeti-Root servers (unlike those from Root Servers) don't always include server addresses in the additional section ๐. In particular, Yeti-Root servers running BIND9 return an empty additional section if the configuration parameter "minimum-responses" is set. That forces resolvers to finish the priming process with a set of conventional recursive lookups to resolve addresses for each Yeti-Root server ๐. Yeti-Root servers running NSD were observed to return a fully populated additional section, depending, of course, on the EDNS buffer size in use ๐ง.
Various approaches to normalize the composition of the priming response were considered, including:
- Require use of DNS implementations that exhibit a desired behavior in the priming response.
- Modify nameserver software or configuration as used by Yeti-Root servers.
- Isolate the names of Yeti-Root servers in one or more zones that could be slaved on each Yeti-Root server, renaming servers as necessary. That gives each server a source of authoritative data, so the authority section of a priming response could be fully populated. This is the approach used in the Root Server system with the ROOT-SERVERS.NET zone ๐ง .
The potential mitigation of renaming all Yeti-Root servers using a scheme that would allow their names to exist directly in the root zone was not considered ๐ซ. That approach implies inventing new top-level labels not present in the Root Zone ๐ โโ๏ธ.
Given the relative infrequency of priming queries by individual resolvers, and the additional complexity or other compromises implied by each of those mitigations, the decision was made to make no effort to ensure that priming responses were identical across servers ๐คทโโ๏ธ. Even the empty additional sections generated by Yeti-Root servers running BIND9 seem to be sufficient for all resolver software tested. Resolvers simply perform a new recursive lookup for each authoritative server name they need to resolve ๐ฆโจ.
4.6. Yeti-Root Servers ๐ธ
Okay so volunteers have donated authoritative servers to act as Yeti-Root servers, and it's giving community energy ๐ซถ. At the time of writing there are 25 Yeti-Root servers spread out globally. One of them is named using a label from IDNA2008 [RFC5890], and it's shown in punycode in the list below โจ
+-------------------------------------+---------------+-------------+
| Name | Operator | Location |
+-------------------------------------+---------------+-------------+
| bii.dns-lab.net | BII | CHINA |
| yeti-ns.tsif.net | TSIF | USA |
| yeti-ns.wide.ad.jp | WIDE Project | Japan |
| yeti-ns.as59715.net | as59715 | Italy |
| dahu1.yeti.eu.org | Dahu Group | France |
| ns-yeti.bondis.org | Bond Internet | Spain |
| | Systems | |
| yeti-ns.ix.ru | Russia | MSK-IX |
| yeti.bofh.priv.at | CERT Austria | Austria |
| yeti.ipv6.ernet.in | ERNET India | India |
| yeti-dns01.dnsworkshop.org | dnsworkshop | Germany |
| | /informnis | |
| dahu2.yeti.eu.org | Dahu Group | France |
| yeti.aquaray.com | Aqua Ray SAS | France |
| yeti-ns.switch.ch | SWITCH | Switzerland |
| yeti-ns.lab.nic.cl | NIC Chile | Chile |
| yeti-ns1.dns-lab.net | BII | China |
| yeti-ns2.dns-lab.net | BII | China |
| yeti-ns3.dns-lab.net | BII | China |
| ca...a23dc.yeti-dns.net | Yeti-ZA | South |
| | | Africa |
| 3f...374cd.yeti-dns.net | Yeti-AU | Australia |
| yeti1.ipv6.ernet.in | ERNET India | India |
| xn--r2bi1c.xn--h2bv6c0a.xn--h2brj9c | ERNET India | India |
| yeti-dns02.dnsworkshop.org | dnsworkshop | USA |
| | /informnis | |
| yeti.mind-dns.nl | Monshouwer | Netherlands |
| | Internet | |
| | Diensten | |
| yeti-ns.datev.net | DATEV | Germany |
| yeti.jhcloos.net. | jhcloos | USA |
+-------------------------------------+---------------+-------------+
A participating resolver first picks up the current list of Yeti-Root servers from a substitute hints file (see Appendix A), and after that it gets them through the usual resolver priming process [RFC8109] ๐
All Yeti-Root servers are IPv6-only ๐ฆ That's because of the IPv6-only Internet of the foreseeable future. So the Yeti-Root hints file has no IPv4 addresses, and the Yeti-Root zone has no IPv4 glue records. Note that the whole point of an IPv6-only testbed is to find out whether an IPv6-only root can survive any problem or impact when IPv4 is turned off. It's very much in the spirit of the IETF SUNSET4 WG [SUNSET4] ๐ง
At the time of writing, every root server in the Root Server system serves the ROOT-SERVERS.NET zone along with the root zone, and all but one of them also serve the ARPA zone. Yeti-Root servers serve the Yeti-Root zone only โจ
The volunteer operators reported how much software diversity there is across the Yeti-Root servers at the time of writing, and it's honestly so iconic ๐
- Platform: 18 of 25 Yeti-Root servers are implemented on a Virtual Private Server (VPS) rather than bare metal.
- Operating System: 15 Yeti-Root servers run on Linux (Ubuntu, Debian, CentOS, Red Hat, and ArchLinux); 4 run on FreeBSD; 1 on NetBSD; and 1 on Windows Server 2016.
- DNS software: 16 of 25 Yeti-Root servers use BIND9 (versions varying between 9.9.7 and 9.10.3); 4 use NSD (4.10 and 4.15); 2 use Knot (2.0.1 and 2.1.0); 1 uses Bundy (1.2.0); 1 uses PowerDNS (4.1.3); and 1 uses MS DNS (10.0.14300.1000).
4.7. Experimental Traffic ๐
For the Yeti DNS testbed to be useful as an experimentation platform, it needs to carry statistically representative traffic ๐ Several approaches have been tried to load the system, including real-world traffic triggered by end-users and synthetic traffic.
Resolvers that have been explicitly configured to take part in the testbed, as described in Section 4, are a source of real-world, end-user traffic. Thanks to an efficient cache mechanism, the mean query rate is less than 100 qps in the Yeti testbed. Still, a variety of sources were observed as active during 2017, as summarized in Appendix C ๐
Synthetic traffic has been added to the system from time to time to boost the traffic loads ๐ Approaches include using distributed measurement platforms such as RIPE ATLAS to send DNS queries to Yeti-Root servers. They also include capturing traffic that was sent from non-Yeti resolvers to the Root Server system, then modifying it and replaying it towards Yeti-Root servers ๐
4.8. Traffic Capture and Analysis ๐
Traffic capture of queries and responses is available in the testbed, on both Yeti resolvers and Yeti-Root servers. It's there in anticipation of experiments that need packet-level visibility into DNS traffic ๐
Traffic capture is performed on Yeti-Root servers using either:
dnscapathttps://www.dns-oarc.net/tools/dnscap, orpcapdump, which is part of the pcaputils Debian package athttps://packages.debian.org/sid/pcaputils, with a patch to facilitate triggered file upload (seehttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=545985).
PCAP-format files containing packet captures are uploaded using rsync to central storage ๐ฆ
5. Operational Experience with the Yeti DNS Testbed โจ
The following sections give commentary on the operation and impact analyses of the Yeti DNS testbed described in Section 4 ๐ More detailed descriptions of observed phenomena are available in the Yeti DNS mailing list archives at http://lists.yeti-dns.org/pipermail/discuss/ and on the Yeti DNS blog at https://yeti-dns.org/blog.html ๐ซถ
5.1. Viability of IPv6-Only Operation ๐
All Yeti-Root servers were deployed with IPv6 connectivity. No IPv4 addresses for any Yeti-Root server were made available, for example in the Yeti hints file or in the DNS itself. This implementation decision constrained the Yeti-Root system to be v6 only ๐ฆ
DNS implementations are generally great at using both IPv4 and IPv6 when both are available. Servers that can't be reliably reached over one protocol might be better queried over the other, which helps end-users in the common case where DNS resolution is on the critical path for how fast things feel to them. However, this optimization also means that systemic problems with one protocol can be masked by the other. By forcing all traffic over IPv6, the Yeti DNS testbed aimed to expose any such problems and make them easier to identify and understand ๐ Several examples of IPv6-specific phenomena observed during the operation of the testbed are described in the sections that follow.
Although the Yeti-Root servers themselves were only reachable using IPv6, real-world end-users often have no IPv6 connectivity ๐ญ The testbed was also able to explore how well IPv6-only Yeti-Root servers could serve single-stack, IPv4-only end-user populations through the use of dual-stack Yeti resolvers ๐
5.1.1. IPv6 Fragmentation ๐งฉ
In the Root Server system, structural changes that could increase response sizes (and so cause fragmentation, fallback to TCP transport, or both) have been handled with great care, since their impact on clients is hard to predict or measure. The Yeti DNS testbed is experimental and has the luxury of a known client base, which makes it far easier to make such changes and measure their impact ๐งช
Many of the experimental design choices described in this document were expected to trigger larger responses. For example, the choice of naming scheme for Yeti-Root servers described in Section 4.5 defeats label compression. It makes a large priming response, up to 1754 octets with 25 NS records and their corresponding glue records. The Yeti-Root zone transformation approach described in Section 4.2.2 greatly enlarges the apex DNSKEY RRset, especially during the KSK rollover, reaching up to 1975 octets with 3 ZSKs and 2 KSKs. So an increased incidence of fragmentation was expected ๐ฌ
The Yeti DNS testbed provides service on IPv6 only. However, middleboxes (such as firewalls and some routers) are not friendly to IPv6 fragments. There are reports of a notable packet drop rate caused by middleboxes mistreating IPv6 fragments [FRAGDROP] [RFC7872]. One APNIC study [IPv6-frag-DNS] reported that 37% of endpoints using IPv6-capable DNS resolvers cannot receive a fragmented IPv6 response over UDP ๐
To study the impact, RIPE Atlas probes were used. For each Yeti-Root server, an Atlas measurement was set up using 100 IPv6-enabled probes from five regions. Each one sent a DNS query for "./IN/DNSKEY" using UDP transport with DO=1. This measurement was carried out concurrently with a Yeti KSK rollover, which further exacerbated the potential for fragmentation. It identified a 7% failure rate compared with a non-fragmented control. A failure rate of 2% was observed with response sizes of 1414 octets, which was surprising given the expected prevalence of 1500-octet (Ethernet-framed) MTUs ๐คฏ
The consequences of fragmentation were not limited to failures in delivering DNS responses over UDP transport. There were two cases where a Yeti-Root server failed when using TCP to transfer the Yeti-Root zone from a DM. DM log files revealed "socket is not connected" errors corresponding to the zone transfer requests. Further experimentation revealed that combinations of NetBSD 6.1, NetBSD 7.0RC1, FreeBSD 10.0, Debian 3.2, and VMWare ESXI 5.5 resulted in a high TCP Maximum Segment Size (MSS) value of 1440 octets being negotiated between client and server, despite the presence of the IPV6_USE_MIN_MTU socket option, as described in [USE_MIN_MTU]. The mismatch appears to cause outbound segments larger than 1280 octets to be dropped before sending. Setting the local TCP MSS to 1220 octets was observed to be a pragmatic mitigation. That number was chosen as 1280 - 60, the size of the IPv6 TCP header with no other extension headers ๐ฉน
5.1.2. Serving IPv4-Only End-Users ๐ธ
okay so real-world end-users were actually using Yeti resolvers ๐ for general name resolution at a bunch of participant orgs. that included resolving names to IPv4 addresses, and even IPv4-only end-user devices were doing lookups through them. literally iconic ๐ฆ
some participants were like "reliability in resolver infrastructure is SO important" ๐ซถ and they were also kinda worried about how stable their IPv6 connectivity was. so they deployed Yeti resolvers in parallel with their conventional ones and made both available to end-users. ngl this approach is a useful data point โจ, but having end-users use Yeti resolvers exclusively was a much better way to spot and understand any failures in the Yeti DNS testbed infrastructure ๐ฅ
resolvers in IPv4-only environments were still able to join the Yeti DNS testbed ๐ง through upstream, dual-stack Yeti resolvers. in one case (CERNET2), they did this by giving IPv4 addresses to Yeti-Root servers and mapping them in dual-stack IVI translation devices [RFC6219]. the way that worked is giving me main character energy ๐
5.2. Zone Distribution ๐
the Yeti DNS testbed uses multiple DMs to distribute the Yeti-Root zone ๐. this approach lets the number of Yeti-Root servers scale higher than a single distribution source could support, and it also gives redundancy ๐ซถ. multiple DMs did come with some operational challenges though ๐, and those are described in the following sections.
5.2.1. Zone Transfers ๐ฆ
Yeti-Root servers were set up to serve the Yeti-Root zone as slaves. each slave had all DMs configured as masters, which gives redundancy in zone synchronization ๐
each DM in the Yeti testbed served a Yeti-Root zone that was functionally equivalent to the others but not congruent ๐ (see Section 4.3). the differences included variations in the SOA.MNAME field and, more critically, in the RRSIGs for everything other than the apex DNSKEY RRset. that's because signatures for all other RRsets are generated using a private key that's only available to the DM serving its particular variant of the zone (see Sections 4.2.1 and 4.2.2) ๐ญ
Incremental Zone Transfer (IXFR), as described in [RFC1995], is a viable mechanism for zone synchronization between any Yeti-Root server and a consistent, single DM โจ. but if that Yeti-Root server ever selected a different DM, IXFR would no longer be a safe mechanism. structural changes between the incongruent zones on different DMs wouldn't be included in any transferred delta, and the result would be a zone that was not internally self-consistent ๐. for this reason, the first transfer after a change of DM would require AXFR not IXFR ๐ซถ
none of the DNS software in use on Yeti-Root servers supports this mixture of IXFR/AXFR depending on the master server in use ๐ญ. honestly that's not surprising, because the Yeti-Root system is idiosyncratic ๐. conventional zone transfer graphs involve zones that are congruent between all nodes. so for this reason, all Yeti-Root servers are configured to use AXFR at all times, and never IXFR, to make sure the zones being served are internally self-consistent ๐
5.2.2. Delays in Yeti-Root Zone Distribution ๐ธ
each Yeti DM polled the Root Server system for a new revision of the root zone on an interleaved schedule, as described in Section 4.1 โฐ. so different DMs were expected to retrieve each revision of the root zone, and make a matching revision of the Yeti-Root zone available, at different times. the availability of a new revision of the Yeti-Root zone on the first DM would typically come 40 minutes before the last one ๐
given that distribution mechanism, you might expect the maximum latency between publication of a new root zone revision and the corresponding Yeti-Root zone being available on any Yeti-Root server to be 20 minutes. since in normal operation at least one DM should serve that Yeti-Zone within 20 minutes of root zone publication, right? ๐ค well, in practice this was not observed ๐
in one case, a Yeti-Root server running Bundy 1.2.0 on FreeBSD 10.2-RELEASE was found to lag root zone publication by as much as ten hours ๐ญ. upon investigation, it turned out to be due to software defects, which were corrected later ๐ ๏ธ
more generally, Yeti-Root servers were routinely observed lagging root zone publication by more than 20 minutes, and relatively often by more than 40 minutes ๐. whilst in some cases this might be assumed to be a connectivity problem, like perhaps suppressing the delivery of NOTIFY messages, it was also observed that Yeti-Root servers receiving a NOTIFY from one DM would often send SOA queries and AXFR requests to a different DM. if that DM wasn't yet serving the new revision of the Yeti-Root zone, a delay in updating the Yeti-Root server would naturally follow ๐ซ
5.2.3. Mixed RRSIGs from Different DM ZSKs ๐ง
the second approach for doing the transformation of Root Zone to Yeti-Root zone (Section 4.2.2) introduces a situation where mixed RRSIGs from different DM ZSKs get cached in one resolver ๐
here's the thing ๐: the Yeti-Root zone served by any particular Yeti-Root server will include signatures generated using the ZSK from the DM that served the Yeti-Root zone to that Yeti-Root server. signatures cached at resolvers might be retrieved from any Yeti-Root server, so they're expected to be a mix of signatures generated by different ZSKs. but since all ZSKs can be trusted through the signature by the Yeti KSK over the DNSKEY RRset (which includes all ZSKs), the mixture of signatures was predicted not to be a threat to reliable validation ๐
it was first tested in BII's lab environment as a proof of concept ๐งช. in the resolver's DNSSEC log, verifying an RDATA set showed "success" with a key (keyid) in the DNSKEY RRset ๐. it was implemented later in three DMs that were carefully coordinated and made public to all Yeti resolver operators and participants on Yeti's mailing list ๐ฌ. at least 45 Yeti resolvers (deployed by Yeti operators) were being monitored and had set a reporting trigger in case anything was wrong. the Yeti mailing list is also open for error reports from other participants ๐. so far, the Yeti testbed has been run in this configuration (with multiple ZSKs) for 2 years, and it has proven workable and reliable, even when rollovers of individual ZSKs are on different schedules ๐
another consequence of this approach is that the apex DNSKEY RRset in the Yeti-Root zone is much larger than the corresponding DNSKEY RRset in the Root Zone. that means it takes more space and produces a larger response to the query for the DNSKEY RRset, especially during the KSK rollover ๐
5.3. DNSSEC KSK Rollover ๐
at the time of writing, the Root Zone KSK is expected to undergo a carefully orchestrated rollover as described in [ICANN2016]. ICANN has commissioned various tests and has published an external test plan [ICANN2017] ๐
three related DNSSEC KSK rollover exercises were carried out on the Yeti DNS testbed, somewhat concurrent with the planning and execution of the rollover in the root zone ๐ข. brief descriptions of these exercises are included below ๐
5.3.1. Failure-Case KSK Rollover ๐ฅ
the first KSK rollover executed on the Yeti DNS testbed deliberately ignored the 30-day hold-down timer specified in [RFC5011] before retiring the outgoing KSK ๐
it was confirmed that clients of some (but not all) validating Yeti resolvers experienced resolution failures (received SERVFAIL responses) after this change ๐ญ. those resolvers needed administrator intervention to install a functional trust anchor before resolution was restored ๐จ
5.3.2. KSK Rollover vs. BIND9 Views ๐งฉ
the second Yeti KSK rollover was designed with similar phases to ICANN's KSK rollover, although with modified timings to cut down the time needed to complete the process โฑ๏ธ. the "slot" used in this rollover was ten days long, like this:
+-----------------+----------------+----------+
| | Old Key: 19444 | New Key |
+-----------------+----------------+----------+
| slot 1 | pub+sign | |
| slot 2, 3, 4, 5 | pub+sign | pub |
| slot 6, 7 | pub | pub+sign |
| slot 8 | revoke | pub+sign |
| slot 9 | | pub+sign |
+-----------------+----------------+----------+
during this rollover exercise, a problem was observed on one Yeti resolver running BIND 9.10.4-p2 [KROLL-ISSUE] ๐. that resolver was configured with multiple views serving clients in different subnets when the KSK rollover began. DNSSEC validation failures showed up after the KSK rollover completed, and they were triggered by adding a new view that was meant to serve clients from a new subnet ๐ฉ
BIND 9.10 requires "managed-keys" configuration to be specified in every view ๐. this detail wasn't apparently obvious to the operator in this case, and the Internet Systems Consortium (ISC) later highlighted it in their general advice about KSK rollover in the root zone for BIND 9 users [ISC-BIND] ๐ฃ. when the "managed-keys" configuration is present in every view that is configured to perform validation, trust anchors for all views get updated during a KSK rollover ๐๐ซถ
5.3.3. Large Responses during KSK Rollover โจ
Okay so a KSK rollover necessarily means publishing the outgoing and incoming public keys at the same time, which means DNSKEY responses are expected to get bigger ๐๐ . The third KSK rollover on the Yeti DNS testbed came with a whole coordinated effort to watch response sizes and see how they affected end-users ๐.
Remember Section 4.2.2? In the Yeti DNS testbed, each DM can keep control of its own set of ZSKs, and those can roll over independently ๐ฆ. So if all three DMs rolled their ZSKs at once during a KSK rollover, the maximum number of apex DNSKEY RRs present would be eight (incoming and outgoing KSK, plus incoming and outgoing of each of three ZSKs) ๐ญ. Lowkey wild. BUT in practice that concurrency never happened. Only the BII ZSK got rolled during the KSK rollover, so only three DNSKEY RRset configurations were observed ๐:
- 3 ZSKs and 2 KSKs, DNSKEY response of 1975 octets;
- 3 ZSKs and 1 KSK, DNSKEY response of 1414 octets; and
- 2 ZSKs and 1 KSK, DNSKEY response of 1139 octets.
RIPE Atlas probes were used as described in Section 5.1.1 to send DNSKEY queries directly to Yeti-Root servers ๐ฐ๏ธ. The numbers of queries and failures were recorded and sorted by response size at the time each query was sent. Here's the tea from [YetiLR] โ:
+---------------+----------+---------------+--------------+
| Response Size | Failures | Total Queries | Failure Rate |
+---------------+----------+---------------+--------------+
| 1139 | 274 | 64252 | 0.0042 |
| 1414 | 3141 | 126951 | 0.0247 |
| 1975 | 2920 | 42529 | 0.0687 |
+---------------+----------+---------------+--------------+
The general approach shown here is a great example of how the Yeti DNS testbed is designed ๐ง. It's separate from the Root Server system but built as a live testbed on the Internet, which makes it easy to use general-purpose active measurement tools (like RIPE Atlas probes) as well as internal passive measurement (like packet capture) ๐.
5.4. Capture of Large DNS Response
Packet capture is a common approach in production DNS systems, where operators need fine-grained insight into traffic so they can understand what production traffic is actually doing ๐. For authoritative servers, capturing inbound query traffic is often enough, since responses can be synthesized using knowledge of the zones being served when the query came in. Queries are generally small enough not to get fragmented, and even over TCP they usually fit in a single segment ๐ธ.
The Yeti DNS testbed has different requirements ๐. In particular, there's a desire to compare responses from the Yeti infrastructure with those received from the Root Server system for a single query stream (e.g., using the "Yeti Many Mirror Verifier" (YmmV) described in Appendix D). Some Yeti-Root servers could recover complete DNS messages from inside nameservers, e.g., using dnstap. However, not all servers offered that, and a consistent approach was desirable ๐ .
The need to passively capture responses from the wire, together with experiments that were expected (and in some cases designed) to trigger fragmentation and TCP transport, led to a brand-new tool called PcapParser ๐ ๏ธ. It performs fragment and TCP stream reassembly from raw packet capture data. A brief description of PcapParser is included in Appendix D โจ.
5.5. Automated Maintenance of the Hints File
Renumbering events in the Root Server system are relatively rare ๐. Each one comes with an updated hints file published in standard locations, but updating the local copies that DNS resolvers use is a manual job, and the process has an observably long tail ๐ฉ. For example, in 2015 J-Root was still receiving traffic at its old address some thirteen years after renumbering [Wessels2015].
The observed impact of these old, deployed hints files is minimal, likely because such renumbering events are very infrequent ๐คทโโ๏ธ. Even the oldest hints files still contain some accurate root server addresses from which priming responses can be obtained.
Yeti-Root servers are a different story ๐งช. Because the system is experimental and mainly operated by volunteers, Yeti-Root servers are added, removed, and renumbered much more often. So a tool to automatically maintain hints files was created: [hintUpdate] ๐ซถ.
The automated procedure followed by the hintUpdate tool goes like this ๐:
- Use the local resolver to obtain a response to the query
./IN/NS. - Use the local resolver to obtain a set of IPv4 and IPv6 addresses for each name server.
- Validate all signatures obtained from the local resolvers and confirm that all data is signed.
- Compare the data obtained to that contained within the currently active hints file; if there are differences, rotate the old one away and replace it with a new one.
This tool would not work unmodified in the Root Server system, since the names of individual Root Servers (e.g., A.ROOT-SERVERS.NET) are not DNSSEC signed ๐ฌ. All Yeti-Root server names are DNSSEC signed, though, so this tool works as expected in that environment ๐.
5.6. Root Label Compression in Knot DNS Server
[RFC1035] specifies that domain names can be compressed when encoded in DNS messages, and can be represented as one of ๐งฉ:
- a sequence of labels ending in a zero octet;
- a pointer; or
- a sequence of labels ending with a pointer.
The whole point of this flexibility is to reduce the size of domain names encoded in DNS messages ๐.
Now the drama ๐ฟ. It was observed that Yeti-Root servers running Knot 2.0 would compress the zero-length label (the root domain, often written as .) using a pointer to an earlier example. Although legal, this encoding increases the encoded size of the root label from one octet to two ๐ญ. It was also found to break some client software, in particular the Go DNS library ๐. Bug reports were filed against both Knot and the Go DNS library, and both were resolved in subsequent releases ๐.
6. Conclusions โจ
okay so Yeti DNS was designed and built as a live DNS root system testbed ๐งช. It serves a root zone ("Yeti-Root" in this document) that's derived from the root zone published by the IANA, with only those structural tweaks needed to make it work in the testbed system ๐ . And honestly? It's been a super useful platform for answering questions that would be really hard to answer with the production Root Server system, like the ones in Section 3 ๐ค๐ซถ.
Here are the indicative findings from building and running Yeti DNS:
- Operation in a pure IPv6-only environment ๐. We confirmed a significant failure rate in transmitting large responses (~7%) ๐ญ, but no other persistent failures were observed. There were two cases where Yeti-Root servers failed to retrieve the Yeti-Root zone because of fragmentation of TCP segments. This got mitigated by setting a TCP MSS of 1220 octets (see Section 5.1.1) ๐.
- Successful operation with three autonomous Yeti-Root zone signers and 25 Yeti-Root servers โจ. We also confirmed that IXFR is not an appropriate transfer mechanism for zones that are structurally incongruent across different transfer paths (see Section 5.2) ๐.
- ZSK size increased to 2048 bits, and multiple KSK rollovers were executed to exercise support of RFC 5011 in validating resolvers ๐. We also identified pitfalls relating to views in BIND9 when configured with "managed-keys" (see Section 5.3) ๐ซฃ.
- Using natural (non-normalized) names for Yeti-Root servers exposed some differences between implementations in whether additional-section glue gets included in responses to priming queries ๐. Still, despite this inefficiency, Yeti resolvers were observed to function adequately (see Section 4.5) ๐.
- Knot 2.0 was observed to perform label compression on the root (empty) label ๐. That increased the encoding size for references to the root label, since a pointer is encoded as two octets whilst the root label itself only requires one (see Section 5.6) ๐.
- Some tools got developed from the operational experience of running and using the Yeti DNS testbed ๐ ๏ธ: DNS fragment and DNS Additional Truncated Response (ATR) for large DNS responses, a BIND9 patch for additional-section glue, YmmV, and IPv6 defrag for capturing and mirroring traffic. On top of that, a tool to facilitate automatic maintenance of hints files was created (see Appendix D) ๐ง.
The Yeti DNS testbed was only used by end-users whose local infrastructure providers had made the conscious decision to use it, which is exactly what you want for an experimental, non-production system ๐งช. So far, no serious user complaints have reached Yeti's mailing list during normal Yeti operation ๐ฅน. Adding more instances into the Yeti root system may help improve the quality of service, but it's generally accepted that Yeti DNS performance is good enough to serve the purpose of a DNS Root testbed ๐.
The experience gained during operation suggested several topics worthy of further study ๐:
- Priming truncation and TCP-only Yeti-Root servers. The idea is to observe and measure the worst-possible case for priming truncation by responding with
TC=1to all priming queries received over UDP transport, forcing clients to retry using TCP ๐. This should also give some insight into the usefulness of TCP-only DNS in general. - KSK ECDSA Rollover. One possible way to reduce DNSKEY response sizes is to change to an elliptic curve signing algorithm ๐งฎ. While in principle this can be done separately for the KSK and the ZSK, the RIPE NCC has done recent research and discovered that some resolvers require both KSK and ZSK to use the same algorithm. That means an algorithm roll also involves a KSK roll. Performing an algorithm roll at the root would be an interesting challenge ๐๏ธ.
- Sticky Notify for zone transfer. The non-applicability of IXFR as a zone transfer mechanism in the Yeti DNS testbed could be mitigated by implementing a sticky preference for master server for each slave ๐. That way, an initial AXFR response could be followed up with IXFR requests without compromising zone integrity, even in the case (as with Yeti) where equivalent but incongruent versions of a zone are served by different masters.
- Key distribution for zone transfer credentials. Using a shared secret between slave and master requires key distribution and management, and its scaling properties aren't ideally suited to systems with large numbers of transfer clients ๐. Other approaches for key distribution and authentication could be considered.
- DNS is a tree-based hierarchical database ๐ณ. Mathematically, it has a root node and a dependency between parent and child nodes. So any failures and instability of parent nodes (Root in Yeti's case) may impact their child nodes, whether that's from a human mistake, a malicious attack, or even an earthquake ๐. It is proposed to define technology and practices that allow any organization, from the smallest company to nations, to be self-sufficient in their DNS ๐ฝ.
- In Section 3.12 of [RFC8324], a "Centrally Controlled Root" is viewed as an issue of DNS ๐๏ธ. In future work, it would be interesting to test some technical tools like blockchain [BC] to either remove the technical requirement for a central authority over the root, or to enhance the security and stability of the existing Root โ๏ธ.
7. Security Considerations
Security is a big deal here, so buckle up ๐ญ๐. As introduced in Section 4.4, service metadata is synchronized among 3 DMs using the Git tool. Any security issue around Git may affect Yeti DM operation. For example, a hacker may compromise one DM's Git repository and push unwanted changes to the Yeti DM system. That could introduce a bad root server or a bad key for a period of time ๐จ.
The Yeti resolver needs bootstrapping files to join the testbed, like the hints file and the trust anchor of Yeti ๐งท. All of the required information is published on <yeti-dns.org> and <github.com>. If a hacker tampers with those websites by creating a fake page, a new resolver may lose its way and get configured with a bad root ๐.
DNSSEC is an important research goal in the Yeti DNS testbed ๐. To reduce the central function of DNSSEC for the Root zone, we sign the Yeti-Root zone using multiple, independently operated DNSSEC signers and multiple corresponding ZSKs (see Section 4.2) ๐งโ๐คโ๐ง. To verify ICANN's KSK rollover, we rolled the Yeti KSK three times according to RFC 5011, and we do have some observations (see Section 5.3) ๐. In addition, larger RSA key sizes were used in the testbed before 2048-bit keys were used in the ZSK signing process of the IANA Root zone ๐๏ธ.
8. IANA Considerations
Good news, bestie: this document has no IANA actions ๐๐ .
9. References ๐
9.1. Normative References
- [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<https://www.rfc-editor.org/info/rfc1034>. - [RFC1035] Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, November 1987,
<https://www.rfc-editor.org/info/rfc1035>. - [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, DOI 10.17487/RFC1995, August 1996,
<https://www.rfc-editor.org/info/rfc1995>. - [RFC1996] Vixie, P., "A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)", RFC 1996, DOI 10.17487/RFC1996, August 1996,
<https://www.rfc-editor.org/info/rfc1996>. - [RFC5011] StJohns, M., "Automated Updates of DNS Security (DNSSEC) Trust Anchors", STD 74, RFC 5011, DOI 10.17487/RFC5011, September 2007,
<https://www.rfc-editor.org/info/rfc5011>. - [RFC5890] Klensin, J., "Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework", RFC 5890, DOI 10.17487/RFC5890, August 2010,
<https://www.rfc-editor.org/info/rfc5890>.
9.2. Informative References ๐
okay bestie, this is the reading list ๐ค these aren't required to implement anything, they're just the receipts and background sources the doc leans on ๐
- [ATR] Song, L., "ATR: Additional Truncation Response for Large DNS Response", Work in Progress, draft-song-atr-large-resp-02, August 2018.
- [BC] Wikipedia, "Blockchain", September 2018, <https://en.wikipedia.org/w/index.php?title=Blockchain&oldid=861681529>.
- [FRAGDROP] Jaeggli, J., Colitti, L., Kumari, W., Vyncke, E., Kaeo, M., and T. Taylor, "Why Operators Filter Fragments and What It Implies", Work in Progress, draft-taylor-v6ops-fragdrop-02, December 2013.
- [FRAGMENTS] Sivaraman, M., Kerr, S., and D. Song, "DNS message fragments", Work in Progress, draft-muks-dns-message-fragments-00, July 2015.
- [hintUpdate] "Hintfile Auto Update", commit de428c0, October 2015, <https://github.com/BII-Lab/Hintfile-Auto-Update>.
- [HOW_ATR_WORKS] Huston, G., "How well does ATR actually work?", APNIC blog, April 2018, <https://blog.apnic.net/2018/04/16/how-well-does-atr-actually-work/>.
- [ICANN2010] Schlyter, J., Lamb, R., and R. Balasubramanian, "DNSSEC Key Management Implementation for the Root Zone (DRAFT)", May 2010, <http://www.root-dnssec.org/wp-content/uploads/2010/05/draft-icann-dnssec-keymgmt-01.txt>.
- [ICANN2016] Design Team, "Root Zone KSK Rollover Plan", March 2016, <https://www.iana.org/reports/2016/root-ksk-rollover-design-20160307.pdf>.
- [ICANN2017] ICANN, "2017 KSK Rollover External Test Plan", July 2016, <https://www.icann.org/en/system/files/files/ksk-rollover-external-test-plan-22jul16-en.pdf>.
- [IPv6-frag-DNS] Huston, G., "Dealing with IPv6 fragmentation in the DNS", APNIC blog, August 2017, <https://blog.apnic.net/2017/08/22/dealing-ipv6-fragmentation-dns>.
- [ISC-BIND] Risk, V., "2017 Root Key Rollover - What Does it Mean for BIND Users?", Internet Systems Consortium, December 2016, <https://www.isc.org/blogs/2017-root-key-rollover-what-does-it-mean-for-bind-users/>.
- [ISC-TN-2003-1] Abley, J., "Hierarchical Anycast for Global Service Distribution", March 2003, <http://ftp.isc.org/isc/pubs/tn/isc-tn-2003-1.txt>.
- [ITI2014] ICANN, "Identifier Technology Innovation Report", May 2014, <https://www.icann.org/en/system/files/files/iti-report-15may14-en.pdf>.
- [KROLL-ISSUE] Song, D., "A DNSSEC issue during Yeti KSK rollover", Yeti DNS blog, October 2016, <http://yeti-dns.org/yeti/blog/2016/10/26/A-DNSSEC-issue-during-Yeti-KSK-rollover.html>.
- [PINZ] Song, D., "Yeti experiment plan for PINZ", Yeti DNS blog, May 2018, <http://yeti-dns.org/yeti/blog/2018/05/01/Experiment-plan-for-PINZ.html>.
- [RFC2826] Internet Architecture Board, "IAB Technical Comment on the Unique DNS Root", RFC 2826, DOI 10.17487/RFC2826, May 2000, <https://www.rfc-editor.org/info/rfc2826>.
- [RFC2845] Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B. Wellington, "Secret Key Transaction Authentication for DNS (TSIG)", RFC 2845, DOI 10.17487/RFC2845, May 2000, <https://www.rfc-editor.org/info/rfc2845>.
- [RFC6219] Li, X., Bao, C., Chen, M., Zhang, H., and J. Wu, "The China Education and Research Network (CERNET) IVI Translation Design and Deployment for the IPv4/IPv6 Coexistence and Transition", RFC 6219, DOI 10.17487/RFC6219, May 2011, <https://www.rfc-editor.org/info/rfc6219>.
- [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms for DNS (EDNS(0))", STD 75, RFC 6891, DOI 10.17487/RFC6891, April 2013, <https://www.rfc-editor.org/info/rfc6891>.
- [RFC7720] Blanchet, M. and L-J. Liman, "DNS Root Name Service Protocol and Deployment Requirements", BCP 40, RFC 7720, DOI 10.17487/RFC7720, December 2015, <https://www.rfc-editor.org/info/rfc7720>.
- [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, "Observations on the Dropping of Packets with IPv6 Extension Headers in the Real World", RFC 7872, DOI 10.17487/RFC7872, June 2016, <https://www.rfc-editor.org/info/rfc7872>.
- [RFC8109] Koch, P., Larson, M., and P. Hoffman, "Initializing a DNS Resolver with Priming Queries", BCP 209, RFC 8109, DOI 10.17487/RFC8109, March 2017, <https://www.rfc-editor.org/info/rfc8109>.
- [RFC8324] Klensin, J., "DNS Privacy, Authorization, Special Uses, Encoding, Characters, Matching, and Root Structure: Time for Another Look?", RFC 8324, DOI 10.17487/RFC8324, February 2018, <https://www.rfc-editor.org/info/rfc8324>.
- [RRL] Vixie, P. and V. Schryver, "Response Rate Limiting in the Domain Name System (DNS RRL)", June 2012, <http://www.redbarn.org/dns/ratelimits>.
- [RSSAC001] Root Server System Advisory Committee (RSSAC), "Service Expectations of Root Servers", RSSAC001 Version 1, December 2015, <https://www.icann.org/en/system/files/files/rssac-001-root-service-expectations-04dec15-en.pdf>.
- [RSSAC023] Root Server System Advisory Committee (RSSAC), "History of the Root Server System", November 2016, <https://www.icann.org/en/system/files/files/rssac-023-04nov16-en.pdf>.
- [SUNSET4] IETF, "Sunsetting IPv4 (sunset4) Concluded WG", <https://datatracker.ietf.org/wg/sunset4/about/>.
- [TNO2009] Gijsen, B., Jamakovic, A., and F. Roijers, "Root Scaling Study: Description of the DNS Root Scaling Model", TNO report, September 2009, <https://www.icann.org/en/system/files/files/root-scaling-model-description-29sep09-en.pdf>.
- [USE_MIN_MTU] Andrews, M., "TCP Fails To Respect IPV6_USE_MIN_MTU", Work in Progress, draft-andrews-tcp-and-ipv6-use-minmtu-04, October 2015.
- [Wessels2015] Wessels, D., Castonguay, J., and P. Barber, "Thirteen Years of 'Old J-Root'", DNS-OARC Fall 2015 Workshop, October 2015, <https://indico.dns-oarc.net/event/24/session/10/contribution/10/material/slides/0.pdf>.
- [YetiLR] "Observation on Large response issue during Yeti KSK rollover", Yeti DNS blog, August 2017, <https://yeti-dns.org/yeti/blog/2017/08/02/large-packet-impact-during-yeti-ksk-rollover.html>.
Appendix A. Yeti-Root Hints File ๐ง
this hints file is the main character here โจ it's complete and accurate as of when it was written ๐ and if a resolver uses it, it gets pointed at the Yeti DNS testbed instead of the real production Root Server system, so it can join in on experiments running on the testbed ๐งช
heads up: some lines got wrapped below so they fit the page ๐ wrapped lines are marked with a backslash ("") at the end, which is the usual convention ๐
. 3600000 IN NS bii.dns-lab.net
bii.dns-lab.net 3600000 IN AAAA 240c:f:1:22::6
. 3600000 IN NS yeti-ns.tisf.net
yeti-ns.tisf.net 3600000 IN AAAA 2001:559:8000::6
. 3600000 IN NS yeti-ns.wide.ad.jp
yeti-ns.wide.ad.jp 3600000 IN AAAA 2001:200:1d9::35
. 3600000 IN NS yeti-ns.as59715.net
yeti-ns.as59715.net 3600000 IN AAAA \
2a02:cdc5:9715:0:185:5:203:53
. 3600000 IN NS dahu1.yeti.eu.org
dahu1.yeti.eu.org 3600000 IN AAAA \
2001:4b98:dc2:45:216:3eff:fe4b:8c5b
. 3600000 IN NS ns-yeti.bondis.org
ns-yeti.bondis.org 3600000 IN AAAA 2a02:2810:0:405::250
. 3600000 IN NS yeti-ns.ix.ru
yeti-ns.ix.ru 3600000 IN AAAA 2001:6d0:6d06::53
. 3600000 IN NS yeti.bofh.priv.at
yeti.bofh.priv.at 3600000 IN AAAA 2a01:4f8:161:6106:1::10
. 3600000 IN NS yeti.ipv6.ernet.in
yeti.ipv6.ernet.in 3600000 IN AAAA 2001:e30:1c1e:1::333
. 3600000 IN NS yeti-dns01.dnsworkshop.org
yeti-dns01.dnsworkshop.org \
3600000 IN AAAA 2001:1608:10:167:32e::53
. 3600000 IN NS yeti-ns.conit.co
yeti-ns.conit.co 3600000 IN AAAA \
2604:6600:2000:11::4854:a010
. 3600000 IN NS dahu2.yeti.eu.org
dahu2.yeti.eu.org 3600000 IN AAAA 2001:67c:217c:6::2
. 3600000 IN NS yeti.aquaray.com
yeti.aquaray.com 3600000 IN AAAA 2a02:ec0:200::1
. 3600000 IN NS yeti-ns.switch.ch
yeti-ns.switch.ch 3600000 IN AAAA 2001:620:0:ff::29
. 3600000 IN NS yeti-ns.lab.nic.cl
yeti-ns.lab.nic.cl 3600000 IN AAAA 2001:1398:1:21::8001
. 3600000 IN NS yeti-ns1.dns-lab.net
yeti-ns1.dns-lab.net 3600000 IN AAAA 2001:da8:a3:a027::6
. 3600000 IN NS yeti-ns2.dns-lab.net
yeti-ns2.dns-lab.net 3600000 IN AAAA 2001:da8:268:4200::6
. 3600000 IN NS yeti-ns3.dns-lab.net
yeti-ns3.dns-lab.net 3600000 IN AAAA 2400:a980:30ff::6
. 3600000 IN NS \
ca978112ca1bbdcafac231b39a23dc.yeti-dns.net
ca978112ca1bbdcafac231b39a23dc.yeti-dns.net \
3600000 IN AAAA 2c0f:f530::6
. 3600000 IN NS \
3e23e8160039594a33894f6564e1b1.yeti-dns.net
3e23e8160039594a33894f6564e1b1.yeti-dns.net \
3600000 IN AAAA 2803:80:1004:63::1
. 3600000 IN NS \
3f79bb7b435b05321651daefd374cd.yeti-dns.net
3f79bb7b435b05321651daefd374cd.yeti-dns.net \
3600000 IN AAAA 2401:c900:1401:3b:c::6
. 3600000 IN NS \
xn--r2bi1c.xn--h2bv6c0a.xn--h2brj9c
xn--r2bi1c.xn--h2bv6c0a.xn--h2brj9c \
3600000 IN AAAA 2001:e30:1c1e:10::333
. 3600000 IN NS yeti1.ipv6.ernet.in
yeti1.ipv6.ernet.in 3600000 IN AAAA 2001:e30:187d::333
. 3600000 IN NS yeti-dns02.dnsworkshop.org
yeti-dns02.dnsworkshop.org \
3600000 IN AAAA 2001:19f0:0:1133::53
. 3600000 IN NS yeti.mind-dns.nl
yeti.mind-dns.nl 3600000 IN AAAA 2a02:990:100:b01::53:0
Appendix B. Yeti-Root Server Priming Response ๐
okay so this is the actual reply a Yeti root name server gives to a priming request ๐ง the authoritative server here runs NSD, so you're seeing its real output, no edits ๐
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62391
;; flags: qr aa rd; QUERY: 1, ANSWER: 26, AUTHORITY: 0, ADDITIONAL: 7
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1460
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 86400 IN NS bii.dns-lab.net.
. 86400 IN NS yeti.bofh.priv.at.
. 86400 IN NS yeti.ipv6.ernet.in.
. 86400 IN NS yeti.aquaray.com.
. 86400 IN NS yeti.jhcloos.net.
. 86400 IN NS yeti.mind-dns.nl.
. 86400 IN NS dahu1.yeti.eu.org.
. 86400 IN NS dahu2.yeti.eu.org.
. 86400 IN NS yeti1.ipv6.ernet.in.
. 86400 IN NS ns-yeti.bondis.org.
. 86400 IN NS yeti-ns.ix.ru.
. 86400 IN NS yeti-ns.lab.nic.cl.
. 86400 IN NS yeti-ns.tisf.net.
. 86400 IN NS yeti-ns.wide.ad.jp.
. 86400 IN NS yeti-ns.datev.net.
. 86400 IN NS yeti-ns.switch.ch.
. 86400 IN NS yeti-ns.as59715.net.
. 86400 IN NS yeti-ns1.dns-lab.net.
. 86400 IN NS yeti-ns2.dns-lab.net.
. 86400 IN NS yeti-ns3.dns-lab.net.
. 86400 IN NS xn--r2bi1c.xn--h2bv6c0a.xn--h2brj9c.
. 86400 IN NS yeti-dns01.dnsworkshop.org.
. 86400 IN NS yeti-dns02.dnsworkshop.org.
. 86400 IN NS 3f79bb7b435b05321651daefd374cd.yeti-dns.net.
. 86400 IN NS ca978112ca1bbdcafac231b39a23dc.yeti-dns.net.
. 86400 IN RRSIG NS 8 0 86400 (
20171121050105 20171114050105 26253 .
FUvezvZgKtlLzQx2WKyg+D6dw/pITcbuZhzStZfg+LNa
DjLJ9oGIBTU1BuqTujKHdxQn0DcdFh9QE68EPs+93bZr
VlplkmObj8f0B7zTQgGWBkI/K4Tn6bZ1I7QJ0Zwnk1mS
BmEPkWmvo0kkaTQbcID+tMTodL6wPAgW1AdwQUInfy21
p+31GGm3+SU6SJsgeHOzPUQW+dUVWmdj6uvWCnUkzW9p
+5en4+85jBfEOf+qiyvaQwUUe98xZ1TOiSwYvk5s/qiv
AMjG6nY+xndwJUwhcJAXBVmGgrtbiR8GiGZfGqt748VX
4esLNtD8vdypucffem6n0T0eV1c+7j/eIA== )
;; ADDITIONAL SECTION:
bii.dns-lab.net. 86400 IN AAAA 240c:f:1:22::6
yeti.bofh.priv.at. 86400 IN AAAA 2a01:4f8:161:6106:1::10
yeti.ipv6.ernet.in. 86400 IN AAAA 2001:e30:1c1e:1::333
yeti.aquaray.com. 86400 IN AAAA 2a02:ec0:200::1
yeti.jhcloos.net. 86400 IN AAAA 2001:19f0:5401:1c3::53
yeti.mind-dns.nl. 86400 IN AAAA 2a02:990:100:b01::53:0
;; Query time: 163 msec
;; SERVER: 2001:4b98:dc2:45:216:3eff:fe4b:8c5b#53
;; WHEN: Tue Nov 14 16:45:37 +08 2017
;; MSG SIZE rcvd: 1222
Appendix C. Active IPv6 Prefixes in Yeti DNS Testbed ๐
this table is the list of IPv6 prefixes that were active during 2017 ๐ฆ bestie, the whole thing is literally a map of who was originating what ๐ญ
+----------------------+---------------------------------+----------+
| Prefix | Originator | Location |
+----------------------+---------------------------------+----------+
| 240c::/28 | BII | CN |
| 2001:6d0:6d06::/48 | MSK-IX | RU |
| 2001:1488::/32 | CZ.NIC | CZ |
| 2001:620::/32 | SWITCH | CH |
| 2001:470::/32 | Hurricane Electric, Inc. | US |
| 2001:0DA8:0202::/48 | BUPT6-CERNET2 | CN |
| 2001:19f0:6c00::/38 | Choopa, LLC | US |
| 2001:da8:205::/48 | BJTU6-CERNET2 | CN |
| 2001:62a::/31 | Vienna University Computer | AT |
| | Center | |
| 2001:67c:217c::/48 | AFNIC | FR |
| 2a02:2478::/32 | Profitbricks GmbH | DE |
| 2001:1398:1::/48 | NIC Chile | CL |
| 2001:4490:dc4c::/46 | NIB (National Internet | IN |
| | Backbone) | |
| 2001:4b98::/32 | Gandi | FR |
| 2a02:aa8:0:2000::/52 | T-Systems-Eltec | ES |
| 2a03:b240::/32 | Netskin GmbH | CH |
| 2801:1a0::/42 | Universidad de Ibague | CO |
| 2a00:1cc8::/40 | ICT Valle Umbra s.r.l. | IT |
| 2a02:cdc0::/29 | ORG-CdSB1-RIPE | IT |
+----------------------+---------------------------------+----------+
Appendix D. Tools Developed for Yeti DNS Testbed ๐ ๏ธ
so the Yeti DNS testbed had a whole toolbox built around it ๐งฐ here are a few of the highlights, described quick and dirty โจ
YmmV ("Yeti Many Mirror Verifier") is built to make life easy and safe for a DNS administrator ๐ it captures traffic sent from a resolver to the Root Server system, then replays it toward Yeti-Root servers. Both sets of responses get recorded and compared, and any differences get logged. See https://github.com/BII-Lab/ymmv.
PcapParser is a module that YmmV uses ๐ it puts back together fragmented IPv6 datagrams and TCP segments from a PCAP archive, then pulls out the DNS messages inside. See https://github.com/RunxiaWan/PcapParser.
DNS-layer-fragmentation has DNS proxies that do application-level fragmentation of DNS messages, based on [FRAGMENTS] ๐ฆ the vibe is exploring how to split DNS messages in the protocol itself, so they won't get fragmented by the IP layer. See https://github.com/BII-Lab/DNS-layer-Fragmentation.
DNS_ATR is an implementation of DNS Additional Truncated Response (ATR), as described in [ATR] and [HOW_ATR_WORKS] ๐ซง it sits between resolver and authoritative servers as a silent, transparent listener, forwarding queries and responses along the way. Responses larger than a nominated threshold (1280 octets by default) set off additional truncated responses sent right after the big one. See https://github.com/songlinjian/DNS_ATR.
Appendix E. Controversy ๐
okay the spicy part ๐ถ๏ธ but let's keep it respectful, it's a real discussion
The Yeti DNS Project, its infrastructure, and the experiments run on that infrastructure have been explained by the people involved in lots of public meetings at technical venues since it started โจ the mailing lists used to coordinate the infrastructure are open to join, and their archives are public. The project as a whole has had robust public discussion, which honestly is giving transparency ๐
Some commentators are worried that the Yeti DNS Project is basically running an alternate root, which goes against the IAB's comments published in [RFC2826] ๐ other alternate roots have been seen to confuse end users and make the DNS namespace unstable, by adding new top-level labels or using top-level labels differently from the Root Server system. The coordinators of the Yeti DNS Project say it's not an alternate root in that sense, since by design the namespace enabled by the Yeti-Root zone is identical to that of the Root Zone ๐
Some commentators are also concerned that the Yeti DNS Project is trying to influence or undermine administrative policy for the Root Server system ๐ฌ they point to DNSSEC trust anchors that the IANA doesn't publish, and to Yeti-Root servers in regions where governments or other organizations have shown interest in running a Root Server. The coordinators say their mandate is entirely technical and has no ambition to influence policy directly ๐ซถ they do hope, though, that the technical findings could be a useful resource for the wider technical community ๐ธ
Acknowledgments ๐ซถ
first things first, the authors want to thank everyone who donated their time and resources to implementing and operating the Yeti DNS ๐ฅน they are:
Tomohiro Ishihara, Antonio Prado, Stephane Bortzmeyer, Mickael
Jouanne, Pierre Beyssac, Joao Damas, Pavel Khramtsov, Dmitry
Burkov, Dima Burkov, Kovalenko Dmitry, Otmar Lendl, Praveen Misra,
Carsten Strotmann, Edwin Gomez, Daniel Stirnimann, Andreas
Schulze, Remi Gacogne, Guillaume de Lafond, Yves Bovard, Hugo
Salgado, Kees Monshouwer, Li Zhen, Daobiao Gong, Andreas Schulze,
James Cloos, and Runxia Wan.
thanks also to everyone who gave important advice and comments to Yeti, whether in face-to-face meetings or virtually by phone or mailing list ๐ some of those people are:
Wu Hequan, Zhou Hongren, Cheng Yunqing, Xia Chongfeng, Tang
Xiongyan, Li Yuxiao, Feng Ming, Zhang Tongxu, Duan Xiaodong, Wang
Yang, Wang JiYe, Wang Lei, Zhao Zhifeng, Chen Wei, Wang Wei, Wang
Jilong, Du Yuejing, Tan XiaoSheng, Chen Shangyi, Huang Chenqing,
Ma Yan, Li Xing, Cui Yong, Bi Jun, Duan Haixing, Marc Blanchet,
Andrew Sullivan, Suzanne Wolf, Terry Manderson, Geoff Huston, Jaap
Akkerhuis, Kaveh Ranjbar, Jun Murai, Paul Wilson, and Kilnam
Chonm.
The authors also thank the Independent Submissions Editorial Board, and these reviewers, whose opinions helped make the document clearer ๐
Joe Abley, Paul Mockapetris, and Subramanian Moonesamy.
Authors' Addresses ๐
here are the authors and how to reach them ๐ฌ
Linjian Song (editor)
Beijing Internet Institute
2nd Floor, Building 5, No.58 Jing Hai Wu Lu, BDA
Beijing 100176
China
Email: songlinjian@gmail.com
URI: http://www.biigroup.com/
Dong Liu
Beijing Internet Institute
2nd Floor, Building 5, No.58 Jing Hai Wu Lu, BDA
Beijing 100176
China
Email: dliu@biigroup.com
URI: http://www.biigroup.com/
Paul Vixie
TISF
11400 La Honda Road
Woodside, California 94062
United States of America
Email: vixie@tisf.net
URI: http://www.redbarn.org/
Akira Kato
Keio University/WIDE Project
Graduate School of Media Design, 4-1-1 Hiyoshi, Kohoku
Yokohama 223-8526
Japan
Email: kato@wide.ad.jp
URI: http://www.kmd.keio.ac.jp/
Shane Kerr
Antoon Coolenlaan 41
Uithoorn 1422 GN
The Netherlands
Email: shane@time-travellers.org
๐ฆ where this page comes from
- ietf: rfc8483 2018-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms