Re: [Int-dir] [Last-Call] Intdir telechat review of draft-ietf-masque-connect-ip-10

"touch@strayalpha.com" <touch@strayalpha.com> Fri, 21 April 2023 22:49 UTC

Return-Path: <touch@strayalpha.com>
X-Original-To: int-dir@ietfa.amsl.com
Delivered-To: int-dir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2DA46C1524AC; Fri, 21 Apr 2023 15:49:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.315
X-Spam-Level:
X-Spam-Status: No, score=-1.315 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_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=strayalpha.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 Z-bIsy437fTx; Fri, 21 Apr 2023 15:48:57 -0700 (PDT)
Received: from server217-2.web-hosting.com (server217-2.web-hosting.com [198.54.115.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2B647C14CF12; Fri, 21 Apr 2023 15:48:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=strayalpha.com; s=default; h=To:References:Message-Id:Cc:Date:In-Reply-To: From:Subject:Mime-Version:Content-Type: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=Qvn16nQaJpMwJkNxvu/I5rfCJx+6fdTMjw12MSFosZ8=; b=RhJ780MJMNa3oFdoDso1/mW+HB A4koZUsfC7aZT/mHXMVmIb2ff49tllee7pQ/68gPONl5JA1/Bbc9laycjR4OxYOZA1YtpUZ/xp6B9 6HYFUhZbkIQF1JZ1x3DUhkttqjwGwTqqSF7p2ehqEIlxaOJQIL9bYkAO4wRdCHgckb5JCxEF6rvzh vkkGruIqt2ueAW8Wnmj3uCT6XUOIQVSogeGB0IRYbDr9DSZRoDEKTDWudVG3XxoePSDJ7m7dOVZ2c u/s9B8YpYfdcX93l7XiKNr9AjgL9W1Cr0FYtBhLj5QY20U5As2muwZunCC6FI0duIK2eQt1sCUYG0 QzA+Gt3A==;
Received: from [172.58.208.248] (port=21863 helo=smtpclient.apple) by server217.web-hosting.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from <touch@strayalpha.com>) id 1ppzYf-005SRS-FL; Fri, 21 Apr 2023 18:48:55 -0400
Content-Type: multipart/alternative; boundary="Apple-Mail=_55D9248F-899D-4A79-8749-14911D1C228D"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.500.231\))
From: "touch@strayalpha.com" <touch@strayalpha.com>
In-Reply-To: <7E22ED44-B417-4299-8E41-8B30F1F41024@strayalpha.com>
Date: Fri, 21 Apr 2023 15:48:36 -0700
Cc: David Schinazi <dschinazi.ietf@gmail.com>, Magnus Westerlund <magnus.westerlund@ericsson.com>, "int-dir@ietf.org" <int-dir@ietf.org>, "draft-ietf-masque-connect-ip.all@ietf.org" <draft-ietf-masque-connect-ip.all@ietf.org>, "last-call@ietf.org" <last-call@ietf.org>, "masque@ietf.org" <masque@ietf.org>
Message-Id: <A5D472DD-7E7D-4C5E-BD7B-C9548E536713@strayalpha.com>
References: <168152936276.58402.12408511926010382248@ietfa.amsl.com> <CAPDSy+5ZOnK02VgJY7giVD0uNM4ao7-gHXUhrf6BG9RWxzC+RQ@mail.gmail.com> <19AB5170-D789-491C-B748-7AD5CE26B58C@strayalpha.com> <DU0PR07MB8970FC2DDE02B2BBB78D6E33959D9@DU0PR07MB8970.eurprd07.prod.outlook.com> <CAPDSy+72wpWzsQur=Bsvf7bUAxCAzq=OnXDS6Uxr7-k-3ZS-0Q@mail.gmail.com> <DA3F26DF-5B5F-4045-AA67-2BDEDCCA7975@strayalpha.com> <CAPDSy+7cf=ONtQw4Sfy4u51i6txk9K7axhyz6nx=_vic35DWtQ@mail.gmail.com> <4F486987-90BB-480A-9A0E-2E09BC4F1B72@strayalpha.com> <CAPDSy+7+TykbJpa56ysQpdHt3B=ei_oCFzOy7T7Sqx=dp9YADQ@mail.gmail.com> <930DECBA-D4DF-4379-A296-A6B6BAAB8A98@strayalpha.com> <41E77484-6685-420F-ADCA-0313331B02FA@strayalpha.com> <CAPDSy+7Lr=tqdVF+PPizLsSCXheRsLUfAVx9GyzpPySo791Ztg@mail.gmail.com> <19845D9D-97BB-4080-BC96-2E8E6F693EB5@strayalpha.com> <CAM4esxRE8W2V=FaXPP+gEd4rMQN+P38b-+Yyk6aqbfkAY=rHJA@mail.gmail.com> <7E22ED44-B417-4299-8E41-8B30F1F41024@strayalpha.com>
To: Martin Duke <martin.h.duke@gmail.com>
X-Mailer: Apple Mail (2.3731.500.231)
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - server217.web-hosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - strayalpha.com
X-Get-Message-Sender-Via: server217.web-hosting.com: authenticated_id: touch@strayalpha.com
X-Authenticated-Sender: server217.web-hosting.com: touch@strayalpha.com
X-Source:
X-Source-Args:
X-Source-Dir:
X-From-Rewrite: unmodified, already matched
Archived-At: <https://mailarchive.ietf.org/arch/msg/int-dir/5wT3MtNzee-eD4oYzSn06ZdIlG0>
Subject: Re: [Int-dir] [Last-Call] Intdir telechat review of draft-ietf-masque-connect-ip-10
X-BeenThere: int-dir@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "This list is for discussion between the members of the Internet Area directorate." <int-dir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/int-dir>, <mailto:int-dir-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/int-dir/>
List-Post: <mailto:int-dir@ietf.org>
List-Help: <mailto:int-dir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/int-dir>, <mailto:int-dir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 21 Apr 2023 22:49:01 -0000

