Re: [tcpm] laminar tcp, separate thread

Matt Mathis <mattmathis@google.com> Thu, 29 March 2012 08:03 UTC

Return-Path: <mattmathis@google.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 07A9621F886E for <tcpm@ietfa.amsl.com>; Thu, 29 Mar 2012 01:03:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.877
X-Spam-Level:
X-Spam-Status: No, score=-102.877 tagged_above=-999 required=5 tests=[AWL=0.100, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CpQRA9FYaZ9w for <tcpm@ietfa.amsl.com>; Thu, 29 Mar 2012 01:03:20 -0700 (PDT)
Received: from mail-bk0-f44.google.com (mail-bk0-f44.google.com [209.85.214.44]) by ietfa.amsl.com (Postfix) with ESMTP id A28BC21F8810 for <tcpm@ietf.org>; Thu, 29 Mar 2012 01:03:19 -0700 (PDT)
Received: by bkuw5 with SMTP id w5so1852844bku.31 for <tcpm@ietf.org>; Thu, 29 Mar 2012 01:03:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding:x-system-of-record; bh=djRCqd47qfCkevYsMznVcmDPpImEg7SRtF68DhW5fqU=; b=b3SyXGDIUgkkXqIdvuhIq9bgG3/iadc894lHbcHA6ExROgEEoU7jJIV2ZkJct0vvSD 8PV/9qmtvTG0Tam8vJTfTxZbDHDXzab6E7IopZpGJBF67XbaAXW9YSDGZJzcYW86DNy0 A4J74DUEYSBc42TlkahPZGMKvyVuDEFcUSfOTRuu38gKzDvjDhDt6gm+T6zBuG+IgL/R dGFWpOfMwDof1xO4juzVvrDuZfybzyEB3HX7nlIlG1uZ2FVQxQ8euDKQnO6/HRp4vjMd 3fqg7G2fQlwJu7/dPt8XaNF/tIQla6+/4isq7EAMQFVlE21fjIgdFqLNTtBGgMuFv7FX ED0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding:x-system-of-record :x-gm-message-state; bh=djRCqd47qfCkevYsMznVcmDPpImEg7SRtF68DhW5fqU=; b=G8rOb8j1nbK58ehZoBq85X0YavQSUX9rHKuyE+lcLc+Rdj7ZOI6xm5pEQVas0Ai9MG Atg8sADrqw4l+unZRaT6J0+CJ94sNJ0YVF9LA4YCJ/QMwwemQF1WF/n5fPe819XdOhjC zazZu+ADc4yc+pJOdqalKowIIVjDao3YsPWkCISJ4jb9bv8L0qj/a/bNr3ZZTOyEFG0S tnPJzcjXuQB6yZj0EYZX0Cg/3V4AH83cIj6f82l0IsfB8xbJ1fRilt8ct0k/i6KbMn9O fpnkXBda3fKJq9UlL5octfOEOKm3fz1q1zDFqccuyv8LuLLMQCs/BZeObE66UEZ+dzPM 97/w==
Received: by 10.205.81.3 with SMTP id zw3mr9604977bkb.30.1333008198746; Thu, 29 Mar 2012 01:03:18 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.205.81.3 with SMTP id zw3mr9604967bkb.30.1333008198546; Thu, 29 Mar 2012 01:03:18 -0700 (PDT)
Received: by 10.204.184.195 with HTTP; Thu, 29 Mar 2012 01:03:18 -0700 (PDT)
In-Reply-To: <CAK6E8=c19K9c3cEdoDJ13+iut8xL1O4u-PPp4zSR9+SEHoW=vg@mail.gmail.com>
References: <012C3117EDDB3C4781FD802A8C27DD4F0CC581@SACEXCMBX02-PRD.hq.netapp.com> <4F606F24.2090103@ifi.uio.no> <CAH56bmBY-00sH+preSYti+pxMFBpaYOvqzom70rO96B8gZsCxA@mail.gmail.com> <CAK6E8=c19K9c3cEdoDJ13+iut8xL1O4u-PPp4zSR9+SEHoW=vg@mail.gmail.com>
Date: Thu, 29 Mar 2012 01:03:18 -0700
Message-ID: <CAH56bmCt_j7ei1NQMooWc7LtebOju6VFdECBOMWJO6JXfEaTpQ@mail.gmail.com>
From: Matt Mathis <mattmathis@google.com>
To: Yuchung Cheng <ycheng@google.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
X-System-Of-Record: true
X-Gm-Message-State: ALoCoQnIYRy/hYmw1a8TPoC6+BKkB5CxKALiQCLRa7ns41FN+sVg/Jdalbc5Kl3Z1+JJIysD432uunEbB0HqF99j4okP6uSaxrXwE79p8H/fPS0MjlrCNqgOUOXTtoE+AzBwhguOroGi
Cc: tcpm@ietf.org, Michael Welzl <michawe@ifi.uio.no>
Subject: Re: [tcpm] laminar tcp, separate thread
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.12
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: Thu, 29 Mar 2012 08:03:21 -0000

On Wed, Mar 28, 2012 at 7:17 PM, Yuchung Cheng <ycheng@google.com> wrote:
> As a TCP developer, I would like to give a big +1 because Linux
> suffers the exact
>  problem Laminar is trying to address.
Thanks!  The standards themselves are problematic.  I would expect the
problems to be present in all TCP implementations.

> Some questions:
> 1) are cwnd and ssthresh obsolete in Laminar? but IW is mentioned in the draft.
You are correct.  IW is misnamed, it should be Initial Burst or
something like that.

> 2) Linux performs burst suppression by pulling cwnd to pipe+max_burst
>   AFAIU, Laminar replaces that with (implicit) slow-start. But the
>   pseudo code appears to moderate burst in transmission scheduling
>     // cue the (re)transmission machinery
>     sndBank += sndcnt
>     limit = maxBank()
>     if sndBank > limit:
>        sndBank = limit
>
>   What does maxBank() do?
sndBank is needed to support TSO, and normally it would never be
larger than the TSO chunk size.   However the receiver window check
and NIC back pressure (e.g. Ethernet pause frames) both happen deep
inside of the TCP output code, and could cause sndBank to become
arbitrarily large.  After such an output stall, maxBank() controls how
much TCP can catch up by by using Laminar's transmission scheduling
algorithm vs sending a line rate burst.   If sndBank gets pulled down
it deflates total_pipe and the transmission scheduler will have to
make up the difference on future ACKs.

If there is no TSO, sndBank is not needed and output stalls could just
cause total_pipe to deflate.

BTW  There is a simple thought experiment to determine if total_pipe
is implemented correctly: if you imagine disabling the the CCwin based
sndcnt adjustments (e.g. constant window as long as the network
remains lossless), total_pipe will not be affected by either irregular
delayed ACKs (DeliveredData not uniform) or irregular TSOs (SndBank
not uniform) or any combination.

> 3) does in_recovery() and new_recovery() include timeout recovery? it
> seems so to
>   me (but it suggests a loss window = 2 which I would love to change to)
Yea, I was being wishful.  That should probably be a separate change.

My presentation in TCPM will be Friday AM.

Thanks,
--MM--
The best way to predict the future is to create it.  - Alan Kay