[Docs] [txt|pdf] [Tracker] [Email] [Nits]

Versions: 00 01

Network Working Group                                            P. Sood
Internet-Draft                                                    Google
Intended status: Standards Track                               R. Arends
Expires: November 1, 2019                                     P. Hoffman
                                                          April 30, 2019

               DNS Resolver Information Self-publication


   This document describes methods for DNS resolvers to self-publish
   information about themselves, such as whether they perform DNSSEC
   validation or are available over transports other than what is
   defined in RFC 1035.  The information is returned as a JSON object.
   The names in this object are defined in an IANA registry that allows
   for light-weight registration.  Applications and operating systems
   can use the methods defined here to get the information from
   resolvers in order to make choices about how to send future queries
   to those resolvers.

   Discussion of this draft should be on the ADD mailing list

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on November 1, 2019.

Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

Sood, et al.            Expires November 1, 2019                [Page 1]

Internet-Draft            Resolver Information                April 2019

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Definitions . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Retrieving Resolver Information by DNS  . . . . . . . . . . .   3
   3.  Retrieving Resolver Information by Well-Known URI . . . . . .   4
   4.  Contents of the Returned I-JSON Object  . . . . . . . . . . .   5
     4.1.  The "inventory" name  . . . . . . . . . . . . . . . . . .   5
     4.2.  Example . . . . . . . . . . . . . . . . . . . . . . . . .   5
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
     5.1.  RESINFO RRtype  . . . . . . . . . . . . . . . . . . . . .   6
     5.2.  resolver-info.arpa Special-Use Domain Name  . . . . . . .   6
     5.3.  Registry for DNS Resolver Information . . . . . . . . . .   6
     5.4.  resolver-info Well-known URI  . . . . . . . . . . . . . .   7
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   8
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   Historically, DNS stub resolvers typically communicated with the
   recursive resolvers in their configuration without needing to know
   anything about the features of the recursive resolvers.  More
   recently, recursive resolvers have different features that may cause
   stub resolvers to make choices about which configured resolver from
   its configuration to use, and also how to communicate with the
   recursive resolver (such as over different transports).  Thus stub
   resolvers need a way to get information from recursive resolvers
   about features that might affect the communication.

   This document specifies methods for stub resolvers to ask recursive
   resolvers for such information.  In short, a new RRtype and a new
   special-use domain name (SUDN) are defined for stub resolvers to
   query using the DNS, and a new well-known URI is defined for stub
   resolvers to query using HTTP over TLS.

Sood, et al.            Expires November 1, 2019                [Page 2]

