Re: [IPv6] Link-local URI status (rfc6874bis)

Brian E Carpenter <brian.e.carpenter@gmail.com> Wed, 01 November 2023 20:52 UTC

Return-Path: <brian.e.carpenter@gmail.com>
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 63175C17C535 for <ipv6@ietfa.amsl.com>; Wed, 1 Nov 2023 13:52:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.196
X-Spam-Level:
X-Spam-Status: No, score=-7.196 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, FREEMAIL_FROM=0.001, NICE_REPLY_A=-0.091, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZZPiqRd3Bx_Y for <ipv6@ietfa.amsl.com>; Wed, 1 Nov 2023 13:52:55 -0700 (PDT)
Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 98603C17C512 for <ipv6@ietf.org>; Wed, 1 Nov 2023 13:52:55 -0700 (PDT)
Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1cc5b6d6228so1409715ad.2 for <ipv6@ietf.org>; Wed, 01 Nov 2023 13:52:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698871975; x=1699476775; darn=ietf.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=1DbD4Zcj7tqAj+n3wDqFDWnENYfH5fu2Ug141IhsbDU=; b=l97kXVMyVNGGS20Q/P3taHiuoxxAIm6ZVtjgbPysz6qTeJlxJvVHJBBGCmhfqz2op9 QtivocJbBe6Y7fjpGM8Uz2iMJgLkZo11IbMh26dNY65swn+n0VGfgRThjCOQpHhdVA7u Ibpkqc2MckIW9TCvTuNUUonI5zipTWBN1h3fFrVIAqjFJQkzgZdJBddlSVAj7rpVWjON LCaYfaqKwz2uIXZdIAE+EgrzulM+VZ+B+DMXr7Y7DFn+r2BIxItITRdrOrpRhaJzh/qy EZ9P7ZkvxkMEhM2pl8KvRcXpy8KQesiqiNGXG+XeyvfvyN7l4CIKmzB6J2Ozn95UPQG6 S0BQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698871975; x=1699476775; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1DbD4Zcj7tqAj+n3wDqFDWnENYfH5fu2Ug141IhsbDU=; b=XA3HKc1vR2EOiov2gUW5DKxTjJSJSn/QkR6N6R9JQSKPTGq/46TG55peJYcIf9FUcZ 0DCFe7uSg/RZvI8vxu+bbmVrJ+i0ItTChE7LyyMz3eXoLSVuALRj7ioUIvSyWIm/P0kG zSXCYq3cFKD4a6El5+cyR+QG5B4mTsB2wefs4Ce5YYGAfCo6zBi1dFq3dcDbUPuVUtlp jtUArKEe7lcLirVYI7ojjum2Er1mOti0QHIg5Nx+z28cCdgbWw/Trk4X1PijpZQl341m vzz8+Xw0C/w2BRiDu4U0KVm/OcHxnFCTl72uUf1J0QTvuiUMtkw5OcgLdEppyMu3vJYP +0OA==
X-Gm-Message-State: AOJu0Yx+RKd5X0hgVpZ0f7RyOtBEYuCR+QRAc+ftEHCNTzGdPNJrhSZo T7pjROHMCG8ZXxWdMTpfxzk=
X-Google-Smtp-Source: AGHT+IFykv9SAGb+BEjMWxlMbDmUw4TFyfBrPpNFgg53QIdv9ofa01Fg6ZQGf2/Y3nc/UGTlcb6XHw==
X-Received: by 2002:a17:902:d50b:b0:1cc:52ca:2e01 with SMTP id b11-20020a170902d50b00b001cc52ca2e01mr10073830plg.16.1698871974996; Wed, 01 Nov 2023 13:52:54 -0700 (PDT)
Received: from ?IPV6:2406:e003:110d:5301:8cb6:a2c:7461:4047? ([2406:e003:110d:5301:8cb6:a2c:7461:4047]) by smtp.gmail.com with ESMTPSA id f3-20020a170902ce8300b001b895336435sm1703131plg.21.2023.11.01.13.52.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 01 Nov 2023 13:52:53 -0700 (PDT)
Message-ID: <4dff1ca6-5ff1-66c8-8a1f-bb063f2cb8c1@gmail.com>
Date: Thu, 02 Nov 2023 09:52:48 +1300
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0
Content-Language: en-US
To: Carsten Bormann <cabo@tzi.org>
Cc: 6man <ipv6@ietf.org>, Bob Hinden <bob.hinden@gmail.com>, Stuart Cheshire <cheshire@apple.com>, "Rob Wilton (rwilton)" <rwilton@cisco.com>, "Murray S. Kucherawy" <superuser@gmail.com>
References: <17352fa3-c3c9-3cc3-27f2-f8f57dfff383@gmail.com> <8599A8DD-2D53-4F5F-9283-1C8D170FFF5C@tzi.org>
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
In-Reply-To: <8599A8DD-2D53-4F5F-9283-1C8D170FFF5C@tzi.org>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: base64
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/_LMiNku86IgsmPomZvbyaZTvkJ4>
Subject: Re: [IPv6] Link-local URI status (rfc6874bis)
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.39
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, 01 Nov 2023 20:52:59 -0000

