Re: [Int-area] New Draft - ICMPv6 Loopback

Rolf Winter <rolf.winter@hs-augsburg.de> Wed, 21 June 2023 11:59 UTC

Return-Path: <rolf.winter@hs-augsburg.de>
X-Original-To: int-area@ietfa.amsl.com
Delivered-To: int-area@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 170D8C151541 for <int-area@ietfa.amsl.com>; Wed, 21 Jun 2023 04:59:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.898
X-Spam-Level:
X-Spam-Status: No, score=-6.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, NICE_REPLY_A=-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
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 H-R_VzhQcqsx for <int-area@ietfa.amsl.com>; Wed, 21 Jun 2023 04:59:48 -0700 (PDT)
Received: from postfix2.RZ.HS-Augsburg.DE (postfix2.RZ.HS-Augsburg.DE [141.82.11.24]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 30F78C15153C for <int-area@ietf.org>; Wed, 21 Jun 2023 04:59:47 -0700 (PDT)
Received: from [IPV6:2001:a61:51a8:f101:b4cc:cb4e:440c:3b3a] (unknown [IPv6:2001:a61:51a8:f101:b4cc:cb4e:440c:3b3a]) by postfix2.RZ.HS-Augsburg.DE (Postfix) with ESMTPSA id B1B74180318; Wed, 21 Jun 2023 13:59:43 +0200 (CEST)
Message-ID: <63f0ba11-28c1-f391-33a9-400b5064f17c@hs-augsburg.de>
Date: Wed, 21 Jun 2023 13:59:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.12.0
To: Tal Mizrahi <tal.mizrahi.phd@gmail.com>
Cc: int-area@ietf.org
References: <CABUE3Xm5nT4R8wUu6FfXW0u66YoyDS45cRTuiGjRJ0CRGsevnQ@mail.gmail.com> <908A768F-F9CF-468A-A7C1-27736FE10BFE@gmail.com> <5B0C59DC-BD03-4BEE-A719-6E892F61F916@cisco.com> <CABUE3Xk--WodVbGFQtJvPTdtH154bNE6nufxoFDJuh6nVbpFRg@mail.gmail.com> <95cdc678-a7c8-078f-08aa-6aac9c053b15@gmail.com> <CABUE3Xnt+r3nWPFeui3dqQTXpTUUOudyTfkGJm=bL57ySevjLw@mail.gmail.com> <954f791b-3242-f933-f6fd-a3ba89765114@hs-augsburg.de> <CABUE3XmA7nC5w26FrhQztPEevTaQbDAbqrMi6a=SvkE1=wN3+w@mail.gmail.com>
From: Rolf Winter <rolf.winter@hs-augsburg.de>
In-Reply-To: <CABUE3XmA7nC5w26FrhQztPEevTaQbDAbqrMi6a=SvkE1=wN3+w@mail.gmail.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-512"; boundary="------------ms010506050309030309030504"
Archived-At: <https://mailarchive.ietf.org/arch/msg/int-area/wxgCy3NaufWRUmWCW7r7FSrMBg0>
Subject: Re: [Int-area] New Draft - ICMPv6 Loopback
X-BeenThere: int-area@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: IETF Internet Area WG Mailing List <int-area.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/int-area>, <mailto:int-area-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/int-area/>
List-Post: <mailto:int-area@ietf.org>
List-Help: <mailto:int-area-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/int-area>, <mailto:int-area-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Jun 2023 11:59:52 -0000

Hi Tal,

don't get me wrong. Of course a new type is technically an equally valid 
solution and I do not want to talk you into using new codes under an 
existing type instead. I just wanted to point out that I believe 
generally speaking working with new codes is equally valid and feasible, 
which is what reverse traceroute 
(https://datatracker.ietf.org/doc/html/draft-heiwin-intarea-reverse-traceroute) 
is suggesting.

Using different codes was just one example to distinguish a request from 
a response given the reflective behavior of hosts on the internet. The 
same would apply if the ICMP payload or something else in the header 
would differ in the response.

Best,

Rolf

Am 21.06.23 um 13:49 schrieb Tal Mizrahi:
> Hi Rolf,
> 
> I agree that a new type is not necessarily required for every case,
> however a new type is probably the cleanest solution for Loopback.
> 
> Here is an alternative solution that does not require a new type:
> - The Loopback requester sends an Echo Request with code=X (newly
> allocated to indicate Loopback Request).
> - The Loopback responder replies with an Echo Reply with code=X+1
> (newly allocated to indicate Loopback Reply).
> - The requester can distinguish a Loopback reply (code=X+1) from a
> reply received from a legacy device (which reflects code=X).
> 
> While this solution should work, it assumes a certain behavior from
> legacy devices (reflecting code=X as-is) that is not compliant with
> RFC 4443.
> Therefore, I believe using a new type would be cleaner.
> 
> Cheers,
> Tal.
> 
> On Wed, Jun 21, 2023 at 12:39 PM Rolf Winter <rolf.winter@hs-augsburg.de> wrote:
>>
>> Hi Tal,
>>
>> I don't think your assessment that a new type is required really holds
>> for every case. I think the key point is, the requests get _reflected_.
>> So if you expect something else in you response (e.g. Echo Request would
>> expect a different type in the Echo Response), then you can distinguish
>> a reflecting host from a host that actually understands this "new ICMP
>> thing". The real good news is in both measurement cases are that a) most
>> tested NATs let those packets through (both request and response) and b)
>> mostly, they cross the internet unmodified as can be seen in the
>> unmodified code inside the ICMP reply (for v4 at least).
>>
>> Best,
>>
>> Rolf
>>
>> Am 21.06.23 um 06:53 schrieb Tal Mizrahi:
>>> Hi Valentin,
>>>
>>> Thanks for this valuable data.
>>> Based on your findings, the good news is that new codes will most
>>> likely traverse NATs, and the bad news is that most hosts will respond
>>> according to the "old" behavior without checking the code value. In
>>> light of the latter observation, I would say that new behavior *from
>>> the responder* requires a new ICMP type. However, more feedback about
>>> this assessment is welcome.
>>>
>>> Cheers,
>>> Tal.
>>>
>>> On Tue, Jun 20, 2023 at 8:45 PM Valentin Heinrich
>>> <v.heinrich99@gmail.com> wrote:
>>>>
>>>> we had similar questions when working on reverse traceroute
>>>> (https://datatracker.ietf.org/doc/html/draft-heiwin-intarea-reverse-traceroute).
>>>> Should we use new ICMP types or extend existing ones with a new code?
>>>>
>>>> We actually conducted measurements to test deployability of those two
>>>> choices.
>>>> One of the big question marks was whether new ICMP messages using a new
>>>> type are able to traverse common NAT middleboxes.
>>>> Unfortunately, as one would probably expect, new ICMP types are most
>>>> commonly filtered (or they just bypass the NAT, which is just as bad as
>>>> they are forwarded untranslated into the public internet).
>>>> We then sent ICMP Echo requests with the new codes 1 and 2 through those
>>>> same NAT boxes.
>>>> Only a single NAT box (out of 12) dropped the corresponding Echo
>>>> response message and in all other cases both requests and replies
>>>> correctly traversed the NAT.
>>>> In this regard, our measurements showed that extending existing ICMP
>>>> Echo messages with new codes is the way to go if immediate deployability
>>>> is the goal.
>>>>
>>>> We then also performed a measurement to assess the deployment of ICMP
>>>> Echo messages with new codes on the public Internet.
>>>> We probed over a million hosts that correctly responded to regular ICMP
>>>> Echo requests (code 0) with ICMP Echo responses.
>>>> To each of those hosts we sent ICMP Echo requests with code 1. Over 92%
>>>> of the probed hosts responded with an ICMP Echo response and reflected
>>>> the new code back in their response.
>>>> The fact that we received that many "reflective" responses shows us,
>>>> that ICMP Echo messages (both request and response) with a new code make
>>>> it through the Internet unfiltered and unaltered in the vast majority of
>>>> cases. About 3% of the probes were answered with a regular ICMP Echo
>>>> response (code 0), thus not reflecting the request's code back.
>>>>
>>>> For more details of the measurement study, you can have a look at this
>>>> talk: https://youtu.be/Y7NtqLEtfgjU?t=63
>>>>
>>>> Or listen to this episode of the Ping Podcast:
>>>> https://blubrry.com/ping_podcast/94883480/reverse-traceroute-its-just-traceroute-but-the-other-direction/
>>>>
>>>>
>>>> One caveat is however that we conducted these measurements only on IPv4.
>>>> Results might or might not differ for IPv6.
>>>> For reverse traceroute, which itself implements both ICMP and ICMPv6, we
>>>> have however successfully tested our implementation across the public
>>>> internet.
>>>>
>>>> I hope this data point helps in this discussion.
>>>>
>>>> On 07.06.23 06:30, Tal Mizrahi wrote:
>>>>> Bob, Eric,
>>>>>
>>>>> Thanks for the feedback.
>>>>> Defining a new code for ICMPv6 Echo rather than defining a new type
>>>>> may be the right way to go.
>>>>> Our main concern with this is that RFC 4443 defines what to do with an
>>>>> unknown type, but does not define what to do with an unknown code. It
>>>>> is not clear what existing implementations do when receiving an Echo
>>>>> Request with an unknown code. That is why the current draft calls for
>>>>> a new type. However, we are open to more feedback about this, and it
>>>>> may end up being just a new code.
>>>>>
>>>>> Cheers,
>>>>> Tal.
>>>>>
>>>>> On Tue, Jun 6, 2023 at 8:33 PM Eric Vyncke (evyncke) <evyncke@cisco.com> wrote:
>>>>>> Without any hat, I agree with Bob.
>>>>>>
>>>>>> This I-D should eventually go to 6MAN WG though (with my AD hat)
>>>>>>
>>>>>> -éric
>>>>>>
>>>>>> On 06/06/2023, 08:34, "Int-area on behalf of Bob Hinden" <int-area-bounces@ietf.org <mailto:int-area-bounces@ietf.org> on behalf of bob.hinden@gmail.com <mailto:bob.hinden@gmail.com>> wrote:
>>>>>>
>>>>>>
>>>>>> Tal,
>>>>>>
>>>>>>
>>>>>> I did a quick read of your draft.
>>>>>>
>>>>>>
>>>>>> As noted in the draft this seems to be very similar to ICMPv6 Echo/Echo Reply. The change is to include the request packet in the response, not just the payload.
>>>>>>
>>>>>>
>>>>>> While I don’t have any real opinion on the need for this, I do think it would be a lot simpler if the draft just defined a new Code field value for Echo Request/Reply that specified this behavior. Currently the Code field is set to zero, another value could specify this behavior.
>>>>>>
>>>>>>
>>>>>> Deployment might be easier as I suspect ICMPv6 types other than the current definitions will be filtered in many places.
>>>>>>
>>>>>>
>>>>>> Bob
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Jun 6, 2023, at 4:54 AM, Tal Mizrahi <tal.mizrahi.phd@gmail.com <mailto:tal.mizrahi.phd@gmail.com>> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> New draft: https://datatracker.ietf.org/doc/draft-mcb-intarea-icmpv6-loopback/ <https://datatracker.ietf.org/doc/draft-mcb-intarea-icmpv6-loopback/>
>>>>>>>
>>>>>>> We have posted a new draft that proposes two new ICMPv6 message types:
>>>>>>> Loopback Request and Reply.
>>>>>>> ICMPv6 Loopback is very similar to Echo, except that after a Loopback
>>>>>>> Request is sent, its corresponding Reply includes as much of the IPv6
>>>>>>> Loopback Request packet as possible, including the IPv6 header and
>>>>>>> IPv6 extension headers and options if they are present.
>>>>>>>
>>>>>>> We believe that ICMPv6 Loopback can be very useful for returning IPv6
>>>>>>> options that were included in Request packet back to the sender,
>>>>>>> including for example sending IOAM [RFC 9197] data from the Request
>>>>>>> back to the sender, sending the SRH [RFC 8754] of the Request back to
>>>>>>> the sender, as well as for in-progress / future protocols such as
>>>>>>> draft-filsfils-spring-path-tracing and draft-kumar-ippm-ifa.
>>>>>>>
>>>>>>> We would be happy for feedback, as well as suggestions about whether
>>>>>>> the INT-AREA WG is the right place to discuss this draft.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Tal.
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Int-area mailing list
>>>>>>> Int-area@ietf.org <mailto:Int-area@ietf.org>
>>>>>>> https://www.ietf.org/mailman/listinfo/int-area <https://www.ietf.org/mailman/listinfo/int-area>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> _______________________________________________
>>>> Int-area mailing list
>>>> Int-area@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/int-area
>>>
>>> _______________________________________________
>>> Int-area mailing list
>>> Int-area@ietf.org
>>> https://www.ietf.org/mailman/listinfo/int-area
>> _______________________________________________
>> Int-area mailing list
>> Int-area@ietf.org
>> https://www.ietf.org/mailman/listinfo/int-area