Subject: Re: [DNSOP] Status of draft-ietf-dnsop-terminology-bis

From: Stuart Cheshire <[email-masked]>
Date: Fri, 06 Apr 2018 22:07:14 -0700

On 5 Mar 2018, at 08:14, Paul Hoffman <[email-masked]> wrote:

> Greetings. As you can see, draft-ietf-dnsop-terminology-bis-09.txt is out. Reading the diff might be a bit difficult because of the reorganization of some sections that y'all asked for, but I think the result is worth the extra effort.
> 
> We're still not done yet. I took a hiatus from finishing the list of definitions that people wanted more scrutiny on, but will start that again soon. I hope we'll be done with that list by mid-April and then be ready for WG last call.
> 
> As a side note, some of the changes in this version came from people reading the document fresh. I encourage folks who were maybe waiting for WG Last Call to do a first deep reading of the document to instead do so now. The work that everyone is doing on this document will go a long way to making the final RFC more valuable for lots of folks entering the field.

I’ve reviewed this, and I think it is a very useful document.

Here are my suggestions, which I hope will help.

My main suggestion is to recommend that people always avoid using the term “DNS server” or “name server”, since there are two very different kinds of “DNS server” or “name server”. Instead, people should diligently use the terms “authoritative server”, and “recursive resolver” to indicate which kind they are talking about. They have very different rôles, despite the fact that both can often be done with the same software package.

In your definition of “recursive resolver” I’d also include a note that this is a misnomer. It’s not recursive, in the classic computer science use of that term. A true “recursive resolver” would be one that forwarded its query to a different “recursive resolver”, and so on, until some terminating condition. That’s recursion in the classic computer science sense. Actually, a DNS “recursive resolver” is one that performs iterative resolution on behalf of the requester. The Recursion Desired (RD) bit might have been better specified as the Iteration Desired (ID) bit. I realize that’s not going to change, but we should document that dubious use of the term “recursive”.

In the abstract, expand the first mention of DNS:

   The Domain Name System (DNS) is defined in literally dozens of different RFCs.

In this text:

   Naming system:  A naming system associates names with data.  Naming
      systems have many significant facets that help differentiate them.
      Some commonly-identified facets include:
      *  Composition of names

I don’t know what “Composition of names” means in this context.

   Label:  An ordered list of zero or more octets and which makes up a
      portion of a domain name.  Using graph theory, a label identifies
      one node in a portion of the graph of all possible domain names.

A label alone does not uniquely identify a node in the graph. A label identifies one specific *child* node of the parent at that point in the graph.

      A domain name in the global DNS has a maximum total
      length of 255 octets in the wire format; the root represents one
      octet for this calculation.

Include a reference to Appendix C of RFC 6762 which discusses this topic: <https://tools.ietf.org/html/rfc6762#appendix-C>

You may conclude that the assessment in RFC 6762 was wrong, but if so, the terminology document should say so explicitly, rather than just ignoring RFC 6762.

      in both English and C the first label in the ordered list is
      right-most; but in Arabic it may be left-most

It’s not clear what “first” means here. Maybe write “root label” or “TLD” instead?

      Note that any label in a
      domain name can contain any octet value; hostnames are generally
      considered to be domain names where every label follows the rules
      in the "preferred name syntax", with the amendment that labels can
      start with ASCII digits (this amendment comes from Section 2.1 of
      [RFC1123]).

This might be a good point to describe the "preferred name syntax" of letters, digits and hyphens.

   Canonical name:  A CNAME resource record "identifies its owner name
      as an alias, and specifies the corresponding canonical name in the
      RDATA section of the RR."

This might be a good point to introduce the concept of a CNAME chain. The intention of a CNAME resource record is to give the canonical name, but the purported “canonical name” may itself be an alias of some other “canonical name”.

   Public suffix:  "A domain that is controlled by a public registry."
      (Quoted from [RFC6265], Section 5.3) A common definition for this
      term is a domain under which subdomains can be registered

I would say: “a domain under which subdomains can be registered by third parties”.

Any domain can have subdomains registered. It’s the third-party aspect that makes a public registry different.

      If
      a name server does not find an RRset that matches a query, but it
      finds the same name in the same class with a CNAME record, then
      the name server "includes the CNAME record in the response and
      restarts the query at the domain name specified in the data field
      of the CNAME record.

I think this is an example of where “name server” means “recursive resolver”.

   3.  DNS Response Codes

This lists NOERROR, FORMERR, SERVFAIL, etc. What about NOTAUTH?

   RRset:  A set of resource records with the same label, class and
      type, but with different data.

I think this should say: A set of resource records with the same owner name...

Why state a wrong definition (saying “label”), and then add a clarification correcting it?

      Similarly, an imputed definition
      of "resolution" might be "the answer received from resolving".

I would add that "resolution" might mean “the act of resolving”.

      While strictly
      the difference between these is that one of them sends queries to
      another recursive server and the other does not

