Re: [tcpm] new version of 2988bis

"Per Hurtig (work)" <per.hurtig@kau.se> Thu, 30 December 2010 15:36 UTC

Return-Path: <per.hurtig@gmail.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 A137B3A6846 for <tcpm@core3.amsl.com>; Thu, 30 Dec 2010 07:36:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.977
X-Spam-Level:
X-Spam-Status: No, score=-2.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1]
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 YaV+4Yixlgjc for <tcpm@core3.amsl.com>; Thu, 30 Dec 2010 07:36:27 -0800 (PST)
Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by core3.amsl.com (Postfix) with ESMTP id 044913A684D for <tcpm@ietf.org>; Thu, 30 Dec 2010 07:36:26 -0800 (PST)
Received: by fxm9 with SMTP id 9so10818894fxm.31 for <tcpm@ietf.org>; Thu, 30 Dec 2010 07:38:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=RKeNf3NeIcS+UJVsCXN7QyTlnp8udMrHVW+AdUn15kg=; b=SnOum6u3ODw6xPQ6u0fDqIJdJm050Eg+WVNUpKQshkyhVTHmuYOOk4o48O4H0/kgiA pBLQgUOE+Mr+UMqjpR2DtcWHRZWIlcDf9l/WcfQU4/OoqnGFN13ZHiwh9FgoNOBHb/AW mS9CveOOYzytaVb1WzMf11yqG4Xh5h2dknSUQ=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=Ah7cCmP9a+eqkE71nzz9p5RwFFWuhZE8tfz0DXPOxw9WwgU7tDVJmL+wjtv/D4NWHW xJpZxoNXM2aQHZm/S9MZcEj4ruQ4I0z6XBFrszWiFQtMZOOzPjv3CCEv49FrlJwAYQiW V0DIcOue1FWLa1kMVGtJLRp5Iqhm9BnypIGo8=
MIME-Version: 1.0
Received: by 10.223.116.1 with SMTP id k1mr58795faq.51.1293723511425; Thu, 30 Dec 2010 07:38:31 -0800 (PST)
Sender: per.hurtig@gmail.com
Received: by 10.223.97.14 with HTTP; Thu, 30 Dec 2010 07:38:31 -0800 (PST)
In-Reply-To: <5FDC413D5FA246468C200652D63E627A0C2CA4C2@LDCMVEXC1-PRD.hq.netapp.com>
References: <20101207033356.439642715136@lawyers.icir.org> <AANLkTimTJSGMOuay10krCjJbu6pPnoGFuirz_Q3_tk0F@mail.gmail.com> <5FDC413D5FA246468C200652D63E627A0C0A2FD4@LDCMVEXC1-PRD.hq.netapp.com> <AANLkTim3BXjxrBr7e19y0KZ_m7j+v2O7z50h9XKzeiSw@mail.gmail.com> <AANLkTi==-jZx2+JTTYPbtRu=hhrPPNhDONkPQvNkQozG@mail.gmail.com> <5FDC413D5FA246468C200652D63E627A0C2CA4C2@LDCMVEXC1-PRD.hq.netapp.com>
Date: Thu, 30 Dec 2010 16:38:31 +0100
X-Google-Sender-Auth: AQG3ewWaKawyJFtRXdgT3fhLt7E
Message-ID: <AANLkTimVH6xVcx6NHSKBXuWHpBpmqYy64qDmWKmzQoJh@mail.gmail.com>
From: "Per Hurtig (work)" <per.hurtig@kau.se>
To: "Scheffenegger, Richard" <rs@netapp.com>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
Cc: tcpm@ietf.org, mallman@icir.org
Subject: Re: [tcpm] new version of 2988bis
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: Thu, 30 Dec 2010 15:36:28 -0000

Hi and thanks for all the comments,

all of you are, of course, correct in that a single variable isn't
enough. I don't understand why I put it like that in the ID, and why I
felt that it would work =)

I've implemented this approach a long time ago in FreeBSD (for SCTP),
and there I had the sending time of each message stored in the
internal packet structure (just like Jerry pointed out for linux TCP).

An alternative approach could be to set RTO = RTO-RTT upon each
restart of the timer. This is not equally exact as the delayed ack
timer of the receiver will impact the rtt.

I also agree in that there are a number of things that could affect
this approach, including the de facto minRTOs and the rtt sampling
rules. I'll, however, carry out some experiments fairly soon to
investigate this further.


Happy new year,

Per

