Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-ecn-23
Gorry Fairhurst <gorry@erg.abdn.ac.uk> Sun, 26 March 2023 13:51 UTC
Return-Path: <gorry@erg.abdn.ac.uk>
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 C6BE9C14CF1F for <tcpm@ietfa.amsl.com>; Sun, 26 Mar 2023 06:51:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.897
X-Spam-Level:
X-Spam-Status: No, score=-6.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h4oI_Acff05l for <tcpm@ietfa.amsl.com>; Sun, 26 Mar 2023 06:51:46 -0700 (PDT)
Received: from pegasus.erg.abdn.ac.uk (pegasus.erg.abdn.ac.uk [IPv6:2001:630:42:150::2]) by ietfa.amsl.com (Postfix) with ESMTP id 1A346C14F721 for <tcpm@ietf.org>; Sun, 26 Mar 2023 06:51:38 -0700 (PDT)
Received: from [192.168.1.81] (fgrpf.plus.com [212.159.18.54]) by pegasus.erg.abdn.ac.uk (Postfix) with ESMTPSA id 93DB01B0019A; Sun, 26 Mar 2023 14:51:31 +0100 (BST)
Content-Type: multipart/alternative; boundary="------------15ROunFmRsvIM0xeFPsuSyNn"
Message-ID: <dd8c9571-2ebc-df14-4b09-00efa361c59b@erg.abdn.ac.uk>
Date: Sun, 26 Mar 2023 14:51:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.0
To: Bob Briscoe <ietf@bobbriscoe.net>
Cc: tcpm IETF list <tcpm@ietf.org>
References: <678c501b-2520-1844-92f3-7e9c319df525@erg.abdn.ac.uk> <9e2e5095-6ff9-2a8d-71fa-cd1d2b745d75@bobbriscoe.net>
From: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Organization: UNIVERSITY OF ABERDEEN
In-Reply-To: <9e2e5095-6ff9-2a8d-71fa-cd1d2b745d75@bobbriscoe.net>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/MnQh0eyPlucLXtZYH5UKnukOs_g>
Subject: Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-ecn-23
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.39
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: Sun, 26 Mar 2023 13:51:50 -0000
On 26/03/2023 03:06, Bob Briscoe wrote: > Gorry, > > Thank you as always for your extensive review. See responses tagged > [BB] inline. > No comment = proposal accepted. I see you have a plan, I made a few additional comments [GF2]. > > On 25/03/2023 17:28, Gorry Fairhurst wrote: >> I have just reviewed draft-ietf-tcpm-accurate-ecn-23 for a WGLC. >> >> This ID is significantly easier to read than an earlier version I >> read, but still is not an easy read - and I did not have time to >> re-check all the logic, but I did look at the text and have the >> following set of comments. Most of these relate to sentences were >> clarity could be improved, or RFC2119 language could be more explicit >> about the subject. Many of these could be resolved by simple text >> changes, and where possible I have provided the text from the ID, and >> in most cases a suggestion remedy. >> >> Best wishes, >> >> Gorry >> >> P.S. When you complete all the updates after the WGLC, I suggest you >> post a review request to TSVWG, just to keep the process good - >> because this does plan to update a TSVWG spec. >> >> ========= >> >> This statement causes concern: >> AccECN is intended to be a complete replacement for classic TCP/ECN >> feedback, not a fork in the design of TCP. >> Is it possible the intent is: >> AccECN is intended to offer a complete replacement for classic >> TCP/ECN feedback, not a fork in the design of TCP. >> - To me the importance being that this does not immediately obsolete >> current TCP, it simply provides a negotiated mechanism to replace it. >> >> =================== >> Section 1 >> === >> Recently, proposed mechanisms like Congestion Exposure (ConEx >> [RFC7713]), DCTCP [RFC8257] or L4S [RFC9330] need to know when more >> than one marking is received in one RTT which is information that >> cannot be provided by the feedback scheme as specified in [RFC3168]. >> - Add comma, so that: >> Recently, proposed mechanisms like Congestion Exposure (ConEx >> [RFC7713]), DCTCP [RFC8257] or L4S [RFC9330] need to know when more >> than one marking is received in one RTT, which is information that >> cannot be provided by the feedback scheme as specified in [RFC3168]. >> === >> This document specifies an update to the ECN feedback scheme of RFC >> 3168 that provides more accurate information and could be used by >> these and potentially other future TCP extensions. >> - could we note this is an alternative rather than replacement: >> This document specifies an update to the ECN feedback scheme of RFC >> 3168 that provides an alternative more accurate information and could >> be used by these and potentially other future TCP extensions. >> === >> This documents specifies a standards track scheme >> - remove s >> This document specifies a standards track scheme >> === >> Then terminology is defined >> - do we need a comma: >> Then, terminology is defined >> === >> Section 1.2 >> === >> Therefore an AccECN receiver aims to act as a generic (dumb) >> reflector of congestion information so that in future new sender >> behaviours can be deployed unilaterally. >> - why /aims to/ ... why does this not specify this? >> - is /dumb/ necessary, it's an unfortunate word choice - simple could >> be alternative? > > [BB] Yes, 'aims to' should be moved to the later part of the sentence. > The terminology 'dumb' was borrowed from the "intelligent vs dumb > network" phrasing of the e2e argument. 'Simple' would lose the > intended nuance of 'mechanistic' or 'robotic', and the former is least > overloaded with other meanings these days (robotic is starting to mean > the opposite!). So how about: > > Therefore an AccECN receiver acts as a generic (mechanistic) > reflector of congestion information with the aim that in future new > sender behaviours can be deployed unilaterally. > > There are other occurrences of 'dumb reflector' - so I'll change them all. > > [GF2] Seems OK to me. >> === >> Classic ECN: the ECN protocol specified in [RFC3168]. >> - Upper case /The/ to be consistent? >> === >> Classic ECN feedback: the >> - Upper case /The/ to be consistent? >> === >> which ensures the signal is received reliably even if ACKs are lost. >> - well not if all are lost! Could this be: >> which provides resilience of the signal to loss or reordering of ACKs. >> ==== >> Para after table talks of a TCP sender, but the terminology talks of >> a data sender and a TCP server; but not a TCP sender. Presumably this >> is a data sender. >> ==== >> - It might be useful to say that a TCP connection between a TCP >> client and a TCP server provides bidirectional communication between >> two pairs of TCP senders and TCP receivers, forming two independent >> half connections/. > > [BB] Yes, we use half connection a number of times later, and this > would be a good place to introduce it. > >> ==== >> I think the whole of section 2 could be informative? ~If it is, can >> we say this? > > [BB] We do already; in the first para of §2: > "This section provides an informative overview of the AccECN protocol > that will be normatively specified in Section 3 > <https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-23#accecn_Spec>" > [GF2] Oh, fine. >> ==== >> The RFC 2119 conformance terms are defined in 1.3, but then are >> followed by an informative set of sections. I for one, would much >> prefer that definition block moved to the start of section 3. > > [BB] Much of the other terminology defined in §1.3 is needed sooner. > So, to do as you ask, we'd have to to split up the terminology > section, which I don't want to do. It's not incorrect as it is, so > let's leave it. > [GF2] I still think splitting the terminology would be better to include the RFC declarations at the start of the section that uses them. >> === >> but it is more likely to suffer from middlebox interference. >> - I think we could be more future-looking, and propose: >> but is currently more likely to suffer from middlebox interference. >> === >> However cycling is still a possibility at the Data Sender because a >> whole sequence of ACKs carrying intervening values of the field might >> all be lost or delayed in transit. >> - This is about reception of ACKs? I wasn't sure first read, could we >> write: >> However ACKs received at the Data Sender could still cycle because a >> whole sequence of ACKs carrying intervening values of the field might >> all be lost or delayed in transit. >> === >> had been an infeasibly long sequence of ACK losses. >> - what does infeasible mean here, it seems very imprecise. It would >> have been easier not to judge the feasibility and simply said /a >> long/... > > [BB] 'long' is less precise than 'infeasibly long', which conveys the > meaning of 'not just long, but so long that we do not need to consider > the possibility of it occurring in practice'. > The main meaning of Infeasible is impracticable, so I would like to > leave this as-is. > [GF2] Not a huge issue to me. >> === >> Therefore, as long as the AccECN Option is available >> - unfortunate use of /as long/ just after discussing length of ACK >> drops? >> Providing that the AccECN Option is available >> === >> is provided in order to protect >> - ordering is not implied, this could be: >> is provided to protect > > [BB] The intended meaning was not "provided in order, to protect." > Rather it was "provided in_order_to protect." So your suggestion does > indeed remove the ambiguity. > >> === >> The TCP server MUST NOT set one of these 4 combination of flags on >> the SYN/ACK unless the preceding SYN requested support for AccECN as >> above. >> - What is the client response if this does happen? > > [BB] To rephrase your question into a stand-alone question, "What does > a non-AccECN client do if it somehow receives a SYN-ACK that implies > the server supports AccECN? > > This draft doesn't specify what non-AccECN clients do, and it would be > pointless to try, because they are already out there, and their specs > already say what they do. > Nonetheless, FYI, clients implementing either of the two non-AccECN > specs currently out there would both handle a randomly appearing > AccECN SYN-ACK correctly. Specifically: > > 1) RFC3168, §6.1.1: > If a host has received at least one [...] > non-ECN-setup SYN-ACK packet, then it SHOULD NOT set ECT on > data packets. > ... > Receivers MUST correctly handle all forms of the non-ECN-setup > [...] SYN-ACK packets. > > Even if an RFC3168 client only checked the last 2 flags of the 3 > AccECN flags, none of the three 2-bit combinations that imply AccECN > support would be expected by an RFC3168 client (by design of AccECN). > > Therefore: > > * An RFC3168 client would handle a randomly appearing AccECN SYN-ACK > correctly, > o whether it checked all the TCP flags (as required by the > second sentence quoted from RFC3168 above) > o or even if it only checked CWR and ECE. > > > 2) RFC9293: > Altho this recommends TCP implementations support RFC3168, there are > many RFC793 TCP implementations that do not. Such a non-ECN TCP client > will have no logic to check the ECN flags during the 3WHS and > therefore it will not notice that a SYN-ACK is (incorrectly) > responding as if it was asked to support AccECN. > > Therefore, again, > > * a non-ECN TCP client will handle a randomly appearing AccECN > SYN-ACK correctly, just continuing to not support any form of ECN. > > [GF2] Thanks for this explantion, I think setting these bits defines the mode - so it's a little weird as a requirement, but I get it. > >> == >> interference than other intermittent causes of loss, e.g. congestion, >> wireless interference, etc.¶ >> - two uses of the word /interference/ with different meaning, could >> the second be replaced by /loss/? > > [BB] Good point. I think "transmission loss" would be better. > >> == >> It MUST NOT send an ECN-setup SYN [RFC3168] within the same >> connection as it has sent a SYN requesting AccECN feedback. >> /as/when/ or something else? >> It MUST NOT send an ECN-setup SYN [RFC3168] within the same >> connection when it has sent a SYN requesting AccECN feedback. > > [BB] I don't see the problem here. "The same ... as" is correct > English, whereas "the same ... when" is not. > A similar sentence proves this is a correct construction: "It MUST NOT > send a message within the same millisecond as it has sent another message" > > If this makes the reader stumble, we could rephrase entirely: > It MUST NOT send an ECN-setup SYN [RFC3168] during a connection in > which it has also sent a SYN requesting AccECN feedback. > However, I don't think that's any better, so I'd prefer to leave it as-is. > [GF2] That proposal seems much clearer to me, I understand now. >> === >> It MUST NOT send an ECN-setup SYN/ACK [RFC3168] within the same >> connection as it has sent a SYN/ACK agreeing to use AccECN feedback. >> /as/when/ or something else? >> It MUST NOT send an ECN-setup SYN/ACK [RFC3168] within the same >> connection when it has sent a SYN/ACK agreeing to use AccECN feedback. > > [BB] Ditto. > [G2] I'd prefer to find a way to make this one more clear. >> === >> It is still obliged to respond appropriately to AccECN feedback that >> indicates there were ECN marks on packets it had previously sent >> -Please explicitly say what is "it"? >> The Data Sender is still obliged to respond appropriately to AccECN >> feedback that indicates there were ECN marks on packets it had >> previously sent >> == >> In general, it is obliged to respond to congestion feedback even when >> - what is it? Receiver/Sender? >> In general, the Data Sender is obliged to respond to congestion >> feedback even when >> === >> Unlike an RFC 3168 data sender, it MUST NOT set CWR to indicate it >> has received and responded >> - what is it? Receiver/Sender? >> Unlike an RFC 3168 data sender, a Data Receiver MUST NOT set CWR to >> indicate it has received and responded > > [BB] The problem you've identified occurs because there is an aside > about all the 'switching feedback negotiation' bullets, just before > all the 'congestion response' bullets. > This tends to lose the thread of the Data-Sender context. > > Nonetheless, I've also noticed that: > * some of the bullets under "As a Data Sender" are about sending > control packets, not data. > * some of the bullets under "As a Data Receiver" are about receiving > control packets, not data. > > So I shall have to restructure the whole section. > Let me do that, then give it to you to review again. [GF2] OK > > == >> if it receives an ECN-setup SYN or ECN-setup SYN/ACK [RFC3168] during >> the same >> - to avoid doubt in citing this RFC2119 requirement, can we write: >> if a Data Receiver receives an ECN-setup SYN or ECN-setup SYN/ACK >> [RFC3168] during the same >> === >> If for any reason it is not willing to >> - to avoid doubt in citing this RFC2119 requirement, can we write: >> If for any reason the Data Receiver is not willing to >> === >> it MUST NOT use reception >> >> - to avoid doubt in citing this RFC2119 requirement, can we write: >> >> A Data Receiver MUST NOT use reception > > [BB] As above, I'll restructure the whole of this section before > giving to you to review again. > Sorry about this. > > >> === >> correct ECN feedback logic, as the packets >> - could we replace /as/? >> correct ECN feedback logic, because packets >> === >> Whenever a host feeds back the value >> - Is that the Data Receiver? Sender? or both? - it would better to >> match the clauses above. > > [BB] Yes, this could s/host/Data Receiver/ > But I will also make it clear that the stuff about the feedback being > on a retransmission is about a retransmission for the other half > connection. > [GF2] I see. >> === >> When a host first enters AccECN mode, in its role as a Data Receiver >> - could this be more simply said: >> When Data Receiver first enters AccECN mode, > > [BB] Not really, because a host enters AccECN mode as a whole (not > separately per half connection). [GF2] That was not clear, ... I think this applies to several places, so maybe a clear statement that explains this in th eirght place would be best? > >> == >> When a host enters AccECN mode, in its role as a Data Sender >> - could this be more simply: >> When Data Sender first enters AccECN mode, > > [BB] Ditto. > >> == >> A host MUST NOT interpret the 3 >> - Is that the Data Receiver? Sender? or both? Client? Server? >> A Data Receiver MUST NOT interpret the 3 > > [BB] This does really mean "a host". > It applies across the 3WHS and data transfer, so it's not just about > Data receiver or Data sender. And it applies to client and server. So > it is a general statement about what hosts interpret. > >> == >> An implementer MAY develop an alternative algorithm as long as it >> satisfies these requirements.¶ >> - doesn't seem like a /MAY/ can this be /may/ or /is permitted to/? > > [BB] I've checked the definition of 'MAY' in RFC2119, and I'm pretty > sure we really do mean 'MAY', but I'm always willing to be corrected. > Can you try to explain why your understanding of 'MAY' would be > inappropriate here? > > I'm guessing that perhaps "an implementation MAY do x", but "an > implementer may do y"? > If that's your concern, I would say in this case, "an implementer may > produce code that MAY do y," so I don't see a great difference. > [GF2] I do not mind on this one at all, check and see what works. >> == >> the Data Sender SHOULD believe the ACE counter, unless it can be sure >> that it is counting all control packets correctly.¶ >> - what does believe mean? use? > > '...SHOULD consider the ACE counter to be correct (and its count > of control packets to be incomplete)' > >> === >> Section 3.2.3. The AccECN Option >> - Could we please add RFC-Ed instructions to ensure replacement of >> TBD1 and TBD2 during final edit? > > [BB] In my local editor's copy, we already have the early assignment > numbers now. > >> === >> All implementations of a Data Sender that read any AccECN Option MUST >> be able to read in AccECN Options of any of the above lengths. >> - I think /in/ seems odd. >> - This makes me wonder what happens if they do not? >> - REQUIRED to implement? > > [BB] I can s/read in/read/ > For any spec (not only AccECN), if an implementation does not > implement a 'MUST', it is not an implementation of the spec. So all > bets would be off. > > All this is clarifying is that, altho' it is optional to implement the > AccECN Option, if you do implement it, you have to be able to read all > the valid option lengths. > >> == >> Whenever the Data Sender receives ACK carrying >> - add /an/ >> Whenever the Data Sender receives an ACK carrying >> === >> If the ACK has not been superseded, >> - please explain superseded! > > [BB] I'll add '(see Appendix A.1)', which defines superseded precisely. > >> === >> AccECN is for congestion control, which SHOULD generally be >> considered important relative to other TCP options. >> - what does important mean here? >> - Does this have to be a /SHOULD/ could it be a should and explain? > > I'll reword as > "which implementations SHOULD generally prioritize over other TCP > options when there is insufficient space for all the options in use." > Then I think 'SHOULD' becomes appropriate. > [GF2] - yes. >> === >> it (the server) has to have confirmed >> - why not just say the server? >> the server has to have confirmed > > [BB] In a SYN cookie scenario, the server deliberately forgets what it > would normally remember. So I had to use 'it', because the server is > reverse engineering what 'it' did earlier, where 'it' is another > incarnation of itself that it doesn't remember. Otherwise, just saying > "it can assume that the server has to have confirmed..." makes it > sound like some other server. > > A little rephrasing is needed here anyway, so I've tried to say this > another way: > > ORIGINAL: > > If a TCP server using SYN Cookies supports AccECN and if ..., and if ..., > it can assume that: > * the TCP client has to have requested AccECN support on the SYN > * it (the server) has to have confirmed that it supported AccECN > > PROPOSED: > > If a TCP server using SYN Cookies supports AccECN and if ..., and if ..., > the server can infer the first two stages of the handshake: > * the TCP client has to have requested AccECN support on the SYN > * then, even though the server kept no state, it has to have confirmed > that it supported AccECN > > >> === >> Each host needs to maintain eight additional counters. The hosts have >> to apply some additional tests to detect tampering by middleboxes, >> - Is this sender or receiver code? > > [BB] Here, 'hosts' is appropriate because this is a general statement > about all the additional tests; some are during the 3WHS (when either > client or server is comparing what it received against what it sent); > while other tests are conducted by the Data Receiver part of a > half-connection. > >> === >> I would suggest section 3.3 is made a separate top level section >> (section 4), to really call-out that this is not the TCP sender and >> receiver but the part that other people need to read. > > [BB] That would have been a really good idea earlier. I'd like to do > this. But I'm going to think long and hard before doing it now though. > I'm concerned that there might be cross refs within this or other > documents to §3.3 or §4 -- §8 that might break. > > Whether we do this or not, an additional piece in the doc roadmap > about this section would be useful. > >> --- >> With the importance of section 3.3 in mind, I was surprised to see >> the top-level section had no text. Surely some text belongs here to >> say that deployment of AccECN places new requirements on networking >> equipment that forwards TCP, and inspects the TCP header information! > > [BB] I believe that section headings are powerful ways to say exactly > this, without having to repeat the same words with a few gratuitous > little words added to make sentences. Specifically: > > 4. AccECN Compliance Requirements for TCP Proxies, Offload Engines and > other Middleboxes > 4.1. Requirements for TCP Proxies > ... > 4.2. Requirements for Transparent Middleboxes and TCP Normalizers > ... > 4.3. Requirements for TCP ACK Filtering > ... > 4.4. Requirements for TCP Segmentation Offload > ... > > Again, if this idea had come earlier, I might have been more inclined > to add a sentence or two. But I'm not a fan of adding significant > amounts of text at this stage. Will probably add a little tho. [GF2] Little - even one sentence was what I had in mind. :-) > >> === >> End of 3.3.2: >> However, to comply with >> - I could live without the "However", which to me at least gives more >> weight - could even be a separate para to help this stand out! > > [BB] I can see the need to emphasize, but a new para wouldn't work - > the 'However' sentence is very much a continuation of the same flow of > thought. > [GF2] The problem with some of these /However/ is that they follow-on a sentence which then becomes normative. I'm happiest when the normative statements are single sentences that can be read on their own... >> === >> I think 3.3.4 is different to 3.3.1 and 3.3.2, and really belongs >> with the rest or directly following 3.2. The reason is this, is about >> implementing TCP. > > [BB] > This is a question of whether separate processors are independent even > if they run off the same power supply, or they're in the same housing. > Similar questions apply on where you draw the line between an API and > a protocol. > > In a similar vein, TCP Proxies /are/ TCP implementations. So they > ought not to be outside §3. > So it seems we're now tending towards the idea that §3.3.1 and § 3.3.4 > ought to remain in §3.3, while §3.2 & §3.3 would be moved to a new §4. > > But then we return to your original point that the types of company > that build all the functions of all four sections (§3.3.1-§3.3.4) tend > to be "networking equipment vendors" rather than end-system > developers. So we want to direct their eyes to their own section. But > then NFV blurs the distinction. This is not clear-cut. As I said, I > will think on it. > [GF2] OK, I think the text works best when grouped into topics that a specific group of readers would look at. >> === >> Section 4 >> For the avoidance of doubt it would have been nice to have one >> starting sentence that explains if these statements in section 4 are >> *additional* requirements to section 3, which I think they are likely >> not, or a list of the impact of the changes in section 3 on RFC3168? > > [BB] Good point. You're right. They are not additional, which needs > saying. > >> === >> I don't have a strong opinion, but I think section 6 is much easier >> to read than some of the other materials, and seeing this after >> section 2 mighty have been good. Equally could it be moved to join >> other material before annexe B? > > [BB] It is intended to be like a 'Conclusions' section. The idea is > that it comes after the detailed spec, to sum up whether it meets the > original requirements. On that basis, it can't really come before the > detailed spec. I'd like to leave it where it is. But would it help to > change the title to 'Summary: Protocol Properties'? [GF2] That would help, or just a couple of extra words. > >> === >> Section 10 looks like it should have an RFC-Ed comment to request >> removal before publication. >> === >> Of course, other ways could be resorted to in order to extend AccECN >> or ECN in future >> - could we be simpler and just say: >> Other ways could have been used to extend ECN > > [BB] Certainly, we can remove 'Of course'. > > But you're suggesting we change the sense from 'could be in future' to > 'could have been in this spec'. That would be contrary to the purpose > (and headings) of this appendix. So we'd rather not do that part of > your suggestion. > [GF2] I'm less sure of the future, but do what people agree. >> === >> In section 2: >> could give conflicting feedback on the same segment >> - which segment - the received segment or the segment that carries >> the feedback? > > [BB] We'll s/on/about/ which is what the conflict concern is. > > >> === >> In section 2.4: >> If the option is stripped, >> - Maybe worth explaining in parenthesis >> If a middlebox strips the option (removes the option from a TCP >> segment), >> === >> In section 2.4: >> Feedback in bytes is provided in order to protect >> - seems one to confusion, can we remove /in order/ to avoid potential >> misunderstanding of ordering >> Feedback in bytes provides protection against a receiver using >> attacks similar to 'ACK-Division' to artificially inflate the >> congestion window, which is why [RFC5681] now recommends that TCP >> counts acknowledged bytes not packets. >> === >> Can the last para of section 2.4, be modified like this to allow it >> to appear in the guidance on middle boxes? : >> Feedback in bytes protects from middlebox attacks similar to >> 'ACK-Division' that seek to artificially inflate the congestion >> window, which is why [RFC5681] now recommends that TCP counts >> acknowledged bytes not packets. > > [BB] A sentence directed at bad actors, boasting that we've designed > this so they cannot build middleboxes that mount this particular > attack wouldn't fit in the middlebox section. > The section on middleboxes is guidance for /willing/ middlebox > implementers. > > The original sentence justifies a design choice of the AccECN > protocol. So it would be appropriate to just > s/against a receiver/against a receiver or middlebox/ > > >> === >> If it has set itself into classic ECN feedback mode it MUST then >> comply with [RFC3168]. >> - Can we replace the /it/s: >> If a Data Receiver has set itself into classic ECN feedback mode it >> MUST then comply with [RFC3168]. > > [BB] Yes, except s/Data Receiver/TCP client/, as per the preceding > sentence in the draft. > >> ================= >> Terms: >> >> /ECN bits/ is mentioned 3 times, but should always be /ECN Field/ > > Agree on occurrences 1 & 2. > > Occurrence 3 is about the TCP flags - that needs > s/using the ECN bits in the TCP header/using three flags in the > TCP header already assigned to earlier ECN schemes/ > >> >> /ECN Field/ is not defined, should be as per [RFC3168] and define the >> ECN codepoint. > > [BB] OK. This just needs a change to the first sentence in §1.4 Recap > of Existing ECN Feedback in IP/TCP. > > OLD: > ECN [RFC3168 <https://www.rfc-editor.org/info/rfc3168>] uses two > bits in the IP header. > PROPOSED: > [RFC3168 <https://www.rfc-editor.org/info/rfc3168>] defines the > two-bit ECN Field in the IP header, consisting of four codepoints. > > Table 1. is titled "The ECN Field in the IP header" and recaps the > definitions of the ECN codepoints, and the para before it describes > the semantics. > >> >> endpoint and end-point are variously used, please be consistent. >> >> /Data Sender/ is defined and then /ECN sender/ used in the text. Do >> we need to define both terms? or are they the same? > > [BB] For the one occurrence, we'll > s/an ECN sender/a sender that supports ECN/ > and > s/in the IP header/in the IP header of a data packet/ > >> >> /TCP client/ and /TCP server/ use lower case, whereas Data Receiver >> and Data Sender use upper case. the text later about a /TCP sender/ >> lower case. These ought to be consistent? > > [BB] OK. I'll upper case TCP client and server. > > Of the 5 occurrences of 'TCP Sender', the middle 3 are within quotes > from RFC3168 (where it is defined) and the 1st & 5th ought to be in > quotes and upper-cased, because they are describing what RFC3168 says. > > That's it. > As I said, I'll just do everything with no comment. > > Thank you v much again. > > Cheers > > > > Bob > > It looks like the next revision will address these issues, Gorry >> >> >> _______________________________________________ >> tcpm mailing list >> tcpm@ietf.org >> https://www.ietf.org/mailman/listinfo/tcpm > > -- > ________________________________________________________________ > Bob Briscoehttp://bobbriscoe.net/
- [tcpm] Reviewed for draft-ietf-tcpm-accurate-ecn-… Gorry Fairhurst
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Michael Tuexen
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Bob Briscoe
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Gorry Fairhurst
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Bob Briscoe
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Gorry Fairhurst
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Bob Briscoe
- Re: [tcpm] Reviewed for draft-ietf-tcpm-accurate-… Gorry Fairhurst