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

Michael Welzl <michawe@ifi.uio.no> Tue, 21 October 2014 19:06 UTC

Return-Path: <michawe@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 148B71A885F for <tcpm@ietfa.amsl.com>; Tue, 21 Oct 2014 12:06:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.078
X-Spam-Level: **
X-Spam-Status: No, score=2.078 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FRT_STOCK2=3.988, 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 P5aKqG08qH2M for <tcpm@ietfa.amsl.com>; Tue, 21 Oct 2014 12:06:12 -0700 (PDT)
Received: from mail-out5.uio.no (mail-out5.uio.no [IPv6:2001:700:100:10::17]) (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 9C2D31A8866 for <tcpm@ietf.org>; Tue, 21 Oct 2014 12:05:50 -0700 (PDT)
Received: from mail-mx1.uio.no ([129.240.10.29]) by mail-out5.uio.no with esmtp (Exim 4.80.1) (envelope-from <michawe@ifi.uio.no>) id 1Xgeke-0002s7-VD; Tue, 21 Oct 2014 21:05:48 +0200
Received: from 25.71.202.84.customer.cdi.no ([84.202.71.25] helo=[192.168.0.114]) by mail-mx1.uio.no with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) user michawe (Exim 4.80) (envelope-from <michawe@ifi.uio.no>) id 1Xgeke-0001oQ-4i; Tue, 21 Oct 2014 21:05:48 +0200
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <f767cfcb1ccc425391093f38d6e8ae8d@mail-ex12.exprod.uio.no>
Date: Tue, 21 Oct 2014 21:05:47 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <8FDE12E9-FE9C-4D8A-8B74-C2481B73EC06@ifi.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>
To: Runa Barik <runabk@ifi.uio.no>
X-Mailer: Apple Mail (2.1990.1)
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 4 msgs/h 1 sum rcpts/h 7 sum msgs/h 2 total rcpts 21598 max rcpts/h 44 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, TVD_RCVD_IP=0.001, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 69032130B36F742472BD1A162C0BF6CE44987664
X-UiO-SPAM-Test: remote_host: 84.202.71.25 spam_score: -49 maxlevel 80 minaction 1 bait 0 mail/h: 1 total 450 max/h 11 blacklist 0 greylist 0 ratelimit 0
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/s8OiGlqg84INyyYwDGVzkHCdUnE
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 19:06:15 -0000

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?

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. Generally, giving a large IW only to short flows does strike me as reasonable because long flows simply won’t benefit much from it.

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.

Cheers,
Michael