On Thu, Dec 30, 2010 at 14:28, Scheffenegger, Richard <rs@netapp.com> wrote:
>
>
> Thank you Jerry!
>
>
>
> Per,
>
>
>
> The sender cannot know which segment will eventually be covered in a
> cumulative ACK (it could be any segment in the current window), thus a
> singular variable in tcpcb doesn’t appear to be able to hold enough
> information.
>
>
>
> Of course, if you have additional side information for each segment (ie.
> Linux TCP stack) or carried back for each segment (such as timestamps
> reflecting the TCP sender clock perfectly), you can get away with much less
> state in the sender. (I think the TS option would be the only viable way for
> BSD-derived TCP stacks).
>
>
>
>
>
> Also, I am very interested in learning your results on the slow-link – if
> the variability inducted by the serialization delay would be enough to
> prevent undue spurious RTOs. Note that RFC1323 rules out the usability of
> timestamps for RTT calculation during a window containing loss…
>
> Thus I strongly suspect, that if you are sending a burst of data, and loose
> one early segment (where serialization delay is still low), the sender will
> not be able to adjust the RTTM (and varability) properly – resulting exactly
> in the scenario described by Jerry (much higher spurious RTOs).
>
>
>
> Also, even though the RFCs have minRTO at 1 sec, all available stacks
> violate this today per default, afaik. Typical minRTO is between 100 and 400
> msec, and there are stacks with a default minRTO is in the low 10s of msec…
>
>
>
> Thus it might be more prudent to verify if the timeliness of latency
> feedback to the sender is enough, to work with the current RTTM / RTO
> tunables (sRTT + 4* varRTT), or if that formula needs to be adjusted…
>
>
>
> Or, if the RFC1323 guidance of *not* using RTT feedback during loss events
> need to be reviewed to allow a more tight estimation of RTT and varRTT under
> all circumstances, in turn allowing more tight RTO values…
>
>
>
> Happy new year,
>
>    Richard
>
>
>
>
>
> From: Jerry Chu [mailto:hkchu@google.com]
> Sent: Mittwoch, 29. Dezember 2010 20:13
> To: Per Hurtig (work)
> Cc: Scheffenegger, Richard; tcpm@ietf.org; mallman@icir.org
>
> Subject: Re: [tcpm] new version of 2988bis
>
>
>
> On Wed, Dec 29, 2010 at 1:54 AM, Per Hurtig (work) <per.hurtig@kau.se>
> wrote:
>
> I don't see why it should be necessary to track all unacked segments
> (or maybe I'm just not seeing it...). The only difference between this
> proposal and the original approach is that you account for the sending
> time of the earliest outstanding segment. The restart only happens
>
>
>
> But doesn't that require one to record the sending time of each segment?
>
>
>
> BTW, Linux already does this (i.e., timestamping each skb before sending,
> regardless
>
> of the timestamp option). Dunno about other OSes.
>
>
>
> Jerry
>
>
>
> when a pure cumulative acknowledgment arrives. Can you exemplify when
> the approach would fail?
>
> // Per
>
> On Wed, Dec 22, 2010 at 12:41, Scheffenegger, Richard <rs@netapp.com> wrote:
>>
>> Hmm...
>>
>> How do you deal with multiple lost segments in the same window? Your draft
>> says
>>
>>  2.  Proposed Modifications
>>
>>   The document proposes an update of step 5.3 in Section 5 of [RFC2988]
>>   to (and a similar update of step R3 in section 6.3.2 of [RFC4960]):
>>
>>      When an ACK is received that acknowledges new data, restart the
>>      retransmission timer so that it will expire RTO seconds after the
>>      earliest outstanding segment was transmitted (for the current
>>      value of RTO).
>>
>>   The update requires TCP implementations to track the time elapsed
>>   since sending the last unacknowledged segment.  In practice, this
>>   could be achieved by adding one variable to the transmission control
>>   block.
>>
>> But wouldn't you really need to track the sending time of *each* segment,
>> to always be able to calculate the true T_earliest? I can not see how a
>> singular, global TCPCB variable addresses this - perhaps I'm missing
>> something?
>>
>> Wouldn't there be an opportunity to use this feature synergistically with
>> RFC1323 Timestamps also? (The ACK with new data should reflect the sender's
>> TCP clock (or a well derived value thereof) at the time the segment was
>> sent. Perhaps that information can help reducing additional per-segment
>> state in the sender?)
>>
>> Best regards,
>>   Richard Scheffenegger
>>
>>
>>> -----Original Message-----
>>> From: Per Hurtig (work) [mailto:per.hurtig@kau.se]
>>> Sent: Mittwoch, 22. Dezember 2010 10:16
>>> To: tcpm@ietf.org
>>> Cc: mallman@icir.org
>>> Subject: Re: [tcpm] new version of 2988bis
>>>
>>> Hi all,
>>>
>>> we have submitted an I-D that summarizes an alternate way to restart
>>> the TCP/SCTP RTO timer:
>>>
>>> http://www.ietf.org/id/draft-hurtig-tcpm-rtorestart-00.txt
>>>
>>> The difference between this approach and RFC2988(bis)'s approach is
>>> the way outstanding segments are
>>> considered. We're happy to receive any comments on the draft.
>>>
>>>
>>> Regards, Per H
>>>
>>>
>>>
>>>
>>> On Tue, Dec 7, 2010 at 04:33, Mark Allman <mallman@icir.org> wrote:
>>> >
>>> > Folks-
>>> >
>>> > We posted a new version of the 2988bis I-D today.  It is:
>>> >
>>> >  draft-paxson-tcpm-rfc2988bis-01.txt
>>> >
>>> > The big change is a new set of empirical results that pertain to
>>> > dropping the initial RTO from 3sec to 1sec is now given (along with
>>> the
>>> > previous results from Google) in the appendix.  Generally speaking,
>>> > these results show it is pretty safe to drop the initial RTO.
>>> >
>>> > Have a look.  I believe the authors are pretty happy with this
>>> document
>>> > at this point.
>>> >
>>> > allman
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > tcpm mailing list
>>> > tcpm@ietf.org
>>> > https://www.ietf.org/mailman/listinfo/tcpm
>>> >
>>> _______________________________________________
>>> tcpm mailing list
>>> tcpm@ietf.org
>>> https://www.ietf.org/mailman/listinfo/tcpm
>>
>>
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm
>
>