Re: Next steps for rfc6874bis

Carsten Bormann <cabo@tzi.org> Wed, 18 August 2021 18:53 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 52B063A131B for <ipv6@ietfa.amsl.com>; Wed, 18 Aug 2021 11:53:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.556
X-Spam-Level:
X-Spam-Status: No, score=-0.556 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTTP_ESCAPED_HOST=0.1, HTTP_EXCESSIVE_ESCAPES=0.001, NUMERIC_HTTP_ADDR=1.242, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=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 ttxxkkLDYqf7 for <ipv6@ietfa.amsl.com>; Wed, 18 Aug 2021 11:53:45 -0700 (PDT)
Received: from gabriel-smtp.zfn.uni-bremen.de (gabriel-smtp.zfn.uni-bremen.de [IPv6:2001:638:708:32::15]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BC58F3A12FA for <ipv6@ietf.org>; Wed, 18 Aug 2021 11:53:45 -0700 (PDT)
Received: from [192.168.217.118] (p548dcc89.dip0.t-ipconnect.de [84.141.204.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gabriel-smtp.zfn.uni-bremen.de (Postfix) with ESMTPSA id 4GqcVs2Mzxz2xc3; Wed, 18 Aug 2021 20:53:41 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\))
Subject: Re: Next steps for rfc6874bis
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <m1mGLSu-0000HvC@stereo.hq.phicoh.net>
Date: Wed, 18 Aug 2021 20:53:40 +0200
Cc: ipv6@ietf.org
X-Mao-Original-Outgoing-Id: 651005620.774848-2ec3ababf553fc0d12e22ffcc71e9861
Content-Transfer-Encoding: quoted-printable
Message-Id: <F27FF130-CA9B-4061-B8A8-8F369AE1A0F6@tzi.org>
References: <667b9ebb-3c99-8c5b-fa57-796e5bb84b4c@gmail.com> <3269d750-2e97-9bb2-550a-94b652d689a4@foobar.org> <1ea4c0e5-fd7c-c39a-28a6-681f6c40af8c@gmail.com> <27470.1628692112@localhost> <m1mFccG-0000I3C@stereo.hq.phicoh.net> <20210816134703.meb4pfloazkco22n@anna.jacobs.jacobs-university.de> <m1mFdCV-0000HvC@stereo.hq.phicoh.net> <e1dd5e83-31d2-8b8b-2608-309f8d8d9cd0@foobar.org> <m1mFfMh-0000JWC@stereo.hq.phicoh.net> <29350bb2-a132-2196-c68e-e8d3614ecff8@gmail.com> <m1mFvPJ-0000JPC@stereo.hq.phicoh.net> <CANMZLAbhWbuEBRM63kQ_5=8Bz8cu_WzZ6kUV=9-TydzYgXSuOw@mail.gmail.com> <m1mFwMx-0000IdC@stereo.hq.phicoh.net> <e684bfb5-d4f3-4c02-454b-c34428882852@gmail.com> <m1mGLSu-0000HvC@stereo.hq.phicoh.net>
To: Philip Homburg <pch-ipv6-ietf-7@u-1.phicoh.com>
X-Mailer: Apple Mail (2.3608.120.23.2.7)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/ENVgukkN7zQKaGl8k5I3LBeXX8c>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Aug 2021 18:53:52 -0000

On 2021-08-18, at 15:18, Philip Homburg <pch-ipv6-ietf-7@u-1.phicoh.com> wrote:
> 
> In your letter dated Wed, 18 Aug 2021 08:39:41 +1200 you wrote:
>> On 17-Aug-21 22:30, Philip Homburg wrote:
>>>> Andrew offered ABNF to back up his assertion, I can't point to it from my
>>>> phone but you'll find it upthread somewhere. Whether real world parsers can
>>>> respect it is a question for the parser authors.
>>> 
>>> If I got it correct he is basically saying that RFC 3986 is wrong. 
>>>> From https://mailarchive.ietf.org/arch/msg/ipv6/ocNXw2Tl7YnOXOVjnUJ_VS7PI88/
>>> "That is a bug.  The '%' must be treated as the syntactic delimiter it is.
>> 
>> Well, the issue is that the prose in RFC3986 isn't really consistent
>> with the ABNF, where the pct-encoded construct is precisely defined and used.
>> A parser that strictly follows the ABNF will only apply percent encoding
>> (and decoding) where the ABNF tells it to, not to the whole string. That's
>> exactly the point we need to discuss with the implementers in WHATWG.
> 
> I checked some running code:
> https://f%31.example.com/
> is accepted by Chrome, Firefox, and Safari as https://f1.example.com/.

Correct, reg-name includes pct-encoded.

> Curl doesn't do percent processing and seems to be clearly wrong here.

Indeed.

> https://192.168.1.%31/
> is accepted by Chrome, Firefox, and Safari as https://192.168.1.1/.

Incorrect.

> Curl doesn't do percent processing and tries to resolve '192.168.1.%31'.

Correct.

> https://[2001:0DB8::%31]/
> is accepted by Chrome as https://[2001:0DB8::1]/

Incorrect, IPv6address does not include pct-encoded.

> It is rejected by Firefox and Safari as invalid.

Correct.

> Curl doesn't do percent processing and possibly treats it as a zone ID.
> 
> So it seems that curl violates Section 3.2.2 of RFCC 3986, because that
> section explicitly calls for percent processing for 'registered' names.
> 
> Chrome is consistent and applies percent processing to both IPv4 and IPv6
> literals even though the RFC does not explictly require that.

It’s not that it doesn’t require that; it does not allow that.

> Firefox and Safari seem inconsistent in applying percent processing to
> IPv4 literals but considering IPv6 literals with percents as invalid.

Of course, the problem as usually is that ABNF is being used to describe the input to a process (pct-decoding), when implementers are quite likely to apply it to the output of the process.  But at least RFC 3986 appears to be self-consistent here.

>> We (the IETF) are "they". Unfortunately, there's another "they", the
>> implementers, and in the end the implementers win, because running
>> code trumps rough consensus.
> 
> So it seems that the running code does random things unrelated to the
> RFC. And there is not a lot of agreement in the running code.
> 
> Best to avoid this mess and pick a new separator for zone IDs.

Note that, when fixing this, there is absolutely no reason to change 4007 from “%” — note that 4007 doesn’t have square brackets either.  6874bis could (continue to) introduce square brackets and a new delimiter with that.  Choosing, say, / would probably be not too wise, but just about anything else that cannot go into IPv6address (HEXDIG, :, .) is fair game.

Grüße, Carsten