Re: [tcpm] Comments on draft-blanton-tcpm-3517bis-01

Ethan Blanton <eblanton@cs.ohiou.edu> Wed, 13 April 2011 20:13 UTC

Return-Path: <eblanton@cs.ohiou.edu>
X-Original-To: tcpm@ietfc.amsl.com
Delivered-To: tcpm@ietfc.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfc.amsl.com (Postfix) with ESMTP id 96D2CE0802 for <tcpm@ietfc.amsl.com>; Wed, 13 Apr 2011 13:13:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([208.66.40.236]) by localhost (ietfc.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6vpy0W5LjfPV for <tcpm@ietfc.amsl.com>; Wed, 13 Apr 2011 13:13:17 -0700 (PDT)
Received: from psg.com (psg.com [IPv6:2001:418:1::62]) by ietfc.amsl.com (Postfix) with ESMTP id CF7B5E06BC for <tcpm@ietf.org>; Wed, 13 Apr 2011 13:13:17 -0700 (PDT)
Received: from 99-52-196-7.lightspeed.crmlin.sbcglobal.net ([99.52.196.7] helo=elb.elitists.net) by psg.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.73 (FreeBSD)) (envelope-from <eblanton@cs.ohiou.edu>) id 1QA6RA-000LmQ-Eo; Wed, 13 Apr 2011 20:13:16 +0000
Received: by elb.elitists.net (Postfix, from userid 3000) id B42DD3BFDC; Wed, 13 Apr 2011 16:13:15 -0400 (EDT)
Date: Wed, 13 Apr 2011 16:13:15 -0400
From: Ethan Blanton <eblanton@cs.ohiou.edu>
To: Yuchung Cheng <ycheng@google.com>
Message-ID: <20110413201315.GC4240@colt>
Mail-Followup-To: Yuchung Cheng <ycheng@google.com>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>
References: <20110413182449.GA4240@colt> <BANLkTi=c80RgQFdXj=Bx5Gpd3RHQRCX9=Q@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="wULyF7TL5taEdwHz"
Content-Disposition: inline
In-Reply-To: <BANLkTi=c80RgQFdXj=Bx5Gpd3RHQRCX9=Q@mail.gmail.com>
X-GnuPG-Fingerprint: CB44 99AC EDDA D1AB D6E6 A2CA FF1F 8B16 771F C72B
User-Agent: Mutt/1.5.20 (2009-06-14)
Cc: "tcpm@ietf.org Extensions" <tcpm@ietf.org>
Subject: Re: [tcpm] Comments on draft-blanton-tcpm-3517bis-01
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: Wed, 13 Apr 2011 20:13:18 -0000

Yuchung Cheng spake unto us the following wisdom:
> I have two questions:
> 
> 1) IsLost (SeqNum):
> 
>       This routine returns whether the given sequence number is
>       considered to be lost.  The routine returns true when either
>       DupThresh discontiguous SACKed sequences have arrived above
>       'SeqNum' or more than (DupThresh - 1) * SMSS bytes with sequence
>       numbers greater than 'SeqNum' have been SACKed.  Otherwise, the
>       routine returns false.
> 
> Does RFC require DupThresh discontinuous sack blocks? e.g.,
> For example, if a sender sends 4 data packets
> send pkt1: 1-100
> send pkt2: 101-200
> send pkt3: 201-300
> send pkt4: 301-400
> receive ack: ack1 with one sack block 101-400.
> does IsLost(1) returns true?

Let me clerify this a bit.  Are you positing this when SMSS >> 100
bytes?  If so, then the answer is "maybe".  The draft is written in
the context of a TCP which does not keep track of segments.   If, in
this case, SMSS >> 100 bytes, then IsLost(1) will return false for a
pure byte-counting TCP.  Note from Section 3:

   Finally, note that the algorithm in this document assumes a
   sender that is not keeping track of segment boundaries after
   transmitting a segment.  It is possible that a sender that did
   keep this extra state may be able to use a more refined and
   precise algorithm than the one presented herein, however, we
   leave this as future work.

If SMSS == 100 bytes, then yes, IsLost(1) will return true.

> 2)
> If the incoming ACK is a duplicate acknowledgment and the TCP is
> 
>    not currently in loss recovery, the TCP MUST increase DupAcks by
>    one and take the following steps:
> 
>    (1) If DupAcks >= DupThresh, go to step (4).
> 
>    (2) If DupAcks < DupThresh but IsLost (SND.UNA) returns
>        true---indicating at least three segments have arrived above
>        the current cumulative acknowledgment point, which is taken
>        to indicate loss---go to step (4).
> 
> can we combine (1) and (2)? go to steps (4) if IsLost(SND.UNA) is
> true. I guess it depends on your answer of my first question.

No, not unless you assume a TCP which tracks segments, you assume that
all segments are SMSS-sized, or you *always* use Nagle's algorithm.
If a TCP is sending segments of size < SMSS, then counting incoming
DupAcks allows you to trigger loss recovery when 3 incoming ACKs with
new SACK information arrive, regardless of the size of the segments
triggering those ACKs.

Hope that helps.

Ethan