Re: [Doh] re original_transport indicator

Paul Vixie <> Fri, 06 April 2018 23:29 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 42721126BF0; Fri, 6 Apr 2018 16:29:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id SFa5idv--hSo; Fri, 6 Apr 2018 16:29:41 -0700 (PDT)
Received: from ( [IPv6:2001:559:8000:cd::5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 8407E126E64; Fri, 6 Apr 2018 16:29:41 -0700 (PDT)
Received: from [] (unknown []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by (Postfix) with ESMTPSA id 468717594C; Fri, 6 Apr 2018 23:29:39 +0000 (UTC)
Message-ID: <>
Date: Fri, 06 Apr 2018 19:29:36 -0400
From: Paul Vixie <>
User-Agent: Postbox 5.0.25 (Windows/20180328)
MIME-Version: 1.0
To: Martin Thomson <>
CC: Patrick McManus <>, dnsop <>, DoH WG <>, Ted Lemon <>, Ray Bellis <>
References: <> <>
In-Reply-To: <>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: <>
Subject: Re: [Doh] re original_transport indicator
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: DNS Over HTTPS <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 06 Apr 2018 23:29:43 -0000

Martin Thomson wrote:
> +1 to this.
> And maybe there is an outcome that doesn't need this parameter.  I
> probably misunderstood some of the expectations people have for the
> parameter.  With the benefit of time and sleep, it's possible that I
> now understand the disconnect.
> My model of content-type - and by extension its parameters - is of a
> description of the content.  However, it appears as though at least
> some people had different uses for the parameter: for requests, it
> would be an instruction/suggestion to the server to make a DNS request
> using the identified transport; for responses, it would be a
> description of where the DNS request came from.

my original design added an http header, which was seen as even worse. 
someone suggested adding to the content-type, and i went along with it 
even though there is no difference in actual type of actual content.

> I never considered that interpretation, but - assuming that this is
> what it was - and the intent was to provide a means for the client to
> control how the server makes requests (and to see how they were made).
> In that case, I have a possible alternative design for the use case in
> the dnsop draft.
> Right now, DOH doesn't really say how a DNS API Server gets its
> responses.  It could be that the API server is part of a resolver, or
> it could be that the DNS API Server makes a request to another
> resolver.  But specific uses of the DOH protocol could come with
> additional constraints that would enable the use cases in the dnsop
> draft, at least as I understand them.

this all sounds good to me.

> If the goal of the dnsop draft is to extend the reach of a DNS client
> (note: not a DNS API client) across a network that is in some way less
> hostile to HTTP than it is to DNS, then I think that it can still use
> DOH.  A DNS API server could be configured to operate in a very simple
> mode with no caching, just direct transposition of a request from HTTP
> to a request on UDP or TCP.  A DNS client could be configured with two
> DNS API clients.  Each client uses a different DNS API Server
> endpoint.  Those endpoints would be specifically configured to use
> only UDP or TCP.
> For instance:
> https://use.only/tcp{?dns} would cause the server to make a request using TCP.
> https://use.only/udp{?dns} would cause the server to make a request using UDP.
> At this point, this is simple DOH, but with extra contextual
> information about server operation.

i am generally supportive of this approach; in fact i wish i'd thought 
of it. the specifics will be different, as in:


but i agree that encoding the original transport in the URI is better 
than either extending the content-type or adding another http header.


i object, as before, to "dns-udpwireformat" as a name. these are dns 
messages, which when carried by udp are raw, and when carried in tcp are 
preceded by a two-octet length indicator for framing of multiple 
messages sharing the same stream. so, the string to be registered should 
be "dns-message".

P Vixie