Re: [tcpm] Review of draft-ietf-tcpm-rtorestart-02.txt

"Zimmermann, Alexander" <Alexander.Zimmermann@netapp.com> Wed, 21 May 2014 08:29 UTC

Return-Path: <Alexander.Zimmermann@netapp.com>
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 4FF8F1A0831 for <tcpm@ietfa.amsl.com>; Wed, 21 May 2014 01:29:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.553
X-Spam-Level:
X-Spam-Status: No, score=-7.553 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.651, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
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 bGMkA099ULeL for <tcpm@ietfa.amsl.com>; Wed, 21 May 2014 01:29:00 -0700 (PDT)
Received: from mx12.netapp.com (mx12.netapp.com [216.240.18.77]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 77B281A0829 for <tcpm@ietf.org>; Wed, 21 May 2014 01:29:00 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.98,878,1392192000"; d="asc'?scan'208";a="165662617"
Received: from vmwexceht06-prd.hq.netapp.com ([10.106.77.104]) by mx12-out.netapp.com with ESMTP; 21 May 2014 01:28:58 -0700
Received: from SACEXCMBX04-PRD.hq.netapp.com ([169.254.6.187]) by vmwexceht06-prd.hq.netapp.com ([10.106.77.104]) with mapi id 14.03.0123.003; Wed, 21 May 2014 01:28:59 -0700
From: "Zimmermann, Alexander" <Alexander.Zimmermann@netapp.com>
To: Per Hurtig <per.hurtig@kau.se>
Thread-Topic: Review of draft-ietf-tcpm-rtorestart-02.txt
Thread-Index: AQHPbpHOiZ6uKgZA3Uq6I4ykg9wmvptB4SgAgAlUdgA=
Date: Wed, 21 May 2014 08:28:58 +0000
Message-ID: <CF98B1E0-1168-482C-B946-081A56FB70E0@netapp.com>
References: <38DA60FD-7629-4FCB-BD19-830FC7F5232C@netapp.com> <8CEBB7AD-88F3-45CA-A1C6-D5306EEE02B3@kau.se>
In-Reply-To: <8CEBB7AD-88F3-45CA-A1C6-D5306EEE02B3@kau.se>
Accept-Language: de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [10.122.105.30]
Content-Type: multipart/signed; boundary="Apple-Mail=_32BC5F03-44C8-4184-902D-CCA4DC299A7F"; protocol="application/pgp-signature"; micalg="pgp-sha1"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/SOcaYB9yWQ9Pb5d-VvOU25d1DfQ
Cc: "draft-ietf-tcpm-rtorestart@tools.ietf.org" <draft-ietf-tcpm-rtorestart@tools.ietf.org>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>
Subject: Re: [tcpm] Review of draft-ietf-tcpm-rtorestart-02.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: Wed, 21 May 2014 08:29:05 -0000

Hi Per,

Am 15.05.2014 um 12:00 schrieb Per Hurtig <per.hurtig@kau.se>:

> Hi Alexander
> 
> thanks for the review, please see my comments inline…
> 
> 
> On 13 May 2014, at 11:57, Zimmermann, Alexander <Alexander.Zimmermann@netapp.com> wrote:
> 
>> Hi folks,
>> 
>> first of all thank you for writing this draft. The draft is clearly written: the
>> problem is well described, the doc is self-contained (it’s not necessary to read
>> dozens of other RFCs to understand the problem), and the authors state why the
>> doc is experimental and what further experiments are needed for being a STD.
>> However, on the technical side I see some open points. In detail:
>> 
>> * Sec 1, 4. para: „a considerable number of flows have such properties“
>> Can you backup this with some numbers? This is exactly the point I raised at the
>> (last?) IETF. I would like to see some data on how severe the problem is we would
>> like to fix.
>> 
> 
> For short flows (e.g. web) there are a number of references in the draft. These are
> the primary target for the mechanism. We’ll elaborate some more on the importance
> for other types of traffic. 

Your draft focus on two different kinds of flows: a) on short flows and b) on flows
w/ low transmission rates. For the former you give two references [RJ10] and [FDT13],
but not for the latter. You say that „a considerable number of flows have such
properties“ and my question was, if you can backup this w/ some numbers. Additionally,
Yuchung reports that he wasn’t able to see much improvements while implementing your
scheme. Do you have some data that you can share to see how much your scheme helps to
improve the latency?

