Re: [apps-discuss] RFC 5785: Registration of .well-known services under HTTP to First Come

Phillip Hallam-Baker <phill@hallambaker.com> Fri, 15 January 2016 03:08 UTC

Return-Path: <hallam@gmail.com>
X-Original-To: apps-discuss@ietfa.amsl.com
Delivered-To: apps-discuss@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4128B1A88AE for <apps-discuss@ietfa.amsl.com>; Thu, 14 Jan 2016 19:08:07 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.278
X-Spam-Level:
X-Spam-Status: No, score=-1.278 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=no
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 7zFIbh8hJ0lA for <apps-discuss@ietfa.amsl.com>; Thu, 14 Jan 2016 19:08:05 -0800 (PST)
Received: from mail-lb0-x22f.google.com (mail-lb0-x22f.google.com [IPv6:2a00:1450:4010:c04::22f]) (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 3C4151A88A9 for <apps-discuss@ietf.org>; Thu, 14 Jan 2016 19:08:05 -0800 (PST)
Received: by mail-lb0-x22f.google.com with SMTP id cl12so90602488lbc.1 for <apps-discuss@ietf.org>; Thu, 14 Jan 2016 19:08:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:content-type; bh=vEaAEizepSpP7RuBAYSBm2P1oofD+NOy9zvpR0ARa6A=; b=k2rMoli7KWni964cmXQ3ho9Pa93D7XpA9Se3jeNpj5HUtk802aizmhd1g7lUrmmLzD SpQCrzTejcSECeIeWtMWabzoD0rugay9Tifc810XPjo3taNdAb5k10Tkg+ypfEMyrjA5 7l5aZi223TM4p3xdyi+UVFps3l7hF2f1JvROAeDT4dKIUTywGftkv+39sledZ0FVNKVa MlLWrxQrKXRCwjwHiHCv4yoqqra6fjUmCim3oZuNMZ7eJgi66XLwdzIvAFeDd29vavtQ JRRsdxQqkauuEsXBdabQbf6EJ04yNmI162A/h+UOt61p2DyhNa7UpBVoevWcrB5HzbtH UOUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=vEaAEizepSpP7RuBAYSBm2P1oofD+NOy9zvpR0ARa6A=; b=OAvGpMjP+2gA6RnAxHhD56RTWMtlI5KUQAhu6SzZ/W3oB9Q2qNWoqR+DvL9me8q1ZJ Z7UltrAyJB3VNDFYIewqepWqhTtyQJb5sUOt7TC37MLiEV1of44XtvGQkl/ssJ7DElUS JxkvkTCba+xibxmJmDpbjo6tnBk53O3PsTY3PEXwKpBs8y8TOoclFYqudEFD+z4J7d57 043WL2LGt7nnO64rQtdJdLfbmis9TOGkzx+WU8JTfWXnoUT0018HtmIqzmiwXYWMSbp0 coFVLfyV9OKPQYN+Xau8Tt4Sj0BK+uuCBHYQJzXngWNRILjyfsu6lNg9pW8VJNj56ATu KXHQ==
X-Gm-Message-State: ALoCoQllRL6ns++jjolDR/O9EZG2MsCSViaMzEoWEiU7RxJuBG99NJEH/eLMAQnes8Gf6+nmlBnkrWKcluxXkeO5I55D7iZtGA==
MIME-Version: 1.0
X-Received: by 10.112.166.100 with SMTP id zf4mr2215574lbb.58.1452827283502; Thu, 14 Jan 2016 19:08:03 -0800 (PST)
Sender: hallam@gmail.com
Received: by 10.112.1.33 with HTTP; Thu, 14 Jan 2016 19:08:03 -0800 (PST)
In-Reply-To: <5697B833.3000703@cisco.com>
References: <CAMm+Lwj=A+KbxOvxFrURZmTmYJuGD3rXvnRToLZ_L+v-Qv_L_w@mail.gmail.com> <F87BF4D5-98EB-4476-B07B-969BEF842EE2@mnot.net> <CAMm+LwiT+bATrwK4guD6qtqPBDiOkXqUeF4+jjLJoP5TYqi3_w@mail.gmail.com> <E5435AB2-4830-4C08-AC3D-AE1FB6E66C53@mnot.net> <5697B833.3000703@cisco.com>
Date: Thu, 14 Jan 2016 22:08:03 -0500
X-Google-Sender-Auth: QzFoTqOWXC9mymtq82cfvy6ldLU
Message-ID: <CAMm+LwiDJXwqMXmNcksTJeh0sn6_rvsGdnGu6-KtDcdGy1Wbvg@mail.gmail.com>
From: Phillip Hallam-Baker <phill@hallambaker.com>
To: General discussion of application-layer protocols <apps-discuss@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <http://mailarchive.ietf.org/arch/msg/apps-discuss/SycLW17l928_Rj8UjJByayLnofU>
Subject: Re: [apps-discuss] RFC 5785: Registration of .well-known services under HTTP to First Come
X-BeenThere: apps-discuss@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: General discussion of application-layer protocols <apps-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/apps-discuss/>
List-Post: <mailto:apps-discuss@ietf.org>
List-Help: <mailto:apps-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 15 Jan 2016 03:08:07 -0000

On Thu, Jan 14, 2016 at 10:01 AM, Eliot Lear <lear@cisco.com> wrote:
> Mark,
>
> On 1/14/16 6:34 AM, Mark Nottingham wrote:
>> You can also register /.well-known/phks-protocols/ and do whatever you like under it.
>
> By your own words, that's simply not true unless there is a
> specification tied to it, and personally I think that's a very high
> bar.  On the one hand this is not like port numbers- there are a near
> infinite number of possible subtrees under .well-known, as compared to
> the somewhat constrained port number space.  On the other hand,  one
> doesn't want to create a land rush on mnemonics.  IMHO this is possible
> to fix.  Simply allocate a random string of 8 characters or so for a
> developer to use (not for them to choose).  This should suit developers
> who do not wish to publish their specifications or otherwise have reason
> to apply more meaning or structure as you mention in Section 3 of 5785,
> but otherwise do not wish to produce specifications.  For those who
> still want a mnemonic, they can produce a spec.

Actually SRV and .well-known are both very much like ports in that
they serve different aspects of the same function without the port
number restriction.

The original Internet discovery mechanism had two steps:

1) Conversion of the DNS name of the service to a network host
(identified by IP address) via DNS A record lookup

