Re: [IPv6] Adoption call for draft-bctb-6man-rfc6296-bis

Brian E Carpenter <brian.e.carpenter@gmail.com> Thu, 28 March 2024 18:35 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 89BA9C169431 for <ipv6@ietfa.amsl.com>; Thu, 28 Mar 2024 11:35:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.096
X-Spam-Level:
X-Spam-Status: No, score=-7.096 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_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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 b4kBC7tReU08 for <ipv6@ietfa.amsl.com>; Thu, 28 Mar 2024 11:35:42 -0700 (PDT)
Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) (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 1CA3DC169409 for <ipv6@ietf.org>; Thu, 28 Mar 2024 11:35:42 -0700 (PDT)
Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-6e6b5432439so1183437b3a.1 for <ipv6@ietf.org>; Thu, 28 Mar 2024 11:35:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711650941; x=1712255741; darn=ietf.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=roVu2Z5GT9mklNhOcgv+ugIYe7MH68xN8+04DKvUeRY=; b=H7yV/tNuuw8c9WihDX6SLDVb+SXdvF3Q4F4vpFPSeSR7Q5FREspbxCNiADfJ3nBdwM jua2nDoMGea6iicwfyzsM4z6qrhM8f5dIBRw3RHYFDZjeAJXNPYrDk/820wizNhOEOfT sdrGX5yvDDAgdJKaqEIp1zXPGvtcxtIWvC9ljMzo6OZ7HzH97K1bWmBoDo0YOGBSIrHa DSyU5NqBXp8TG7uM0hHpTawttogcyiRu9P1rewHw0gFkXvoL6zdmc9TRvdRJIDYNt78g G7zv4osxL8nwydPM23PungouwT4nd69sNvDp5oc8iTWCc56G5jrHf/mGmv/vUnjpIx03 NTZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711650941; x=1712255741; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=roVu2Z5GT9mklNhOcgv+ugIYe7MH68xN8+04DKvUeRY=; b=mHyijtX7oJsL27PHrirhzn4iY0cIn9I9ZTeC4Zgk1IcbTr/wctIyt12OlTlBIypc0u cuLrZVXbv7kQxcMWcriWe5TVPC5p2X8IbdhVEZKtHRGunNygvfovip51I/HXodt9mOgP GH7HCD72/CxHO6XK1SWjUMbdxYf0xmbFGBL4Xh/4idhiKHTnSdIJTmOTuNV3DvwIFAe1 GufEWoY8uZ1I7WgyyA1d4g8p3wQ9PMXvJO802tgtuXdVRLPhHQHro3SiwYUewPod6zy9 T6+vGeN2m0ZFuAI9EUSXRlMOdBbQT4kSOMMgHjXC1b6tIffEIkVQcAwtjeJ0OdRqfIdQ ipfQ==
X-Forwarded-Encrypted: i=1; AJvYcCXCVt/2PGVktqYl42m8oBlwnvCcqekf66NXsLdlXSSLR5zcHdFRCXmPdjFxEaP3RTQSD+xwVU29s5aaPwpL
X-Gm-Message-State: AOJu0YxRAZmFk9qw2niogqA5LwsMIEhEukDUCbfUpkzaTbKA/wLSY5gI 6505Ovp6mPWjS/QLEY2bEPtTVsCziy8vD4z7FUPuIcEL5NXdCiyzMbINyOM2
X-Google-Smtp-Source: AGHT+IHuXJxn3U7uo0zSflDoQt7EMatdqDg1wdDS3nf4aXXpUG+Dk4fq068qqlcECtrQY6MVKlyvBg==
X-Received: by 2002:a05:6a21:99aa:b0:1a3:c622:f400 with SMTP id ve42-20020a056a2199aa00b001a3c622f400mr4719421pzb.13.1711650941116; Thu, 28 Mar 2024 11:35:41 -0700 (PDT)
Received: from [172.20.5.106] ([210.55.135.122]) by smtp.gmail.com with ESMTPSA id bm20-20020a056a00321400b006e740d23674sm1750605pfb.140.2024.03.28.11.35.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 28 Mar 2024 11:35:40 -0700 (PDT)
Message-ID: <6283d492-41c1-4ebe-9974-a891f797b02f@gmail.com>
Date: Fri, 29 Mar 2024 07:35:36 +1300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Nick Buraglio <buraglio@forwardingplane.net>, 6man WG <ipv6@ietf.org>
References: <CADmxuPF1AReQCSY13HjqXE+8Jofy_uoo1wmnzs8+whG7Tdc+UQ@mail.gmail.com> <836E3A12-FAAF-4C19-91A1-322203645AAA@employees.org> <CADmxuPEBXYeTPrJqfPEGaxmUM75iKQx6kfCcpHHjxyekZy0xuQ@mail.gmail.com> <2DB6E450-9EE4-438A-9D3B-78DDFF0CA78F@employees.org> <CAKD1Yr0+ArFfn7uZddMAGpxYroSxw-u=cpti4mwp_7-yRBSRSA@mail.gmail.com> <CACMsEX_Can2Uc4dEvC+9B_zG3OuP0YwQnGr=4uQyrFcjjgLHjA@mail.gmail.com> <CAO42Z2yghAZdk_ZO8nzufkJXsgsJMhUNi_Fm+SpUUQ1b7GLCuQ@mail.gmail.com> <CACMsEX8S26NMaseCfepBzoHHyN68k5aApSwG4nSKwJWk4mMKOA@mail.gmail.com> <CACMsEX-hmi+PqvdykmTGA_+Jq7cK+TwZiWWFhEkeOHgFgSr=Rg@mail.gmail.com>
Content-Language: en-US
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
In-Reply-To: <CACMsEX-hmi+PqvdykmTGA_+Jq7cK+TwZiWWFhEkeOHgFgSr=Rg@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: base64
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/obbAKOM5XHAAzQBwkBl4AehoZnk>
Subject: Re: [IPv6] Adoption call for draft-bctb-6man-rfc6296-bis
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: Thu, 28 Mar 2024 18:35:46 -0000

On 29-Mar-24 06:02, Nick Buraglio wrote:
> 
> 
> On Thu, Mar 28, 2024 at 9:45 AM Nick Buraglio <buraglio@forwardingplane.net <mailto:buraglio@forwardingplane.net>> wrote:

<snip>

>      >>>>
>      >>>> The benefit of NAT class mechanisms, is that cost and benefit are aligned. Only one side needs to deploy it.
>      >>>
>      >>>
>      >>> Actually, the benefit of NAT class mechanisms is that one party deploys them and another party incurs the costs. NAT is great for the network operator, because it moves a number of problems out of the network operator's domain. But it doesn't do that by solving the problem, it does so by making the application's job more difficult.
>      >>
>      >>
>      >> I don't think that is typically true.
>      >
>      >
>      > For client/server applications, where the client is on the inside of the NAT with a private address, and the server is on the outside with a public address, that wouldn't be typically true.
>      >
>      > However, for applications where the communications model is peer-to-peer, or a mix of client/server and peer-to-peer, the application developer has to implement RFC 8445 ICE using STUN and TURN for NAT traversal, incurring additional development, debugging and testing costs.
> 
>     Is that still accurate for a device behind NPTv6? RFC3235 section 3.1.5 points out that statically configured NAT bindings are largely exempt from the problems of port mapping, and NPTv6 is only a non-stateful translation that does not require the transport header to be re-written, simply translating the first 64 bits, so unless the communication embeds an address, which is problematic for all of the obvious reasons we see with things like legacy FTP, the peer-to-peer applications should work - assuming no security policy is in place to prevent it.  In fact, vendor documentation specifically calls out one of the advantages of NPTv6 as keeping peer-to-peer networking accessible:
> 
>     /The NPTv6 support allows you to redirect or forward packets from one network to another in an IPV6 environment. The NPTv6 support on is an algorithmic translation function which provides a 1:1 relationship between the addresses within the inside and outside network. When NTPv6 is used, you can interconnect different networks and support multihoming, load balancing, peer-to-peer networking. The NPTv6 does not create any state in the data plane and hence can operate using minimal memory and also supports high availability by default./
> 
>     Of course, it's vendor documentation so take it with a grain of salt, but I would not expect that to remain in published documentation unless it actually had some validity.
> 
>      >
>      > Alternatively the application developer adopts a client/server communications model for the application, even though a peer-to-peer model would be more scalable and more robust against a centralised server failure and server performance problems.
>      >
>      > This is why I say that NAT (of any type) imposes a default client (inside NAT) /server (outside NAT) communications model at the IPv4 or IPv6 network layers, rather than the default peer-to-peer model that can then accommodate both client/server and peer-to-peer applications communications models.
>      >
>      > NPTv6 may be stateless, however since hosts behind the NPTv6 will have to discover their public addresses via ICE if they want to be peers, NPTv6 still imposes those ICE costs on application developers and the applications' end-users.
> 
>     Do they need to discover that? If the mapping is 1:1 it is functionally the same address unless there is an embedded address in the protocol communications, right? Or am I missing something obvious?
> 
> 
> I talked to some developer friends that helped me understand this a bit better, thanks for giving me the terms to build from to dig deeper. Specifically, the need for determining the actual address for a peer to peer application is required because there may be peers both inside and outside of the translation boundary and a given application needs to know what those are in order to avoid things like tromboning traffic or blackholing connectivity. This makes much more sense now that I have had someone walk me through it.
> My question back which I think is still a valid question and is couched in a dichotomy of ideal vs pragmatic debate is "does this extra work implementing the overhead of the ICE/STUN/TURN impose significant overhead compared to existing application development requirements to support how networks work on average today?"
> I am not knowledgeable enough to answer that question. At face value it *seems* that there will be a need to support these tools (ICE/STUN/TURN) already in order to support port address translation that is likely required for the foreseeable future for environments that are devoid of public addressing and are behind some kind of a port address translation device for v4. And, how does that map into a NPTv6 deployment using one of the specific use cases? Does the lack of state make that easier or harder or make no difference?
> Myself and others have pointed out very clear and very specific use cases where NPTv6 solves a real operational problem, and has been in operation for quite some time.
> 
> As an aside, I don't think we should "what if" about ISPs deploying NPTv6 at their edges or all home users insisting on using it as they are functionally forced to do with NAPT, those use cases for NAPT are a forced function caused be a problem we don't currently have (address exhaustion) and any guessing about exploding use is all speculation. Operators are going to do what they are going to do, but what we could do is be very clear about the problems that this solves, and the places where it does not add value and is discouraged.

Which is exactly why changing NPTv6 from experimental to informational status, with information added about which scenarios this assists and which scenarios it damages, based on experience, is the right thing to do.

     Brian

> 
> 
>      >
>      > Network engineers who deploy NATs aren't directly exposed to or pay any of these additional application development costs (other than when they're the application users), which is why it appears that NAT is a simple and low impact technology to deploy.
> 
>     Given that nearly every application must be written to support dual-stack, and therefore must implement these techniques for port address translation, is that cost not already incurred by default? I understand that it may take some work to add IPv6 support to applications that require ICE/STUN/TURN, however, assuming (and that's a big assumption on my part), that the 1:1 stateless nature of NPTv6 and a lack of an embedded address, what is the surface area of applications that need to incur that cost specifically for IPv6 where it does not currently exist?
>     Is it 90% of applications? Is is 10%? I don't actually know but would like to. Likelihood of occurrence is a key in making design decisions, at least in my world.
> 
>     I fully admit that I am not an application developer, and there are undoubtedly aspects here that I do not understand, so pardon my potentially basic questions - I simply don't have the background but would like to fully understand. Knowing the likelihood and actual need at an application level where it does not already exist as part of a normal development workflow to support existing environments, and specifically where it is required where NPTv6 is a valid design model  would be very, very useful, especially with the use cases for NPTv6 being fairly specific.
> 
>      >
>      > Regards,
>      > Mark.
>      >
>      >>
>      >> I will definitely say from experience that there is a significant operational cost to deploying any translation tool, and more so when there is active state tracking and overload involved. There are often (but not always) logging requirements to do these things at scale, and there are definitely operational costs in dealing with state table tracking and scaling. These don't exist at the same level for mechanisms that do not track state and that do not masquerade using port address translation. They may still incur application cost, or they may not, that is always going to be based on the application stack and is more likely in real time applications that don't use a third party intermediary, as you have stated.
>      >>
>      >> There are similarities in the translation toolkits, yes, they all perform translation at some level. However, what is generally referred to as "NAT" in the general term is typically PAT or NAPT or Masquerading, depending on the nomenclature. That said, *because* it is significantly easier to deploy NAPT, I do not believe that it is an apples to apples comparison. They're all tools in the "translation" category, but they're definitely not all created equally. NPTv6 does a 1:1 translation, the NAT that folks seem to be referencing in the IPv4 world does not, and I do not believe it is a reasonable comparison.  It's a far better comparison to say that NPTv6 is like a traditional one-to-one NAT (which does still have notable, albeit significantly fewer considerations, which I believe are noted in the draft).
>      >>
>      >>
>      >> nb
>      >>
>      >> --------------------------------------------------------------------
>      >>>
>      >>> IETF IPv6 working group mailing list
>      >>> ipv6@ietf.org <mailto:ipv6@ietf.org>
>      >>> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6 <https://www.ietf.org/mailman/listinfo/ipv6>
>      >>> --------------------------------------------------------------------
>      >>
>      >> --------------------------------------------------------------------
>      >> IETF IPv6 working group mailing list
>      >> ipv6@ietf.org <mailto:ipv6@ietf.org>
>      >> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6 <https://www.ietf.org/mailman/listinfo/ipv6>
>      >> --------------------------------------------------------------------
> 
> 
> --------------------------------------------------------------------
> IETF IPv6 working group mailing list
> ipv6@ietf.org
> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
> --------------------------------------------------------------------