Re: Naive question on multiple TCP/IP channels

Jim Gettys <jg@freedesktop.org> Thu, 05 February 2015 16:30 UTC

Return-Path: <gettysjim@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 E6E9D1A88CF; Thu, 5 Feb 2015 08:30:46 -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, 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 py2Ku5zLy3gI; Thu, 5 Feb 2015 08:30:44 -0800 (PST)
Received: from mail-oi0-x229.google.com (mail-oi0-x229.google.com [IPv6:2607:f8b0:4003:c06::229]) (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 66B261A89A7; Thu, 5 Feb 2015 08:30:42 -0800 (PST)
Received: by mail-oi0-f41.google.com with SMTP id z81so7339200oif.0; Thu, 05 Feb 2015 08:30:41 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=/F4f8GynwnKKILw2wHxZx2BAiWKBpvKPY/lNSekMajg=; b=R1EJ1THKCoX6S2WjMCGwUwUgbhiOaMZ3aDhku/W0CLG1Y4CpyvjLSiN6iZRdkJZX87 t57B6TEktHfDoaft8njTk0P1/j2ClF4+i7G+c20otjsevyNvY0Xrax1zXr2AMmUApieI WEqDpPjFvUV5slGt8BnkFJJlU1Q3JkAFxDV0cCY3WJYK4jEOqxlyH6lDy4NODFORFRuN 7HVPxrkgXWblkwmKkWf/XsXnoIhUMa05YDnuTmCW7L0zKg52U3H1vy8d0lV9/703i1g9 JR2dBZwD8awtctGvnwDlad96UJrSEs2P+sYT7Y6D3SCq+/wpS1D2s6f1KRpGlG/Llnvs 3h2A==
MIME-Version: 1.0
X-Received: by 10.60.52.202 with SMTP id v10mr2940541oeo.46.1423153841677; Thu, 05 Feb 2015 08:30:41 -0800 (PST)
Sender: gettysjim@gmail.com
Received: by 10.76.76.5 with HTTP; Thu, 5 Feb 2015 08:30:41 -0800 (PST)
In-Reply-To: <CAMm+LwjQcX6xQSgEsiARFLtM5RGwyOtf19cxwph3g8X_9ON5ow@mail.gmail.com>
References: <CAMm+Lwgb9L9bUG6ommBDYJzQTCU1cC_zLSEf_5JPeJ+c=yrYmA@mail.gmail.com> <5DF6DC77-E476-408F-9FA5-F107DDC9F857@netapp.com> <54D2B150.3020502@gmail.com> <CAMm+LwjQcX6xQSgEsiARFLtM5RGwyOtf19cxwph3g8X_9ON5ow@mail.gmail.com>
Date: Thu, 05 Feb 2015 11:30:41 -0500
X-Google-Sender-Auth: WRjiftlDbTeM_DisNP220BgAOOU
Message-ID: <CAGhGL2A8mSWewGiCikyFQoRNuy9rwSdw2PuWPaHmMhBDEVBBJw@mail.gmail.com>
Subject: Re: Naive question on multiple TCP/IP channels
From: Jim Gettys <jg@freedesktop.org>
To: Phillip Hallam-Baker <phill@hallambaker.com>
Content-Type: multipart/alternative; boundary="001a11330cbe31ab6c050e59d370"
Archived-At: <http://mailarchive.ietf.org/arch/msg/ietf/DrsfpUvEpfZivSVvPKZtWJLy3ak>
Cc: "tsvwg@ietf.org" <tsvwg@ietf.org>, IETF Discussion Mailing List <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: <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: Thu, 05 Feb 2015 16:30:47 -0000

On Thu, Feb 5, 2015 at 9:30 AM, Phillip Hallam-Baker <phill@hallambaker.com>
wrote:

>
>
> On Wed, Feb 4, 2015 at 6:54 PM, Brian E Carpenter <
> brian.e.carpenter@gmail.com> wrote:
>
>> 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.
>
>
> Buffer bloat is a great example of the consequences of the co-operative
> nature
> of the Internet for one of the audiences I am writing for (Folk trying to
> make/understand Title II regulations).
>
> The Internet is actually a demonstration that the commons are not such a
> tragedy
> after all.
>
>
>  If we look at the problem of buffer bloat there are several possible
> solutions
> and the problem is picking one:
>
> * Persuade manufacturers to reduce buffer sizes so the old congestion
> algorithms work.
>
> * Change the congestion algorithm.
>
> * Break with the pure end to end principle and have the middleboxen with
> the
> huge buffers do some reporting back when they start to fill.
>
>
> The first is difficult unless you get control of the benchmarking suites
> that are
> going to be used to measure performance. Which would probably mean getting
> the likes of nVidia or Steam or some of the gaming companies on board.
>

​The missing metric is "latency under load".  Right now, we only measure
bps.
​


>
> The second is certainly possible. There is no reason that we all have to
> use the
> same congestion algorithm. In fact a mixture might be beneficial. Instead
> of looking
> for packets being dropped, the sender could look at the latency and the
> difference
> between the rate packets are being sent and the rate at which
> acknowledgements
> are being received.
>

​Doesn't matter.  TCP congestion control has effectively been defeated by
web browsers/servers.  Most of the data is transmitted in the IW's of n
connections, where n is large.  The incentives are such that applications
can/will abuse the network and not be "cooperative". I expect there will
continue to be such applications, even if we "fix" the web to be better
behaved; incentives are not aligned properly for cooperation.

So you can argue all you want about your favorite congestion control
algorithm, and it won't solve this fundamental issue.​


>
> Whether folk are willing to consider the third depends on how serious the
> buffer bloat problem is considered to be. If the stability of the Internet
> really
> is at stake then everything should be on the table. But my gut instinct is
> that
> a middlebox does not actually have any more useful information available
> to it than can be derived from the acknowledgements.
>

​While you need to run a mark/drop algorithm (self tuning) to keep long
lived TCP flows under control, you can't touch the transient problems we
have short of some sort of flow queuing (fair or not...).  It's head of
line blocking that is killing you.
​

​  Ergo fq_codel combining flow queuing (of a clever nature) with a
mark/drop algorithm.​  The exact details (other than being self tuning) of
the mark/drop algorithm is *much* less important than whether flow queuing
is implemented. Once you isolate the flows, life gets much easier.

​So the days of single, huge bloated FIFO queues have to go.​

Jim


​
>