2) Identifying the protocol to the host at the specified address.


The SRV record was originally proposed as a replacement for both parts
of this problem and equally importantly, to provide the fault
tolerance and load balancing capabilities that the MX record provided.

The fact that HTTP does not use SRV records is irrelevant because Web
Services have used SRV since the very first Web Services standards
were written. I know because I wrote those parts of the specs.

People developing Web Services certainly want to use a mechanism like
SRV records to get the benefits of the fault tolerance mechanism.
Using an SRV record we specify the priority, wieghting, port number
and host name of each server providing a service:

_mmm._tcp.example.com 0 20 80 host1.example.com
_mmm._tcp.example.com 0 80 80 host2.example.com
_mmm._tcp.example.com 1 5 80 voldemort.example.com

This specifies three hosts that can provide service for the domain.
When host1 and host2 are both available, host2 gets 80% of the
requests and host1 gets the rest. If a client can't connect to either,
they connect to voldemort.


The reason SRV isn't sufficient for Web services by itself is that Web
Service hosts typically host multiple services and it would be really
inconvenient (and inefficient) to separate them by port number.

Some other means of separating the Web Services is required. Some time
ago now Patrik suggested the URI scheme which is a perfectly sensible
way to achieve the objective but it does introduce other problems.

One of these is that there are now two different mechanisms for
discovery and the person configuring the protocol has to know which
one to use. Another is that many ISPs do not provide a means to
configure URI records, only SRV is supported.

So just as Netscape discovered that it was necessary to add the Host:
header to the original HTTP protocol, there is now a need to add the
SRV prefix which serves the equivalent function. The most
straightforward way to do that is to use the .well-known convention.

The logic of this approach over the URI RR becomes apparent when the
design of a HTTP successor protocol that is specifically for Web
Services is considered. Most Web services make almost no use of HTTP
features beyond the protocol identification described above and the
message framing. If one was developing a protocol that was only for
Web Services, it would not have features such as caching which are
almost never desirable. Such a protocol would probably treat URLs that
are outside the .well-known set as the exceptions.


So far I have not seen a single technical argument been made against
this approach. It quite definitely works and it is certainly as well
founded as a published RFC written by someone who was an IAB member at
the time.

The only arguments I have seen are about the need for gatekeepers to
protect the integrity of the Internet. Which in this case are being
made by the gatekeeper in question. I think that we need to know the
following:

* Approximately how many requests are made each year?
* Of these what proportion are accepted / rejected / abandoned?
* In what cases have changes been made to a protocol in order to make
it acceptable?


But regardless of the answers to these questions, there is a much
larger policy question which is what should be the IETF policy for
assignment of code points in registries that have an effectively
unlimited supply?

I am genuinely troubled by a situation in which being a domain expert
for an IANA registry seems to be giving one individual a degree of
power we do not afford the IESG. When the response to raising such
issues is personal attacks, then I take offense.


In answer to Eliot's issue, I do not see SRV prefix squatting as being
a problem. It certainly hasn't been a problem to date. The worst that
can happen is that we run out of easy to remember prefixes and people
have to use unmemorable ones. But the only practical alternative being
to start with unmemorable ones, I can't see it helping.