Re: [v6ops] Thoughts about wider operational input

Simon <linux@thehobsons.co.uk> Fri, 01 April 2022 16:55 UTC

Return-Path: <linux@thehobsons.co.uk>
X-Original-To: v6ops@ietfa.amsl.com
Delivered-To: v6ops@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5759E3A0B2A for <v6ops@ietfa.amsl.com>; Fri, 1 Apr 2022 09:55:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.907
X-Spam-Level:
X-Spam-Status: No, score=-1.907 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fr3Ux0dzhxOQ for <v6ops@ietfa.amsl.com>; Fri, 1 Apr 2022 09:55:10 -0700 (PDT)
Received: from patsy.thehobsons.co.uk (patsy.thehobsons.co.uk [80.229.10.150]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AAAE83A07C1 for <v6ops@ietf.org>; Fri, 1 Apr 2022 09:54:51 -0700 (PDT)
X-Virus-Scanned: Debian amavisd-new at patsy.thehobsons.co.uk
Received: from smtpclient.apple (MacBook-Pro.thehobsons.co.uk [192.168.137.121]) by patsy.thehobsons.co.uk (Postfix) with ESMTPSA id 55FF6110001 for <v6ops@ietf.org>; Fri, 1 Apr 2022 16:54:45 +0000 (UTC)
From: Simon <linux@thehobsons.co.uk>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\))
Date: Fri, 01 Apr 2022 17:54:45 +0100
References: <52661a3d-75dc-111a-3f23-09b10d7cb8d4@gmail.com> <A72CDDDB-CDCE-4EAF-B95E-997C764DB2C4@gmail.com> <9175dc32-45c1-e948-c20a-3bcc958b77b9@gmail.com> <YjmJQMNgnJoSInUw@Space.Net> <D75EF08F-6A41-41B2-AFB2-649CBCC1D83E@consulintel.es> <CAPt1N1nRnYUFA=yyJHx6t52yqWbmcd2Tf1H8gQuCZBd3Q3VqJw@mail.gmail.com> <7F4AEB43-4B24-4A21-AE9D-3EB512B98C46@consulintel.es> <8fac4314b8244ba6b33eea68694296d0@huawei.com> <9A13E47B-75D0-443F-9EE9-D2917ACB2D0F@consulintel.es> <CAO42Z2xUG+BXj+VQpajed9aGjH+q-HR7RX7C-T4DsTbouz7xWQ@mail.gmail.com> <F6A90BBF-7F44-403E-960A-8F756353B562@chinatelecom.cn> <B49417F7-3EFB-4A4D-9D1A-0D21574EA4F2@consulintel.es> <44B01ACA-3D5C-4618-B608-3B3479D29875@consulintel.es> <62447DCB.1010206@jmaimon.com> <7228D9A7-54A8-4BAE-9299-204C049F600B@consulintel.es> <6244BA91.3060306@jmaimon.com> <67762447-43D4-4393-851C-99370D3BF623@thehobsons.co.uk> <6246126C.1030609@jmaimon.com>
To: v6ops list <v6ops@ietf.org>
In-Reply-To: <6246126C.1030609@jmaimon.com>
Message-Id: <259B108A-C3DD-4460-B41A-A0028ACA9594@thehobsons.co.uk>
X-Mailer: Apple Mail (2.3654.120.0.1.13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/v6ops/L_fj6KIFF12qcKwA4RJR4Td2KR8>
Subject: Re: [v6ops] Thoughts about wider operational input
X-BeenThere: v6ops@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: v6ops discussion list <v6ops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/v6ops>, <mailto:v6ops-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/v6ops/>
List-Post: <mailto:v6ops@ietf.org>
List-Help: <mailto:v6ops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 01 Apr 2022 16:55:31 -0000

On 31 Mar 2022, at 21:43, Joe Maimon <jmaimon@jmaimon.com> wrote:

>>> Simon wrote:
>>>> Any form of NAT breaks things<period> That’s the short answer.
>>>> 
>>>> Longer answer, any protocol that embeds addresses in it gets broken - e.g. during session setup one end tells the other, please contact me at address X and port Y. That is quite common once you get past a basic “open connection, squirt some data, close session”. Examples that come immediately to mind :
>>> In OSI speak thats a layering violation. An upper level protocol incorporates details and assumptions about lower layers as part of its operations.
>> Citation ?
> 
> https://www.rfc-editor.org/rfc/rfc3724.html
> 
> Since the upper level protocol incorporates lower level properties into its functionality, it is now dependent on them.

Hmm, that is not what that document says. I have to assume you are referring to section 4.2 since everything else is in favour of end-end connectivity.
>    Two key points in designing application
>    protocols are to ensure they don't have any dependencies that would
>    break the end-to-end principle and to ensure that they can identify
>    end points in a consistent fashion.

So nothing about not embedding an address and port into a message (e.g. a setup message for a session) since that doesn’t break the end-end principle, and it doesn’t affect the ability of the network to do it’s job (route packets between devices).
>    Architectural
>    considerations around this issue are discussed in RFC 3238 [5].  This
>    desire need not result in a violation of the end-to-end principle if
>    the partitioning of functioning is done so that services provided in
>    the network operate with the explicit knowledge and involvement of
>    endpoints, when such knowledge and involvement is necessary for the
>    proper functioning of the service.

NAT is not a network “operat(ing) with the explicit knowledge and involvement of endpoints”, it is a process whereby it’s mangling the packets in a way that the endpoint/application cannot (in the general case) reliably determine.


> 6.  Conclusions
>    The end-to-end principle continues to guide technical development of
>    Internet standards, and remains as important today for the Internet
>    architecture as in the past.


So, since we seem to have vastly differing interpretations of what that document actually says, over to you - where does it say that (e.g.) an application should not use network addresses/ports within messages ? The application is already fundamentally tied in with the lower layers - unless it understands IP (whether version 4 or 6) to at least some extent then it cannot use the network. At it’s simplest level, it needs to be able to allocate structures to hold address/port pairs of other devices with which it is communicating.


I’ll toss an analogy out there. I want to send a letter/card/whatever to a friend in the post. I don’t care HOW the postal service works, how it routes items (packets), whether all such items (packets) follow the same route. But I DO need to know how to address an item (packet) so that the postal service can route and deliver it. And I do expect the postal service to deliver it to the right address.
As we all know, with snail mail, the addressing is “quite flexible” and at many points there are humans that can apply common sense. So, taking an analogy for NAT, it’s enough for my item to be delivered to the concierge of the apartment block and he will be able to see it’s addressed to my friend and deal with putting it in the right mailbox. Similarly, this NAT isn’t opaque in that my friend (I assume) will know the address of his apartment block and can provide that to me - along with the apartment number.
A network with NAT is like living in an apartment block that you don’t know the address of. You can look at your front door and see it’s (e.g.) apartment 104 - equivalent to asking the OS for the address(es) of the system interface(s). It takes more effort to find out what address you need to tell your friends so they can have mail delivered to you. Furthermore, (in the general case) NAT (or more precisely NAPT) is finding that the numbers on the mailboxes in the foyer random change all the time - and there aren’t enough mailboxes for you each to have one full time. So while the front door of your apartment might say 104, you don’t have a reliable apartment number to tell friends to address stuff to you at. And, with IP, the addressing needs to be explicit - there no concierge who can sort out incorrectly addressed packets.


Now, while I am generally quite negative about NAT, I can see that there are some use cases to PREFIX translation with IPv6. I would qualify that with it being ONLY the prefix that gets changed - the local part of the address and the port would NEVER be mangled. And I’d also qualify it with there needing to be a simple, well defined, process by which the application may ask the network layer explicitly what translation is in place - i.e. meet the “operates with the explicit knowledge of the endpoints” bit above.
However, that last bit needs every application where it may be needed to be updated with support for whatever process/protocol was designed - much as they did (in a much harder manner) to try and figure out what IPv4 NAPT was doing to their packets.


Simon