Re: [DNSOP] HTTPS/SVCB on Cloudflare DNS

Alessandro Ghedini <alessandro@ghedini.me> Thu, 23 July 2020 09:57 UTC

Return-Path: <alessandro@ghedini.me>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 01B8D3A03F3 for <dnsop@ietfa.amsl.com>; Thu, 23 Jul 2020 02:57:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ghedini.me
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5-GHKQVbzUQt for <dnsop@ietfa.amsl.com>; Thu, 23 Jul 2020 02:57:36 -0700 (PDT)
Received: from blastoise.ghedini.me (blastoise.ghedini.me [45.32.158.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D0B973A00E4 for <dnsop@ietf.org>; Thu, 23 Jul 2020 02:57:35 -0700 (PDT)
Received: from localhost (unknown [IPv6:2a02:8010:6241:1:25ff:44c:b55a:4389]) by blastoise.ghedini.me (Postfix) with ESMTPSA id 704D6DF29C; Thu, 23 Jul 2020 09:57:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ghedini.me; s=mail; t=1595498253; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=99D6HENyMNCQr7BE3vXZ+k+kQeSOuGxCptqX20gS32A=; b=aJ3bWmSSSxZHZep7fKp+Phyni7zM7t99O6nfcH9pRVL7FES6BmWBwad0dO+Bj0rjxggTsL 7vK1RGzyq/mDwFlfH8WZMDFgDsZXcBcxfq5Kwz0dDwgGIx5fWQcHfVnNtLG6u4KrphAhqg QcdHebLUmutvilGyv+8LyuK8gmTUp2Y=
Date: Thu, 23 Jul 2020 10:57:29 +0100
From: Alessandro Ghedini <alessandro@ghedini.me>
To: Mark Andrews <marka@isc.org>
Cc: dnsop@ietf.org
Message-ID: <20200723095729.GB1524@wakko.flat11.house>
References: <20200716151356.GA60024@wakko.flat11.house> <18174930-D601-462A-BB4E-E994DB2EB4B9@isc.org> <20200716172604.GA65961@wakko.flat11.house> <E80B5A6A-9EB1-497B-81C1-2FA67012FAD3@isc.org> <20200723095040.GA1524@wakko.flat11.house>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20200723095040.GA1524@wakko.flat11.house>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/r7slm9aZ3O7QXpXquFDbPQFJuDE>
Subject: Re: [DNSOP] HTTPS/SVCB on Cloudflare DNS
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 23 Jul 2020 09:57:38 -0000

On Thu, Jul 23, 2020 at 10:50:40AM +0100, Alessandro Ghedini wrote:
> On Fri, Jul 17, 2020 at 10:11:33AM +1000, Mark Andrews wrote:
> > 
> > 
> > > On 17 Jul 2020, at 03:26, Alessandro Ghedini <alessandro@ghedini.me> wrote:
> > > 
> > > On Fri, Jul 17, 2020 at 01:37:35AM +1000, Mark Andrews wrote:
> > >> Do you have a estimate on when you will enable additional section processing for these records?
> > > 
> > > Not sure I understand the question. Do you mean authoritative servers adding
> > > A/AAAA records to additional section of HTTPS responses?
> > > 
> > > Cheers
> > 
> > Yes.  At the moment there will be lots of redundant queries being made. A, AAAA
> > and HTTPS/SVBC for every level of the chain. If HTTPS/SVBC aware servers actually
> > return A and AAAA records for service form records, we can reduce the number of
> > queries that need to be made.
> 
> I did a little experiment (took me a few days to find the time) with a toy DNS
> server [0]. This is obviously not a proper authoritative server, it's just to
> illustrate the problem.
> 
> When I query the auth server directly I get the HTTPS response as well as the
> additional section records:
> 
>      % dig @ns1.nullroute.dev nullroute.dev. type65
> 
>     ; <<>> DiG 9.16.4-Debian <<>> @ns1.nullroute.dev nullroute.dev. type65
>     ; (1 server found)
>     ;; global options: +cmd
>     ;; Got answer:
>     ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18948
>     ;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
>     ;; WARNING: recursion requested but not available
> 
>     ;; QUESTION SECTION:
>     ;nullroute.dev.			IN	TYPE65
> 
>     ;; ANSWER SECTION:
>     nullroute.dev.		300	IN	TYPE65	\# 21 00010000010006026832026833000400042D4D6042
> 
>     ;; ADDITIONAL SECTION:
>     nullroute.dev.		300	IN	A	198.51.100.1
> 
> But if I go through a resolver the additional section seems to be stripped:
> 
>      % dig @8.8.8.8 nullroute.dev. type65 
> 
>     ; <<>> DiG 9.16.4-Debian <<>> @8.8.8.8 nullroute.dev. type65
>     ; (1 server found)
>     ;; global options: +cmd
>     ;; Got answer:
>     ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62418
>     ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
> 
>     ;; OPT PSEUDOSECTION:
>     ; EDNS: version: 0, flags:; udp: 512
>     ;; QUESTION SECTION:
>     ;nullroute.dev.			IN	TYPE65
> 
>     ;; ANSWER SECTION:
>     nullroute.dev.		299	IN	TYPE65	\# 21 00010000010006026832026833000400042D4D6042
> 
> I tried a few other public resolvers and I see the same. If this is the actual
> behavior of resolvers (rather than just an artifact of my experiment's setup)
> then adding additional section wouldn't seem to provide much benefit for
> "end-user" clients (say, a browser).
> 
> Is the expectation that additional section would help resolvers reduce the
> number of queries rather than the other DNS clients? I guess other clients would
> still need to query A/AAAA and HTTPS in parallel as they don't know whether
> there is an HTTPS record at all.
> 
> In any case we don't have plans right now to implement this on Cloudflare's DNS
> servers, but it's certainly possible. I will discuss this with our DNS people
> and see what they think.

Also btw, currently we always include ipv4hint and ipv6hint in our HTTPS
responses, this is to avoid breaking connections in multi-CDN scenarios, so I
guess a resolver could in theory use this information instead? The draft is, I
believe, a tad too strict regarding the usage of hints, so I'm not sure if this
is forbidden or not.

Cheers

> 
> Cheers
> 
> > We need to get to the state where HTTPS/SVBC alias form always reaches a HTTPS/SVBC
> > service form.  When we are mostly in that state we can stop doing A and AAAA queries
> > along side the HTTPS/SVBC query for names in the HTTPS/SVBC alias form and take the
> > RTT hit on the occasional NODATA response.  To get to that state we need the DNS
> > servers of the content providers to be HTTPS/SVBC aware and to populate the additional
> > section whenever possible.
> > 
> > BIND’s HTTPS/SVBC implementation adds A, AAAA, CNAME, and HTTPS/SVBC records and
> > looks for them in the response.  I would expect all HTTPS/SVBC aware clients to
> > look for these records in the response.  At the moment we don’t look for DNAME in
> > the additional section nor do we add it because, quite frankly, they should not be
> > there in any sensible deployment.  DNAME in the answer section is expected.
> > 
> > Mark
> > 
> > >>> On 17 Jul 2020, at 01:13, Alessandro Ghedini <alessandro@ghedini.me> wrote:
> > >>> 
> > >>> Hello,
> > >>> 
> > >>> Just a quick note that we have started serving "HTTPS" DNS records from
> > >>> Cloudflare's authoritative DNS servers. Our main use-case right now is
> > >>> advertising HTTP/3 support for those customers that enabled that feature (in
> > >>> addition to using Alt-Svc HTTP headers).
> > >>> 
> > >>> If anyone is interested in trying this out you can query pretty much all domains
> > >>> served by Cloudflare DNS for which we terminate HTTP.
> > >>> 
> > >>> For example:
> > >>> 
> > >>>  % dig blog.cloudflare.com type65
> > >>> 
> > >>> ; <<>> DiG 9.16.4-Debian <<>> blog.cloudflare.com type65
> > >>> ;; global options: +cmd
> > >>> ;; Got answer:
> > >>> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17291
> > >>> ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
> > >>> 
> > >>> ;; OPT PSEUDOSECTION:
> > >>> ; EDNS: version: 0, flags:; udp: 4096
> > >>> ;; QUESTION SECTION:
> > >>> ;blog.cloudflare.com.		IN	TYPE65
> > >>> 
> > >>> ;; ANSWER SECTION:
> > >>> blog.cloudflare.com.	300	IN	TYPE65	\# 76 000100000100150568332D32390568332D32380568332D3237026832 0004000868121A2E68121B2E00060020260647000000000000000000 68121A2E26064700000000000000000068121B2E
> > >>> 
> > >>> Cheers
> > >>> 
> > >>> _______________________________________________
> > >>> DNSOP mailing list
> > >>> DNSOP@ietf.org
> > >>> https://www.ietf.org/mailman/listinfo/dnsop
> > >> 
> > >> -- 
> > >> Mark Andrews, ISC
> > >> 1 Seymour St., Dundas Valley, NSW 2117, Australia
> > >> PHONE: +61 2 9871 4742              INTERNET: marka@isc.org
> > >> 
> > 
> > -- 
> > Mark Andrews, ISC
> > 1 Seymour St., Dundas Valley, NSW 2117, Australia
> > PHONE: +61 2 9871 4742              INTERNET: marka@isc.org
> > 
> 
> _______________________________________________
> DNSOP mailing list
> DNSOP@ietf.org
> https://www.ietf.org/mailman/listinfo/dnsop