Re: Naive question on multiple TCP/IP channels

Brian E Carpenter <brian.e.carpenter@gmail.com> Wed, 04 February 2015 23:55 UTC

Return-Path: <brian.e.carpenter@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 9C1321A0072; Wed, 4 Feb 2015 15:55:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
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 kYBmF1hucdbD; Wed, 4 Feb 2015 15:54:55 -0800 (PST)
Received: from mail-pa0-x236.google.com (mail-pa0-x236.google.com [IPv6:2607:f8b0:400e:c03::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 DE67D1A0024; Wed, 4 Feb 2015 15:54:54 -0800 (PST)
Received: by mail-pa0-f54.google.com with SMTP id eu11so5826919pac.13; Wed, 04 Feb 2015 15:54:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:organization:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type :content-transfer-encoding; bh=gClNk6AOLIrx6jvXHBB7Zks4uwmCkLBM525cvVR4EQE=; b=QKJE9jf++9fOPZaea+1cCTjgGXrzAkakezaJqk9Tcmffz5uOflUuSTvqVsNyY6uxYD Piqlv8lzt7Q1J9gjGnGYnJAKb9Qy+TZjunRg5Ud/bWYvS1eoEQPQQ7OzUwlWjNLJLd5R GX+cFS6vwso6UImlnPkQEiIF7jRPrPs5ApwM4VU7AEGCeHv8Qf5LrJbaUx1GzSkLvOjC TGzLzlMHgUxXWfQCbjLfucfb/ngs35m7qJJ8eoY37ACEmGI5F9/wJNFy2K0cHXsxLlNQ OOF4O5Al4HQH3+bcXMCffk6RpglKYEo7yj1Lg+oVLIdoO5zmK5sKW7fFfYf2mx2bHqYQ nX6Q==
X-Received: by 10.68.237.35 with SMTP id uz3mr1395796pbc.26.1423094094179; Wed, 04 Feb 2015 15:54:54 -0800 (PST)
Received: from ?IPv6:2406:e007:63b2:1:28cc:dc4c:9703:6781? ([2406:e007:63b2:1:28cc:dc4c:9703:6781]) by mx.google.com with ESMTPSA id iv1sm3095228pbc.87.2015.02.04.15.54.50 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Feb 2015 15:54:53 -0800 (PST)
Message-ID: <54D2B150.3020502@gmail.com>
Date: Thu, 05 Feb 2015 12:54:56 +1300
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
Organization: University of Auckland
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: "Eggert, Lars" <lars@netapp.com>, Phillip Hallam-Baker <phill@hallambaker.com>
Subject: Re: Naive question on multiple TCP/IP channels
References: <CAMm+Lwgb9L9bUG6ommBDYJzQTCU1cC_zLSEf_5JPeJ+c=yrYmA@mail.gmail.com> <5DF6DC77-E476-408F-9FA5-F107DDC9F857@netapp.com>
In-Reply-To: <5DF6DC77-E476-408F-9FA5-F107DDC9F857@netapp.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/ietf/ybKYE6oeEVmWJ0EdHDhlO7jGriw>
Cc: IETF Discussion Mailing List <ietf@ietf.org>, "tsvwg@ietf.org" <tsvwg@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: <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 23:55:01 -0000

On 05/02/2015 08:49, Eggert, Lars wrote:
> Hi,
> 
> CC'ing tsvwg, which would be a better venue for this discussion.
> 
> On 2015-2-4, at 20:22, Phillip Hallam-Baker <phill@hallambaker.com> wrote:
>>
>> 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.
> 
> There have been many studies; for example, http://www.aqualab.cs.northwestern.edu/publications/106-modeling-and-taming-parallel-tcp-on-the-wide-area-network

GridFTP only exists because of lots of experience that several parallel FTP
streams achieve better throughput than a single stream, especially on paths
with a high bandwidth-delay product. I'm guessing that since buffer bloat
creates an artificially high BDP, that could apply pretty much anywhere.

SCTP is not the only one-acronym answer: try MPTCP. The interesting thing there
is that because there is explicit coupling between the streams, the throughput
increases sub-linearly with the number of streams.

    Brian

> 
>> 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.
> 
> You don't get more bandwidth in stead state (well, with old Reno stacks, you got a little more, but not much). The real win is in getting more bandwidth during the first few RTTs of TCP slow-start, which is the crucial phase when transmitting short web objects.
> 
>> 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?
> 
> I haven't seen any performance study, but another concern is that middleboxes obviously need to maintain state per connection, and multiple parallel connections eat that binding space up more quickly. (And for a NAT, reduce the number of clients it can serve.)
> 
>> 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.
> 
> SCTP has what you call multiple streams in your second option, and is designed the same way.
> 
>> 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.
> 
> See above.
> 
> Also, one motivation for SPDY/HTTP2.0 is to reduce the number of parallel connections, since web people have noticed that more is not always better here.
> 
>> 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?
> 
> The TSVWG folks may have.
> 
> Lars
>