One of them? One of what? Which one sends queries to another recursive server, and which does not?

   Full resolver:  This term is used in [RFC1035], but it is not defined
      there.  RFC 1123 defines a "full-service resolver" that may or may
      not be what was intended by "full resolver" in [RFC1035].  This
      term is not properly defined in any RFC.

So? What do we conclude from this?

   Recursive query:  A query with the Recursion Desired (RD) bit set to
      1 in the header.(See Section 4.1.1 of [RFC1035].)

Missing space.

   Iterative query:  Synonym for non-recursive query that happens to be
      a query in a series of recursive queries

I think you need to delete the word “recursive” here. “series of recursive queries” should just be “series of queries”

      the first server pursues the query for the client

I would say, “the first server pursues the query on behalf of the client”

      Note that it is
      possible for an authoritative server to respond to a query without
      the parent zone delegating authority to that server.

Can you elaborate how?

   Hidden master:  A stealth server that is a primary server for zone
      transfers.  "In this arrangement, the master name server that
      processes the updates is unavailable to general hosts on the
      Internet; it is not listed in the NS RRset."

The mention of “updates” here appears out of the blue. Can you elaborate?

      A hidden master can also be a secondary server itself.

I would say, “A hidden master for a zone can also be a secondary server for that zone itself.”

   Forwarding:  The process of one server sending a DNS query with the
      RD bit set to 1 to another server to resolve that query.

How about, “The process of one server sending a DNS query with the RD bit set to 1 to another recursive resolver to resolve that query.”

      That definition appears to suggest that forwarders
      normally only query authoritative servers.

I would say, “normally only query authoritative servers, which would make them recursive resolvers.”

   Anycast:  "The practice of making a particular service address
      available in multiple, discrete, autonomous locations, such that
      datagrams sent are routed to one of several available locations."
      (Quoted from [RFC4786], Section 2)

State that anycast means that the same IP address routes to different locations.

   Instance:  "When anycast routing is used...

Instead of “Instance” I would say, “Anycast Instance”

   Split DNS:  "Where a corporate network serves up partly or completely
      different DNS inside and outside its firewall.

I would say, “different DNS *views* inside and outside its firewall”.

      *  In-domain: an adjective to describe a name server whose name is
         either subordinate to...

I would say, “whose name is either a subdomain of...”

      *  Sibling domain: a name server's name that is either subordinate
         to or (rarely) the same as the zone origin and not subordinate
         to or the same as the owner name of the NS resource records.

I found this confusing. How about:

      *  Sibling domain: a name server's name that is either a subdomain of
         or (rarely) the same as the *parent* zone origin and not a subdomain of
         or the same as the owner name of the *child* NS resource records.

And here:

      "Out-of-bailiwick" is the antonym of in-bailiwick.  An adjective
      to describe a name server whose name is not subordinate to or the
      same as the zone origin.

Does this mean “a name server whose name is not a subdomain of or the same as the *parent* zone origin”?

      Glue records for out-of-bailiwick name servers are useless.

I would add: “... are useless, and possibly fraudulent.”

      It is noted that this definition might
      inadvertently also include any NS records that appear in the zone

What does “inadvertently” mean? Inadvertently how?

   Closest provable encloser:  "The longest ancestor of a name that can
      be proven to exist.  Note that this is only different from the

Would it be informative to say, “that can be *cryptographically* proven to exist” ?

   Fast flux DNS: ... It is often used to deliver malware.

Is this the whole story? I think short TTLs are also used to achive load balancing. The name “www.google.com” has a short TTL, but that’s not so that it can deliver malware.

   Reverse DNS, reverse lookup:  "The process of mapping an address to a

I would add that this is *not* IQUERY.

      During 2000, the abbreviation was
      redesignated to 'Address and Routing Parameter Area' in the hope
      of reducing confusion with the earlier network name."

This is mysterious and unenlightening. Please state what the earlier network name was.

Please say, “the abbreviation was redesignated from 'xxxx' to 'Address and Routing Parameter Area'”.

Otherwise, this text is just mysterious and confusing to the reader.

      These terms are strictly ways of referring to the
      relationship standing of two domains where one is a subdomain of
      the other.

Maybe we should state explicitly that “subordinate” is a synonym for “subdomain”?

      Zone
      enumeration is different from zone content guessing where the
      guesser uses a large dictionary of possible labels

Can we elaborate on *how* it is different?

   DNSSEC Policy (DP):  A statement that "sets forth the security
      requirements and standards to be implemented for a DNSSEC-signed
      zone."  (Quoted from [RFC6841], Section 2)

   DNSSEC Practice Statement (DPS):  "A practices disclosure document
      that may support and be a supplemental document to the DNSSEC
      Policy (if such exists), and it states how the management of a
      given zone implements procedures and controls at a high level."
      (Quoted from [RFC6841], Section 2)

I’m unclear on what these mean. Can we add more explanatory text?

   These states are
   defined in [RFC4033] and [RFC4035], although the two definitions
   differ a bit.