> 
>> Also, the format for non-global addresses might conflict with the URI
>> syntax [13], since the syntax defines the delimiter character (`%')
>> as the escape character.  […]
> 
> Why???  Was the decision to be incompatible forced by anything?

It was a mistake. Possibly there was running code using the '%' sign before RFC 4007 was published; it goes back to https://datatracker.ietf.org/doc/html/draft-ietf-ipngwg-scoping-arch-02.txt in March 2001.

However, mitigating that mistake (by agreeing to use a different symbol in URIs) is only one of the three problems that are holding up the draft.

Regards
    Brian

On 01-Nov-23 22:30, Carsten Bormann wrote:
> Hi Brian,
> 
> I am not sure I can contribute much of anything at this point, but I think we can learn from this specification, so I’ll try to write up as much as I understand.
> 
> First, I recognize this as a textbook (sic) example of falling prey to the attraction of text-based formats.
> Of course, the text-based URL was the major innovation that made the Web possible, and of course we need a way for humans to interact with the network, based on IP addresses.
> 
> But what happened here was that the IP address format was simply embedded in the URL format, and, when it inevitably was extended (to cover IPv6), the extension chose a character (“:”) that is not fully transparent in that embedding.  The brackets serve as a workaround for this specific issue (published 1999 in RFC 2732 after the Web was built on RFC 2396, published 1998, finally published to the Web community in RFC 3986 in 2005).
> We didn’t think that inevitably the address format would need to be extended again (well, there is IPvFuture, but that was never used AFAIK and is framed as support for a new IP version, which I hope won’t happen so quickly).
> 
> Enter RFC 4007 (also published in 2005), the inevitable next extension of the text-based address format.
> Amazingly, this did *not* define how this extension would be used in a URI:
> 
>> Hence, this document does not specify how the format for non-global
>> addresses should be combined with the preferred format for literal
>> IPv6 addresses. In any case, it is recommended to use an FQDN
>> instead of a literal IPv6 address in a URL, whenever an FQDN is
>> available.
> 
> Worse, the reason given before the “Hence” is that the wrong delimiter was chosen:
> 
>> Also, the format for non-global addresses might conflict with the URI
>> syntax [13], since the syntax defines the delimiter character (`%')
>> as the escape character.  […]
> 
> Why???  Was the decision to be incompatible forced by anything?
> 
> Obviously, when a text-based format is extended by using new lexical features, embeddings into other text-based formats that might be using these lexical features for something else will break.  So it behooves the embedded text-based format to be a bit careful about causing this breakage, even if that should really be none of its job (a layer violation of the worse kind).
> 
> Anyway, this problem was explained away, and as we have learned, the lexical issue served as an interoperability problem, a block to implementation, and ultimately (together with vague security issues) as a convenient excuse for not implementing the extension.
> 
> Now we have the unclean situation with two interpretations of the % extension, plus the purported security issues that make it convenient to just point to the unclean situation and do nothing.
> 
> How do we get out of the corner that we have painted ourselves into?
> 
> Taking one side (the opposite one to the previous RFC) and hoping that everyone will follow creates interoperability problems (and possibly even real security issues) with implementations that are on the other side.
> It is never clear in a debugging situation whether the new standard is prevailing or the old one is still in effect.
> Instead of creating a dilemma, we should create a path forward.
> 
> Choosing a delimiter that is more compatible with the URI format (*) would be one such way forward.
> Yes, that makes copy/paste a bit more awkward (OK, I’d simply add the new syntax to, er, telnet, too).
> But it would create a clear target that is the “new way” of doing this, without question marks and caveats.
> 
> We can’t reduce the pain of doing this, though.
> Maybe we can reduce the pain of being stuck in that corner by finally leaving it.
> But please let’s choose that delimiter (or maybe even better the format in general) carefully this time (**)...
> 
> Grüße, Carsten
> 
> (*) And other embeddings that are in use out there!
> 
> (**) (What is the next extension we need to make to IPv6 addresses?)
> 
> PS.: A fun side story about extending text-based formats by adding lexical features is happening in JOSE right now.  JOSE represents its data usually not in JSON, but in a “.”-delimited sequence of base64url-encoded byte string blobs (one of which actually is a JSON text).  New extensions for Selective Disclosure need to extend this structure with a substructure, so what do we do?  Use “~” as a delimiter for the elements of that substructure!  (The only character that allows all existing embeddings of this text-based format in URIs to continue.  At least we think so...)
>