Re: [quicwg/base-drafts] An example ECN validation algorithm (#3320)
Jana Iyengar <notifications@github.com> Tue, 07 January 2020 23:06 UTC
Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7F93C12013C for <quic-issues@ietfa.amsl.com>; Tue, 7 Jan 2020 15:06:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Level:
X-Spam-Status: No, score=-8 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
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 C-aGeV0un_n5 for <quic-issues@ietfa.amsl.com>; Tue, 7 Jan 2020 15:06:32 -0800 (PST)
Received: from out-24.smtp.github.com (out-24.smtp.github.com [192.30.252.207]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D366A120025 for <quic-issues@ietf.org>; Tue, 7 Jan 2020 15:06:31 -0800 (PST)
Received: from github-lowworker-ca5950c.va3-iad.github.net (github-lowworker-ca5950c.va3-iad.github.net [10.48.17.57]) by smtp.github.com (Postfix) with ESMTP id D845C6A000A for <quic-issues@ietf.org>; Tue, 7 Jan 2020 15:06:30 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1578438390; bh=q1R3ZqWycPnpduLct0MtxYLrnxMLUN5CN+F7pGTVLDE=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Kmowb3PXSisF+S7YQ06I/8GVkkjjCfrPdQzWTDeY1g2r32Z4SHX8LMS4+1rnllvRn gTRNkB2pQO1Kv8NKorZtJKP3YsSGd8OYTLe2Ujv8BfG+iBLKXtR558DpK2V+6SRIpZ fJLOqrUv82O0EkMZ/MXP00xPDaueJsiYGTHLL3lo=
Date: Tue, 07 Jan 2020 15:06:30 -0800
From: Jana Iyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK6LYBW2EMIJQPVXQS54EJAXNEVBNHHCBC7C3M@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3320/review/339557244@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3320@github.com>
References: <quicwg/base-drafts/pull/3320@github.com>
Subject: Re: [quicwg/base-drafts] An example ECN validation algorithm (#3320)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e150ef6c7cea_798b3f8a524cd9685963a"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: janaiyengar
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/Z3D9gzuXrTwJ5Qo5qLQtfwqQY9k>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 07 Jan 2020 23:06:34 -0000
janaiyengar commented on this pull request. Thank you for working on this. > @@ -3488,6 +3489,54 @@ Even if validation fails, an endpoint MAY revalidate ECN on the same path at any later time in the connection. +#### Exemplary ECN Validation Algorithm {#ecn-alg} + +Each time that an endpoint commences sending on a new network path, it ```suggestion Each time an endpoint commences sending on a new network path, it ``` > @@ -3488,6 +3489,54 @@ Even if validation fails, an endpoint MAY revalidate ECN on the same path at any later time in the connection. +#### Exemplary ECN Validation Algorithm {#ecn-alg} + +Each time that an endpoint commences sending on a new network path, it +determines whether the path supports ECN. If the path supports ECN, the goal is +to use ECN. Endpoints might also periodically reassess a path that was +determined not support ECN. + +This section describes one method for testing new paths. This algorithm is +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or Paths don't have ECN state. Suggestion: "For each path an endpoint sends on, it records known ECN support on that path as one of ..." > @@ -3488,6 +3489,54 @@ Even if validation fails, an endpoint MAY revalidate ECN on the same path at any later time in the connection. +#### Exemplary ECN Validation Algorithm {#ecn-alg} + +Each time that an endpoint commences sending on a new network path, it +determines whether the path supports ECN. If the path supports ECN, the goal is +to use ECN. Endpoints might also periodically reassess a path that was +determined not support ECN. + +This section describes one method for testing new paths. This algorithm is +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or +"capable". In the "testing" and "capable" states the endpoint sends packets ```suggestion "capable". On paths that are recorded as "testing" or "capable", the endpoint sends packets ``` > +Each time that an endpoint commences sending on a new network path, it +determines whether the path supports ECN. If the path supports ECN, the goal is +to use ECN. Endpoints might also periodically reassess a path that was +determined not support ECN. + +This section describes one method for testing new paths. This algorithm is +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or +"capable". In the "testing" and "capable" states the endpoint sends packets +with an ECT(0) marking; otherwise, the endpoint sends unmarked packets. + +To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline. It should not be necessary to disregard +the effect of packets sent prior to starting testing, though it is necessary for It's not clear what "effect of packets" this is talking about. > + +This section describes one method for testing new paths. This algorithm is +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or +"capable". In the "testing" and "capable" states the endpoint sends packets +with an ECT(0) marking; otherwise, the endpoint sends unmarked packets. + +To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline. It should not be necessary to disregard +the effect of packets sent prior to starting testing, though it is necessary for +a sender to remember what markings were used for every packet that is +acknowledged; see {{ecn-ack}}. + +The testing period runs for a number of packets or round trip times as ```suggestion The testing period runs for a number of packets or round-trip times, as ``` > +This section describes one method for testing new paths. This algorithm is +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or +"capable". In the "testing" and "capable" states the endpoint sends packets +with an ECT(0) marking; otherwise, the endpoint sends unmarked packets. + +To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline. It should not be necessary to disregard +the effect of packets sent prior to starting testing, though it is necessary for +a sender to remember what markings were used for every packet that is +acknowledged; see {{ecn-ack}}. + +The testing period runs for a number of packets or round trip times as +determined by the endpoint. During this time, packets sent are marked with ```suggestion determined by the endpoint. ``` Redundant. You've already said this 2 paras above. > +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or +"capable". In the "testing" and "capable" states the endpoint sends packets +with an ECT(0) marking; otherwise, the endpoint sends unmarked packets. + +To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline. It should not be necessary to disregard +the effect of packets sent prior to starting testing, though it is necessary for +a sender to remember what markings were used for every packet that is +acknowledged; see {{ecn-ack}}. + +The testing period runs for a number of packets or round trip times as +determined by the endpoint. During this time, packets sent are marked with +ECT(0). The goal is to limit the duration of the testing period, but to ensure ```suggestion The goal is not to limit the duration of the testing period, but to ensure ``` > +implement different methods. + +The path has an ECN state that is one of "testing", "unknown", "failed", or +"capable". In the "testing" and "capable" states the endpoint sends packets +with an ECT(0) marking; otherwise, the endpoint sends unmarked packets. + +To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline. It should not be necessary to disregard +the effect of packets sent prior to starting testing, though it is necessary for +a sender to remember what markings were used for every packet that is +acknowledged; see {{ecn-ack}}. + +The testing period runs for a number of packets or round trip times as +determined by the endpoint. During this time, packets sent are marked with +ECT(0). The goal is to limit the duration of the testing period, but to ensure +that enough marked packets are sent that it is likely that ECN counts will ```suggestion that enough marked packets are sent for received ECN counts to ``` > + +To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline. It should not be necessary to disregard +the effect of packets sent prior to starting testing, though it is necessary for +a sender to remember what markings were used for every packet that is +acknowledged; see {{ecn-ack}}. + +The testing period runs for a number of packets or round trip times as +determined by the endpoint. During this time, packets sent are marked with +ECT(0). The goal is to limit the duration of the testing period, but to ensure +that enough marked packets are sent that it is likely that ECN counts will +provide a clear indication of how the path treats marked packets. + +<!-- Do we need a more concrete recommendation here? For instance, I might say +"Endpoints could test with packets that amount to between 1 to 2 times the +initial congestion window over a period between 1 to 2 times the estimated RTT." This is an example, and as such, it's useful for us to provide a specific value here. We should also expect that anyone implementing this is likely to use these exemplary values. > +the effect of packets sent prior to starting testing, though it is necessary for +a sender to remember what markings were used for every packet that is +acknowledged; see {{ecn-ack}}. + +The testing period runs for a number of packets or round trip times as +determined by the endpoint. During this time, packets sent are marked with +ECT(0). The goal is to limit the duration of the testing period, but to ensure +that enough marked packets are sent that it is likely that ECN counts will +provide a clear indication of how the path treats marked packets. + +<!-- Do we need a more concrete recommendation here? For instance, I might say +"Endpoints could test with packets that amount to between 1 to 2 times the +initial congestion window over a period between 1 to 2 times the estimated RTT." +--> + +After the testing period ends, the ECN state for the path becomes "unknown". Why does this have to go to "unknown" and not directly to "capable" or "failed"? > + +The testing period runs for a number of packets or round trip times as +determined by the endpoint. During this time, packets sent are marked with +ECT(0). The goal is to limit the duration of the testing period, but to ensure +that enough marked packets are sent that it is likely that ECN counts will +provide a clear indication of how the path treats marked packets. + +<!-- Do we need a more concrete recommendation here? For instance, I might say +"Endpoints could test with packets that amount to between 1 to 2 times the +initial congestion window over a period between 1 to 2 times the estimated RTT." +--> + +After the testing period ends, the ECN state for the path becomes "unknown". +From the "unknown" state, successful validation of the ECN counts an ACK frame +(see {{ecn-ack}}) causes the ECN state for the path to become "capable", unless +no marked packet has been acknowledged. You will be blocked, but only until the PTO timer fires. There is a question still of what to do afterwards. While it is rare, I suspect we need this fallback as a failsafe. > +determined by the endpoint. During this time, packets sent are marked with +ECT(0). The goal is to limit the duration of the testing period, but to ensure +that enough marked packets are sent that it is likely that ECN counts will +provide a clear indication of how the path treats marked packets. + +<!-- Do we need a more concrete recommendation here? For instance, I might say +"Endpoints could test with packets that amount to between 1 to 2 times the +initial congestion window over a period between 1 to 2 times the estimated RTT." +--> + +After the testing period ends, the ECN state for the path becomes "unknown". +From the "unknown" state, successful validation of the ECN counts an ACK frame +(see {{ecn-ack}}) causes the ECN state for the path to become "capable", unless +no marked packet has been acknowledged. + +At any point, if validation of ECN counts fails, the ECN state becomes "failed". ```suggestion If validation of ECN counts fails at any time, the endpoint records ECN state for the path as "failed". ``` -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/quicwg/base-drafts/pull/3320#pullrequestreview-339557244
- Re: [quicwg/base-drafts] An example ECN validatio… mirjak
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- [quicwg/base-drafts] An example ECN validation al… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… Jana Iyengar
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… mirjak
- Re: [quicwg/base-drafts] An example ECN validatio… ianswett
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… mirjak
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson
- Re: [quicwg/base-drafts] An example ECN validatio… Jana Iyengar
- Re: [quicwg/base-drafts] An example ECN validatio… Martin Thomson