Internet-Draft            Resolver Information                April 2019

   The response from either method is the same: a JSON object.  The JSON
   object MUST use the I-JSON message format defined in [RFC7493].  Note
   that [RFC7493] was based on RFC 7159, but RFC 7159 was replaced by
   [RFC8259].  Requiring the use of I-JSON instead of more general JSON
   format greatly increases the likelihood of interoperability.

   The information that a resolver might want to give to a recursive
   resolver is not defined in this document; instead other documents
   will follow that will specify that information and the format that it
   comes in.

   It is important to note that the protocol defined here is only for
   recursive resolvers, not for authoritative servers.  Authoritative
   servers MUST NOT answer queries that are defined in this protocol.
   (It is likely that a later protocol will allow authoritative servers
   to give information in a method similar to the one described in this

1.1.  Definitions

   In the rest of this document, the term "resolver" without
   qualification means "recursive resolver" as defined in [RFC8499].
   Also, the term "stub" is used to mean "stub resolver".

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Retrieving Resolver Information by DNS

   A stub that wants to use the DNS to get information about a resolver
   can use the DNS query defined here.  Note that the answer given by
   the resolver cannot be validated with DNSSEC.

   The query a stub resolver uses is resolver-info.arpa/IN/RESINFO.  The
   RRtype "RESINFO" is defined in this document, and the IANA assignment
   is given in Section 5.1.  The contents of the Rdata in the response
   to this query is defined in Section 4.  If the resolver understands
   the RESINFO RRtype, the RRset in the Answer section MUST have exactly
   one record.

   The name resolver-info.arpa is defined in this document, and the IANA
   assignment is given in Section 5.2.  As described in Section 5.2, the
   zone resolver-info.arpa is not actually delegated and never will be.
   The resolver that receives this query acts as if it is delegated, and
   responds with its own RESINFO data in the Answer section.

Sood, et al.            Expires November 1, 2019                [Page 3]

Internet-Draft            Resolver Information                April 2019

   The resolver can generate this reply with special code to capture
   queries for "resolver-info.arpa"; if the resolver can be configured
   to also be authoritative for some zones, it can use that
   configuration to actually be authoritative for "resolver-info.arpa".

   A stub that knows a specific type of information it wants MAY ask for
   that information by prepending a label with the name of the
   information in its query.  For example, if the stub knows that it
   wants information whose name is "temp-field2", it would send the
   query temp-field2.resolver-info.arpa/IN/RESINFO.  As described in
   Section 4, the JSON object in the response is likely to have name-
   value pairs in addition to the one requested.

   Any query for the RESINFO RRtype that is not in resolver-info.arpa/IN
   or a subdomain of resolver-info.arpa/IN is meaningless and MUST
   result in a NODATA or NXDOMAIN response.  Resolvers would not need
   any special code to meet this requirement; they only need code to
   handle the RESINFO RRtype that is not in resolver-info.arpa/IN or a
   subdomain of resolver-info.arpa/IN .

3.  Retrieving Resolver Information by Well-Known URI

   A stub that wants to use HTTPS to get information about a resolver
   can use the well-known URI defined here.  Because this uses HTTPS,
   the stub has the possibility of authenticating the TLS connection.
   If the connection cannot be authenticated (such as if the stub only
   knows the IP address of the resolver and the resolver's certificate
   does not have the IP address, or the correct IP address), the stub
   MAY still use the results with the same lack of assuredness as it
   would have with using a DNS request described in Section 2.

   The stub MUST use the HTTP GET method.  The URI used to get the
   resolver information is:


   This uses the ".well-known" URI mechanism defined in
   [I-D.nottingham-rfc5785bis].  The contents of the response to this
   query is defined in Section 4.

   A resolver that uses this protocol to publish its information SHOULD,
   if possible, have a TLS certificate whose subject identifiers are any
   IP address that the resolver is available on, as well as any domain
   names that the resolver operator uses for the resolver.  At the time
   that this document is published, getting IP addresses in TLS
   certificates is possible by there are only a few widely-trusted CAs
   that issue such certificates.  [I-D.ietf-acme-ip] describes a new

Sood, et al.            Expires November 1, 2019                [Page 4]

Internet-Draft            Resolver Information                April 2019

   protocol that may cause IP address certificates to become more

4.  Contents of the Returned I-JSON Object

   The JSON object returned by a DNS query or an HTTPS query MUST
   contain at least one name-value pair: "inventory", described later in
   this section.  The returned object MAY contain any other name-value

   The requirement for the inclusion of the "inventory" name-value pair
   is so that systems retrieving the information over DNS can create
   specific queries.  Using specific queries can reduce the number of
   round trips in the case where the answers to queries become large.
   The "inventory" name-value pair MUST be included in the response even
   if the query was for a single name.

   If the request was over DNS using a subdomain under resolver-
   info.arpa, the resolver SHOULD return an object that contains a name-
   value pair with that name if the resolver has that information.  If
   the resolver does not have information for that name, it MUST NOT
   returen the name in the object.

   If the request was over HTTPS, the resolver SHOULD return an object
   with all known name-value pairs for which it has information.

   All names in the returned object MUST be defined in the IANA registry
   or begin with the substring "temp-".  As defined in Section 5.3, the
   IANA registry will not register names that begin with "temp-", so
   these names can be used freely by any implementer.

   Note that the message returned by the resolver MUST be in I-JSON
   format.  I-JSON requires that the message MUST be encoded in UTF8.

   This document only defines one element that can returned:
   "inventory".  All other elements will be defined in other documents.

4.1.  The "inventory" name

   The "inventory" name lists all of the types of information for which
   the resolver has data.  The value is an array of strings.

4.2.  Example

   The I-JSON object that a resolver returns might look like the

Sood, et al.            Expires November 1, 2019                [Page 5]

Internet-Draft            Resolver Information                April 2019

      "temp-field2": 42,
      "temp-field1": [ "There is", "no \u000B!" ],
      "inventory": [ "inventory", "temp-field1", "temp-field2" ]

   As specified in [RFC7493], the I-JSON object is encoded as UTF8.
   This example has no un-escaped non-ASCII characters only because they
   are not currently allowed in Internet Drafts.  For example, the
   exclamation mark in the second name/value pair could instead be the
   double exclamation mark character, U+203C.

   [RFC7493] explicitly allows the returned objects to be in any order.

5.  IANA Considerations

5.1.  RESINFO RRtype

   This document defines a new DNS RR type, RESINFO, whose value TBD
   will be allocated by IANA from the "Resource Record (RR) TYPEs" sub-
   registry of the "Domain Name System (DNS) Parameters" registry:

   Type: RESINFO

   Value: TBD

   Meaning: Information self-published by a resolver as an I-JSON (RFC
   7493) object

   Reference: This document

5.2.  resolver-info.arpa Special-Use Domain Name

   IANA will record the domain name "resolver-info.arpa" in the
   "Special-Use Domain Names" registry [SUDN].  IANA MUST NOT delegate
   resolver-info.arpa in the .arpa zone.

5.3.  Registry for DNS Resolver Information

   IANA will create a new registry titled "DNS Resolver Information"
   that will contain definitions of the names that can be used with the
   protocols defined in this document.  The registration procedure is by
   Expert Review and Specification Required, as defined in [RFC8126].

   The specification that is required for registration can be either an
   Internet-Draft or an RFC.  The reviewer for this registry is
   instructed to generally be liberal in what they accept into the
   registry: as long as the specification that comes with the

Sood, et al.            Expires November 1, 2019                [Page 6]

Internet-Draft            Resolver Information                April 2019

   registration request is reasonably understandable, the registration
   should be accepted.

   The registry has the following fields for each element:

   Name: The name to be used in the JSON object.  This name MUST NOT
   begin with "temp-".  This name MUST conform to the definition of
   "string" in I-JSON [RFC7493] message format.

   Value type: The type of data to be used in the JSON object.

   Specification: The name of the specification for the registered

5.4.  resolver-info Well-known URI

   Before this draft is complete, mail will be sent to wellknown-uri-
   review@ietf.org in order to be registered in the "Well-Known URIs"
   registry at IANA.  The mail will contain the following:

   URI suffix: resolver-info

   Change controller: IETF

   Specification document(s): This document

   Status: permanent

6.  Security Considerations

   Unless a DNS request for resolver-info.arpa/IN/RESINFO, or a
   subdomain, as described in Section 2 is sent over DNS-over-TLS (DoT)
   [RFC7858] or DNS-over-HTTPS (DoT) [RFC8484], the response is
   susceptible to forgery.  Stubs and resolvers SHOULD use normal DNS
   methods for avoiding forgery such as query ID randomizaton and source
   port randomization.  A stub resolver will know if it is using DoT or
   DoH, and if it is using DoT it will know if the communication is
   authenticated (DoH is always authenticated).

   An application that is using an operating system API to send queries
   for resolver-info.arpa/IN/RESINFO or a subdomain will only know if
   query went over authenticated DoT or DoH if the API supports
   returning that authentication information.  Currently, no common APIs
   support that type of response.

Sood, et al.            Expires November 1, 2019                [Page 7]

Internet-Draft            Resolver Information                April 2019

7.  References

7.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,

   [RFC7493]  Bray, T., Ed., "The I-JSON Message Format", RFC 7493,
              DOI 10.17487/RFC7493, March 2015,

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8259]  Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
              Interchange Format", STD 90, RFC 8259,
              DOI 10.17487/RFC8259, December 2017,

   [RFC8499]  Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS
              Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499,
              January 2019, <https://www.rfc-editor.org/info/rfc8499>.

   [SUDN]     "Special-Use Domain Names", n.d.,

