Re: [tcpm] New Version Notification for draft-you-tcpm-configuring-tcp-initial-window-00.txt

Runa Barik <runabk@ifi.uio.no> Tue, 21 October 2014 20:15 UTC

Return-Path: <runabk@ifi.uio.no>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 766E81A1A9A for <tcpm@ietfa.amsl.com>; Tue, 21 Oct 2014 13:15:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 4.378
X-Spam-Level: ****
X-Spam-Status: No, score=4.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FRT_STOCK2=3.988, MANGLED_AVOID=2.3, T_RP_MATCHES_RCVD=-0.01] 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 0DeLsFNOUN9i for <tcpm@ietfa.amsl.com>; Tue, 21 Oct 2014 13:15:00 -0700 (PDT)
Received: from mail-out4.uio.no (mail-out4.uio.no [IPv6:2001:700:100:10::15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 234BD1A6F0E for <tcpm@ietf.org>; Tue, 21 Oct 2014 13:14:40 -0700 (PDT)
Received: from mail-mx1.uio.no ([129.240.10.29]) by mail-out4.uio.no with esmtp (Exim 4.80.1) (envelope-from <runabk@ifi.uio.no>) id 1XgfpG-0003Qg-DZ; Tue, 21 Oct 2014 22:14:38 +0200
Received: from mail-ex04.exprod.uio.no ([129.240.52.7]) by mail-mx1.uio.no with esmtps (TLSv1:AES256-SHA:256) (Exim 4.80) (envelope-from <runabk@ifi.uio.no>) id 1XgfpF-0001aF-CI; Tue, 21 Oct 2014 22:14:38 +0200
Received: from mail-ex12.exprod.uio.no (2001:700:100:120::74) by mail-ex04.exprod.uio.no (2001:700:100:52::7) with Microsoft SMTP Server (TLS) id 15.0.847.32; Tue, 21 Oct 2014 22:14:36 +0200
Received: from mail-ex12.exprod.uio.no ([fe80::bdf0:8ebc:dd9c:548b]) by mail-ex12.exprod.uio.no ([fe80::bdf0:8ebc:dd9c:548b%19]) with mapi id 15.00.0847.030; Tue, 21 Oct 2014 22:14:36 +0200
From: Runa Barik <runabk@ifi.uio.no>
To: Michael Welzl <michawe@ifi.uio.no>
Thread-Topic: [tcpm] New Version Notification for draft-you-tcpm-configuring-tcp-initial-window-00.txt
Thread-Index: AQHP7Jrf4gSerTsMrUKXfcSC/EOqOpw6aJaAgAArM9SAADWEgIAALxsa
Date: Tue, 21 Oct 2014 20:14:35 +0000
Message-ID: <f9dcd0642a404fb89540c76f642fa202@mail-ex12.exprod.uio.no>
References: <F6C28B32DA084644BB6C8D0BD65B669D11BC91@nkgeml509-mbs.china.huawei.com> <CAPh34mc5TdHCP4_E7LwQt=3v2jJv0byrXqUquDnX50ObF9z_uw@mail.gmail.com> <D0A6C310-694C-4F28-AE8F-9D87628FAEA4@ifi.uio.no> <,<CAPh34mdOi3LHCHS0X-u1+9R5MWHcrZG-34npuggPXC4a76QmOQ@mail.gmail.com> <>> <f767cfcb1ccc425391093f38d6e8ae8d@mail-ex12.exprod.uio.no>, <8FDE12E9-FE9C-4D8A-8B74-C2481B73EC06@ifi.uio.no>
In-Reply-To: <8FDE12E9-FE9C-4D8A-8B74-C2481B73EC06@ifi.uio.no>
Accept-Language: en-US, nb-NO
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [129.240.169.51]
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 3 msgs/h 1 sum rcpts/h 7 sum msgs/h 1 total rcpts 106 max rcpts/h 8 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-6.1, required=5.0, autolearn=disabled, RP_MATCHES_RCVD=-1.051, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: BCA76DF7293D7C97E2FA71213D0DB80986CDCFA8
X-UiO-SPAM-Test: remote_host: 129.240.52.7 spam_score: -60 maxlevel 80 minaction 2 bait 0 mail/h: 14 total 350489 max/h 442 blacklist 0 greylist 0 ratelimit 0
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/SSlAzN9hlPAa-RLQxgcdeRJz160
Cc: "tcpm@ietf.org" <tcpm@ietf.org>, Joe Touch <touch@isi.edu>
Subject: Re: [tcpm] New Version Notification for draft-you-tcpm-configuring-tcp-initial-window-00.txt
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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, 21 Oct 2014 20:15:02 -0000

Hi Michael,

 In line with tag RB -
________________________________________
From: Michael Welzl <michawe@ifi.uio.no>
Sent: Tuesday, October 21, 2014 9:05 PM
To: Runa Barik
Cc: Hagen Paul Pfeifer; Joe Touch; tcpm@ietf.org
Subject: Re: [tcpm] New Version Notification for draft-you-tcpm-configuring-tcp-initial-window-00.txt

Hi all,

In line -

> On 21. okt. 2014, at 16.12, Runa Barik <runabk@ifi.uio.no> wrote:
>
> Hi all,
>
>      Inline comments,
> ________________________________________
> From: tcpm <tcpm-bounces@ietf.org> on behalf of Hagen Paul Pfeifer <hagen@jauu.net>
> Sent: Tuesday, October 21, 2014 3:19 PM
> To: Michael Welzl; Joe Touch
> Cc: tcpm@ietf.org
> Subject: Re: [tcpm] New Version Notification for draft-you-tcpm-configuring-tcp-initial-window-00.txt
>
> On 20 October 2014 21:19, Michael Welzl <michawe@ifi.uio.no> wrote:
>> Hi Hagen,
>
> Hi Michael
>
>> what if 10 is used as a default (like now) and an upper limit?
>
> I am not a friend of any static stack global or user configured IW -
> let me explain this.
>
> Consider the IW as a function of time (2014: 10, 2015: 12, ...). Say
> that the IW should increase "savely" over the years. But the IW has
> nothing to do with time! It has something to do with available
> bandwidth (and delay, but skip this for now). The problem is that the
> bandwidth do not increase over time for *all links*.
>
> There was a proposal, http://tools.ietf.org/html/draft-allman-tcpm-bump-initcwnd-00;
> in this, IW can be set over time. And the reason considers network safety, and performance improvement  due to an increase in network capacity. I believe IW value depends on available bandwidth; it also depends more on flow characteristics in the Internet what I observed in my work during master thesis. Large flows (flows with large in data-size) stay for a long time in the Internet; however, small flows want to leave the Internet as soon as possible. Why not to give them chance to finish early. Moreover, we observed small flows get more benefit compared to large flows, having  a larger IW. This makes IW dependent on flow characteristics. It may be, the available bandwidth is enough to accommodate for such change. Till now, I did not consider network-state in relation to setting IW, but we need to consider.

I’ll note that the above paragraph is from Runa, not Hagen, and get back to this point below


> The bandwidth is
> not equal everywhere to every time for everyone. There are links out
> there with path characteristics from 1990 and older - but the clients
> use modern operating systems and we must make sure that TCP will
> operate in this environment too.
>
> I participate at the Freifunk Mesh in Munich [1]. A mesh network
> providing internet connectivity for the masses. Often the link quality
> is really bad with a lot of MAC layer retransmissions resulting in low
> bandwidth. But people _use_ Freifunk with their Browsers -> modern TCP
> on "classic wifi links".
>
> Now assume a setsockopt() IW of 50 - this will lead to congested
> queues, dropped packets and interflow fairness problems and probably
> non-operative links because the application will re-send packets again
> and gain.

Up to here, I agree with you.


> Question: what is the right IW for a given application? ->
> it is not application specific - it is link specific!

Here I’m not so sure, unless we go for extremes of course, as in your IW50 example. Generally I do see the point of Runa above, in trying to let short flows finish fast and get out of the network, it’s a double benefit somehow.


> But we have already a solution to this: the TCP Control Block (RFC
> 2140) (to mention the author of the RFC: Joe Touch! ;)!
>
> The control block is already implemented in Linux network stack and
> cache CW parameters (amongst other things). This is a far better
> approach because it starts conservative in the initial probing phase
> (3/4 segments as specific) and memorize window parameters on a path
> basis (yes, another IW misbelieve: the available bandwidth (IW) is not
> a global value, it change over path and time characteristics). This
> automated approach is the best you can get for your money - there is
> not need for static defines in your kernel. And yes, Joe's I-D might
> be a good starting point to even tune the IW even more.

Interesting; while RFC 2140 is absolutely on my radar (we do some quite closely related work in RMCAT), I forgot that it talks about IW. Can you provide more detail about what is implemented in Linux for the IW there - I thought by default none of this is happening for IW in Linux, all flows just get 10?

RB -

   For IW in the Linux Kernel (checked in version 3.7.4), 
     void tcp_init_sock(struct sock *sk)
     {
             ...............
            tp->snd_cwnd = TCP_INIT_CWND;
            .................
     }
   And this is called during TCP initialization.

RB -


I agree that Ensemble Sharing could make sense for IW… however, thanks to ECMP, there is of course no guarantee that different connections to the same IP address really do traverse the same bottleneck. So an approach that uses e.g. IW1 for later-joining connections to the same IP address may be doing the exact right thing or may be too conservative, depending on whether ECMP is in place or not. Further, by applying this limitation only on later connections to the same IP address, it may not kick in often enough.

Alternatively, giving a different IW to flows depending on their size may be doing the right thing more or less often… either way it’s heuristics I guess. I think both options are worth considering. 

RB -

   I agree with this point. Ensemble Sharing gives some information about the network-state.

RB-

Generally, giving a large IW only to short flows does strike me as reasonable because long flows simply won’t benefit much from it.

RB -

   We observed the same --- large flows do not achieve better benefit from a larger IW.

RB -


My point in my previous email was only that no additional harm comes from letting the application tell the transport layer a desired IW (or maybe rather flow size, to allow transport to do the calculation), provided that an upper limit is imposed by the transport.

RB -

    We also set an upper limit for IW explicitly inside Transport layer.

RB -

Cheers,
Michael