Can we elaborate with more details about *how* these definitions differ?

Stuart Cheshire

---

From: "John Dickinson" <[email-masked]>
Date: Thu, 19 Apr 2018 10:38:56 +0100

On 5 Mar 2018, at 16:14, Paul Hoffman wrote:

> Greetings. As you can see, draft-ietf-dnsop-terminology-bis-09.txt is 
> out. Reading the diff might be a bit difficult because of the 
> reorganization of some sections that y'all asked for, but I think the 
> result is worth the extra effort.
>
> We're still not done yet

Hi Paul,

RFC8310 defines

Privacy-enabling DNS server: A DNS server that implements
DNS over TLS [RFC7858] and may optionally implement DNS over DTLS
[RFC8094].  The server should also offer at least one of the
credentials described in Section 8 and implement the (D)TLS
profile described in Section 9.

I think that should go in the terminology doc.

regards
John

John Dickinson

http://sinodun.com

Sinodun Internet Technologies Ltd.
Magdalen Centre
Oxford Science Park
Robert Robinson Avenue
Oxford OX4 4GA
U.K.

---

From: "Paul Hoffman" <[email-masked]>
Date: Sun, 22 Apr 2018 12:13:34 -0700

Off-list:

Thanks for your extensive notes! I have included many of them in the 
upcoming draft. I have also not included many others because you wanted 
us to use different words than what were in RFCs that we directly quoted 
from. In the places where your suggested wording was significant and 
helpful, I have added a sentence after the quoted material.

I'm hoping that the new draft is out in a week, but I'm not betting on 
it...

--Paul

---

From: "Paul Hoffman" <[email-masked]>
Date: Sun, 22 Apr 2018 12:27:38 -0700

> Off-list:

Or not so off-list. :-)

--Paul Hoffman, now feeling more compassion for others who do this same 
stupid human trick year after year

---

From: "Paul Hoffman" <[email-masked]>
Date: Sun, 22 Apr 2018 13:00:33 -0700

On 19 Mar 2018, at 5:21, Matthijs Mekking wrote:

> Negative response:
>
> I and some others have been using the term 'Negative response' to 
> indicate that the response does not contain any records in the Answer 
> section. Current definition seems to imply that this is only the case 
> if the RCODE is NXDOMAIN, NOERROR, SERVFAIL or if there was a timeout 
> (unreachable). The definition I have been using includes responses 
> with other RCODEs too, for example FORMERR or REFUSED.
>
> I wonder if this is just me and my bubble or if others also a slightly 
> different meaning of 'Negative response' as it is defined now. If 
> there are others, is it worth spending a line or two about this here?

Some implementations put things in the Answer section even when it seems 
like they are saying negative things. This does not appear to be 
prohibited by RFC 1035 or updates, but I could be wrong.

> RRsets:
>
> Raised by a discussion I had at the Hackathon, I think it would be 
> useful to add some clarification about RRSIGs and their role with 
> respect to RRsets. Perhaps a quote from RFC4035 will do:
>
>    An RRset MAY have multiple RRSIG RRs associated with it.  Note that
>    as RRSIG RRs are closely tied to the RRsets whose signatures they
>    contain, RRSIG RRs, unlike all other DNS RR types, do not form
>    RRsets.  In particular, the TTL values among RRSIG RRs with a 
> common
>    owner name do not follow the RRset rules described in [RFC2181].

Great suggestion. I only remember that last bit some of the time when I 
(incorrectly) say "all records in an RRset have the same TTL".

> Last, I don't fully understand the meaning of the cryptic comment 
> about QTYPE=ANY that is under the RRset definition:
>
>    (This definition is definitely not the same as "the
>    response one gets to a query for QTYPE=ANY", which is an
>    unfortunate misunderstanding.)
>
> Can you explain why this comment is here?

Um, no. :-( I'll remove it.

--Paul Hoffman

---

From: Shane Kerr <[email-masked]>
Date: Mon, 23 Apr 2018 14:23:00 +0000

Hello everyone,

Paul Hoffman:
> We're still not done yet. I took a hiatus from finishing the list of
> definitions that people wanted more scrutiny on, but will start that
> again soon. I hope we'll be done with that list by mid-April and then be
> ready for WG last call.

I noticed that the latest version of the terminology draft includes lame
delegation.

I ask because my understanding is that there are several flavors of
lame delegation, at least informally. I believe Ed Lewis spent some
time thinking about this long ago when he was updating ARIN's lame
delegation processes.

IIRC the main distinction is between a single NS being lame and all NS
being lame. So you can have a lame server (a single NS) or a lame
delegation (all NS). There may be further details with lameness above
and below the zone cut, or lameness caused by A/AAAA lookups failing
on the NS or lameness caused by the servers not responding.

I don't know if this is documented anywhere so that it can be
referenced properly, sorry. I am happy to discuss further but I think
this basically covers all I know. I don't mind proposing text, but
probably someone (Ed maybe?) would be a better person.

Cheers,

--
Shane