Re: [tcpm] [Tmrg] Increasing the Initial Window - Notes

Andrew Yourtchenko <ayourtch@cisco.com> Fri, 19 November 2010 03:30 UTC

Return-Path: <ayourtch@cisco.com>
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 022123A68BA for <tcpm@core3.amsl.com>; Thu, 18 Nov 2010 19:30:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.779
X-Spam-Level:
X-Spam-Status: No, score=-0.779 tagged_above=-999 required=5 tests=[AWL=0.021, BAYES_00=-2.599, J_CHICKENPOX_24=0.6, J_CHICKENPOX_43=0.6, J_CHICKENPOX_73=0.6]
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 CVTeo9NqkQo6 for <tcpm@core3.amsl.com>; Thu, 18 Nov 2010 19:30:38 -0800 (PST)
Received: from av-tac-bru.cisco.com (weird-brew.cisco.com [144.254.15.118]) by core3.amsl.com (Postfix) with ESMTP id 270D43A676A for <tcpm@ietf.org>; Thu, 18 Nov 2010 19:30:38 -0800 (PST)
X-TACSUNS: Virus Scanned
Received: from strange-brew.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-bru.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id oAJ2QtDk005320; Fri, 19 Nov 2010 03:26:56 +0100 (CET)
Received: from sweet-brew-4.cisco.com (sweet-brew-4.cisco.com [144.254.10.205]) by strange-brew.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id oAJ2QrDk005448; Fri, 19 Nov 2010 03:26:53 +0100 (CET)
Date: Fri, 19 Nov 2010 03:26:53 +0100
From: Andrew Yourtchenko <ayourtch@cisco.com>
To: Joe Touch <touch@isi.edu>
In-Reply-To: <4CE5D324.1050609@isi.edu>
Message-ID: <Pine.GSO.4.64.1011190257300.27897@sweet-brew-4.cisco.com>
References: <20101110152857.GA5094@hell> <20101110170017.GF5094@hell> <97C75EA8-6CC7-444C-A19D-370148B81918@mac.com> <20101110174056.GH5094@hell> <AANLkTim7g=XqfSMHpHVbw1qqPOL-oNApt2i_2RCt0SCi@mail.gmail.com> <AD2BFE84-CA5B-4CDC-8822-1FC2713E3AE0@cisco.com> <alpine.DEB.2.00.1011161345170.11898@wel-95.cs.helsinki.fi> <E798B9A8-29BB-425B-B0C2-2B2735C49948@cisco.com> <5FDC413D5FA246468C200652D63E627A0B7BD0DF@LDCMVEXC1-PRD.hq.netapp.com> <686EBD23-7B65-455F-9348-196BBFD88ECD@comsys.rwth-aachen.de> <931FAE2C-F66E-43B2-8EE1-CFEB17DABD5E@windriver.com> <7309FCBCAE981B43ABBE69B31C8D213909B72A7B1F@EUSAACMS0701.eamcs.ericsson.se><36F89B79-EABA-4C38-A59E-023D9A630832@windriver.com><4CE585E9.6060203@isi.edu><6B25AF56-AFED-4085-AF42-F8AD47CB9F41@windriver.com> <4CE58FED.608@isi.edu> <0C53DCFB700D144284A584F54711EC580B36940A@xmb-sjc-21c.amer.cisco.com> <4CE595E3.3010109@isi.edu> <Pine.GSO.4.64.1011190001550.27897@sweet-brew-4.cisco.com> <4CE5D324.1050609@isi.edu>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-3036460-1290133613=:27897"
Cc: "Anantha Ramaiah (ananth)" <ananth@cisco.com>, tcpm <tcpm@ietf.org>, David Borman <david.borman@windriver.com>
Subject: Re: [tcpm] [Tmrg] Increasing the Initial Window - Notes
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: Fri, 19 Nov 2010 03:30:40 -0000

Hi Joe,

On Thu, 18 Nov 2010, Joe Touch wrote:

