[IPv6]Re: Happy Eyeballs, synthesized AAAA and IPv6-only/dual-stack nodes.

Ondřej Caletka <ondrej.caletka@gmail.com> Mon, 17 November 2025 15:00 UTC

Return-Path: <ondrej.caletka@gmail.com>
X-Original-To: ipv6@mail2.ietf.org
Delivered-To: ipv6@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 3B48C8AFC388 for <ipv6@mail2.ietf.org>; Mon, 17 Nov 2025 07:00:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id J8vHZ-DWMF6u for <ipv6@mail2.ietf.org>; Mon, 17 Nov 2025 07:00:57 -0800 (PST)
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 5FAB78AFC2B1 for <ipv6@ietf.org>; Mon, 17 Nov 2025 07:00:21 -0800 (PST)
Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-b73545723ebso779972966b.1 for <ipv6@ietf.org>; Mon, 17 Nov 2025 07:00:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763391620; x=1763996420; darn=ietf.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=HhxCWEPAEBTYm/AQ5NyDEMWE5H2PTu+7fqVl5c4RgMU=; b=iNFph0NZ13CCRumj6AXd1A/egMn7eltuQTSUQPl358upFlwfpGN01mrgbBkCc+nzU5 WNdPbhcRW5OzLWRuyZ0t3/bOnCYBApnR5M/0kpaeYdwEQ9IzEhCbxZUHdR82Vi3KRHiH xCJt3HxcHfZvVi8nnJX1OkYRASsdCftWZ8G8pJQL7HYfMDk5Hx5EBEn2oDBh4LTtdTzQ JogFeqqDLNzYruTTAhQZTsXJDMlL6fR0wKPEJYL/gawby1kYD2ALPntIy7cYjMtcSs44 Vz1hd+QvDr+HkSv/BMf8o3Z0iRwRhodELUf/mg1FC1mO0Z6F9YMSTwr2DPk0CsRb2kV4 aZCw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763391620; x=1763996420; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HhxCWEPAEBTYm/AQ5NyDEMWE5H2PTu+7fqVl5c4RgMU=; b=Vjm+1AlVv2bIuz168hHRxRff/Lm2RnbRE9/YUSEI64CBeH1Tk1i7TIqu4vCeCHGYvy i4d4VHv1Sup1nqWf26BjcV+K55WvJt9q3PKLfuMRKtekpmPJ6I4AWSXpXdgnbqsIvJ09 XW6VRnDRoCibnjWUHZPAR2J74hlauzpjfK1JzLFl8dgc5Ybc2zbp9lajPmfhZri6U+N3 l7rtzzbErmIEEu/fekv4IyMGaPE7oQMhvGI3hHOuAZTwXQ5M5HAcIFZi3mMtdL/yuGMg pI3xJXQxoCkOeFrXmqNkY2D2tQtdhFMp1RXEMLUHN2WyfeceOplHkiEKUrR6W1c8E8du qxUw==
X-Forwarded-Encrypted: i=1; AJvYcCWlHqbg06vdvhNn9btozHDN0LjpaKxtkvywTqKrYoDZVF5834qC2f6lw2+phdH6GU9b82/S@ietf.org
X-Gm-Message-State: AOJu0YwwqV3rwS/vMiWJNcRmE4kNJ1lI4FLXhmowt+FaE5xyF0MdJaNy ABBwv7mwzO8nDd50ofbeTvrBp58yivhVxK1Mk7lOLe3FBH/d6epEjDVfANivw9QPjTnIAw==
X-Gm-Gg: ASbGnctfO0N5aUrR0MEv6Ee1rqzGWvhar5DmGBKmJ1bi5y/P1KYx7tz23eVJiN+Kfwh RaZ53jPoSnIaTC+gEZxgHqICO6eIaThY6loA9jzIeo90iV4nYWC8DkcSnAwfCfpYJ3xg61wF7Hm vf0+05MitVDzRvkohyNynsH7vIk9ZBNAlWC6n5v0zCK8vva5cvBtnbqJQHjlxXg7h19sGAFNwn0 Wc6cFdApyYvGrzYverwkCSBg58yd8+cEh1n1pQ+C9phYZu9yXAbvMnc4ZjtmRA5QiogWoIFsnQ3 UeGuObwUxSTiWAlrifR+i4lmtBmYRi3GPP+Vb3OBCkeEL28NPWB0uONezUQlax/zQUxhOGOe2HC H3l1mQ5R+7Cxy9UQAv/buCNidkBXYScO4WiRK1FcCvVkYFRV/Z36kbthFr9zyM3okVbTLNhvPdM 1pwkeXG8J44nPobsdfpn8YOsVlwH/poKMLwmwzJ+w0J9vl9ytilkddcT+P1lTUlkgkXmoEWMnPT vp+43Ry+Bwo
X-Google-Smtp-Source: AGHT+IGfEzjOqwU/EPbVKBFMhBygTjSojEquDQiaZKBD3J6bICGllddtBBuK1gdAX+6wK+p4G/RnCQ==
X-Received: by 2002:a17:907:1b05:b0:b73:880a:fde8 with SMTP id a640c23a62f3a-b73880b01fbmr754448266b.12.1763391620070; Mon, 17 Nov 2025 07:00:20 -0800 (PST)
Received: from ?IPV6:2a06:8084:4250:60:49b0:e6f3:8dac:424d? ([2a06:8084:4250:60:49b0:e6f3:8dac:424d]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b734fb11d94sm1091912066b.30.2025.11.17.07.00.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Nov 2025 07:00:19 -0800 (PST)
Message-ID: <a4c40f0a-8ed8-465d-88b9-ee4b6eff11d3@gmail.com>
Date: Mon, 17 Nov 2025 16:00:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Philipp Tiesel <philipp@tiesel.net>
References: <CAFU7BARm2mMB9invqv9s3L0fbAFmE+Xmv9DDtEznCKtp4-wfpg@mail.gmail.com> <34D31CD1-ED18-4040-899E-A78851B9D196@tiesel.net>
Content-Language: en-GB
From: Ondřej Caletka <ondrej.caletka@gmail.com>
In-Reply-To: <34D31CD1-ED18-4040-899E-A78851B9D196@tiesel.net>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Message-ID-Hash: TX2SCHRI42MTFV7W6OAGRNACPF6XXBG3
X-Message-ID-Hash: TX2SCHRI42MTFV7W6OAGRNACPF6XXBG3
X-MailFrom: ondrej.caletka@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-ipv6.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: happy@ietf.org, 6man <ipv6@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [IPv6]Re: Happy Eyeballs, synthesized AAAA and IPv6-only/dual-stack nodes.
List-Id: "IPv6 Maintenance Working Group (6man)" <ipv6.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/vaXZjcUYquNLVeHnaYc3gW8B28c>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Owner: <mailto:ipv6-owner@ietf.org>
List-Post: <mailto:ipv6@ietf.org>
List-Subscribe: <mailto:ipv6-join@ietf.org>
List-Unsubscribe: <mailto:ipv6-leave@ietf.org>

Hello Philipp!

On 17/11/2025 11:37, Philipp Tiesel wrote:
> For the sake of simplicity and reducing state explosion, I would really love to remove CLAT from any Happy Eyeballs discussion and, thus, change the perspective:
Good idea! Or at last this CLAT discussion could be postponed after we 
know what to do without considering CLAT.
> Assuming we treat it as Native IPv6, we may end up with more IPv4 than necessary and load the NAT64.
>
> Assuming we treat it as Native IPv4, we make sure native IPv6 is preferred. We may get some extra latency in CLAT, but that may be acceptable.
This is my preferred variant, treat synthesised IPv6 addresses the same 
way like native IPv4 addresses.
> Assuming we treat it as its own class, we can sort it between IPv6 and IPv4 and, thus, prefer NAT64 over “believed to be native IPv4”.
> This would also move the traffic away from CLAT and CGNAT towards IPv6 and know NAT64.
> -> I tend to prefer this.
I fail to see what advantage this would bring. I am still not convinced 
that talking to IPv4 hosts over NAT64 is better or worse than talking to 
them via (optional) NAT44. So what exactly would this extra category help?
> Finally, we should think about how we may end up with NAT64 AAAAs:
The Happy Eyeballs algorithm _has to know_ the NAT64 prefix anyway for 
treating the IPv4 literals or dual-stack servers with broken IPv6 
connnectivity.
> - Got them from DNS64 (perhaps with some heuristics how to identify non-well-known prefixes)
Of course with RFC 7050 heuristics - no implementation should ever just 
assume the WKP or treat the WKP better than any other NAT64 prefix. 
Using RFC 7050 is probably still necessary because due to the fact that 
support for PREF64 RA option requires firmware update of all routers, 
this will take decennia to get universal support.
> - Synthesized them ourselves based on PREF64
Again, this has to happen in order to support IPv4 literals or 
dual-stack servers with broken IPv6 connectivity.
> Both is much easier to classify than any try to detect/undo CLAT.
I don't get this. This was never about detecting and undoing CLAT, it 
was always about detecting and undoing DNS64, because the consensus is 
that DNS64 should not be necessary, so IPv6-only networks with NAT64 
should work well with just PREF64 signalled in the RA. In this 
situation, the Happy Eyeballs can never rely on DNS64 to be present, so 
the algorithm needs to work well without it. So in case it turns out 
DNS64 is actually present, I believe that undoing it is the best thing 
to do.


--
Best regards,

Ondřej Caletka

>
> I would really try to avoid more complexity than this…
>
> AVE!
>      Philipp
>   
>
>> On 14. Nov 2025, at 18:51, Jen Linkova <furry13@gmail.com> wrote:
>>
>> During the IETF124 week, both HAPPY and 6MAN discussed how HE should
>> behave on an IPv6-only host, or when a synthesized AAAA is available
>> but the host has both IPv6 and IPv4 addresses.
>>
>> There is https://github.com/ietf-wg-happy/draft-happy-eyeballs-v3/pull/94
>> but I'm not sure I agree with what's proposed here, and I'd like to
>> continue the discussion on the list.
>>
>> As I've mentioned already, it might be useful to define the desired
>> behaviour first:
>>
>> 1. define how an HE implementation behaves in different scenarios when
>> the NAT64 is present. More specifically - does it prefer IPv4 or IPv6
>> to IPv4-only destinations.
>> 2. if that behaviour is not consistent with what RFC6724 (-bis)
>> defines, craft some modifications to RFC6724(-bis).
>>
>> So, to address #1, I've tried to summarize the options available in
>> the following scenario: the host discovers the NAT64 prefix (so the
>> network provides the NAT64 service) and a synthesised AAAA was
>> received.
>>
>> (There is an assumption that the implementation can differentiate
>> between CLAT and non-CLAT IPv4 addresses. IMHO it's a fair assumption
>> if the CLAT is using 192.0.0.0/28 - as it SHOULD as per
>> https://www.ietf.org/archive/id/draft-ietf-v6ops-claton-12.html.
>> If a CLAT implementation decides to use smth else...well, I'd call it
>> a corner case, don't do it unless you have a very good reason - so we
>> can ignore it for the purpose of this discussion)
>>
>> The table attached describes 3 things:
>> 1. The protocol the host should be using (ideally).
>> 2. How to process the received AAAA RRs
>> 3. How to process the received A RRs or IPv4 literals.
>>
>> Most cases are straightforward (at least I think so - I might be wrong
>> indeed) - feedback welcome.
>>
>> The scenario I'd like to discuss: the host has both IPv6 and non-CLAT
>> IPv4 addresses and the received AAAA is synthesized. Example: a
>> dual-stack host on a network with DNS64. The host has two options:
>>
>> 1. Prefer native IPv4 and fall back to IPv6 (via NAT64).
>> 2. Prefer IPv6 via NAT64 and fall back to native IPv4.
>>
>> IMHO Option 1 is better for the following reason: it would solve some
>> of VPN cases - I believe that's what
>> https://github.com/ietf-wg-happy/draft-happy-eyeballs-v3/pull/94 is
>> trying to solve by 'look at the routing table first before
>> synthesiing'.
>>
>> Does it make sense?
>>
>> P.S. I'm only considering the case of synthesized AAAA: if the host
>> also gets a "native" (non-synthesized) AAAA record, that AAAA it will
>> be preferred over synthesized one, if the network is using the
>> well-known prefix ( as Section 5.3 of the draft requires the addresses
>> to be sorted as per RFC6724 Section 6).
>> ....which gives yet another reason why the well-known prefix is a
>> better default choice than a network-specific one...but it's for
>> another v6ops discussion..;)
>>
>> --
>> Cheers, Jen Linkova
>> <HE AddSelect.png>--------------------------------------------------------------------
>> IETF IPv6 working group mailing list
>> ipv6@ietf.org
>> List Info: https://mailman3.ietf.org/mailman3/lists/ipv6@ietf.org/
>> --------------------------------------------------------------------