Re: Is Fragmentation at IP layer even needed ?

Warren Kumari <warren@kumari.net> Tue, 09 February 2016 16:00 UTC

Return-Path: <warren@kumari.net>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4D35F1AC3B8 for <ietf@ietfa.amsl.com>; Tue, 9 Feb 2016 08:00:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.277
X-Spam-Level:
X-Spam-Status: No, score=-1.277 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001] autolearn=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 ZYTiadSRgfeP for <ietf@ietfa.amsl.com>; Tue, 9 Feb 2016 07:59:59 -0800 (PST)
Received: from mail-yw0-x236.google.com (mail-yw0-x236.google.com [IPv6:2607:f8b0:4002:c05::236]) (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 77C871AC3BC for <ietf@ietf.org>; Tue, 9 Feb 2016 07:59:59 -0800 (PST)
Received: by mail-yw0-x236.google.com with SMTP id g127so129603279ywf.2 for <ietf@ietf.org>; Tue, 09 Feb 2016 07:59:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kumari-net.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-type; bh=LnuGBD4H8EA6X7ZEO0fq4ofk5Q7/96UDSL5fDZ7GP4c=; b=acM5M8/qzG6+QYj+01QW6I5FfCzjxaaiBYpAbk1O/EMe7t7XIZbhiYR/IS7nXZBJhy PHSOWvNRx4V0Q0ZPXhH4bGnZv4RVvEJtXVoD7D9lz8Rz6OJxBhQ7vAx5YXOezCpjTZhH 6yrXVkHkEt57QAhWZWPZDhWgtbuzdV2fI/JjuzZvmRAyCHuyQHlQqRPJvxizt+xoIhlr GQw8b2+yzJXmWjKD129x6hNiiAxAozTc3BeVIJE6jADEQ+xiN/uANtILfKJFgwGfjdta AQTnMyS1aKDNxFPxXKvltEtadN5a4XM3pwaVp5nDHe6KCq8baU0edIKpohXbVTRIaSfH pt7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-type; bh=LnuGBD4H8EA6X7ZEO0fq4ofk5Q7/96UDSL5fDZ7GP4c=; b=TyPC4G9S90pmbo6TRVY+YdFvIodCIK5S5FjwgcwgFcMNKZr8btbbh+7tgEQ+4ky+g3 1e73H2fvRzTunfxD5YDQ9LxNXhuxeCbEGBza2qFnaXrhW7qRxJ6XbS0x8RExO0RXPNXc XUGB2rCa2sbL8aK54/1ouC10wq0n6+c8XUk73yXlZoA67Vq1fvS7oMex/StefYVrN40U zMZCpuWQOt0cvMxTEEKw2IIfQRkb+WGbxuGmjmkqtlKxsovWPfFIs98owzOAFN4hOMMq N9FYW2r+gYvo1W+b1TOKbWZKTcNJKQpQ6l3Y42/+xgWJgl0omWQ3t0UgSQYfxrI53QAz KLwA==
X-Gm-Message-State: AG10YORn3y0Ts2GEJYEGjkRxTyJrR5kZfVClX43OjmGW7re2qBp5GTozLgUHlDFyPuR95S9duCRxtrBpprE4MCVf
X-Received: by 10.13.210.67 with SMTP id u64mr17217627ywd.42.1455033598774; Tue, 09 Feb 2016 07:59:58 -0800 (PST)
MIME-Version: 1.0
References: <CAOJ6w=EvzE3dM4Y2mFFR=9YyPBdmFu_jkF4-42LjkdbRd3yz_w@mail.gmail.com> <BLUPR05MB1985F5F2BB3118362C67B921AED50@BLUPR05MB1985.namprd05.prod.outlook.com> <20160208200943.A615941B5B96@rock.dv.isc.org> <BLUPR05MB19857B918B236880CE8FE871AED50@BLUPR05MB1985.namprd05.prod.outlook.com> <56B91905.4020801@tzi.org> <CAMm+LwgkpQnBm37Hq9qpffQKVgO9fyRv54pG6UM-gj8qFd_-Ow@mail.gmail.com> <alpine.LSU.2.00.1602091204430.21662@hermes-2.csi.cam.ac.uk> <CAMm+LwjnYHRuriAnLYc-2UkSygbxzJe+JK_=XQDzvY-bERjsuw@mail.gmail.com>
In-Reply-To: <CAMm+LwjnYHRuriAnLYc-2UkSygbxzJe+JK_=XQDzvY-bERjsuw@mail.gmail.com>
From: Warren Kumari <warren@kumari.net>
Date: Tue, 09 Feb 2016 15:59:48 +0000
Message-ID: <CAHw9_i+5rOE_dCm26MDLPSwOHCL+=Ax-gOYmeGpWoMWxY4v=pA@mail.gmail.com>
Subject: Re: Is Fragmentation at IP layer even needed ?
To: Phillip Hallam-Baker <phill@hallambaker.com>, Tony Finch <dot@dotat.at>
Content-Type: multipart/alternative; boundary="001a114e7e30cabd6e052b5868ab"
Archived-At: <http://mailarchive.ietf.org/arch/msg/ietf/l2f4pJCchtOFuugBDM7FUjTw6ug>
Cc: Carsten Bormann <cabo@tzi.org>, ietf <ietf@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 09 Feb 2016 16:00:06 -0000

On Tue, Feb 9, 2016 at 5:14 AM Phillip Hallam-Baker <phill@hallambaker.com>
wrote:

> On Tue, Feb 9, 2016 at 7:06 AM, Tony Finch <dot@dotat.at> wrote:
> > Phillip Hallam-Baker <phill@hallambaker.com> wrote:
> >>
> >> Maybe what we needed all along was a better TCP that allowed data to
> >> be sent on the first packet.
> >>
> >> That is what people keep seeming to re-invent.
> >>
> >> Another of those cases where people keep telling me that there are
> >> good reasons not to do that but don't ever get round to explaining
> >> what they are.
> >
> > http://roland.grc.nasa.gov/tcp-impl/list/archive/1292.html
> >
> > But I thought TCP fast open https://tools.ietf.org/html/rfc7413
> > fixed the design errors in T/TCP, so is it still considered a bad idea?
>
> Perhaps it does. But as I said, it only counts as solved when it is in
> the stacks I can use. And no, Linux doesn't count.
>
>
Yup.

<rant>
There seems to be a fair amount of discussion requiring knowledge of the
host stack, or understanding of the capabilities of a specific network
(e.g: all the hosts support [reassembly of "large" fragments | TCP fast
open], all the routers in my network support looking deep into EH, all my
devices set flow labels, etc.).

This feels deeply flawed to me - applications shouldn't need to have deep
knowledge of the network or end system stack behavior, and relying on
specific behavior of a system / network makes the application brittle and
non-portable[0].

Until a behavior is supported by the lowest common denominator / (almost)
everything, it probably makes sense to avoid it[1].

As an example (which I'll use because it's well known / simple, not because
it is still applicable), reassembly of >1500 byte packets:
"An upper-layer protocol or application that depends on IPv6
fragmentation to send packets larger than the MTU of a path should
not send packets larger than 1500 octets unless it has assurance that
the destination is capable of reassembling packets of that larger
size."

If I'm writing a general purpose application (e.g a gaming app), how on
earth do I know if the destination is capable of reassembling >1500 octets?
I could:
A: blindly assume it does
B: limit myself to platform that do
C: I can probe

A is a poor option until I be very sure that everything I (conceivably)
want to talk to supports it, and will continue to for for the foreseeable
future.

B is a poor option for obvious reasons - even on something like a phone I'd
like to be able to port this to one of the other ecosystems with minimal
work.

C is a poor option because I need to add significant complexity - either I
have a negotiation / capabilities exchange at session startup, or I probe
in mid-session. I can probe in parallel, or try it and wait for failure
(which is also tricky - was the packet dropped *because* it is >1500 bytes,
or was it random congestion?)

I'm just trying to write a game - I'm not a network weenie. With limited
resources, it makes sense to just use the well defined, well known,
universally supported services, not rely on something that only works on
most of the devices, most of the time.
Unless the behavior provides *significant* benefit, I'm likely to avoid it.

Yes, this sucks. It means that innovation slows down - apps avoid
non-ubiquitous features, which means that vendors / stack have less
incentive to build / deploy them. Waving the protocol bible and saying "but
the spec says..." doesn't really change the incentives of reasonable people
optimizing for their own (selfish) reasons.

</rant>

W
[0]: This is changing with "apps" - e.g mobile apps.E.g:  If you write an
iOS app, you know it will run on iOS.
[1]: Unless it provides compelling benefits, you have spare development
cycles, or you have a pet project / protocol.