Re: [tsvwg] draft-ietf-udp-options issues from IETF 104

Tom Herbert <tom@herbertland.com> Thu, 18 July 2019 18:53 UTC

Return-Path: <tom@herbertland.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 1B0EA1205CC for <tsvwg@ietfa.amsl.com>; Thu, 18 Jul 2019 11:53:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=herbertland-com.20150623.gappssmtp.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 dcpdjDmVj0xa for <tsvwg@ietfa.amsl.com>; Thu, 18 Jul 2019 11:53:26 -0700 (PDT)
Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 29B0312006B for <tsvwg@ietf.org>; Thu, 18 Jul 2019 11:53:26 -0700 (PDT)
Received: by mail-ed1-x544.google.com with SMTP id e3so31606850edr.10 for <tsvwg@ietf.org>; Thu, 18 Jul 2019 11:53:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=herbertland-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=fXuVs08tCHIl416VYD44LPZ0CteJZpT0vNs/gf8SQlg=; b=OHJRKfViq+k7am9Edgj+xkjKgQSl/hFCbljylog1Uo3kW4QDMwTIQmlvVYoDNkqO+x lilmg3NPGR9N9Scs3R5zVWTmOGCJcv9EijeP4ArAGMFd/cDldBqXYPUcdUHhpMAORdK6 sI6VHVuCoHFn6p8dToJ8AXL48fBKfIJtrzTVqdb3roP4/vLSTE1J/0Bwm64psbBRBolI QJdcvBxELlmLbhmZDO9QG2xr4iSyCXmZbWe4dzJ68PqzmjZRv/7QW6TtxgcGEAGZeDWF 2G6Oy1uUTy6VX+3mxXLM4xRwhFQDvaobYlZzFhC0KX1DOmazwuyxt6eQLx+hZTAPZ5Hq E0Yg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=fXuVs08tCHIl416VYD44LPZ0CteJZpT0vNs/gf8SQlg=; b=bvR+T59kD6YDmBiCKc5Pfso7m8nuReazRBdVgpz9zflDssbzw/9hsE+Y3HTOnDwT5j o790zOVchPhrjl1b0rOJg9Px+JBnsKBPAu5cLaQ9Hq+1nowyH4KU3cq96LrK20A/BAz4 z6NGcYy7mkx5hKuWatpjPN2C0ZGx2xP6+QjZcfMNb2gpf9yEKnMPWDzJ8Q8NiUATLbRu WkyQptWhAKFyysIDldhMc0HlRa6P27ETZoKU3lBIb+geDiSBdDmx0zu+4kbznpAOijTc 3I+ibw1G73C+hiJHer4xP1WsQE+IzMBLn8O2vDi+4eXsTBWMoIdBKKpTyA0i6SY2pO1B P1WA==
X-Gm-Message-State: APjAAAWYKlAywfHl16kQ5tqM8BpRUaVdVrz85rpsPPj2j7WT224P28/4 oyaJHQXoOBreFWKw+lGmg923bUuDXosiaA+vDx99gQ==
X-Google-Smtp-Source: APXvYqwEWhZxGqaREMPTs7qqEB+rjIeDBpUVw59P585Oa7SnujdQz2rB1eZcjIPgKvMBhh9i3lEamkvyrezaGYIOIDo=
X-Received: by 2002:aa7:dad6:: with SMTP id x22mr42046415eds.122.1563476004554; Thu, 18 Jul 2019 11:53:24 -0700 (PDT)
MIME-Version: 1.0
References: <30c17e9c174f6b0da3ecc6b503a8cb17@strayalpha.com> <CACL_3VE7+3WD3Uzubf8X9uQX9ZYPnZVhXjheUOuL9EfjT1JkGQ@mail.gmail.com> <CALx6S35V-d3Rn_wjrhbHUHgS=_+dVjR4hbMJ0-JBsG-1BuFuZg@mail.gmail.com> <B5CCEF58-38CE-4973-9CFD-002B404E4EF3@strayalpha.com> <CACL_3VEnJoV9N9i59fJXG1Nyt=mMWT7SuB8B=C-Y9a9QLtqP7Q@mail.gmail.com> <BB3FD9A5-8D30-4600-A7A7-DA3030BD34A3@strayalpha.com> <20190718100109.GA86292@clarinet.employees.org> <718EBD34-5B4A-4458-B9B4-0A94C33E019E@strayalpha.com> <CACL_3VGL2irCkZeEcP+9HLBHqtqaMPZM66youUsatzosUu=Aew@mail.gmail.com> <A07EA390-1A3A-4AE9-AFD7-2F22CD4B0E31@strayalpha.com> <CALx6S34oOza3Z4Ymjsp+HLXnSTOKwh+SAQO8mt=a-1AbTTB0GQ@mail.gmail.com> <177233bb33272ce3b64298a005254724@strayalpha.com> <CALx6S36ZBa4Bioj=0KYn7wcFi08VeAg8sHUHLRNGURsrUN673w@mail.gmail.com> <5D30B36D.80409@erg.abdn.ac.uk> <CALx6S37EauLMyeksHJ3iPNjKwLTv5qti_Hf0a2QTdzZoDrarrw@mail.gmail.com> <5D30BB23.6080407@erg.abdn.ac.uk> <CALx6S34j2fi6sePff3sRu71RVDsPwmJi5XOEfrwniQk5h76geQ@mail.gmail.com> <5D30BD6A.9020103@erg.abdn.ac.uk>
In-Reply-To: <5D30BD6A.9020103@erg.abdn.ac.uk>
From: Tom Herbert <tom@herbertland.com>
Date: Thu, 18 Jul 2019 11:53:12 -0700
Message-ID: <CALx6S373zbB5cB6wLESmmUQO=mRS9Q4=tptQjfVu_-7Db0q0UA@mail.gmail.com>
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Cc: "tsvwg@ietf.org" <tsvwg@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/KYSxnFpEWSZZi2hN9ybhxBqo6cI>
Subject: Re: [tsvwg] draft-ietf-udp-options issues from IETF 104
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, 18 Jul 2019 18:53:29 -0000

