Re: [v6ops] Proxy function for PTB messages on the tunnel end

Vasilenko Eduard <vasilenko.eduard@huawei.com> Thu, 25 March 2021 09:52 UTC

Return-Path: <vasilenko.eduard@huawei.com>
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 3B58C3A1BCB; Thu, 25 Mar 2021 02:52:03 -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 Nqh2Rp6eHsXD; Thu, 25 Mar 2021 02:51:58 -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 C7E6F3A1BCA; Thu, 25 Mar 2021 02:51:57 -0700 (PDT)
Received: from fraeml709-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4F5gBw5904z682lY; Thu, 25 Mar 2021 17:43:04 +0800 (CST)
Received: from msceml703-chm.china.huawei.com (10.219.141.161) by fraeml709-chm.china.huawei.com (10.206.15.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 25 Mar 2021 10:51:54 +0100
Received: from msceml703-chm.china.huawei.com (10.219.141.161) by msceml703-chm.china.huawei.com (10.219.141.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 25 Mar 2021 12:51:53 +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; Thu, 25 Mar 2021 12:51:53 +0300
From: Vasilenko Eduard <vasilenko.eduard@huawei.com>
To: "Black, David" <David.Black@dell.com>, 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/tnfdMP9s3R+A/tl7ULD9sxGQAPtlIkIg
Date: Thu, 25 Mar 2021 09:51:53 +0000
Message-ID: <6a9c2f22ed0b4ffab4fedb12bb39a7d0@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> <c3ac993dc35340648988c688f1b86bbc@huawei.com> <61E1D204-B806-4D11-86D1-F175ED38A96C@strayalpha.com> <348c2c09d1ad4a7dbac4add24bbb5ab8@huawei.com> <MN2PR19MB40450A07EAF2FC2BD5439F2983639@MN2PR19MB4045.namprd19.prod.outlook.com>
In-Reply-To: <MN2PR19MB40450A07EAF2FC2BD5439F2983639@MN2PR19MB4045.namprd19.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.47.197.145]
Content-Type: multipart/alternative; boundary="_000_6a9c2f22ed0b4ffab4fedb12bb39a7d0huaweicom_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/v6ops/vWuaUVd_DwjVWbFxfBMOIC48YZw>
Subject: Re: [v6ops] Proxy function for PTB messages on the tunnel end
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: Thu, 25 Mar 2021 09:52:03 -0000

Hi David,


1.       Any real tunneling implementation does check the incoming packet against virtual link MTU, not against any buffer. Because buffers are “big enough” for tunneling that does support fragmentation/reassembly or buffer does not exist at all for tunneling that does not support fragmentation.

2.       Why you are talking about “NIC”, “driver”, “EMTU_R”? All these abstractions do not exist in hardware that is doing tunneling for us.
It is the Data Plane ASIC, right? It deals with traffic flow (Verilog), not with control flow (RTC == Run to Completion, “C”).
It does not have LINUX on board. No one would be capable to emulate “host” on this ASIC, at least not to degree that this draft demands.
It was originally a very bad idea to unify tunnel end point with host – they are running on principally different hardware. The difference is much bigger than between RISC and CISC.

Eduard
From: Black, David [mailto:David.Black@dell.com]
Sent: Thursday, March 25, 2021 12:10 AM
To: Vasilenko Eduard <vasilenko.eduard@huawei.com>; Joseph Touch <touch@strayalpha.com>
Cc: v6ops@ietf.org; int-area <int-area@ietf.org>; Black, David <David.Black@dell.com>
Subject: RE: Proxy function for PTB messages on the tunnel end

Hi Eduard,

>>            - links NEVER *generate* ICMPs
>>            - routers and hosts *generate* ICMPs
> Why virtual link could not send ICMP PTB (like on a physical link)?

The short answer (IMHO) is "yes, but the host or router generates the ICMP PTB."  There's a subtle distinction here that better supports the link-attached-to-host case, where an ICMP PTB may be counterproductive.

Starting with a router case, suppose that a large packet arrives at a router whose forwarding table determines that the next hop is a virtual link that encapsulates the packet to send in a tunnel.  The router checks the MTU for that virtual link (tunnel EMTU_R), determines that the packet is too large to send, and the router generates an ICMP PTB to report that.  This works the same way for a physical link that just sends the packet (MTU that is checked is that of the physical link) – in both cases the router generates an ICMP PTB based on link (interface) information before attempting to send the packet on that link.

The host case enables a host device driver or network stack to deal with this situation without forcing an ICMP PTB to be generated and parsed.  Starting with the physical link case – attempting to send a packet that's too large for the NIC to send generates an error that propagates back up the host network stack – forcing generation of an ICMP PTB in this case may be counterproductive.  Exactly where that error is generated may depend on how  the network stack and NIC are implemented – the error could originate from the NIC itself, the NIC device driver, or a higher layer of the network stack that checks the link MTU before the packet is handed off to the NIC device driver.  For a software encapsulation implementation of a virtual link, the MTU (tunnel EMTU_R) gets checked at or above the network stack layer that does the encapsulation.  If there's a software router embedded in the host (e.g., virtual switch with IP forwarding functionality), that router could generate an ICMP PTB based on the error or on directly checking the link MTU.

Thanks, --David

From: Int-area <int-area-bounces@ietf.org<mailto:int-area-bounces@ietf.org>> On Behalf Of Vasilenko Eduard
Sent: Wednesday, March 24, 2021 4:05 PM
To: Joseph Touch
Cc: v6ops@ietf.org<mailto:v6ops@ietf.org>; int-area
Subject: Re: [Int-area] Proxy function for PTB messages on the tunnel end


[EXTERNAL EMAIL]
Hi Joseph,
You have presented below (and in many other messages) a long list of policies (extensive usage of “SHOULD”, “NEVER”, “MUST”)
That are new – would change how current tunnels operate
And are not justified by any reasoning.
It is religion, not technology.

Why virtual link could not send ICMP PTB (like on a physical link)? Just because… it is “unsolicited”. But one moment – any other PTB is unsolicited too - It is an event.

You have not answered any of my questions – you continue to promote the solution from the draft-ietf-intarea-tunnels putting some excerpts in a different order.

PS: I am especially sorry that draft-ietf-intarea-tunnels would scrape the best tunneling RFC that we have for IPv6. RFC 2473 was really good.
Eduard
From: Joseph Touch [mailto:touch@strayalpha.com]
Sent: Wednesday, March 24, 2021 10:01 PM
To: Vasilenko Eduard <vasilenko.eduard@huawei.com<mailto:vasilenko.eduard@huawei.com>>
Cc: v6ops@ietf.org<mailto:v6ops@ietf.org>; int-area <int-area@ietf.org<mailto:int-area@ietf.org>>
Subject: Re: Proxy function for PTB messages on the tunnel end

Two points:

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

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

PMTUD is effectively dead, so if you’re worried about it, you’re 20+ years too late - as per the RFCs I’ve already cited.

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.

I’m saying something very specific:
            - tunnels are links
            - links NEVER *genenerate* ICMPs
            - routers and hosts *generate* ICMPs
                        based on what happens inside them, e.g,, to their processes and links

So the question is “under what conditions does a link cause a router/host to generate an ICMP?”

There should be no unsolicited ICMPs, i.e., routers/hosts NEVER generate ICMPs unless in reaction to a packet being sent or received.

PTB means “I cannot send the packet over this link”. Not path - link. There is no PTB for a path; the assumption is that one link of a path that fails will send the ICMPs back to the source.

For a tunnel, when can it NOT send a packet?
            - only when that packet is larger than the tunnel EMTU_R (i.e., egress received max, reassembled if reassembly is supported)

A packet that can be fragmented and traverse a tunnel is not too big. It’s “bigger than you might like” or “bigger than desired”, but there is no ICMP to indicate that sort of ‘soft’ (non failure) error.

So what should happen:
            - tunnels ingress should know and update (if changing) the tunnel EMTU_R value
            - routers/hosts should use EMTU_R as the tunnel MTU
                        again, because the tunnel path MTU is a preference; the tunnel EMTU_R is the actual strict limit
            - routers/hosts sending packets over a tunnel generate ICMP PTBs as needed
                        again, the router/host generates the message, not the tunnel ingress
                        this happens when the router/host tries to send a packet over out that tunnel interface that is larger than the tunnel MTU

So this all works, as long as ICMPs are relayed.

Draft-tunnels does not deprecate this behavior. It describes it and explains why this is the correct behavior.

Tunnel ingresses that relay PTBs inside are broken; they fail in ways they do not need to. That is the true error.

Joe