[IPv6] These problems aren't new, they've been in IPv4 for 40+ years / IPv6 layer probing (Re: Best Source / Destination address pair [WAS: Best Address type (assuming God's view)])

Mark Smith <markzzzsmith@gmail.com> Fri, 08 September 2023 02:00 UTC

Return-Path: <markzzzsmith@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 A90BEC15171B for <ipv6@ietfa.amsl.com>; Thu, 7 Sep 2023 19:00:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.604
X-Spam-Level:
X-Spam-Status: No, score=-1.604 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, FROM_LOCAL_NOVOWEL=0.5, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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 OtHkT7saEjco for <ipv6@ietfa.amsl.com>; Thu, 7 Sep 2023 19:00:53 -0700 (PDT)
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) (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 952FBC151710 for <ipv6@ietf.org>; Thu, 7 Sep 2023 19:00:53 -0700 (PDT)
Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-9a58dbd5daeso198219066b.2 for <ipv6@ietf.org>; Thu, 07 Sep 2023 19:00:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694138452; x=1694743252; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=eo+wXtFf1sezuJI4Ti19eGxEXFh58IKlFEIz5cuwq0c=; b=IIIiCwalQeLp3sTmtwDrsTf05npUB77KdDa3afudlhnHNxODjTTvOOem+SIjG4YMnn BGbxtPHKi0INMhzTyL5enNwSXre9ZOAuqnrxCZW84GFkiYcPCIWvlJchVLMJpZjaibCR 3PKQwrdcKDsoGAyBiXyyzz5+kABgwbceqC/lvwMkfKGw7VZai44KVpNbTWI+MmU++PZa jvoQDKe/RubktB02aT0LA32Vn73e8Xhp26PClQZUopj0hLpgePnPQ1OY8IunvPEZmiTA p9AzrLa1E4WHvf3rY0nGirkFc2ipfY6S3dj3GWW4Mgbqxdsj+JZ63mS7FTQWqP0v2DNm A76w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694138452; x=1694743252; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eo+wXtFf1sezuJI4Ti19eGxEXFh58IKlFEIz5cuwq0c=; b=frhtz/pF1vRtHaLg/Z43XYMVCfyRmXrb722RjPNyjBSI6LwoiUxMwpTD46JJTfvvmh zDw15wSdeYDSQdjGXoPyAtyrspaeQujuNO1ufeX1OIT6i3cVllYZx31OFsVFB6kppsvu 4+1kXb6jfNHtz/J/1zGHOs5HcafMtSHUGHLdJ2b5uz6Ybl8gswdGDaPMOH2XOI5hI4NV Tpxh9W76Xlh1mxgm+ZbZ+yEiSXgHA+pkO4Vm0wP5AapUg33THCj9d7S4xVg8CLyNPOFw n8FNuN/cZqFE2wK8IJw18hJSTpH9LeGY3RhesHupX3FupwfXBjqR7vdvw+TU5E2vMdqe JbuA==
X-Gm-Message-State: AOJu0YwVc+4jhQuHGiHm13PFERnh0FFqKtI2/BYbRitbLO35enZ/WD/t gW02CB6CewoIPTxuOfSSgHNj4mwsSgiX1FQ+QhuMKuIiPjg=
X-Google-Smtp-Source: AGHT+IGLvNob5bYD/P15KmkYKfXaTsgjGiMyVWVLdNxa7QU5tcHkgVguDYJmnyAEhQwU6P93imNpoCNMpI6clPasSwg=
X-Received: by 2002:a17:906:2208:b0:991:fef4:bb9 with SMTP id s8-20020a170906220800b00991fef40bb9mr731428ejs.58.1694138451528; Thu, 07 Sep 2023 19:00:51 -0700 (PDT)
MIME-Version: 1.0
References: <639c79cd-028b-9bf6-a0fb-d0e9694252dd@gmail.com> <40392258-8E8E-4B30-99C4-5F5653D34A6A@employees.org> <f9a12ba8836447f9a645487626feac64@huawei.com> <8A9ACC83-9F09-442E-AF11-E7392D9C9503@employees.org> <320e1d1fff984c74967c8cff071e0821@huawei.com> <CE5D0D35-BBBF-4A83-9BD4-643DF1DB3322@employees.org> <f01249f8-2875-67b8-1742-eb6c91c4fed4@gmail.com> <CAO42Z2z4iB8vVy3xWNu1xOu6GMs5AuuPZD5+jQf0MjGLbSdYLQ@mail.gmail.com> <99007aaa-76aa-5489-4bc6-f7bd7cf08fa8@gmail.com>
In-Reply-To: <99007aaa-76aa-5489-4bc6-f7bd7cf08fa8@gmail.com>
From: Mark Smith <markzzzsmith@gmail.com>
Date: Fri, 08 Sep 2023 12:00:24 +1000
Message-ID: <CAO42Z2z8nn5z6FooWqcVVSAF4fhT+GRDPZEWdy2GE=ySdCLY4A@mail.gmail.com>
To: Brian E Carpenter <brian.e.carpenter@gmail.com>
Cc: Ole Troan <otroan@employees.org>, 6man WG <ipv6@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/TeWwhlXCClTvNBCTEJ6WF4s7T9g>
Subject: [IPv6] These problems aren't new, they've been in IPv4 for 40+ years / IPv6 layer probing (Re: Best Source / Destination address pair [WAS: Best Address type (assuming God's view)])
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: Fri, 08 Sep 2023 02:00:57 -0000

Hi Brian,

On Fri, 8 Sept 2023 at 09:22, Brian E Carpenter
<brian.e.carpenter@gmail.com> wrote:
>
> Mark,
> On 08-Sep-23 09:29, Mark Smith wrote:
> > On Fri, 8 Sept 2023 at 06:51, Brian E Carpenter
> > <brian.e.carpenter@gmail.com> wrote:

<snip>

> > Unreachable DAs are a just case of packet loss, either temporary or
> > semi-permanent (until the bad DNS entry is fixed).
> >
> > Unless we're going to revise the Internet protocol model, per RFC 1122,
> >
> > "Internet Layer"
> >
> > " Thus, IP datagrams may arrive at the destination host damaged,
> >                duplicated, out of order, or not at all.  The layers above
> >                IP are responsible for reliable delivery service when it
> >                is required."
>
> I don't believe that statement was intended to cover the case where
> there is no path between the chosen source address and the chosen
> destination address. Multi-addressing was not a thing in 1989.
>

Not by that name. Multi-addressing is another name for multi-homing,
so as long as that has been supported in Pv4, it has been possible
that there isn't a path between an SA/DA pair between a pair of
multihomed hosts, or a single homed and multi-homed host.

This text from RFC 791, September 1981 (and in earlier versions at
least back to IEN111), could be used exactly and literally to describe
IPv6 multi-addressing:

    That is, provision must be made for a host to have several physical
    interfaces to the network with each having several logical internet
    addresses.

DNS (Sep 1983) and earlier host files can and could have provided
unreachable DAs for a multi-homed host.

RFC1597 IPv4 private addressing created the possibility of
specifically unreachable IPv4 DAs in global DNS, e.g DNS providing a
globally reachable IPv4 DA as well as a globally unreachable RFC1918
DA.

IPv6 has only made these issues more likely to happen since
multi-addressing (or multi-homing) is the default (which I'm guessing
originated from RFC 1681 by Steve Bellovin). They're not new issues in
IPv4 at all.

> > it's not the IPv6 layer's problem, it's either the transport layer's
> > problem or the application layer's problem.
>
> They are certainly the victims.

<snip>

> > A getaddrpairs() call wouldn't hide it. It needs to be hidden in the
> > transport layer.
>

To add to this, I said this because I think that is really where the
problem is - in the transport layer protocols.

TCP and similar timeouts that are not human user friendly. Per an
article I've referenced below, human user friendly timeouts need to be
in the order of milliseconds, up to a total response time of no more
than 1 second, not multiple seconds.

> It isn't intended to hide the existence of multiple paths. It's
> intended to avoid the upper layers being handed *non-existent*
> paths. The current situation, with getaddrinfo() being disjoint
> from source address selection, *guarantees* that the upper layer
> will start with a non-existent path in some circumstances. How
> can that be good systems design?
>

I think the probing mechanism you're describing would effectively be a
partial duplication of the upper layer connection establishment
mechanisms that already exist e.g. TCP's 3 Way Handshake, and I'd say
that's not good system design.

For this probing mechanism, what packets are you going to use?
Unreliable and/or blocked ICMPv6? Spoofed application TCP
SYN/SYN-ACKs*?

What timeout values are you going to use for this IPv6 reachability
probing mechanism? TCP's?

An application blocking behind a multiple second "getaddrprobe()" call
is well above the threshold of what is considered a good human user
experience of 1 second, which is why Happy Eyeballs and my test
program below use time outs in the 100s of milliseconds:

"Response Times: The 3 Important Limits"
https://www.nngroup.com/articles/response-times-3-important-limits/

TCP and similar's (i.e. MPTCP, QUIC, SCTP) connection establishment
mechanisms actually do two things concurrently - both test
reachability of a DA, and negotiate connection establishment if the DA
is reachable.

Regards,
Mark.






> I think that is completely disjoint from the need to handle
> multipath in the upper layer, which I completely agree with.
>
>      Brian
>
> > Multipath, and therefore multi addressing aware
> > transport layer protocols can hide it. MPTCP and MPQUIC need to adopt
> > Happy Eyeball style techniques for their connection setup, attempting
> > to connect to the multiple IPv6 and IPv4 DAs with an amount of
> > concurrency.
> >
> > For the time being of putting it in applications; current HEv2 is hard
> > because it requires concurrent programming. It's possible to achieve a
> > similar outcome using traditional sequential programming (contrived
> > unreachable and unavailable DNS As and AAAAs, plus example.com's IPv4
> > and IPv6 addresses)
> >
> > [mark@opex src]$ ./seqhe seqhe.nosense.org 80 "GET /"
> > getaddrinfo(seqhe.nosense.org)
> >          Duration 0 secs, 12 ms
> > conntout(::1, 112 ms)
> >          conntout() connection error
> >          conntout() duration 0 secs, 0 ms
> > conntout(fe80::4a12:c679:54de:64f0, 112 ms)
> >          conntout() timeout
> > conntout(fd68:1e02:dc1a:ffff::3, 112 ms)
> >          conntout() connection error
> >          conntout() duration 0 secs, 1 ms
> > conntout(2606:2800:220:1:248:1893:25c8:1946, 112 ms)
> >          conntout() timeout
> > conntout(127.0.0.1, 100 ms)
> >          conntout() connection error
> >          conntout() duration 0 secs, 0 ms
> > conntout(10.255.255.3, 100 ms)
> >          conntout() timeout
> > conntout(93.184.216.34, 100 ms)
> >          conntout() timeout
> > conntout(::1, 281 ms)
> >          conntout() connection error
> >          conntout() duration 0 secs, 0 ms
> > conntout(fe80::4a12:c679:54de:64f0, 281 ms)
> >          conntout() timeout
> > conntout(fd68:1e02:dc1a:ffff::3, 281 ms)
> >          conntout() connection error
> >          conntout() duration 0 secs, 1 ms
> > conntout(2606:2800:220:1:248:1893:25c8:1946, 281 ms)
> >          conntout() connection established.
> >          Approx. SYN/SYN-ACK RTT 0 secs, 154 ms
> > Received 500 bytes:
> > ---
> > HTTP/1.0 400 Bad Request
> > Content-Type: text/html
> > Content-Length: 349
> > Connection: close
> > Date: Thu, 07 Sep 2023 21:25:58 GMT
> > Server: ECSF (laa/7AA1)
> >
> > <?xml version="1.0" encoding="iso-8859-1"?>
> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> >           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
> >          <head>
> >                  <title>400 - Bad Request</title>
> >          </head>
> >          <body>
> >                  <h1>400 - Bad Request</h1>
> >          </body>
> > </ht
> > ---
> >
> > Regards,
> > Mark.
> >
> >>      Brian
> >>
> >> --------------------------------------------------------------------
> >> IETF IPv6 working group mailing list
> >> ipv6@ietf.org
> >> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
> >> --------------------------------------------------------------------