Re: [tsvwg] Alternative version of the UDP FRAG option

Tom Herbert <tom@herbertland.com> Mon, 18 March 2019 20:54 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 948E7127987 for <tsvwg@ietfa.amsl.com>; Mon, 18 Mar 2019 13:54:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] 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 Y0sTo1DXZjQL for <tsvwg@ietfa.amsl.com>; Mon, 18 Mar 2019 13:54:46 -0700 (PDT)
Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) (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 387481200D7 for <tsvwg@ietf.org>; Mon, 18 Mar 2019 13:54:46 -0700 (PDT)
Received: by mail-qk1-x744.google.com with SMTP id c20so5783390qkc.10 for <tsvwg@ietf.org>; Mon, 18 Mar 2019 13:54:46 -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; bh=+RwUSDa3iziK2kQy91HPl5iKKNSpeiOb2sUQJwdHfFM=; b=BQHXnI4h2hQtkAI/GZcJgNONSPzcd90U63ydhpqGNiWb/FW9+iSlqmm1iblQIzAAhX 7s38BOqbdcQ3rOrMo8YGHxnDJNTburgfg3k8VRHAh8ELvpAKg+7ayBWM4unmhDu5RUm4 Fyc6/CdM4VCTihV35e60hxjQ0d+LKg3Lbp7mwGS2nmuvo56eCw3C8cmRzMHSq4BDghZv 1GlWVe6Sv967WT5aYvDaWJNqG880Rw6TPymuvp4d6798nze8Ev2rdg1lMIutBxFSqM8v SEUl/Cvx4iJP27L1OqdQ/AAyyO4uLlYmdqpmMOSpI/U3Mr5Wprr1gJIcaV/0WIHChSg/ 7pVQ==
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; bh=+RwUSDa3iziK2kQy91HPl5iKKNSpeiOb2sUQJwdHfFM=; b=n/Qzrku9HF2VAT4/oWsX9vKxCb9TShtn/SDxDBFsYE0n4U1h0m2ihGwR3qCXcUc4KQ PL+QhF84EM5thtwU76s8nSSAuG8JxV/KaT+IE3N/YnYXPb1facXgbfc5VjFemhK7BnoP RBlyBAKIse4Ts5pVg+A3TWWQdYn3A9JOFDLRKJ2XICqc7x3DWoYgy+jyfS/ziLSGxhxc AlJAu3dCGrebJx40rRfO4m738kzaN785M4TxsjdaXfovVhJG9T/bk0+1ZnHzZ80xNEta sB7FrxBsjWWo00kPqTjlOqULcu19/UUTuTVwkauuIUGL/2hDcBNJe/0WLMytn7JAnoP9 mYhw==
X-Gm-Message-State: APjAAAXC5z3nUtmWT+8D5LPHfj/p5Ak+2ZvG7JmKL3yR89VnF2OnqL4U CtviyKl79eJlnO//aVYi5Ily9K+gxEFulXqIQQI9XQBU
X-Google-Smtp-Source: APXvYqwMRiWc3s3mPplBHIRIzb2wnqEgfj3CcoLhb397VqvtwDCRWWhIw9vlShIF7Cp4chu1wvLlo0Xegc/PaSfeMMs=
X-Received: by 2002:a37:6c84:: with SMTP id h126mr4745246qkc.168.1552942485227; Mon, 18 Mar 2019 13:54:45 -0700 (PDT)
MIME-Version: 1.0
References: <CACL_3VE1=0OORUuOKg9GjcdVuhBNTkWhymE7PAs5WYO0ZR0DWQ@mail.gmail.com> <CALx6S37y_AbESyX5PcCSu7NEr-uPVrPXksEeAx5aSNAyqshL6Q@mail.gmail.com> <CACL_3VFJTxM3s-GLOTz9xmkNk1uOQoCmAGApbAf1ZgbH3Opptw@mail.gmail.com> <CALx6S36aWKHFXO=Zx8W-wFqqC5-Oueb3j-b9evm-yKpfguVQuw@mail.gmail.com> <5C8FBBED.7000805@erg.abdn.ac.uk> <CALx6S34FKNJ_6Ep659L3t_Kf4bnEKZ5LTjXo-zWz4PrveU_UVA@mail.gmail.com> <CALx6S37MsCmOOsn0bnHoTwJkN7Khfm03z__W4hhy7c29XuvQHw@mail.gmail.com> <5C8FDEED.8010701@erg.abdn.ac.uk>
In-Reply-To: <5C8FDEED.8010701@erg.abdn.ac.uk>
From: Tom Herbert <tom@herbertland.com>
Date: Mon, 18 Mar 2019 13:54:34 -0700
Message-ID: <CALx6S36fQcRdgvCG3XS78EecFjdb36D22iBzovXcODH_W+BHbg@mail.gmail.com>
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Cc: tsvwg <tsvwg@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/qUtW-nPEhSfDc3NAb6GMYbikl0g>
Subject: Re: [tsvwg] Alternative version of the UDP FRAG option
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: Mon, 18 Mar 2019 20:54:49 -0000

On Mon, Mar 18, 2019 at 11:10 AM Gorry Fairhurst <gorry@erg.abdn.ac.uk> wrote:
>
> On 18/03/2019, 16:27, Tom Herbert wrote:
> > On Mon, Mar 18, 2019 at 8:58 AM Tom Herbert<tom@herbertland.com>  wrote:
> >> On Mon, Mar 18, 2019 at 8:40 AM Gorry Fairhurst<gorry@erg.abdn.ac.uk>  wrote:
> >>> I think I missed something between these emails....
> >>>
> >>> On 18/03/2019, 15:13, Tom Herbert wrote:
> >>>> On Mon, Mar 18, 2019 at 7:43 AM C. M. Heard<heard@pobox.com>   wrote:
> >>>>> On Sat, Mar 16, 2019 at 9:06 AM Tom Herbert wrote:
> >>>>>> Thinking about this, it occurs to me be that the LITE option isn't
> >>>>>> needed. The assumption in the UDP options draft is that a receiver
> >>>>>> needs the UDP payload to immediately follow the UDP header, but the
> >>>>>> UDP payload can be anywhere in the surplus area as long as it's
> >>>>>> aligned to four bytes. A receiver will know how to handle it and
> >>>>>> deliver the UDP data to the application (e.g. by maintaining a pointer
> >>>>>> to the data).
> >>>>>>
> >>>>>> So that allows a format like:
> >>>>>>
> >>>>>> UDP header (Length=8) | Surplus area header | Options | Payload
> >>>>>>
> >>>>>> The surplus area header contains the header length and a checksum
> >>>>>> covering the surplus space (four bytes altogether). The three headers
> >>>>>> can thought of as an extended UDP header, so the format becomes:
> >>>>>>
> >>>>>> Extended UDP header | Payload
> >>>>>>
> >>>>>> Which looks a whole lot like any other protocol format with a variable
> >>>>>> length header such as TCP or IPv4.
> >>>>> A major downside to this approach is that is does not let you add
> >>>>> "optional to process" options such as MSS, Echo Request, and Echo
> >>>>> Response to UDP datagrams that are intended to be processed normally
> >>>>> by legacy receivers that do not understand UDP options or the extended
> >>>>> UDP header format. You can do that with the option trailer as
> >>>>> currently proposed.
> >>> Right, so this really re-designs UDP as a sublayer to another transport.
> >>> To me, this looks very like an encaps like DCCP-in-UDP or GRE-in-UDP,
> >>> etc. So this isn't an "option" it's an encapsulation.
> >>>> Mike,
> >>>>
> >>>> The converse is also true. We can't put options in a trailer that
> >>>> *must* be processed by the receiver (fragmentation, compression,
> >>>> security, etc.).
> >>>>
> >>>> Tom
> >>> Why this? I thought that if you make a request to negotiate to use say
> >>> enhanced integrity checking or some security option, then you can
> >>> require the option to be present at the receiver?
> >> Gorry,
> >>
> >> How does negotiation work with a transport protocol that is stateless?
> >> Negotiation implies state is maintained between two endpoints.
> >>
> > Also, if there is a negotiation then there communicating endpoint is
> > known to not be a legacy receiver so the extended header can be used.
> > Then if the packet is received by some other legacy node (e.g. because
> > of VIP, address corruption, peer rebooted and state is lost) the
> > packet is "dropped" (a zero length UDP datagram is received by the
> > peer).
> >
> > Tom
> So I wa sthinking that the app "knows" what is "negotiated". It could be
> that the app decides it needs security or enhanced integrity check and
> therfore configures to add this at the sender and check at the receiver.
> Whether this "knowing" is hard-coded or uses an upper layer handshake
> isn't so significant to me. An upper layer handshake/protocol could also
> include some sort of fall-back.
>
> For an apps that is itself stateless it just has to be designed to use a
> UDP Option or not. In the same way that it chooses TCP or could use SCTP
> etc.

Gorry,

If negotiation is an integral mechanism in UDP options then we really
need the specification for it.

For important options received in a packet (frag, security, integrity
check, etc.) the requirements are straightforward: either the option
is processed and appropriately verified, or the packet must be
dropped. An alternative that allows a receiver to just ignore them and
still receive the data like nothing happened is a non-starter.

For UDP options this means:

1. If there are important UDP options present then the receiver must
process the option space or drop the packet. For this reason,
important options cannot be in trailers (legacy mode in UDP options
draft).
2. If there is an important option that is unknown to the receiver or
can't be processed by the receiver then the packet must be dropped. In
other protocols (e.g. DO, HBH options in IPv6) the option type
includes an indication of what to do if type is unknown to the
receiver (basically skip option or drop). UDP options should adopt
this.
3. Important options themselves need to be protected. We can't allow a
single bit corruption to make an important option just disappear. This
is a motivation for options to always be covered by a checksum. There
is a peculiarity that should be documented in that the checksum might
be used to protect an option holding a stronger integrity check (like
a CRC option).

Tom

> >> Tom
> >>
> >>> Am I misunderstanding something?
> >>>
> >>> Gorry
> >>>>> Mike Heard
> Gorry
>