[ippm] John Scudder's Discuss on draft-ietf-ippm-ioam-ipv6-options-09: (with DISCUSS and COMMENT)
John Scudder via Datatracker <noreply@ietf.org> Tue, 29 November 2022 18:47 UTC
Return-Path: <noreply@ietf.org>
X-Original-To: ippm@ietf.org
Delivered-To: ippm@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id B5E37C1524D1; Tue, 29 Nov 2022 10:47:55 -0800 (PST)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: John Scudder via Datatracker <noreply@ietf.org>
To: The IESG <iesg@ietf.org>
Cc: draft-ietf-ippm-ioam-ipv6-options@ietf.org, ippm-chairs@ietf.org, ippm@ietf.org, marcus.ihlar@ericsson.com, marcus.ihlar@ericsson.com
X-Test-IDTracker: no
X-IETF-IDTracker: 9.1.0
Auto-Submitted: auto-generated
Precedence: bulk
Reply-To: John Scudder <jgs@juniper.net>
Message-ID: <166974767573.42018.13628264024826514580@ietfa.amsl.com>
Date: Tue, 29 Nov 2022 10:47:55 -0800
Archived-At: <https://mailarchive.ietf.org/arch/msg/ippm/O8PD0n9n1jr5amxN3R8PQ3NPYGs>
Subject: [ippm] John Scudder's Discuss on draft-ietf-ippm-ioam-ipv6-options-09: (with DISCUSS and COMMENT)
X-BeenThere: ippm@ietf.org
X-Mailman-Version: 2.1.39
List-Id: IETF IP Performance Metrics Working Group <ippm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ippm>, <mailto:ippm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ippm/>
List-Post: <mailto:ippm@ietf.org>
List-Help: <mailto:ippm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ippm>, <mailto:ippm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Nov 2022 18:47:55 -0000
John Scudder has entered the following ballot position for draft-ietf-ippm-ioam-ipv6-options-09: Discuss When responding, please keep the subject line intact and reply to all email addresses included in the To and CC lines. (Feel free to cut this introductory paragraph, however.) Please refer to https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ for more information about how to handle DISCUSS and COMMENT positions. The document, along with other ballot positions, can be found here: https://datatracker.ietf.org/doc/draft-ietf-ippm-ioam-ipv6-options/ ---------------------------------------------------------------------- DISCUSS: ---------------------------------------------------------------------- # John Scudder, RTG AD, comments for draft-ietf-ippm-ioam-ipv6-options-09 CC @jgscudder ## DISCUSS As noted in https://www.ietf.org/blog/handling-iesg-ballot-positions/, a DISCUSS ballot is a request to have a discussion on the following topics: ### Structure of the document; Section 5 is vague The first part of the document, through Section 4, is unproblematic for me -- you're simply allocating some IPv6 extension header option types and defining how to use them to transport fields you defined in RFC 9197. Fine. But Section 5 is giving me a headache. For some reason, even though this is a Standards Track document, you've structured it as some rather high-level "considerations" (or are they "requirements"? It's unclear) and then some generally-worded polite suggestions about how you could deploy it this way or that way. Is there some reason you've shied away from being prescriptive in Section 5? As the document stands, I felt a bit like I'd been presented with a puzzle. "The solution of this problem is left as an exercise for the student" is great in textbooks, but not so wonderful in Standards Track documents. ### Section 5.1, C5 is problematic ``` An Autonomous System (AS) that inserts and leaks the IOAM data needs to be easy to identify for the purpose of troubleshooting, due to the high complexity in identifying the source of the leak. Such a troubleshooting process might require coordination between multiple operators, complex configuration verification, packet capture analysis, etc. This requirement may require additional option or fields to be defined to identify the domain that inserted the IOAM data, this is out of the scope of this document. ``` First, just as in C4, the underlying assumption that it's OK if an AS "leaks the IOAM data" appears problematic. Second, how can you both say "this is a requirement" and in the same paragraph "it's out of scope"? Surely, if this functionality is required, a finished spec is required to support it. And if the spec isn't finished, we shouldn't be advancing it, the WG should take it up and finish it, then send it back when done. Is it that this isn't truly a requirement? Or is the spec incomplete? If neither, please help me understand. ---------------------------------------------------------------------- COMMENT: ---------------------------------------------------------------------- ## COMMENTS These comments are non-blocking, but I'd still appreciate responses. ### Section 4, a particular interface ``` Unless a particular interface is explicitly enabled (i.e., explicitly configured) for IOAM, a router MUST ignore IOAM Options. ``` I suppose what you mean is, the router MUST ignore IOAM Options on packets received on that interface? If so, please say so. (If not, let's discuss.) ### Section 4, reference for IOAM Type, nomenclature ``` IOAM Type: 8-bit field as defined in section 7.1 in [RFC9197]. ``` Section 7.1 of RFC 9197 is the IOAM Option-Type Registry in the IANA Considerations section. I wouldn't say an IANA registry "defines" anything, it lists code points. I think a better reference would be Section 4 of 9197, which does indeed define IOAM-Option-Types (in Section 4.1). Also, it would be better to be consistent with your naming, in RFC 9197 you don't call this the "IOAM Type" but rather the "IOAM-Option-Type" (34 occurrences in 9197) or "IOAM Option-Type" without the first hyphen (4 occurrences in 9197). I see why you don't want to use the full string from RFC 9197 in your packet diagram (too many characters) but "IOAM-Opt-Type" would fit in the character budget. ### Section 4, Trace-Type constraints ``` In addition, to maintain IPv6 extension header 8-octet alignment and avoid the need to add or remove padding at every hop, the Trace-Type for Incremental Trace Option in IPv6 MUST be selected such that the IOAM node data length is a multiple of 8-octets. ``` I spent some time trying to understand exactly what it means for the Trace-Type to be selected such that, etc. I suppose this isn't too complicated in the end, since all the types defined in RFC 9197 are either four- or eight-byte fields. I don't see an explicit pad field being defined, though, so I wonder if it would be a helpful hint to note that the Opaque State Snapshot with Length 0 and Schema ID 0xFFFFFF can be used as a four-octet pad if needed. I see you use 0xFFFFFFFF as a pad in some places in RFC 9197, but there's no corresponding Trace-Type and it doesn't seem prudent to just poach a currently undefined bit to indicate the pad. I guess the other alternative would be to allocate a new Trace-Type bit to explicitly indicate a four-byte pad field, but given you can use Opaque State for this purpose, I don't see why you'd burn the bit. Anyway, if I've missed some explicit way eight-byte alignment is supported in RFC 9197, please point it out to me? Otherwise, I think you need to be clearer about this, to discourage implementors from exercising "creativity". ### Section 5.1, C3, entities that communicate the errors ``` The entities that communicate the errors to devices outside of the IOAM domain MUST remove any IOAM data from the packet included in the error message ``` This is quite non-specific. Who are “the entities“ in this context? The host or router that originates the ICMP report? The router that forwards it outside the domain? If the former, I guess that means every entity within the domain that might originate an ICMP message has to know a priori if it's sending its message to an internal or external recipient. If the latter, that's a notable new requirement on border routers. ### Section 5.1, C4 violates closed domain ``` OAM data leaks can affect the forwarding behavior and state of network elements outside an IOAM domain. IOAM domains MUST provide a mechanism to prevent data leaks or be able to ensure that if a leak occurs, network elements outside the domain are not affected (i.e., they continue to process other valid packets). ``` I have a few difficulties with C4. Among them -- - The first sentence is quite nonspecific, I don't know if you have some actual failure modes in mind but I suppose you must. Can you elucidate? - The second sentence, starting with "or", appears to violate the limited domain assumption, or at the least, it introduces a creative understanding of it ("go ahead and leak as long as you're sure the leaks are fine"). - I don't understand how an operator could possibly fulfill the "or" clause with confidence since by definition whatever is happening outside the border of the limited domain is not under the control of, or even necessarily known to, the operator. My guess is that you're trying to motivate the ULA deployment option here, without talking about it specifically. Is that right? ### Section 5.1, C6 is inaccurate ``` Compliance with [RFC8200] requires OAM data to be encapsulated instead of header/option insertion directly into in-flight packets using the original IPv6 header. ``` I don't think you mean the OAM data (by which I think you mean IOAM data) needs to be encapsulated, but rather that it needs to be within an encapsulation header? That's what's implied by your Deployment Options section, anyway. If so, please say so, if not, let's discuss. Assuming I've guessed correctly, a possible rewrite could look something like ``` [RFC8200] precludes insertion of IOAM data directly into the original IPv6 header of in-flight packets. Therefore, in order to add IOAM data, in-flight packets must be encapsulated in an outer header, and the IOAM data added to that header. ``` ### Section 5.1, C7, wording ``` Hence when the IOAM Incremental Trace Option-Type is used in the deployment the RemainingLen field of the option MUST follow the guidance in [RFC9197] and must be computed and set appropriately. ``` I assume you mean "used in deployment" and didn't intend the definite article (which would imply you're talking about a specific deployment). But I think instead of just dropping "the", you might as well go ahead and drop "in the deployment" (where else is it going to be used after all, where this guidance wouldn't apply?). ### Section 5.1, C7, lack of specificity ``` The IOAM Incremental Trace Option-Type expands the option length that may affect the processing of extension headers and options that follow IOAM options. Hence when the IOAM Incremental Trace Option-Type is used in the deployment the RemainingLen field of the option MUST follow the guidance in [RFC9197] and must be computed and set appropriately. ``` What guidance, exactly, is supposed to be followed? I dug around in RFC 9197 and the best guess I could come up with is ``` The sender MAY calculate the value of the RemainingLen field by computing the number of node data bytes allowed before exceeding the PMTU, given that the PMTU is known to the sender. ``` I'm not very happy with that guess, because it doesn't seem to be responsive to the problem you've posed. What I've quoted from RFC 9197 is a way to avoid exceeding the PMTU, but in the present document you've posed the concern that if you shove too much data into the IOAM header, other extension headers may be ignored. That's not the same as PMTU, which relates to total packet size, not header options size. Whatever it is you're trying to do here, I think you need to be more specific about it. ### Section 5.2, encapsulation? ``` For deployments where the IOAM domain is bounded by hosts, hosts will perform the operation of IOAM data field encapsulation and decapsulation. ``` Do you intend to imply that the hosts at the edge of the domain are sending IP-in-IPv6 encapsulated data? It wouldn't seem to be required; since the hosts are the source/sink of the packets, the problem described in C6 doesn't apply, and the host can directly place the IOAM data in the header. (What would be the "inner header" in an overlay solution.) I suppose it's technically accurate to describe this as an "encapsulation and decapsulation" operation, insofar as any data placed in any header might be said to be encapsulated in that header -- but it's misleading. I think this section needs to be rewritten to make the meaning plain. For example, something like "... hosts will place the IOAM data field directly in the IPv6 header." (You could say "outer IPv6 header" since there's nothing precluding a host from sending tunneled packets for some purpose.) (I notice Éric Vyncke raises a similar concern about the nontraditional use of the term "encapsulation" in his comments.) ### Section 5.3, encapsulation again This one is less misleading, but by analogy to 5.2 I suspect more clarity is required here too. ``` For deployments where the IOAM domain is bounded by network devices, network devices such as routers form the edge of an IOAM domain. Network devices will perform the operation of IOAM data field encapsulation and decapsulation. ``` For example, a more straightforwardly understandable version of the last sentence might be "Network devices will encapsulate in-flight packets in an outer IPv6 header which carries the IOAM data field." ### Section 5.4.1 infeasible requirement ``` Addressing and routing in the IOAM Overlay Network are to be configured so that the IP-in-IPv6 encapsulated packets follow the same path as the original, non-encapsulated packet would have taken. ``` This doesn't seem to be feasible in the face of ECMP. ### Section 5.4.2, wording ``` In this case IOAM can be encapsulated in as an extension header in the tunnel (outer) IPv6 header. ``` Is the "as" unintended in the quoted text? If so, please remove it, if not, I don't understand the meaning. ## NITS ### Section 5.1 "if IOAM is used in in transit devices" s/in in/in/ ### Section 5.4 "This section lists out" Just "lists", no "out". ### 5.4.1 "almost close to zero" I assume you mean either "almost zero" or "close to zero". Because as written, I would parse "almost close to zero" as "not close to zero" which is probably not what you're going for. ## Notes This review is in the ["IETF Comments" Markdown format][ICMF], You can use the [`ietf-comments` tool][ICT] to automatically convert this review into individual GitHub issues. [ICMF]: https://github.com/mnot/ietf-comments/blob/main/format.md [ICT]: https://github.com/mnot/ietf-comments
- [ippm] John Scudder's Discuss on draft-ietf-ippm-… John Scudder via Datatracker
- Re: [ippm] John Scudder's Discuss on draft-ietf-i… Frank Brockners (fbrockne)
- Re: [ippm] John Scudder's Discuss on draft-ietf-i… John Scudder
- Re: [ippm] John Scudder's Discuss on draft-ietf-i… Frank Brockners (fbrockne)
- Re: [ippm] John Scudder's Discuss on draft-ietf-i… Shwetha Bhandari
- Re: [ippm] John Scudder's Discuss on draft-ietf-i… Roman Danyliw