7.2.  Informative References

              Shoemaker, R., "ACME IP Identifier Validation Extension",
              draft-ietf-acme-ip-05 (work in progress), February 2019.

              Nottingham, M., "Well-Known Uniform Resource Identifiers
              (URIs)", draft-nottingham-rfc5785bis-11 (work in
              progress), April 2019.

   [RFC7858]  Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D.,
              and P. Hoffman, "Specification for DNS over Transport
              Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May
              2016, <https://www.rfc-editor.org/info/rfc7858>.

Sood, et al.            Expires November 1, 2019                [Page 8]

Internet-Draft            Resolver Information                April 2019

   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
              Writing an IANA Considerations Section in RFCs", BCP 26,
              RFC 8126, DOI 10.17487/RFC8126, June 2017,

   [RFC8484]  Hoffman, P. and P. McManus, "DNS Queries over HTTPS
              (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018,


   The idea of various types of servers publishing information about
   themselves has been around for decades.  However this idea has not
   been used in the DNS.  This document aims to fix this omission.

Authors' Addresses

   Puneet Sood

   Email: puneets@google.com

   Roy Arends

   Email: roy.arends@icann.org

   Paul Hoffman

   Email: paul.hoffman@icann.org

Sood, et al.            Expires November 1, 2019                [Page 9]

Html markup produced by rfcmarkup 1.129c, available from https://tools.ietf.org/tools/rfcmarkup/