Re: [tcpm] RACK - variable explanation
Felix Weinrank <weinrank@fh-muenster.de> Fri, 23 November 2018 16:43 UTC
Return-Path: <weinrank@fh-muenster.de>
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 4CCAF130DFD for <tcpm@ietfa.amsl.com>; Fri, 23 Nov 2018 08:43:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
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 GQg206w0DVXq for <tcpm@ietfa.amsl.com>; Fri, 23 Nov 2018 08:43:09 -0800 (PST)
Received: from mail.fh-muenster.de (mail.fh-muenster.de [212.201.120.190]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 49D0812F1A6 for <tcpm@ietf.org>; Fri, 23 Nov 2018 08:43:09 -0800 (PST)
Received: from Idefix4.local (unknown [212.201.121.94]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: fw153970) by mail.fh-muenster.de (Postfix) with ESMTPSA id 188562803AC for <tcpm@ietf.org>; Fri, 23 Nov 2018 17:43:07 +0100 (CET)
To: tcpm@ietf.org
References: <8d43389c-93c1-899d-37ab-808c471eed47@fh-muenster.de> <CADVnQymCDpqTxwVLv0WYZvj84msfXf7OzfHYfj=d7Uj-pCHmFQ@mail.gmail.com> <632bc671-4294-5eb3-ff8a-8c7dd492beb1@fh-muenster.de> <CADVnQymfVD5bZ-q4mdxDhPEg=R5igiueHG+3nJF8DTEKn4ngVQ@mail.gmail.com>
From: Felix Weinrank <weinrank@fh-muenster.de>
Message-ID: <2c008352-5068-f915-8603-70cb4a110002@fh-muenster.de>
Date: Fri, 23 Nov 2018 17:43:06 +0100
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.3.1
MIME-Version: 1.0
In-Reply-To: <CADVnQymfVD5bZ-q4mdxDhPEg=R5igiueHG+3nJF8DTEKn4ngVQ@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/ULp1lBBUjg2TzZ4BFyPrmirhZs8>
Subject: Re: [tcpm] RACK - variable explanation
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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: Fri, 23 Nov 2018 16:43:12 -0000
Thank you very much for the explanation, this helps a lot! :) Felix On 22.11.18 17:16, Neal Cardwell wrote: > On Thu, Nov 22, 2018 at 10:28 AM Felix Weinrank <weinrank@fh-muenster.de> wrote: >> >> On 22.11.18 15:58, Neal Cardwell wrote: >>> On Thu, Nov 22, 2018 at 7:25 AM Felix Weinrank <weinrank@fh-muenster.de> wrote: >>>> Hey RACK authors, >>>> >>>> we're evaluating the nuts and bolts of RACK in its current version and >>>> we are missing variable explanations. >>>> Most of the variables are listed and explained in section 5 (Definitions >>>> of variables) but at least two are missing. >>> Thanks for pointing these out! We'll add these in the next draft. >>> >>>> SND.UNA >>> The RACK draft uses the SND.UNA and SND.NXT notations from the TCP RFC >>> (from https://tools.ietf.org/html/rfc793#section-3.3 on page 25): >>> >>> SND.UNA = oldest unacknowledged sequence number >>> >>> SND.NXT = next sequence number to be sent >>> >>>> RACK.dupthresh << This is where we're stuck >>> This is using the DupThresh term from RFC 6675, "A Conservative Loss >>> Recovery Algorithm Based on Selective Acknowledgment (SACK) for TCP" >>> (from https://tools.ietf.org/html/rfc6675 on page 4): >>> >>> We define a variable "DupThresh" that holds the number of duplicate >>> acknowledgments required to trigger a retransmission. Per [RFC5681], >>> this threshold is defined to be 3 duplicate acknowledgments. >> Thanks for the explanation. >> >> I don't completely understand the following check: >> >> If RACK.reordering_seen is FALSE: >> If in loss recovery: /* If in fast or timeout recovery */ >> RACK.reo_wnd = 0 >> Return >> Else if RACK.pkts_sacked >= RACK.dupthresh: >> RACK.reo_wnd = 0 >> return >> >> The Draft says: >> "RACK.pkts_sacked" returns the total number of packets selectively >> acknowledged in the SACK scoreboard. >> >> Whats the purpose of this check: RACK.pkts_sacked >= RACK.dupthresh > This is the traditional TCP Fast Retransmit heuristic, described in > https://tools.ietf.org/html/rfc5681 in section 3.2, and > https://tools.ietf.org/html/rfc6675 in section 5, and the older > https://tools.ietf.org/html/rfc2001 in section 3. > > One way to think about it would be: if a receiver selectively > acknowledges a data sequence range, then that means there is an > unacknowledged "hole" in the sequence space below the selectively > acknowledged range. There are two main possibilities for this hole: > (1) That unacknowledged hole will stay unacknowledged indefinitely, > suggesting that the original packets containing that data were > permanently lost, and need to be retransmitted (which this algorithm > triggers). (2) That unacknowledged hole will be acknowledged later, > which would suggest that the network reordered the data somewhere in > transit, delaying the earlier data and causing it to arrive after the > later data. Waiting for three data segments to be selectively > acknowledged allows extra "settling" time for that reordered packet to > make it to the receiver and fill that hole; this implicit settling > delay helps avoid spurious retransmits in cases where the network has > started to reorder packets but the sender has not had a chance to > observe the reordering yet. For cases where the sender has observed > reordering (RACK.reord is true) then the sender maintains (in > RACK.reo_wnd) an explicit estimate of how long (in time) it should > wait for such reordering to settle, before triggering a fast > retransmit. > > BTW, for consistency, the line that says: > > If RACK.reordering_seen is FALSE: > > should use the "RACK.reord" name, and should be: > > If RACK.reord is FALSE: > > That will be fixed in the next rev. > > thanks, > neal
- [tcpm] RACK - variable explanation Felix Weinrank
- Re: [tcpm] RACK - variable explanation Neal Cardwell
- Re: [tcpm] RACK - variable explanation Michael Tuexen
- Re: [tcpm] RACK - variable explanation Michael Tuexen
- Re: [tcpm] RACK - variable explanation Felix Weinrank
- Re: [tcpm] RACK - variable explanation Neal Cardwell
- Re: [tcpm] RACK - variable explanation Michael Tuexen
- Re: [tcpm] RACK - variable explanation Neal Cardwell
- Re: [tcpm] RACK - variable explanation Felix Weinrank
- Re: [tcpm] RACK - variable explanation Scheffenegger, Richard
- Re: [tcpm] RACK - variable explanation Ilpo Järvinen
- Re: [tcpm] RACK - variable explanation Yuchung Cheng
- Re: [tcpm] RACK - variable explanation Scheffenegger, Richard