Re: [tcpm] initial RTO (was Re: Tuning TCP parameters for the 21st century)

Jerry Chu <hkchu@google.com> Wed, 29 July 2009 14:56 UTC

Return-Path: <hkchu@google.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 A1EC33A6F27 for <tcpm@core3.amsl.com>; Wed, 29 Jul 2009 07:56:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.677
X-Spam-Level:
X-Spam-Status: No, score=-101.677 tagged_above=-999 required=5 tests=[AWL=-0.301, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_34=0.6, USER_IN_WHITELIST=-100]
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 pE3XFCUifJ9M for <tcpm@core3.amsl.com>; Wed, 29 Jul 2009 07:56:05 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.33.17]) by core3.amsl.com (Postfix) with ESMTP id 27AF33A6D3D for <tcpm@ietf.org>; Wed, 29 Jul 2009 07:56:05 -0700 (PDT)
Received: from wpaz29.hot.corp.google.com (wpaz29.hot.corp.google.com [172.24.198.93]) by smtp-out.google.com with ESMTP id n6TEu4eD016982 for <tcpm@ietf.org>; Wed, 29 Jul 2009 15:56:05 +0100
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1248879365; bh=wJqF5U8T8Tnnm3KA1cBq1edfo3s=; h=DomainKey-Signature:MIME-Version:In-Reply-To:References:Date: Message-ID:Subject:From:To:Cc:Content-Type:X-System-Of-Record; b=h pyiMDhyx1xi2wJza9z03INdYRHXJIlpqWPNC5ppklTm2faNHjWOY63jk6zPlaDcMp3F fcDG7Envlo4dhdUziQ==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:date:message-id:subject:from:to: cc:content-type:x-system-of-record; b=Qbt3KDEWHY1/bfVG0a35dFLQMdN68pfuIH7bO1LILj+PWWLlOYQSnJa8wTxQOq/qM y9EIsqsfuRLX9J1Tl+DZg==
Received: from an-out-0708.google.com (anac3.prod.google.com [10.100.54.3]) by wpaz29.hot.corp.google.com with ESMTP id n6TEu24a031353 for <tcpm@ietf.org>; Wed, 29 Jul 2009 07:56:02 -0700
Received: by an-out-0708.google.com with SMTP id c3so405418ana.17 for <tcpm@ietf.org>; Wed, 29 Jul 2009 07:56:02 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.105.4 with SMTP id d4mr12045650anc.39.1248879361876; Wed, 29 Jul 2009 07:56:01 -0700 (PDT)
In-Reply-To: <20090728183556.A5820385088@lawyers.icir.org>
References: <d1c2719f0907280832u199cbaa7p10a977b3a2cef244@mail.gmail.com> <20090728183556.A5820385088@lawyers.icir.org>
Date: Wed, 29 Jul 2009 07:56:01 -0700
Message-ID: <d1c2719f0907290756h6f4990afu8fe4a573c5669d79@mail.gmail.com>
From: Jerry Chu <hkchu@google.com>
To: mallman@icir.org
Content-Type: multipart/alternative; boundary="0016e64135dcbb6531046fd9623c"
X-System-Of-Record: true
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] initial RTO (was Re: Tuning TCP parameters for the 21st century)
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: Wed, 29 Jul 2009 14:56:06 -0000

Mark,

On Tue, Jul 28, 2009 at 11:35 AM, Mark Allman <mallman@icir.org> wrote:

>
> Jerry-
>
> > So the active open side has retransmitted SYN, assuming initRTO of
> > 1sec, and eventually received a SYN-ACK but the TS option was
> > denied so no good RTT sample can be taken. It will continue to send
> > the init data with the initRTO.
> >
> > If the SYN retransmission has been unnecessary because the initRTO has
> > been too aggressive, more SYN-ACK will be triggered. Assuming these
> > dup SYN-ACKs are not lost, could they be used as a hint to the active
> > open side that the initRTO has been too short, so that the RTO timer
> > can be reverted back to 3secs immediately, in time to avoid further
> > RTO hell?
>
> So, you're saying that if you send N SYNs (N>1) and you get N SYN+ACKs
> then you take that to mean the initRTO was too short.
>
> Yeah, perhaps ...
>
> Are you suggesting something like this ...
>
>  (1) Use an initRTO of 1sec.
>
>  (2) If the RTO fires and you retransmit the SYN back the RTO to 3sec.
>      (And, if necessary you exponential backoff even more.)
>
>  (3) After the 3WHS you will either (a) have a good RTT sample from the
>      timestamp option and can therefore set the RTO reasonably or (b)
>      you retain the 3sec RTO until you get a good RTT sample.
>
> ??
>
> That means that if 1sec is not enough in the 3WHS you have to use 3sec
> until you have some idea about the network.  However, you also get a
> shot [*one shot*] to retransmit sooner based on the notion that most
> RTTs are less than 1sec.
>
> I think I buy that notion ... that both allows for more aggressiveness
> for the common case while also protecting against RTO Hell for the long
> path cases.  Is that the right walking of the line?


I can think of a number of variations. The one-shot 1-sec-initRTO idea you
described above also came through my mind but the drawback is you only
get one-shot even though we know statistically > 98% of connections
have RTT < 1 sec so most likely the continuous use of 1-sec-initRTO will
turn
out to be better. (A counter argument might be one-shot is "good enough",
benefitting > 90% of the cases statistically...) The advantage of it is its
simplicity,
restricting the max # of spurious retransmissions caused by the reduced
initRTO
to 1, and obviously avoiding the RTO hell problem.

A different variation that is slightly more complex but allowing the reduced
initRTO to be used more than one-time (hence potentially providing more
benefit
to those > 98% connections) is to only terminate its use upon the detection
of spurious retransmission. Specifically -

1. initRTO = 1sec
2. if a valid pkt with the SYN bit on is received (so it could be either SYN
or
SYN-ACK) and the following two conditions are met:
  2a. the connection state is neither SYN-SENT nor SYN-RCVD
  2b. RTO == 1sec (or no good RTT sample has been taken)
Simply reset the RTO to 3secs.

On a second look it doesn't seem much more complex, although it may be
slightly more work to analyze its thoroughness (e.g., what if all the dup
SYN/SYN-ACK were lost, or all come back late...) Also it does incur
more spurious pkts for those connections with RTT > 2sec.

What do you think?

Jerry


>
> allman
>
>
>
>