Hi, all,

Here’s a way to present the implementation issues associated with the router (and OS interfacing, which IMO is in the same realm as “implementation advice”). The text is rough, but where it diverges from the current text is intentional.

Note that it addresses issues with interfacing, ICMP, and MTU.

Joe

7.2.  Interfacing
 
The IP proxy function described in this document creates a tunnel. Tunnels are virtual links; like all links, they are associated with interfaces at hosts or routers. Those interfaces accept and emit IP packets, acting as raw IP devices.
 
In most implementations, these raw IP devices are either attached to OS devices or to stand-alone software that acts as either a host or router.
 
7.2.1. OS Interfacing
 
The IP proxy function typically presents as a user-level raw IP socket on typical Unix devices. For that socket to be used by the OS, either for OS-based routing or as a host endpoint for other applications, it needs to be represented as an OS interface. This requires additional implementation software to attach the IP proxy to the OS, e.g., as a tun device in Unix.
 
In this case, all other IP processing happens in the OS, including TTL checks, TTL decrements (when forwarded to another interface), checksum validation and recomputation (for IPv4), etc. This includes generation of ICMP errors, which originate from the OS (not the IP proxy endpoint).
 
7.2.2 Integrated with a user router
 
The IP proxy function can be implemented together with a user-space IP router. In this case, the forwarding functions between IP proxies or to other tunnels can be performed independently from underlying OS functions.
 
User-space router implementations are subject to the same requirements as any other IP forwarding device [RFC1812][RFC8200]. The router would perform the same checks an OS forwarder, including including TTL checks, TTL decrements (when forwarded to another interface), checksum validation and recomputation (for IPv4), etc. The router would also generate any appropriate ICMP error messages, which originate from the user-space router code (not the IP proxy endpoint).
 
Implementers of such user-space routers should be careful to obey all other router requirements, including not forwarding link-local traffic. They may also implement additional filtering, just as could an OS router.
 
7.2.3 Common interfacing issues
 
Whether IP proxy is attached to an OS interface or deployed with a user-space router, there are some common issues. Either way, the IP proxy acts as a link. The endpoint OS or user-space router is responsible for IP header checksum validation (IPv4) and ICMP generation as needed. Such ICMPs include failure to determine a forwarding path, MTU exceeded, or other types of endpoint or router errors.
 
TTL/hopcount decrement (and checksum recalculation for IPv4) occur during the forwarding process, not as part of the IP proxy as either encapsulation or decapsulation. 
 
Source fragmentation of the original IP packet similarly happens outside the tunnel endpoint where needed, and inside the IP proxy on the tunneled packet as needed independently. On-path fragmentation of IPv4 packets also happens inside the user-space router or OS when needed and permitted.
 
---
 
(some other place TBD)
 
X.X MTU Issues
 
IP links have three types of maximum transmission units (MTUs) source MTUs,(EMTU_S), path MTUs (MTU), and receiver MTUs (EMTU_R) [draft-ietf-intarea-tunnesls. For IPv4, these must be at least 64, 64, and 576 respsectively; for IPv6, these must be 1280, 1280, and 1500 respectively. The path MTU is the minimum of the EMTU_S of each interface on a path. IP proxy operates over different transport protocols and may try to provide an IPv6 tunnel over an underlying IPv4 service.
 
When IP proxy operates over TCP, the ingress/egress IP packet sizes need not correlate to the underlying path properties. However, when using QUIC datagram service,...
 
(I don’t know what happens here, but the text below doesn’t seem to address it)
 
IMO:
-   IP proxy MUST present an interface with an EMTU_S of at least 1280 and EMTU_R of 1500, but that means that after encapsulation, if running over a transport that does not support the encapsulated packet, it MUST perform source fragmentation after encapsulation at the ingress and MUST perform receiver reassembly at the egress before decapsulation.
 
(this is original text from this section: I don’t know how this applies or not)
 
   *  if both IP proxying endpoints know for certain that HTTP
      intermediaries are not in use, the endpoints can pad the QUIC
      INITIAL packets of the outer QUIC connection that IP proxying is
      running over.  (Assuming QUIC version 1 is in use, the overhead is
      1 byte type, 20 bytes maximal connection ID length, 4 bytes
      maximal packet number length, 1 byte DATAGRAM frame type, 8 bytes
      maximal quarter stream ID, one byte for the zero Context ID, and
      16 bytes for the AEAD authentication tag, for a total of 51 bytes
      of overhead which corresponds to padding QUIC INITIAL packets to
      1331 bytes or more.)
 
        [NO, I don’t think that even QUIC limits should ever prevent an IP tunnel from working]
 
-   IP proxy endpoints can also check for ICMPs that originate from the tunnel, which would be received in association with the underlying HTTP connection. Those ICMPs can indicate how source fragmentation needs to occur at the tunnel ingress to ensure that lower-level packets do not exceed the EMTU_S of the underlying HTTP connection.
 
-   IP proxy endpoints can also perform PLPMTUD over the tunnel to discover the path MTU, similarly indicating how source fragmentation needs to occur at the tunnel ingress to ensure that lower-level packets do not exceed the EMTU_S of the underlying HTTP connection.
 
(NO, I don’t think sending probe ICMPs is correct)