[DNSOP] Re: libc 3 resolver limitation and draft-ietf-dnsop-3901bis (was Gorry Fairhurst's No Objection on draft-ietf-dnsop-3901bis-15: (with COMMENT))
Erik Nygren <erik+ietf@nygren.org> Sat, 16 May 2026 19:42 UTC
Return-Path: <erik+ietf@nygren.org>
X-Original-To: dnsop@mail2.ietf.org
Delivered-To: dnsop@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 953F8EF53C4F for <dnsop@mail2.ietf.org>; Sat, 16 May 2026 12:42:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1778960533; bh=jvgikCnTkq9ybHY/7qPK/6ecVQNNe0RyLMLFFVZEj/Y=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=t7EzfckfnlQ1RGnOUKAl1ydYahE4Acp8xlK8YBUILdLRXXZ84FM+Mj3e18RJZ0lnE RpwdtDKengTSXHq0gjaSNv8FN7A7F+RzWCbUc3NYzEpYSLCol7fV97KjL1uksrm3hj ekSsYZE1mqJms3Zc7cfAP9Br2zgQJXEE79yDaZYg=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, HTML_MESSAGE=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=nygren.org
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 mn5jCiaddQ0E for <dnsop@mail2.ietf.org>; Sat, 16 May 2026 12:42:11 -0700 (PDT)
Received: from eos.nygren.org (eos.nygren.org [199.204.154.100]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 4E999EF53A96 for <dnsop@ietf.org>; Sat, 16 May 2026 12:40:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=nygren.org; s=eos-4; h=Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=yYtFOlsyDfsTvgTbgpKSBV6/gQinP8eumDpIged7o/I=; b=MDAawCePOdrlJ+LtP1MU3QS5Iy QzdOT4HqTYYowQGyX1Vb8mNwgB6ud3yC9jQ5DgolhIpTeENCiD3yaJTS4TMGjPpBggTyl4zomKOa1 rg4IV/CVZUWtfFjt715FY/ovNJLlkfXqa5vnirlwnWxx+tN7WSwzvZ3vDfAaP4beFmqPiiaqV/Nj8 kMmPtRGNvFkLTG7gM3Hn2X7SdXGWQKyEqdwX04VUeKqsC73PVSVNb1JZYRS0FChq2uyGWy4EzZ/Km p8/rekjUk71Hf3hDVLXA1i0LhweolGUIS7oY8eDrRu/aHGc5CjWzJiqbBB8ZGlHtBwbYkBxgB+99w xHVnM54g==;
Received: from mail-lf1-f48.google.com ([209.85.167.48]) by eos.nygren.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.97) (envelope-from <erik+ietf@nygren.org>) id 1wOKrs-00000002wLA-2Fyj for dnsop@ietf.org; Sat, 16 May 2026 15:40:12 -0400
Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-5a8dc2606a0so1096017e87.2 for <dnsop@ietf.org>; Sat, 16 May 2026 12:40:12 -0700 (PDT)
X-Gm-Message-State: AOJu0YzqjEA7yH00xLUBn3s/G/BbKvl2v1hHAh27kGucBGuWXMVp29tc bd9ZGso0yGW6Zs6EqngoeheEMidSyr0BqqQLrRr3U1dVr+HHnmDtq66RDhRlscDNTnI4XTFUh14 ibl2SLSHopF+qJNICtFWMHDbVdhgtwXI=
X-Received: by 2002:a05:6512:23a8:b0:5a8:750c:2f79 with SMTP id 2adb3069b0e04-5aa0e6056bemr2521695e87.3.1778960411533; Sat, 16 May 2026 12:40:11 -0700 (PDT)
MIME-Version: 1.0
References: <177067027899.1118576.3469652122683083718@dt-datatracker-6bcfd44575-g5gjh> <1e8c25f13f840a579ed76336199653ddcf1bf1fa.camel@fiebig.nl> <CAKC-DJjn_e=hJZnpeLQU4DLQwUNrJgmjYYEMkk0YFz1axn9wjA@mail.gmail.com> <e233b78b23dad459a49239df11ad162a0e514fdc.camel@fiebig.nl>
In-Reply-To: <e233b78b23dad459a49239df11ad162a0e514fdc.camel@fiebig.nl>
From: Erik Nygren <erik+ietf@nygren.org>
Date: Sat, 16 May 2026 15:39:59 -0400
X-Gmail-Original-Message-ID: <CAKC-DJg1AweR9PvFr3Qkw+Pxoq0JYSXqg43-mJ6W96byE5U-SQ@mail.gmail.com>
X-Gm-Features: AVHnY4LuUD4ZSADO3jGQyzALabZqyXTu2KHGxTDaCMva06HkL8IRmbz93RP26QE
Message-ID: <CAKC-DJg1AweR9PvFr3Qkw+Pxoq0JYSXqg43-mJ6W96byE5U-SQ@mail.gmail.com>
To: tobias@fiebig.nl
Content-Type: multipart/alternative; boundary="0000000000006627a00651f47f98"
Message-ID-Hash: VHJ2LAWWHV3LL3NDVGMEM66VSNFEWLPR
X-Message-ID-Hash: VHJ2LAWWHV3LL3NDVGMEM66VSNFEWLPR
X-MailFrom: erik+ietf@nygren.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-dnsop.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: dnsop WG <dnsop@ietf.org>, "v6ops@ietf.org list" <v6ops@ietf.org>, Gorry Fairhurst <gorry@erg.abdn.ac.uk>, draft-ietf-dnsop-3901bis@ietf.org, Ondřej Surý <ondrej@sury.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [DNSOP] Re: libc 3 resolver limitation and draft-ietf-dnsop-3901bis (was Gorry Fairhurst's No Objection on draft-ietf-dnsop-3901bis-15: (with COMMENT))
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/YHdgA1cMvdwQ7pPxSLiOOBogdx4>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Owner: <mailto:dnsop-owner@ietf.org>
List-Post: <mailto:dnsop@ietf.org>
List-Subscribe: <mailto:dnsop-join@ietf.org>
List-Unsubscribe: <mailto:dnsop-leave@ietf.org>
> > The problem you describe (which subset to pick if there are v4 and v6 > resolvers, and how to make sure that a client at least receives one it > can _directly query_ per AFI) is, in my opinion, slightly tangential > (but very much related). I agree there are two separate issues: 1) The one mentioned in the draft where only a subset of resolvers have the ability to resolve for each address family. This is certainly a problem of its own -- I wonder how well various stub resolvers deal with this? Having different partial connectivity from different stub resolvers but configured as the same may confuse some of the stub resolvers and will cause performance issues. I'm unconvinced that having a subset of them dual-stacked is good enough to avoid problems, as many stubs aren't good with handling cases where their recursive resolvers have partial functionality. 2) The one I'm raising where it is important to make sure the client receives at least one recursive resolver its stub resolver or stub library can reach is separate/distinct. This isn't covered in the current draft, but I agree that it is messy enough that it is likely hard to cover with just a small update here. (I'm actually not sure there is a heuristic that always works.) Best, Erik On Tue, May 5, 2026 at 11:29 AM Tobias Fiebig <tobias@fiebig.nl> wrote: > Hello Erik, > > > > When providing multiple DNS servers to stub resolvers, network > > > operators have to consider that various implementations can only > > > configure a small set of possible DNS resolvers, e.g., only up to > > > three for libc [MAN], and additional resolvers provided may be > > > ignored by clients. Hence, when providing more than three DNS > > > servers to stub resolvers, operators SHOULD ensure that any random > > > subset of three DNS resolvers from the provided list contains at > > > least one recursive DNS server supporting DNS resolution via IPv4 > > > and > > > one DNS server supporting DNS resolution via IPv6. A single > > > recursive DNS server supporting dual-stack DNS resolution counts > > > towards both requirements. If this is not done, a client might > > > select a subset of recursive DNS servers that leads to address > > > family > > > based namespace fragmentation. > > > > Unfortunately the problem isn't with address family based namespace > > fragmentation. > > It is that the DNS resolver provided is provided as an IP address not > > a name, and how clients > > assemble these lists from various sources can be challenging. How > > those resolvers > > behave when they recurse isn't necessarily relevant to the issue (but > > is also an interesting case as well). > > For example, if a provider does what would seem like the obvious > > thing > > of "3 IPv4 resolvers, 3 IPv6 resolvers" > > then clients can (non-deterministically) end up with > > > > * 3 IPv4 (0 IPv6) > > * 3 IPv6 (0 IPv6) > > * 2 IPv4, 1 IPv6 > > * 1 IPv4, 2 IPv6 > > > > if either the resolver fails, or the clients' path to the resolver > > fails, or the client lacks connectivity > > on one address family or the other then things break (or at least are > > degraded). > > I'm not sure what our guidance would/should be here. Ideally clients > > would just accept the > > "3 IPv4 resolvers, 3 IPv6 resolvers" which works for things like > > systemd-resolved but > > not for libc using resolv.conf > > > > Because I don't have a good answer (this is a hard problem with no > > obvious "best practice") > > I'm not sure what we would want to put into the draft even if it > > hadn't been passed off for publication. > > I don't know if we want an errata that describes this challenge in > > more detail, though? > > > > As a concrete example of how I've solved this in two different > > environments: > > > > Env1: Include 2 IPv4 and 1 IPv6 resolver deterministically, but with > > each being backed by a high-availability service. > > > > Env2: Include 3 IPv4 when we know there is public IPv4 access. > > Include 3 IPv6 when we know there is no public IPv4 access but only > > public IPv6 access. > > > > (These are way too deployment contextual to be useful in this draft > > The guidance you quoted--at least as i read it--is not related to how > the three NS are being reached, but instead to which capabilities they > have in terms of DNS resolution. > > So, if an operator provides four NS via DHCP, e.g.: > > 192.0.2.1 > 192.0.2.2 > 192.0.2.3 > 192.0.2.4 > > Two of these would have to support dual-stack DNS resolution themselves > (and, technically, all of them should). > > The problem you describe (which subset to pick if there are v4 and v6 > resolvers, and how to make sure that a client at least receives one it > can _directly query_ per AFI) is, in my opinion, slightly tangential > (but very much related). > > > -- > > it may be that if this is impacting enough folks this is worth its > > own separate Informational draft.) > > I would personally argue that this would be the best way forward. There > are a lot more deployment considerations in there, also differentiating > between access/server systems etc. > > As such, I'd kind of prefer to write a 'full' I-D on this, instead of > an eratta. > > With best regards, > Tobias > > -- > Univ.Prof. Dr.-Ing. Tobias Fiebig > T +31 616 80 98 99 > M tobias@fiebig.at >
- [DNSOP] Gorry Fairhurst's No Objection on draft-i… Gorry Fairhurst via Datatracker
- [DNSOP] Re: Gorry Fairhurst's No Objection on dra… Tobias Fiebig
- [DNSOP] Re: Gorry Fairhurst's No Objection on dra… Gorry (erg)
- [DNSOP] libc 3 resolver limitation and draft-ietf… Erik Nygren
- [DNSOP] Re: libc 3 resolver limitation and draft-… Tobias Fiebig
- [DNSOP] Re: libc 3 resolver limitation and draft-… Erik Nygren
- [DNSOP] Re: libc 3 resolver limitation and draft-… Tobias Fiebig
- [DNSOP] Re: libc 3 resolver limitation and draft-… mohamed.boucadair