Also I’m not sure if we really focus on short flows. Is it not rather the case that we
concentrate us on tail losses? Your scheme will not only kick in for short flows, it
gets activated at the end of any stream. Or do I miss something here? (BTW [FDT13]
reports that 77% of the RXmits are RTO-based, it doesn’t say that 77% are short flows.)

> 
> 
>> * Sec 1.1: please change this subsection to a section (1.1 => 2) and also
>> introduce your new state variable rrthresh here
>> 
> 
> I don’t get why the section should be renumbered. The “terminology” is often the
> last subsection of the introduction of most drafts and RFCs.

This was only a nit. In German language we have the grammar rule that you cannot
introduce a subsection x.1 if you don’t have a second subsection in the same section.
While searching a little bit in the web, it seems that is also valid in English
(http://www.cs.berkeley.edu/~pattrsn/talks/writingtips.html) Anyway, it was only
a nit :-)

> Furthermore, it seems 
> slightly overkill to introduce the variable there. RFCs that manages many more 
> variables, e.g. RFC6298 does not explicitly introduce any variable in this section.

and RFC 5681 or RFC 6675 are counterexamples :-) Anyway, the question is more whether
or not we need an additional state variable in the TCB. If you think that they are cases
possible where ‚rrthresh‘ should not be initialized with ‚dupthresh + 1', then we should
introduce the state variable and explain why we need it. Otherwise, I recommend do
use ‚dupthresh + 1’ instead of 'rrthresh‘

> 
>> * Sec 1, 5. para: „Spurious timeouts typically degrade the performance of flows
>> with multiple bursts of data, as a burst following a spurious timeout might
>> not fit within the reduced congestion window (cwnd)“
>> 
>> This is (only) true with respect to your algo, not in general. The general
>> problem of a spurious timeout is the cwnd reduction, the go-back-N
>> retransmissions, … See RFC 3522. After reading section 4.2 of your draft I
>> understand what you want to see here. Please rephrase the section and maybe
>> add the spurious RTO RFC as reference.
>> 
> What is meant is the actual cwnd reduction. We should clarify this.
> 
> 
>> * Sec 3: Suppose FlightSize is 2 and you have exactly one segment to send,
>> your algo doesn’t trigger since step 2.b isn’t true. Bug? I would say yes.
>> 
> Good catch! The question is if it’s worth fixing since the algorithm will
> become more complex

Not really. You can 1) restart your RTO (as usual), 2) transmit new data,
3) re-arm your RTO with RTO - T_earliest if FlightSize < 4. In terms of „re-arming“
we did more or less the same in RFC6069…

> and the situation you mention is really a corner case that
> requires either (i) the cwnd to be exactly 3 segments large;

less than 4, no?

> or (ii) having a
> packet written to the socket just between previous data transmission and the
> arrival of the acknowledgment.

Yes

> 
> Furthermore, this mechanism is only an optimization to the standard timer. So
> if it doesn’t work in this particular scenario it won’t break anything.

Sure, but if we exclude some traffic pattern which we can on the other hand
easily include by a small algo change, we should do that. Nevertheless, you
are right if we only speak here about rare corner cases (and I don’t know
the answer) we can ignore them.

> It will
> just not be triggered. 
> 
>> * Sec 3: Why the condition 2.b is different from the early retransmission
>> condition 2.b or 3.b? Is there any specific reason why we exclude the
>> advertised receive window part from the condition?
>> 
> Because the advertised window can be small in situations where it’s not
> preferable to use RTO restart. For instance, in the middle of a transfer where
> it’s better to wait for fast/early retransmit to kick in.

Ah, OK I see. Could you please explain this in the draft? Is it valid to say
that RTO restart try to cover all cases where early retransmit does’t work?
I have the feeling that I not fully understand which cases should be covered by
which algo.

> 
>> * Sec 3: IMO the algo/doc is too much Linux driven. I would like to see a
>> segment-based *and* byte-based version of the algo, like RFC 5827.
>> 
> Yes, this comment was given by several people at the last IETF. We will update
> the draft to address this.
> 
>> * General: IMO I would be a little bit easier to read the doc if you give the
>> algo a proper name. By reading „RTO restart“ I had sometimes trouble to
>> know if mean your algo or the „action“ of restarting the RTO.
>> 
> Agreed, this will be fixed.
> 
> 
> 
> Thank you,
> Per Hurtig
> 
>> 
>> Alex
>> 
>> 
>> 
> 
>