Re: [tsvwg] Regarding DTLS and UDP options

Tom Herbert <tom@herbertland.com> Tue, 18 April 2017 16:37 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 1DC0F127286 for <tsvwg@ietfa.amsl.com>; Tue, 18 Apr 2017 09:37:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7] 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 zXTTJFRt0sdA for <tsvwg@ietfa.amsl.com>; Tue, 18 Apr 2017 09:37:23 -0700 (PDT)
Received: from mail-qk0-x235.google.com (mail-qk0-x235.google.com [IPv6:2607:f8b0:400d:c09::235]) (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 1B9CB12441E for <tsvwg@ietf.org>; Tue, 18 Apr 2017 09:37:23 -0700 (PDT)
Received: by mail-qk0-x235.google.com with SMTP id p68so135103128qke.1 for <tsvwg@ietf.org>; Tue, 18 Apr 2017 09:37:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=herbertland-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=XHEEdX+8vtKxyKwRzRgD4ZR3Gg8WiaJxbb23Oh2tghQ=; b=sG44+0+cxH0jzWoO/HQnZWMMqJ3TL5jgC/9GZ84Ww9igUDUQ20FCjJJ4qdLnj+vmLH K1uqzyFRo+s9WYxtVRH6ZftQaZRoLDbZudbfx283BcBnA+/6oZ2UZrLPuI+BpfUIj5CH KoSIVVs483R1IjmomxVaBUFC4gLvnFzIS3KvWa4Xx/LlXWNJOypjhQiteGtFmn1UESnr Sqay/XoCCzdw70626SxZ75jwCeSqS67JFWd3X4YcCt7DQFRULhBxCF9jwmJfciuITpuk yDgujn4o5gE3cNi6RFVg1NbUyyX+S+e9iegT49gOBbtl1kuG1yqz/fiXJesrwLGIACtC y6xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=XHEEdX+8vtKxyKwRzRgD4ZR3Gg8WiaJxbb23Oh2tghQ=; b=QBGFj8sEzJhDFH33X1DBFYFbecPY01yAdSaENhOGlxEm3fdpR77KMLqw9zys5pK8pd tNdqSi+amzQYDZQLm0Ws9dHmcTT5Q5QudL6wfdbww6bAEG/dJg+cTPWBKW52gWtwa+yQ 37Bg02aRmv1kpL0Iudaldj+pOuwxwRCjHvgI3G8njBQaIyQcDwubWaJBK6d5XbfRtZzz 4y+ROQUIi6eOCohDHHwnAxTR8GJqipFL3GHHoivkSm4zh4lOC6sIvZsheqf6pHIG9hga kXIiGU1DQj8qupkLQQgKrvyct/KIADzYplDWn7/e+KhOXtNLF5pCFIpwbYCMYau0o+2G qoWw==
X-Gm-Message-State: AN3rC/4WWligEx3y9aPqV5/7bJepPmoY363fFE56TaxRq0igYNaT5N1l /9UND8YzD5C92rVJaElqYH2LOUnD6w==
X-Received: by 10.55.89.196 with SMTP id n187mr13470985qkb.322.1492533442177; Tue, 18 Apr 2017 09:37:22 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.140.97.10 with HTTP; Tue, 18 Apr 2017 09:37:21 -0700 (PDT)
In-Reply-To: <58F5C07C.4000707@erg.abdn.ac.uk>
References: <CACL_3VFeJs7KzG9Bchh15bfZ3CmaOPWcfisEreNoGYK5CsEJ+g@mail.gmail.com> <3a4a6b78-8146-de4c-6246-7bd09de44f1c@isi.edu> <CACL_3VFkr3mGe-yTbvHrTZcKVCpEv3FeSOyoShUxCK5+9Tdqqg@mail.gmail.com> <c79fe3d0-8567-ea7d-72fc-bd33732df60e@isi.edu> <CACL_3VHmoCSo23OWqQFq7upw749CqMK7iazXrBKZARzwbzY5mw@mail.gmail.com> <f97f08d4-0070-437a-e22a-8782497c76eb@isi.edu> <4e36af95-84c3-bc7e-b18a-614f8bfab662@isi.edu> <58F48403.8080302@erg.abdn.ac.uk> <a0f656e8-e847-db54-6046-2078364d428b@isi.edu> <CALx6S36HYHdbGoJHNb+mVY6reu9RLikLxDJqrPgwO9tF1EfSgQ@mail.gmail.com> <8b1829ba-4e8d-5ee1-e24c-f42962f47dde@isi.edu> <CALx6S36=7KbTtv9QNUBTg6gPYQQighsPD_+mWNc=wUQTX70VBQ@mail.gmail.com> <8378ae17-c023-25a2-76e7-07b858916849@isi.edu> <CALx6S35chiqMtqKa+zahfZnLZrQzfYUF7D9m0QGbkwFVpRwHag@mail.gmail.com> <bfc36611-6817-fbf9-a9c7-5bdde179b665@isi.edu> <CALx6S34qAh0mXGi8nuRtTiorf_1TE4V0NQ1QhqCcW0hmxOgc-Q@mail.gmail.com> <58F5C07C.4000707@erg.abdn.ac.uk>
From: Tom Herbert <tom@herbertland.com>
Date: Tue, 18 Apr 2017 09:37:21 -0700
Message-ID: <CALx6S35N5WYvPHzTNo+trUecGgFPWv+xyXu4uampijc2w=DoSw@mail.gmail.com>
To: "gorry@erg.abdn.ac.uk" <gorry@erg.abdn.ac.uk>
Cc: Joe Touch <touch@isi.edu>, tsvwg <tsvwg@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/6zKF07WkTL7p9qwbVe0Ycl7lZMI>
Subject: Re: [tsvwg] Regarding DTLS and UDP options
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.22
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, 18 Apr 2017 16:37:25 -0000

On Tue, Apr 18, 2017 at 12:30 AM, Gorry Fairhurst <gorry@erg.abdn.ac.uk> wrote:
> On 17/04/2017, 23:31, Tom Herbert wrote:
>
> Joe: How and why should these be different?
>>
>>
> Tom:
>
>> TCP options are pretty much required for operation of the TCP
>> protocol, this is why they will never be ossified and why it's one of
>> the few methods of protocol extensibility that is viable on the
>> Internet. IP options on the other hand were never required for IP to
>> operate hence they were quickly ossified. In this context, UDP options
>> are more like IP options since they are not required for use with UDP.
>> So there is a possibility that some vendors (e.g. a firewall) may just
>> decide that to start dropping packets or throwing packets that might
>> have them into a slow path similar to IP options. If something like
>> this is not consistently supported in the Internet, then applications
>> are unlikely to use it. I wish this wasn't reality and that the end to
>> end model was actually adhered to, but when writing Internet
>> applications we have to stick with what is known to work... ie. plain
>> TCP/IP or UDP/IP (where support for the latter is still a little shaky
>> since some network operators refer to think of UDP as nothing more
>> than a DOS vector).
>>
>> Tom
>>
> I have opinions on this para, in that I think options in TCP can be selected
> by the TCP stack, they do not explicitly need to be turned on or off by
> applications. A simple example: Timestamp or MSS. If we had similar options
> for UDP, this could also be automated by the stack (e.g., MSS to know the
> maximum receive datagram size). I have ideas of a number of such things that
> could be automatable, and plan to try these as soon as we have a stack that
> supports this.
>
Gorry,

UDP is a connectionless and unreliable protocol, so if the stack were
to on its own accord add an MSS to a packet how and no response was
seen how would it know the difference between a one way communication
and the packet was dropped because some intermediate device enforces
IP len == UDP len?

My concern with retrofitting UDP is that I don't think it can be done
so that all ambiguities are eliminated and hence it will never be
completely robust. For instance, in TCP any part of the TCP header
after the first twenty bytes must be TCP options-- there is no other
possible interpretation of these bits allowed by the protocol. But,
correct interpretation of UDP options in the surplus space is
inherently probabilistic. Even if we put in checksums and magic
numbers and get the probability of misinterpretation very low it will
not be zero. If some existing device happens to be adding random bits
beyond the UDP header (as the draft points out it was never a
requirement that lengths need to match) and this is subsequently
misinterpreted as UDP options causing insidious effects, even if this
happens just once, it is a problem with the protocol not the
implementation.

I think ambiguity is manageable if it is only the communicating hosts
that process the options and the use of options is expressly enabled
for both transmit and receive. If some intermediate device wereto
start parsing and possibly modifying options on its own accord this
would be exceedingly dangerous in my opinion. Such a problem would
potentially be a nightmare to debug in real networks since we don't
even have tools that can would analyze trailers. Fortunately, trailers
are unlikely to be considered by intermediate devices so this problem
is unlikely today. Nevertheless, I think the draft should say up from
that intermediate devices MUST NOT process, examine, or modify UDP
options.

A related concern I have is around security and whether ambiguity can
be exploited. For instance, someone could easily forge a UDP fragment
using the UDP option. If a device supports UDP options they will
interpret this as fragment, if they don't they will see this as plain
UDP packet. This are very different interpretations of the same bits
however both devices could claim protocol conformance-- that's a
potential problem. This becomes a real problem if the ambiguity can be
somehow exploited to bypass security.

The draft should probably include some more consideration for use with
NAT. For instance:

"A host SHOULD indicate FRAG support by transmitting an unfragmented
datagram using the Fragmentation option"

If the host lives behind a NAT this would effectively indicate support
for FRAG for all the hosts sitting behind the NAT. I doubt that's the
intent! FRAG should probably be based on UDP 4-tuple, but even packets
on that flow might not always be going to the same host (an IP anycast
destination for example).

Also, the draft should mention multicast and whether or not UDP
options are allowed with that.

Thanks,
Tom

> Sure, options may not be supported by specific paths - although I suspect
> that enough paths already do support to make it worth trying in many cases.
> The UDP (plus options) transport stack can then include mechanisms to decide
> how to handle loss of options, just as TCP stacks do this today.
> Applications do not need to be involved - perhaps other than to "enable" the
> sender stack to do the correct thing.
>

> Gorry
>
>
>
>