Naive question on multiple TCP/IP channels

Phillip Hallam-Baker <phill@hallambaker.com> Wed, 04 February 2015 19:23 UTC

Return-Path: <hallam@gmail.com>
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 3F1A71A1B61 for <ietf@ietfa.amsl.com>; Wed, 4 Feb 2015 11:23:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.423
X-Spam-Level: *
X-Spam-Status: No, score=1.423 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_PASS=-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 A2xaQ_CZuPgy for <ietf@ietfa.amsl.com>; Wed, 4 Feb 2015 11:22:58 -0800 (PST)
Received: from mail-lb0-x235.google.com (mail-lb0-x235.google.com [IPv6:2a00:1450:4010:c04::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 4DE261A1B72 for <ietf@ietf.org>; Wed, 4 Feb 2015 11:22:58 -0800 (PST)
Received: by mail-lb0-f181.google.com with SMTP id u10so3264286lbd.12 for <ietf@ietf.org>; Wed, 04 Feb 2015 11:22:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=PoZgglmrH3nxVLgk2YlwVuxmlARvqjpSRGZDM8fuYek=; b=1F6zra/R2prtPc0ctSCC8fUIeEBmuQnk/kPEsljHnQ4hBoFJNO1gf8JSZaQJ896HtO Ahc8ZilXk/lxriGVVKKVU0obhYbUF4PsIEnrNsF7roeoBxg8ZZ14JVfY2nyFxdkkQ69X VyBDkKMwV3rNMW/NvmMhMpw0sXdg+fO1QE/QVnwohFzpEEtSBiho1rydeXct2dzvkt/k 4xJRlsIX3ijD6PDSAQNzvG4bFQD9WYMS+5t1GqLnCWbNEVkt0VT1knbknz3/bAH8laPt W9hws1TtUvFtUHntpJbkI5+hR2UeDv2QWNF/rHlsPsyhCBrYnQCVuA0CsWTshMY1xYzc FhcA==
MIME-Version: 1.0
X-Received: by 10.112.199.69 with SMTP id ji5mr5307621lbc.45.1423077776806; Wed, 04 Feb 2015 11:22:56 -0800 (PST)
Sender: hallam@gmail.com
Received: by 10.112.147.193 with HTTP; Wed, 4 Feb 2015 11:22:56 -0800 (PST)
Date: Wed, 04 Feb 2015 14:22:56 -0500
X-Google-Sender-Auth: FeS-eDU-fhx4IkEHhF6-UV3Dozk
Message-ID: <CAMm+Lwgb9L9bUG6ommBDYJzQTCU1cC_zLSEf_5JPeJ+c=yrYmA@mail.gmail.com>
Subject: Naive question on multiple TCP/IP channels
From: Phillip Hallam-Baker <phill@hallambaker.com>
To: IETF Discussion Mailing List <ietf@ietf.org>
Content-Type: multipart/alternative; boundary="001a11c239085fdc44050e481dea"
Archived-At: <http://mailarchive.ietf.org/arch/msg/ietf/std0ApIXKLMPKXHyahzAwwJDnTU>
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: <http://www.ietf.org/mail-archive/web/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: Wed, 04 Feb 2015 19:23:00 -0000

Today most Web browsers attempt to optimize download of images etc. by
opening multiple TCP/IP streams at the same time. This is actually done for
two reasons, first to reduce load times and second to allow the browser to
optimize page layout by getting image sizes etc up front.

This approach first appeared round about 1994. I am not sure whether anyone
actually did a study to see if multiple TCP/IP streams are faster than one
but the approach has certainly stuck.

But looking at the problem from the perspective of the network it is really
hard to see why setting up five TCP/IP streams between the same endpoints
should provide any more bandwidth than one. If the narrow waist is
observed, then the only parts of the Internet that are taking note of the
TCP part of the packet are the end points. So having five streams should
not provide any more bandwidth than one unless the bandwidth bottleneck was
at one or other endpoint.

Now there are some parts of the deployed Internet that do actually perform
statefull inspection. But I would expect increasing the number of channels
to degrade performance at a firewall or any other middle boxen.

So we have a set of behavior that seems at odd with the theory. Has anyone
done any experiments recently that would show which is right?


The reason it makes a difference is that it is becoming clear that modern
applications are not best served by an application API that is limited to
one bi-directional stream. There are two possible ways to fix this
situation. The first is to build something on top of TCP/IP the second is
to replace single stream TCP with multi-stream.

My preference and gut instinct is that the first is the proper
architectural way to go regardless of the performance benefits. When
Thompson and co were arguing that all files are flat sequences of bits,
they were saying that was the right O/S abstraction because you could build
anything you like on top.

But then I started to ask what the performance benefits to a multi-stream
TCP might be and I am pretty sure there should not be any. But the actual
Internet does not always behave like it appears it should.

I suspect that the preference for multiple streams probably comes from the
threading strategies it permits. But that is an argument about where the
boundary between the kernel and application is placed in the network stack
rather than where multiplex should live in the stack. Microsoft already
provides a network stack for .NET where the boundary is in the HTTP layer
after all.


So anyone got hard data they could share?