Re: [tsvwg] Alternative version of the UDP FRAG option
Gorry Fairhurst <gorry@erg.abdn.ac.uk> Tue, 19 March 2019 08:28 UTC
Return-Path: <gorry@erg.abdn.ac.uk>
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 EE0461311FA for <tsvwg@ietfa.amsl.com>; Tue, 19 Mar 2019 01:28:18 -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, 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 AMic-mz_3R7l for <tsvwg@ietfa.amsl.com>; Tue, 19 Mar 2019 01:28:16 -0700 (PDT)
Received: from pegasus.erg.abdn.ac.uk (pegasus.erg.abdn.ac.uk [IPv6:2001:630:42:150::2]) by ietfa.amsl.com (Postfix) with ESMTP id EAB161311F6 for <tsvwg@ietf.org>; Tue, 19 Mar 2019 01:28:15 -0700 (PDT)
Received: from Gs-MacBook-Pro.local (fgrpf.plus.com [212.159.18.54]) by pegasus.erg.abdn.ac.uk (Postfix) with ESMTPSA id 8EE191B0013A; Tue, 19 Mar 2019 08:28:11 +0000 (GMT)
Message-ID: <5C90A81A.8050409@erg.abdn.ac.uk>
Date: Tue, 19 Mar 2019 08:28:10 +0000
From: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Reply-To: gorry@erg.abdn.ac.uk
Organization: University of Aberdeen
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:12.0) Gecko/20120428 Thunderbird/12.0.1
MIME-Version: 1.0
To: Tom Herbert <tom@herbertland.com>
CC: tsvwg <tsvwg@ietf.org>
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> <CALx6S36fQcRdgvCG3XS78EecFjdb36D22iBzovXcODH_W+BHbg@mail.gmail.com>
In-Reply-To: <CALx6S36fQcRdgvCG3XS78EecFjdb36D22iBzovXcODH_W+BHbg@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/3D8-WBZcvxfIyoKwparQ45xTUgE>
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: Tue, 19 Mar 2019 08:28:19 -0000
Tom, I don't agree with some of this... On 18/03/2019, 20:54, Tom Herbert wrote: > 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. I'm really unsure we need much extra. > 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). I don't think this is correct. > 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). That makes sense at the network layer - e.g. where a tunnel does not know what is being transported. For UDP Options, that operate on endpoints, I can't figure out why coding for a sending app would add an option and code for a receiving app would not be correspondingly updated. If they are different versions of the endpoint code, then that's an app problem. > UDP options should adopt this. You may think so, I don't. > 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). If the app relies on the option - then it will look for it, and discard when it is not found. That includes if you look for a CRC. The code we have simply throws the packet when expecting a CRC and not finding one, as if the CRC were wrong. The checksum provides a pre-check including the pseudo-header. If the options space is corrupted then the UDP packet should be thrown away. (OK, one could have LITE > Tom Gorry >>>> Tom >>>> >>>>> Am I misunderstanding something? >>>>> >>>>> Gorry >>>>>>> Mike Heard >> Gorry >>
- Re: [tsvwg] Alternative version of the UDP FRAG o… C. M. Heard
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… C. M. Heard
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Derek Fawcus
- Re: [tsvwg] Alternative version of the UDP FRAG o… C. M. Heard
- Re: [tsvwg] Alternative version of the UDP FRAG o… Raffaele Zullo
- Re: [tsvwg] Alternative version of the UDP FRAG o… C. M. Heard
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… C. M. Heard
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Derek Fawcus
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… C. M. Heard
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Gorry Fairhurst
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Gorry Fairhurst
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Gorry Fairhurst
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Derek Fawcus
- [tsvwg] Possible UDP-Option: Cookie Derek Fawcus
- Re: [tsvwg] Possible UDP-Option: Cookie Tom Herbert
- Re: [tsvwg] Possible UDP-Option: Cookie tjw ietf
- Re: [tsvwg] Possible UDP-Option: Cookie Derek Fawcus
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Possible UDP-Option: Cookie Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Joe Touch
- Re: [tsvwg] Alternative version of the UDP FRAG o… Tom Herbert
- Re: [tsvwg] Alternative version of the UDP FRAG o… Gorry Fairhurst