Internet DRAFT - draft-bellis-dnsop-http-record

draft-bellis-dnsop-http-record







DNSOP Working Group                                            R. Bellis
Internet-Draft                                                       ISC
Intended status: Standards Track                       November 04, 2018
Expires: May 8, 2019


                     A DNS Resource Record for HTTP
                   draft-bellis-dnsop-http-record-00

Abstract

   This document specifies an "HTTP" resource record type for the DNS to
   facilitate the lookup of the server hostname of HTTP(s) URIs.  It is
   intended to replace the use of CNAME records for this purpose, and in
   the process provides a solution for the inability of the DNS to allow
   a CNAME to be placed at the apex of a domain name.

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 May 8, 2019.

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) 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.



Bellis                     Expires May 8, 2019                  [Page 1]

Internet-Draft       A DNS Resource Record for HTTP        November 2018


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Description . . . . . . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Wire Format . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  Presentation Format . . . . . . . . . . . . . . . . . . .   3
     3.3.  Server Operation  . . . . . . . . . . . . . . . . . . . .   4
     3.4.  Client Operation  . . . . . . . . . . . . . . . . . . . .   4
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   4
   5.  Implementation status . . . . . . . . . . . . . . . . . . . .   4
   6.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .   4
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   5
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   5
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   5
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .   5
     9.2.  Informative References  . . . . . . . . . . . . . . . . .   5
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   5

1.  Introduction

   It is very common for HTTP(s) URIs to contain a domain name that is
   not the same as the hostname of the actual server that hosts the
   content.

   This is typically achieved via a CNAME record where the owner name of
   that record (the "Alias") is the domain name from the URI and the
   Canonical name field in its RDATA corresponds with the target
   hostname (although it should be noted that this strictly a violation
   of the original design semantics of the CNAME record).

   It is also impossible to store a CNAME at the apex of a domain name,
   which causes signficant difficulties if you wish to redirect your
   domain name without a "www" prefix to a content delivery network
   (CDN).  The only portable solution at the moment is to determine the
   IP address records of the content host and insert them directly at
   the apex of the zone, but this is brittle, and prevents the correct
   operation of typical CDN features.

   While there have been previous attempts to promote the use of the SRV
   record instead of CNAME records, there have been concerns raised
   about the performance impact of the additional DNS lookup an SRV
   record would typically require.

   To achieve equivalent end-user performance as existing CNAME-based
   solutions, this document permits recursive resolvers to pre-emptively
   look up the target of an HTTP Record and return the corresponding




Bellis                     Expires May 8, 2019                  [Page 2]

Internet-Draft       A DNS Resource Record for HTTP        November 2018


   records to the client.  While this feature is not mandatory it is
   hoped that support would over time become near ubiquitous.

   Also, the presence of the Port field in an SRV record is incompatible
   with the "Same Origin" security policy enforced by web browsers and
   in practise the load-balancing / fallback capabilities of the SRV
   record are not widely used either, and non-DNS based solutions for
   this are already widely deployed for HTTP traffic.

   This document therefore specifies a minimal "HTTP" resource record
   type for the DNS to facilitate the redirection from the domain name
   portion of an HTTP(s) URI to the server hostname and thence to A or
   AAAA records.  It is specifically intended to replace the use of
   CNAME records for this purpose, and in the process provides a
   solution for the inability of the DNS to allow a CNAME to be placed
   at the apex of a domain name.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "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.

3.  Description

   The owner name of an HTTP RR is the domain name portion of an HTTP(s)
   URI.

   The use of underscore label prefixes (e.g. _http._tcp) was
   considered, but rejected since it prohibits the use of wildcard
   records which us a valuable technique for offering per-customer
   domain prefixes without requiring that every prefix be individually
   provisioned.

3.1.  Wire Format

   The RDATA of an HTTP RR is a domain name in uncompressed wire format.

3.2.  Presentation Format

   The RDATA of an HTTP RR is presented as a domain name in standard
   master file format.







Bellis                     Expires May 8, 2019                  [Page 3]

Internet-Draft       A DNS Resource Record for HTTP        November 2018


3.3.  Server Operation

   Recursive resolvers MAY on receiving a request for an HTTP record
   look up the A and AAAA records for the target (either from cache, or
   via new iterative queries) and include the results in the Additional
   Section of the response.

   If the recursive resolver is performing DNSSEC resolution but is
   unable to validate the A or AAAA responses it MUST NOT include them
   in the response unless the client has specified the +CD (checking
   disabled) flag.

   Where EDNS Client Subnet [RFC7871] is configured on the resolver
   those A and AAAA lookups MUST be performed as if the client had made
   those queries directly to the resolver.

3.4.  Client Operation

   HTTP clients supporting this specification MUST issue parallel DNS
   requests for the A, AAAA and HTTP records for the domain portion of
   an http: or https: URI.

   If an HTTP record is returned, the client MUST either use the A and
   AAAA records contained in the Additional Section of the response, or
   issue further parallel requests for the A and AAAA records
   corresponding to the domain name in the RDATA of the HTTP record and
   then use those IP addresses to access the URI.

   If the original A and AAAA lookups return IP addresses these MUST
   only be used if no HTTP record is returned.

   << the above needs more text around timing, happy eyeballs, etc. >>

4.  Security Considerations

   TBD

5.  Implementation status

   << RFC Editor Note: Please remove this entire section prior to
   publication as an RFC. >>

6.  Privacy Considerations

   TBD (if any)






Bellis                     Expires May 8, 2019                  [Page 4]

Internet-Draft       A DNS Resource Record for HTTP        November 2018


7.  IANA Considerations

   << a copy of the RFC 6895 IANA RR TYPE application template will
   appear here >>

8.  Acknowledgements

9.  References

9.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,
              <https://www.rfc-editor.org/info/rfc2119>.

   [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>.

9.2.  Informative References

   [RFC7871]  Contavalli, C., van der Gaast, W., Lawrence, D., and W.
              Kumari, "Client Subnet in DNS Queries", RFC 7871,
              DOI 10.17487/RFC7871, May 2016,
              <https://www.rfc-editor.org/info/rfc7871>.

Author's Address

   Ray Bellis
   Internet Systems Consortium, Inc.
   950 Charter Street
   Redwood City  CA 94063
   USA

   Phone: +1 650 423 1200
   Email: ray@isc.org














Bellis                     Expires May 8, 2019                  [Page 5]