Re: [Int-area] Proxy function for PTB messages on the tunnel end

Vasilenko Eduard <vasilenko.eduard@huawei.com> Wed, 24 March 2021 15:00 UTC

Return-Path: <vasilenko.eduard@huawei.com>
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 3B5623A2E44; Wed, 24 Mar 2021 08:00:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, 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 b3d8x-Kzn8TC; Wed, 24 Mar 2021 08:00:02 -0700 (PDT)
Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8FC4A3A2E2B; Wed, 24 Mar 2021 08:00:01 -0700 (PDT)
Received: from fraeml737-chm.china.huawei.com (unknown [172.18.147.200]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4F5B9Y52yxz683Wq; Wed, 24 Mar 2021 22:55:13 +0800 (CST)
Received: from msceml705-chm.china.huawei.com (10.219.141.144) by fraeml737-chm.china.huawei.com (10.206.15.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 24 Mar 2021 15:59:58 +0100
Received: from msceml703-chm.china.huawei.com (10.219.141.161) by msceml705-chm.china.huawei.com (10.219.141.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 24 Mar 2021 17:59:58 +0300
Received: from msceml703-chm.china.huawei.com ([10.219.141.161]) by msceml703-chm.china.huawei.com ([10.219.141.161]) with mapi id 15.01.2106.013; Wed, 24 Mar 2021 17:59:58 +0300
From: Vasilenko Eduard <vasilenko.eduard@huawei.com>
To: Joseph Touch <touch@strayalpha.com>
CC: "v6ops@ietf.org" <v6ops@ietf.org>, int-area <int-area@ietf.org>
Thread-Topic: Proxy function for PTB messages on the tunnel end
Thread-Index: AdcfDpZejD7P5RAGQ06oVS2C5lk8jAACE+sAAAi5WeD//90TAP//s51QgAByGQD//8LNQIAAUjUA//8J3tAARFNWgP//xB4Q//+RtwD//uUYkP/962+A//ucEtD/91rKgP/txlXQ/9tXi4D/tnfdMA==
Date: Wed, 24 Mar 2021 14:59:58 +0000
Message-ID: <c3ac993dc35340648988c688f1b86bbc@huawei.com>
References: <0b61deabe8f3420eba1b5794b024e914@huawei.com> <A063E98C-0D6C-49B2-B871-E2B39A097FD5@strayalpha.com> <37059faadd6e441cb98f6ec7e01ecef9@huawei.com> <9D23C833-46C5-4B93-A204-D2D4F54689DF@strayalpha.com> <1e6ecd3b468d4255bda65d519190135d@huawei.com> <3B48413C-A47D-4F3F-B9E4-7ED4D33AA66B@strayalpha.com> <22bb7bf129694ccfbbad441d8d22e05c@huawei.com> <A5F62B47-DBA3-457D-89CD-D570EA2EA886@strayalpha.com> <eb63d427f4d34e44908ccee2c2d14073@huawei.com> <F158C443-6E73-4FC6-ADCA-6D28EE8F0A30@strayalpha.com> <d1c8a80b387847a3b00566e3dc0768ab@huawei.com> <D87C00F7-2902-48C4-9DCA-E1019EF32CAA@strayalpha.com> <46be60a38c0f4bc08f352dc8ed353c6a@huawei.com> <4E4C25CB-561C-4BF1-B99B-14E26D00009B@strayalpha.com> <4415086a1b734313b383307a27eb3fb2@huawei.com> <1A41F380-5176-4856-B0FE-BCA065FEAB15@strayalpha.com> <d2dffa85fdbc476f95c008a41e65e696@huawei.com> <8CB230FB-D5D9-4EE2-BA61-7FBC786D09CA@strayalpha.com>
In-Reply-To: <8CB230FB-D5D9-4EE2-BA61-7FBC786D09CA@strayalpha.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.47.199.240]
Content-Type: multipart/alternative; boundary="_000_c3ac993dc35340648988c688f1b86bbchuaweicom_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/int-area/8Z2OlnDiG1u-KE5_ZrMV-1kwhtw>
Subject: Re: [Int-area] Proxy function for PTB messages on the tunnel end
X-BeenThere: int-area@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF Internet Area 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, 24 Mar 2021 15:00:07 -0000

It would invalidate all tunneling implementations. It is not compatible with any one of them. PMTUD is killed. Revolution.

All complaints against RFC 2473 are minor (if right),
Except this one that is definitely wrong:

       o Tunnel ingress issues ICMPs

This is a violation of RFC792 and 8200; the ICMPs issued are that of routers, not links. If the ingress is at the source host, these ICMPs would come from a device that is not a router.
ICMP PTB is very important to deliver to the traffic source.

Ed/
From: Joseph Touch [mailto:touch@strayalpha.com]
Sent: Wednesday, March 24, 2021 5:36 PM
To: Vasilenko Eduard <vasilenko.eduard@huawei.com>
Cc: v6ops@ietf.org; int-area <int-area@ietf.org>
Subject: Re: Proxy function for PTB messages on the tunnel end

Hi, Eduard,

I’ll try to be brief because we’ve covered most of these issues before. We can have an extended discussion off-list if needed.

Joe


On Mar 24, 2021, at 2:00 AM, Vasilenko Eduard <vasilenko.eduard@huawei.com<mailto:vasilenko.eduard@huawei.com>> wrote:

Hi all,
I could not stop the discussion at this point, because I was incomplete in the last message. I have missed to mention one important point.
The difference between how tunnel and end node operate is in 2 things:
1.       The tunnel has an unlimited buffer that is not counted as the restriction. It is assumed always as “big enough” by all vendors.

Neither the number nor the size of buffers used for tunneling can be unlimited. “Assuming” otherwise is simply ignoring the issue, resulting in the tunnel being a black-hole.


2.       The incoming packet is not checked against the buffer size. It is checked against the MTU of this virtual/tunnel interface.

Tunnels all implement source fragmentation and egress reassembly for IPv6. It may not be readily visible to you, but it is there as a parameter of the virtual tunnel interface on the ingress and egress.


As a consequence: PMTUD could correct interface MTU, then the next oversized packet would inform (by PTB) the real traffic source. PMTUD works.

I’ve cited numerous RFCs that focus on why ICMP PTB cannot be relied upon, i.e., that PMTUD does not work. You might assume it does work because when it fails it creates a black hole, where packets are simply dropped and no errors are received (because the ICMPs are filtered or simply not sent).

All of the above is broken by draft-ietf-intarea-tunnels:
1.       Buffer is assumed small (1500 minus headers)

Draft-tunnels reports existing limits of IPv6 mandatory minimums. Individual implementations can be larger but there is no mechanism to discover some of those values (EMTU_R in particular, at the IP layer)

2.       The incoming packet is checked against the buffer size, not the MTU of the virtual interface

Incoming packets are checked at the receiver against receive buffer sizes. If that receiver is a router and the packet is relayed, that packet is checked against the MTU of the tunnel virtual interface during the process of transmission (after encapsulation); it is there that it is source fragmented.

Note: if that latter step does not occur, as you assert, then PMTUD would fail.


3.       No feedback is proposed between interface MTU and the buffer size

On this we agree.


As consequence: PMTUD could not propagate through such interface (PTB feedback from inside the tunnel would not activate at some point the PTB feedback in the traffic source direction). PMTUD is effectively finished intentionally.

That occurred nearly 20 years ago and was the motivation for RFC4821, again because ICMPs are filtered.


Hence, the need for additional fragmentation for the case when the packet is below buffer size, but above tunnel interface MTU.

Correct.


The market has lost RFC 2473 functionality: it did propose a PTB proxy to react to the 1st PTB message from inside the tunnel.
But the market has at least a slow reaction: the second oversized packet would inform traffic source (1st would be used to correct MTU on the virtual interface).
I had the message in draft-vasilenko-v6ops-ipv6-oversized-analysis: let’s return to the original functionality proposed by RFC 2473.

RFC2473 has numerous errors; draft-tunnels lists them in section 5.2. Here is an annotated version of that text:


   o  IPv6 tunnels [RFC2473<https://tools.ietf.org/html/rfc2473>] -- IPv6 or IPv4 in IPv6

       o Treats tunnel MTU as tunnel path MTU, not tunnel egress MTU



Following RFC2473 prevents IPv6 over IPv6 when the tunnel is constrained to IPv6 minimum path MTU.



       o Decrements transiting packet hopcount (by 1)



As Brian noted, this is incorrect. That is because a tunnel is a link and Internet routers are supposed to decrement the hop count at routers, not over links. Following RFC2473 would prohibit a tunnel from host to host. It also thus affects tunnel mode IPsec.



       o Copies traffic class from tunnel link to tunnel transit header



That should be a choice, not an assumption; most vendors allow the choice to copy or not.



       o Ignores IPv4 DF=0 and fragments at that layer upon arrival



(Ignore; this is an error to be deleted in the next update)



       o Fails to retain soft ingress state based on inner ICMP messages

          affecting tunnel MTU



Following this rule causes PMTUD - which you favor - to break.



       o Tunnel ingress issues ICMPs



This is a violation of RFC792 and 8200; the ICMPs issued are that of routers, not links. If the ingress is at the source host, these ICMPs would come frfrom a device that is not a router.



       o Fragments IPv4 over IPv6 fragments only if IPv4 DF=0

          (misinterpreting the "can fragment the IPv4 packet" as

          permission to fragment at the IPv6 link header)

This causes IPv4 over IPv6 to fail when it doesn’t need to, simply to adapt to the tunnel path MTU rather than the tunnel EMTU_R.

Note: this is the behavior you’re advocating and it needlessly breaks things because it cannot optimize.

draft-ietf-intarea-tunnels is the movement in opposite direction: it proposes to completely scrape PMTUD for the environment with tunnels.

If you believe that is true, please cite the relevant text to support this claim.

Draft-tunnels just admits that PMTUD doesn’t work; it doesn’t propose deprecating it.


All this story is a good example of when vendors did solve the problem very effective.
It is probably because the problem was simple and vendors were trying to be transparent – not to introduce additional limitations visible for others.
The fact that the problem was not over-standardized and not regulated was the important enabler.
But IETF has the intention to introduce additional limitations:
-          PMTUD would be permanently broken inside the tunnel

Again, that is already true both inside and outside the tunnel.


-          More traffic should be fragmented

Yes - more fragments rather than simply drop. That should be a win, not a problem.


-          It is not specified what to do for many tunnels that do not support fragmentation and do not have buffers at all. By new specification - it should be.

Draft-tunnels is intended as BCP; it’s not a protocol spec.

But if you want to know what to do with tunnels that do not support fragmentation, it is stop using them. They’re broken.

Joe