Re: [tcpm] Tuning TCP parameters for the 21st century

Joe Touch <touch@ISI.EDU> Tue, 14 July 2009 23:05 UTC

Return-Path: <touch@ISI.EDU>
X-Original-To: tcpm@core3.amsl.com
Delivered-To: tcpm@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 530953A67FA for <tcpm@core3.amsl.com>; Tue, 14 Jul 2009 16:05:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.508
X-Spam-Level:
X-Spam-Status: No, score=-2.508 tagged_above=-999 required=5 tests=[AWL=0.091, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8m1NvVo4tpjJ for <tcpm@core3.amsl.com>; Tue, 14 Jul 2009 16:05:39 -0700 (PDT)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id 320BA3A677D for <tcpm@ietf.org>; Tue, 14 Jul 2009 16:05:39 -0700 (PDT)
Received: from [75.217.96.194] (194.sub-75-217-96.myvzw.com [75.217.96.194]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id n6EN2gNK006295; Tue, 14 Jul 2009 16:02:48 -0700 (PDT)
Message-ID: <4A5D0E8F.1040402@isi.edu>
Date: Tue, 14 Jul 2009 16:02:39 -0700
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.22 (Windows/20090605)
MIME-Version: 1.0
To: Jerry Chu <hkchu@google.com>
References: <d1c2719f0907131619t1a80997ep4080a3a721ef3627@mail.gmail.com> <4A5C540E.9070104@sun.com> <4A5C9309.8030704@isi.edu> <d1c2719f0907141241p73e605adqc1d2e6f0db4eb3aa@mail.gmail.com> <4A5CE3D0.5000904@isi.edu> <d1c2719f0907141532i31d2b740hfa32209a8ccb156@mail.gmail.com>
In-Reply-To: <d1c2719f0907141532i31d2b740hfa32209a8ccb156@mail.gmail.com>
X-Enigmail-Version: 0.95.7
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] Tuning TCP parameters for the 21st century
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tcpm>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Jul 2009 23:05:40 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> On Tue, Jul 14, 2009 at 1:00 PM, Joe Touch<touch@isi.edu> wrote:
...
>> > Granted, our web server didn't have your traffic, but we found that the
>> > impact of SND_CWND was small, and limited to only a small subset of
>> > connections. Connections too short don't benefit from a large window.
>> > Connections too long have little benefit from increasing startup behavior.
> 
> Hmm, your conclusion seems a bit counter-intuitive - for a typical web object
> of 5-8 pkts in size, starting with an initcwnd of 6, e.g., from the cache will
> require only half of the round trips to complete the http transaction compared
> to initcwnd = 3.

First, you get to send 4K or 4 packets (whichever is smaller) at the
start of a connection anyway. Second, RTT is only a fraction of the
overall delays experienced by a message. Finally, connections already
eat 2 RTTs before you do anything to get a response, due to the SYN
handshake followed by the request-response of HTTP. You might be eating
a single RTT off of a 3-4 RTT exchange. Your RTTs may go down by 30-50%,
but since they're not 100% of your delay, you end up benefitting only
around 20% or so.

Larger messages benefit as you open the window to burst the whole thing
out. Here's a back of the envelope:

# packets	was RTTs:	is RTTs:	benefit
	4	2		2		0%
 	10 	3		2		33%
	19	4		2		50%
	32	5		2		60%
	52	6		2		67%
	82	7		2		71%

Note though that at some point your SND_CWND will be opened only as far
as the path allows, at which point sending more packets just takes more
RTTs, so you start to lose. 90% of our max CWNDs were below 9K, which
means we only saw benefits in the 20-30% range (i.e., the first two rows
above). Sure, if you see CWNDs much larger, you might benefit from
reusing old values...
	
>> > (see the tech report at http://www.isi.edu/aln)
>> >
>>>>> >>> > The pro is more rapid convergence to an accurate RTT; the con is that
>>>>> >>> > you're using a potentially invalid RTT, but then that's what you do when
>>>>> >>> > you start without knowing the RTT at all anyway.
>>>>> >>> >
>>>>> >>> > It has also been implemented in Linux; see RFC4614.
>>> >>
>>> >> Yes Linux stack maintains a "destination cache" of ssthresh and RTT on
>>> >> a per dest IP address basis. It doesn't currently use snd_cwnd, probably
>>> >> out of the same concerned mentioned above?
>> >
>> > Lack of benefit is also an issue.
> 
> See above. I thought this should be the one that will give the largest beneift
> (in terms of latency reduction) for the web traffic, if done (i.e.,
> predicted) correctly.

It would if most connections's max CWND was larger than 10, and if most
connections sent more than 20 packets, but neither was the case for us.

>>> >> Also it is very conservative
>>> >> hence won't use the cached RTT value unless the timestamp option is
>>> >> on.
>>> >>
>>> >> Also the dst cache is only consulted after 3WHS. So for SYN/SYN-ACK
>>> >> the initRTO is still set to 3secs (don't know why).
>> >
>> > If you spin the initRTO down too far, you end up resending the SYN
>> > needlessly, no?
> 
> Correct so there is a fine line to walk. But if > 98% of all TCP connections
> experience RTT << 1 sec, it just seems too conservative to have a global
> initRTO == 3secs just to avoid spurious retransmission in the < 2% category.

It doesn't matter much if 99.99% of connections wouldn't benefit from
having the initRTO go off earlier anyway. That's the tradeoff. Don't
know if it helps your case, though.

Joe

>> > Joe
>> >
>> > -----BEGIN PGP SIGNATURE-----
>> > Version: GnuPG v1.4.9 (MingW32)
>> > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>> >
>> > iEYEARECAAYFAkpc49AACgkQE5f5cImnZruF5QCfc5BRj9np2yjizDIqOa+i09bT
>> > LsQAoMBPrr2dYErruJc0ED7s2hfCQztE
>> > =uouq
>> > -----END PGP SIGNATURE-----
>> >

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkpdDo4ACgkQE5f5cImnZrs3fwCfaOB3Ki+FKf1rrJP3kKfdxV2X
D68AoKxBh/3C0Bh3MVZ8AniBoen9vuX/
=X+Od
-----END PGP SIGNATURE-----