Re: [tsvwg] Rregarding soft-state and UDP options

Joe Touch <touch@strayalpha.com> Thu, 02 January 2020 21:50 UTC

Return-Path: <touch@strayalpha.com>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E2B6812004D for <tsvwg@ietfa.amsl.com>; Thu, 2 Jan 2020 13:50:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.218
X-Spam-Level:
X-Spam-Status: No, score=-1.218 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, URIBL_BLOCKED=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 ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NjVAoAxS0zSU for <tsvwg@ietfa.amsl.com>; Thu, 2 Jan 2020 13:50:52 -0800 (PST)
Received: from server217-3.web-hosting.com (server217-3.web-hosting.com [198.54.115.226]) (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 19D9D120096 for <tsvwg@ietf.org>; Thu, 2 Jan 2020 13:50:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=strayalpha.com; s=default; h=Message-ID:References:In-Reply-To:Subject:Cc: To:From:Date:Content-Type:MIME-Version: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=M0n4vkYIpvjKO5DnNVGRuVZ13b9x1WsQxX4G4ACMs4M=; b=MKOk3XBCk6HZ8QHpv34UA187u ecxV91RXC55tckV8SlF1GbcFjwusCDdHPnLvFjz811asxIRckQyYrPUxHcmR6FOL5UX+drkotgViI d5Q4gNUVZnChYGVmPlJtoFDay1w/WfS+F4PixRWLpcCTocuTybvpayeXM5cgH7ywB0uv6uoOj+tBR F4BDQNelqjOcS79VYj8m/2JU9fxdEMyqD4suwa5ANqoaZa1XNXr9el1V82Ojkfzms+gu/VPKHloaN YhQxgjKmmOGxleEqxS4VxTleWgL5ontc4dNJsalxrrqXjnqBWeO5o7oypxTMvHg2unNRIQl5JwLGL LVFiFvTVg==;
Received: from [::1] (port=51328 helo=server217.web-hosting.com) by server217.web-hosting.com with esmtpa (Exim 4.92) (envelope-from <touch@strayalpha.com>) id 1in8Mg-000Sic-NT; Thu, 02 Jan 2020 16:50:51 -0500
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=_38ae6c1d03750128f25a460a59d9cb22"
Date: Thu, 02 Jan 2020 13:50:46 -0800
From: Joe Touch <touch@strayalpha.com>
To: Tom Herbert <tom@herbertland.com>
Cc: TSVWG <tsvwg@ietf.org>
In-Reply-To: <CALx6S35mtfGLOESBGqQpd5N0whHO_jEtZQCrfhJ=GBHSH6nxdg@mail.gmail.com>
References: <CACL_3VF_Mi6JFK=so_P57+Woe5PYOzC4o2Okj6BPVzB91scRQg@mail.gmail.com> <40B548AC-6168-46B5-81F8-CB6A64C83D5C@strayalpha.com> <CACL_3VEmX6C-Mqz8OQuS2NtJQPNNFgyTgyb9uN6TrHuZYwLMLA@mail.gmail.com> <CALx6S34o4AooKW2w5rPPzRu8yQU=Db_f4jboEB6=AywJBw-mgg@mail.gmail.com> <0AA45B1F-3081-4F4F-92C2-AFB47B222854@strayalpha.com> <CALx6S35mtfGLOESBGqQpd5N0whHO_jEtZQCrfhJ=GBHSH6nxdg@mail.gmail.com>
Message-ID: <6d088714156c9ccba194dc71ff667273@strayalpha.com>
X-Sender: touch@strayalpha.com
User-Agent: Roundcube Webmail/1.3.7
X-OutGoing-Spam-Status: No, score=-1.0
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/tsvwg/Miem3-M6joiLoCL2rNVvYknbnwg>
Subject: Re: [tsvwg] Rregarding soft-state and UDP options
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 02 Jan 2020 21:50:54 -0000

Hi, Tom, 

On 2020-01-02 08:19, Tom Herbert wrote:

> On Wed, Jan 1, 2020 at 1:08 PM Joe Touch <touch@strayalpha.com> wrote: 
> 
>> (changing the subject to track the thread)
>> 
>> As we've said before, soft state negotiation is an application layer issue.
> Pushing the problem to the application layer really doesn't help to
> clarify or resolve the issues that have been raised. For instance,
> Mike's question on how soft-state negotiation would work for a
> unidirectional flow is still valid.

We've addressed this too - state negotiation is impossible for
unidirectional flows. Always has been. 

>> There's normative text to indicate that this is expected for some uses of these options but it cannot be specified here because it is not internal to UDP.
> 
> Neither are UDP options internal to UDP. If the intent is that is the
> draft is adding UDP options to be internal to the protocol in the same
> manner as TCP options are internal to TCP, then one would reasonably
> expect "UDP option negotiation" to be specified in the manner that TCP
> option negotiation is specified for TCP.

The options are carried within UDP and some are internal while others
are not. E.g., FRAG and OCS are strictly internal where others are
primarily useful when passed to the user as "out of band" info (MSS,
REQ/RES, TIME). 

The same is true for TCP options - and TCP options aren't universally
negotiated by TCP. That has to be specified for each option; some are
(and defined as integrated with TCP), some aren't. E.g., TCP-AO isn't
negotiated; it has to be setup in advance. 

>> However - note that soft-state coordination isn't needed to ensure fate sharing of options and option-modified data.
> 
> The terminology you're using is confusing. In this email both
> "soft-state coordination" and "soft state negotiation" are used, but
> the draft doesn't mention those but does use the term "soft-state
> exchange". I don't see any definitions of these and I'm not even sure
> if they all are supposed to mean the same thing. Please clarify this
> in the draft and define the terms to make this precise.

Soft state is a widely known concept. The nuances of coordination vs.
negotiation vs. exchange aren't relevant; they all are used in the same
sense - means to set and refresh state that is considered a hint of
previous context. 

>> That's already reliably achieved without soft-state using the existing LITE+FRAG post-reassembly options. The revision integrates LITE+FRAG (as they would not be used independently) but otherwise is basically the same.
>> 
>> From the draft:
> 
> "The above requirements prevent using any option that cannot be safely
> ignored unless that capability has been negotiated with an endpoint in
> advance for a socket pair."
> 
> That assumes that negotiation works and sufficient which has yet to be
> shown so I see no basis for this statement.

Fair point - that section should discuss the use of soft or hard state
at the user level. Hard user state would provide that assurance. 

> However, I will again
> point out that the "drop unrecognized options bit" in the option type,
> similar to that defined for IPv6 options,

IP is not a model for transport protocols. There's a reason why some
features were added to IP - some of which *remain unused and
unsupported*. 

And you don't want "drop unrecognized options". You want "drop this
ENTIRE PACKET" if the option isn't recognized. 

a) LITE+FRAG with pre and post options accomplishes this *safely* for
both legacy and option-aware endpoints 

b) an option-required" bit *cannot* accomplish this safely for both
legacy and option-aware endpoints. Legacy endpoints already treat all
options as "silently ignore". 

> is sufficient to prevent a
> receiver from ignoring options that cannot safely be ignored (note
> this works in the unidirectional flow case for instance).

LITE_FRAG pre and post options already accomplish this. If the
data-modifying options aren't handled properly then the OCS on the
reassembled result would fail. And legacy receivers will ignore it all. 

The option-required bit never works properly for legacy endpoints unless
you design the option to basically *BE* LITE+FRAG (to bury the user data
in the option). We already have a solution that does that more
generally; there's no need for a bit to accomplish this. 

Joe