> Hi, Andrew,
>
> On 11/18/2010 4:47 PM, Andrew Yourtchenko wrote:
>> 
>> 
>> On Thu, 18 Nov 2010, Joe Touch wrote:
>> 
>>> That's basically what I'm suggesting; it can easily be per subnet, per
>>> interface, or per the entire machine as desired.
>>> 
>>> The ultimate point is:
>>> 
>>> - put something in the end node that notices if/when
>>> it fails objectively, and fixes it
>>> 
>>> - that same thing can allow the IW to increase
>>> over time if there are no problems
>> 
>> I think this is a very viable idea.
>> 
>> However, I think there is a catch due to which it would need tweaking -
>> there should be a signaling mechanism whereby a node on the
>> "conservative" side of the connection would be able to signal the node
>> on the "eager" side of the connection not to be too aggressive, in case
>> the data flow is mostly from from "eager" to "conservative" side.
>
> I think the rest of your argument boils down to how the client decides to 
> aggregate it's idea of the best IW. That's up to the client to decide what it 
> is willing to support - coarse or fine-grained.

No. IW of the client does not really matter - it sends the short GET request. 
The server side is the one that may generate congestion by having large IW.
So it needs either to remember all the clients somehow, or take a hint.

"Average temperature in the hospital" approach (aggregating on the server) will 
not be useful.

>
> An IW=10 as a static proposal is the coarsest possible; anything else we 
> could do can't be any worse.
>
> ...
>> If the above logic is right, then the peers during the 3whs should
>> communicate their memorized values and pick up the minimum of theirs and
>> the communicated by the peer.
>
> Congestion isn't often bidirectional, so it's unlikely IMO that a peer would 
> know what to suggest to its counterpart (if I understand your proposal).

If I connect to http://foo.example/ which sends me an IW=10 and I lose 5 packets 
out of that, and I connect to http://bar.example/ which sends me an IW=10 and I 
lose 5 packets out of that, my assumption that if I connect to 
http://baz.example, most chances are that I will also be able to get up to 5 
packets - so I better give it a hint based on my previous knowledge.


> However, your suggestion is that there could be additional input if someone - 
> anyone - knew 'better' what to do. That's fine - that's just an out-of-band 
> hint to the algorithm.

well, I've added the proposal you had about adjusting only one side, added an 
extra parameter to the code, and am attaching it.

To save you a compile, just three runs:

1) Static IW=10, access capacity 5..8, backbone capacity 8..15

./a.out 10 0 1000 5 8 8 15 1 | grep round

Results from the round: loss: 423, headroom: 0, avg IW size: 10.000000
Results from the round: loss: 436, headroom: 0, avg IW size: 10.000000
Results from the round: loss: 423, headroom: 0, avg IW size: 10.000000
Results from the round: loss: 426, headroom: 0, avg IW size: 10.000000

2) One-side-adjustment (what I understand is your proposal):

./a.out 10 1 1000 5 8 8 15 1 | grep round

Results from the round: loss: 66, headroom: 10, avg IW size: 6.380000
Results from the round: loss: 52, headroom: 14, avg IW size: 6.180000
Results from the round: loss: 62, headroom: 10, avg IW size: 6.350000
Results from the round: loss: 63, headroom: 9, avg IW size: 6.210000

3) With the hint:

./a.out 10 1 1000 5 8 8 15 0 | grep round

Results from the round: loss: 1, headroom: 32, avg IW size: 5.420000
Results from the round: loss: 0, headroom: 37, avg IW size: 5.350000
Results from the round: loss: 1, headroom: 29, avg IW size: 5.350000
Results from the round: loss: 1, headroom: 41, avg IW size: 5.350000
Results from the round: loss: 0, headroom: 50, avg IW size: 5.290000

So, the "hint" has roughly the same effect on the new proposal as the new 
proposal on the original proposal - of course at the expense of being a bit more 
conservative.

Whether this effect is significant enough and whether the simulation is a good 
enough approximation - I'd be very curious to hear.

cheers,
andrew

>
> Joe
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm
>