Re: [DNSOP] Priming query transport selection

Alex Bligh <> Wed, 13 January 2010 21:35 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CF0373A6842 for <>; Wed, 13 Jan 2010 13:35:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id XWGykv22yZjz for <>; Wed, 13 Jan 2010 13:35:54 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id C7EA43A6840 for <>; Wed, 13 Jan 2010 13:35:53 -0800 (PST)
Received: from [] ( []) by (Postfix) with ESMTPSA id 50322C562AB; Wed, 13 Jan 2010 21:35:50 +0000 (GMT)
Date: Wed, 13 Jan 2010 21:35:48 +0000
From: Alex Bligh <>
To: Jim Reid <>
Message-ID: <074C291445D8E2F871990FD2@nimrod.local>
In-Reply-To: <>
References: <> <> <D9CCEA0D18D9D5B457A90853@Ximines.local> <> <CDE7E0414BC50C42E4FCC54F@Ximines.local> <>
X-Mailer: Mulberry/4.0.8 (Mac OS X)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Cc:, Alex Bligh <>
Subject: Re: [DNSOP] Priming query transport selection
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: Alex Bligh <>
List-Id: IETF DNSOP WG mailing list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 13 Jan 2010 21:35:55 -0000

--On 13 January 2010 21:16:49 +0000 Jim Reid <> wrote:

> On 13 Jan 2010, at 20:49, Alex Bligh wrote:
>> Current operational practice would result in DO clear packets
>> fitting within 4096 bytes, so no need for TCP when DO is clear.
> I don't think that's always the case Alex. See the lengthy discussion in
> this list about datagram fragmentation and broken middleware boxes that
> don't grok EDNS0. [Or do EDNS0 with a 512 byte buffer size. Sigh.] Mind
> you, some of those boxes will also barf on TCP DNS traffic.

Indeed - my slack language. I meant that UDP should at least be given a
go as we don't know a priori that it will fail. We pretty much do know
that for a DO set query.

> The preferred approach might probably be along these lines:
> 	[1] EDNS0 + DO with a buffer of 5-8K (ish)
> 	[2] TCP + DO when [1] fails
> 	[3] EDNS0 + DO + 1.5K (ish) buffer if [2] fails
> 	[4] EDNS0 (no DO) with a 1.5K (ish) buffer
> 	[5] Vanilla UDP (no EDNS0) if [4] fails
> I think it would be helpful if the guidance on priming queries was split
> into 3 categories: resolvers that speak DNSSEC, those that are not
> DNSSEC-aware but speak EDNS0 and resolvers that are ignorant of both
> protocols. They'd start at [1], [4] and [5] respectively in the scenario
> above. The optimal priming behaviour for each may well be different,
> particularly wrt EDNS0 buffer minima and maxima. It would be good to give
> an explanation for those buffer sizes too in case we've all forgotten
> about that when revisiting the issue 5-10 years from now.

You've eliminated TCP fallback for non-DNSSEC supporting clients. On
e.g. small MTU dialup, (4) will not succeed in certain circumstances
(i.e. where fragments are not transmitted correctly). I think here
you are relying on [5] to work, but it seems to me reasonable for
a well behaved (but not DNSSEC supporting) client to make a TCP query
if UDP doesn't get through for whatever reason.

> Perhaps the recommended resolver behaviour should apply to all queries
> and not just the priming query?

This is somewhat swimming against the tide of (e.g.)
draft-ietf-dnsext-dns-tcp-requirements and
draft-bellis-dns-recursive-discovery (unadopted, disclosure: am coauthor),
which each take the view that there's enough middlebox and fragmentation
breakage of UDP that TCP should be available as a reliable fallback.

Sure, clients should as a general rule try getting UDP to work, but
I think preventing them falling back to UDP unless they are prepared
to take the overhead of adding DO set is not right. It might have
the perverse effect of encouraging people to set DO unnecessarily.

Alex Bligh