On Thu, Jul 18, 2019 at 11:41 AM Gorry Fairhurst <gorry@erg.abdn.ac.uk> wrote:
>
> On 18/07/2019, 19:38, Tom Herbert wrote:
> > On Thu, Jul 18, 2019 at 11:32 AM Gorry Fairhurst<gorry@erg.abdn.ac.uk>  wrote:
> >> On 18/07/2019, 19:18, Tom Herbert wrote:
> >>> On Thu, Jul 18, 2019 at 10:59 AM Gorry Fairhurst<gorry@erg.abdn.ac.uk>   wrote:
> >>>> On 18/07/2019, 18:25, Tom Herbert wrote:
> >>>>> On Thu, Jul 18, 2019 at 9:56 AM Joe Touch<touch@strayalpha.com>    wrote:
> >>>>>>
> >>>>>>
> >>>>>> On 2019-07-18 08:35, Tom Herbert wrote:
> >>>>>>
> >>>>>> ...
> >>>>>>
> >>>>>> A single bit in the option type to indicate that the option can be
> >>>>>> skipped if unrecognized should be sufficient.
> >>>>>>
> >>>>>> Tom
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> That bit has two meanings:
> >>>>>>
> >>>>>> - for legacy receivers, it's simply ignored for legacy data
> >>>>>>
> >>>>>> - for option-aware, if the flag is set, what does it mean?
> >>>>>>      - it should never mean drop the legacy data, otherwise an options-aware endpoint can't decide to act as legacy
> >>>>>>      - it could mean drop non-legacy data
> >>>>>>
> >>>>>> Right now, the onus is on the receiver to decide what to do with the data.. The info is passed to the user - NOT decided by UDP.
> >>>>>>
> >>>>>> I.e., cuurrently:
> >>>>>>
> >>>>>> - unknown options are ignored by both legacy and option-aware endpoints
> >>>>>> - UDP processing skips over all such options
> >>>>>> - users can decide/negotiate what to do with those options on a per endpoint basis
> >>>>>>
> >>>>>> Note: the first time you send something, if you want a response to help you know what the endpoint will do, you need to set "ignore" anyway, which is what the default does. Otherwise you won't get a response and won't know why (the packet could have been dropped).
> >>>>>>
> >>>>>> So this only makes sense for negotiated soft-state anyway, at which point the user can either configure the endpoint UDP socket to drop if unknown or accept.
> >>>>>>
> >>>>>> Why would we NOT give the user this choice?
> >>>>>>
> >>>>> Joe,
> >>>>>
> >>>>> Consider that someone invents the compression option a year from now.
> >>>>> The option cannot be ignored by a receiver since delivering compressed
> >>>>> data to the application would be jibberish. So someone starts using
> >>>>> compression and performs a "soft-state" negotiation with a timeout of
> >>>>> 30 seconds in the example algorithm you previously described for
> >>>>> soft-state negotiation. So the sender is sending compression option to
> >>>>> some receiver. But, at some point, say 10 seconds into a timeout
> >>>>> period, the receiving host changes to a different configuration that
> >>>>> doesn't support the compression option-- maybe the host address is
> >>>>> virtual IP and packets are now routed to a different backend, or maybe
> >>>>> someone reboots the receiving hosts with a new configuration.
> >>>>> The
> >>>>> sender doesn't know the receiver has changed and continues sending the
> >>>>> compression option. The new receiver sees the options but doesn't
> >>>>> recognize it.
> >>>>> If the receiver ignores the option and delivers the data
> >>>>> to the application then that's data corruption. That's not robust.
> >>>> That's where I disagree. I think anything that is not a native UDP
> >>>> packet MUST be carried in the options space. That's where I would
> >>>> suggest we put the compressed payload. if that means the main payload
> >>>> area isnothing", then that would be OK for me.
> >>>>
> >>> That's already assumed. If there are any options that can't be ignored
> >>> then the UDP Length = 8 format must be used. If processing options
> >>> fails then the packet can be dropped.
> >>>
> >>>> When the remote endpoint fails to process the compressed payload (or
> >>>> myseriously the option si stripped/ignored - how, but don't worry), then
> >>>> the app doesn't respond. It times out and does something.
> >>>>
> >>> Remote endpoint or remote application? We can't give an application
> >>> the compressed payload.
> >>>
> >> Remote endpoint.
> >>>> Personally, unless there was a strong desire to be unidirectional (then
> >>>> you have to live with that), I'd send an option to the other end to
> >>>> solicit a little feedback - or do the same at the app layer.
> >>>>
> >>> You can do that, but bear in mind that UDP is a stateless protocol.
> >>> The feedback you get from one probe exchange might be completely
> >>> invalid on the very next packet sent. Any information gleaned about a
> >>> peer can only be considered advisory.
> >> yes. If you build on UDP you need to provide machinery.
> >>>> Gorry
> >>>>> The "drop packet on unknown option" is the conventional and cheap way
> >>>>> to avoid situations like this and make stateless options robust.
> >>>> Not sure how that now helps?
> >>>>
> >>>> The receiver already ignores unknown options.
> >>> I believe that's the problem. There some options that cannot be
> >>> ignored and still maintain correctness. This is already a known issue
> >>> with other protocols.
> >> OK, let's check. The receiver gets a UDP datagram and...
> >>
> >> (1) Receiver understands options and it understands this specific option
> >> - it processes the option - app gets the data.
> > Yes, presuming other options were acceptable.
> >
> >> (2) Receiver understands options and not this specific option - it does
> >> not processes the option - no data to the app.
> > Yes, that is the correct behavoir. The question is how does the
> > protocol provide for this. Right now the draft says "Receivers MUST
> > silently ignore unknown options.". That won't work. Either all unknown
> > options cause packet to be dropped, or receiver can can determine
> > whether the packet should be be dropped based on the bit.
> OK, so do you want the app to be able to process several options, but
> make options processing
> dependent on other options.
>
Gorry,

What I want is for the sender to be able to tell the receiver "if you
don't understand this option then drop the packet, because accepting
the packet is incorrect.". As pointed already, unknown options are
already dealt with in IPv6 where two bits indicate what to do with the
packet. The part about ICMP errors isn't needed for UDP options, so
only one bit in type field is needed. Other than that nuance, we
already have the solution for a common protocol problem with
precedence, implementation, and deployment experience and it's really
straightforward and completely stateless. I'm at a loss as to why
there's pushback on this.

Tom

> Gorry
> >> (3) Receiver does not understand options - it does not processes the
> >> option - no data to the app.
> > No data app, but app does receive a zero length message. That corner
> > case is already noted.
> >
> >> Gorry
> >>> Tom
> >>>
> >>>>> Tom
> >>>>>
> >>>>>> Joe
> >>>>>>
> >>>>>>
> >>>> Gorry
> >>>>
>