Re: [spring] A review of draft-ietf-spring-srv6-srh-compression-08

Francois Clad <fclad.ietf@gmail.com> Tue, 09 January 2024 08:25 UTC

Return-Path: <fclad.ietf@gmail.com>
X-Original-To: spring@ietfa.amsl.com
Delivered-To: spring@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A35DCC06F681 for <spring@ietfa.amsl.com>; Tue, 9 Jan 2024 00:25:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.104
X-Spam-Level:
X-Spam-Status: No, score=-2.104 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 vbpg0-CUg8fy for <spring@ietfa.amsl.com>; Tue, 9 Jan 2024 00:25:16 -0800 (PST)
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D1202C1CAF26 for <spring@ietf.org>; Tue, 9 Jan 2024 00:25:15 -0800 (PST)
Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-50e7abe4be4so3268177e87.2 for <spring@ietf.org>; Tue, 09 Jan 2024 00:25:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704788713; x=1705393513; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wZxC3hQmpALaXXpezho76F0RpBmZbH02Z0qAjZCUlGk=; b=XvSbDU4pkGEwkhRj+DgQiXVSg04NyPuMxT9Az/wcnUj2gaKdDA3ZO5e5G9ZS43TzuG dNY2k7D/irD6AqoR4OzFQQvJs7FdrT9mPVlwhOB4S3DWFmtWCphiPC6ddsgaL278jhga Z8W1x3bfhqUiiMRI1Fu7VUOWIcPfFtSzJHvT7ySM+LUOEW7L/zWsq215+0NHS+gKwRxa lDZGIqP8M9GTXrqeU0YPwVEEYPyBnyQF5B1tU6irLUomXobyNXkCVR/azSn9qs3GlnsD /GQ1MiTdXYW7tuevHazTKOhCecWL3rxKq3uRcx4bHblhdR46TsmEv2kECMShMWw3Qz/f 02rw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704788713; x=1705393513; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wZxC3hQmpALaXXpezho76F0RpBmZbH02Z0qAjZCUlGk=; b=cKXND9yKGdcr3Ji9q4csWHtG1PbP2OQBuFwUQw2bfTRlPAAD5X5ORLeaizm0ZdT9IF au6ZYk/eTmhCp3KY3wA4oUIoMWGxVULmHu2nZl46uvnvDjBj+W3SgwehhBsEgxWC6GF4 bgfm04i/JdANNlJYgPMemkTm9q557kaxLMRC/Lb44KioY4v5+kSFj51O2RLe6pPxFcoO tc/XD8TZ325KJsJYJ5JnAGCSeu/zl2DtOHWkA1MeYEwkposaBZ4/70Dqp47EudnXGvEI ChvIWVeELErwVkFSZGBXQcso9axlrLGZaE2goo2ZANbtCH0iWB5Yh244iInhPn4LTFvY nGxg==
X-Gm-Message-State: AOJu0YwznEpw2eykfFEwf8Kcm0NpEdIoZ4IhoYYFTf2E+E9AXthtii9a eUyFLTvqj9N2mI0jmXPFfuSh6iwlnUlQrl3sgBBjlVce/w==
X-Google-Smtp-Source: AGHT+IHnuL/aZu/aCOQOlPyAcQEQREZ8H9sO50EkV7YflNH+NbECUJs2HuDBIa9kHTIGPX2c4pJw7B3zqI23yABuLp4=
X-Received: by 2002:a05:6512:130f:b0:50e:5222:7435 with SMTP id x15-20020a056512130f00b0050e52227435mr2572172lfu.74.1704788713058; Tue, 09 Jan 2024 00:25:13 -0800 (PST)
Received: from 1064022179695 named unknown by gmailapi.google.com with HTTPREST; Tue, 9 Jan 2024 08:25:12 +0000
Received: from 1064022179695 named unknown by gmailapi.google.com with HTTPREST; Tue, 9 Jan 2024 08:25:09 +0000
MIME-Version: 1.0 (Mimestream 1.2.2)
References: <05b901d9ec90$935d6ec0$ba184c40$@olddog.co.uk> <CAHT6gR9fYcO-UooaksnSCOwF+nx_3MTjGUHw3hP4tW2P5v66vg@mail.gmail.com> <0c3d01da18be$7dbfb6e0$793f24a0$@olddog.co.uk> <CAHT6gR-65zfF9rjCr8=rShpYHX5WMm729dE=jB2TNxFvw=7G=A@mail.gmail.com> <016b01da3b3c$a9742a50$fc5c7ef0$@olddog.co.uk>
In-Reply-To: <016b01da3b3c$a9742a50$fc5c7ef0$@olddog.co.uk>
From: Francois Clad <fclad.ietf@gmail.com>
Date: Tue, 09 Jan 2024 08:25:12 +0000
Message-ID: <CAHT6gR_vGJrGOOPsKGtXEOpfg9ptvZjad0z6v4rAuaZOQJVN5w@mail.gmail.com>
To: adrian@olddog.co.uk
Cc: SPRING WG List <spring@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000a8b803060e7f0db3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/spring/gpW5j3OLKHpDU2mGVbkTCvUkYlA>
Subject: Re: [spring] A review of draft-ietf-spring-srv6-srh-compression-08
X-BeenThere: spring@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Source Packet Routing in NetworkinG \(SPRING\)" <spring.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spring>, <mailto:spring-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spring/>
List-Post: <mailto:spring@ietf.org>
List-Help: <mailto:spring-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spring>, <mailto:spring-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 09 Jan 2024 08:25:20 -0000

 Hi Adrian,

Best wishes to you too.

Many thanks again for your most valuable feedback and suggestions on this
document.

Cheers,
Francois

On Dec 30, 2023 at 17:24:26, Adrian Farrel <adrian@olddog.co.uk> wrote:

> Hi Francois and best wishes for the New Year.
>
> Tl;dr This is good work. Thank you for the effort.
>
> Individual responses in line.
>
> Adrian
>
> Thank you for this follow-up.
>
>
> Indeed, we were still working on some of your comments when revision -09
>
> was pushed. Those remaining comments should now be addressed in revision
>
> -10 (
> https://datatracker.ietf.org/doc/draft-ietf-spring-srv6-srh-compression/10/
> ).
>
>
> Please see our reply to each comment below.
>
>
> Thanks,
>
> Francois (on behalf of the C-SID co-authors)
>
>
> >>> 0. Please get into the habit of running idnits before posting a new
>
> >>>   revision.
>
> >>>
>
> >>>   == Missing Reference: 'RFC8200' is mentioned on line 996, but not
>
> >>>   defined
>
> >>
>
> >> RFC 8200 is only mentioned in a quoted text from RFC 8754. We fixed
>
> >> the quote format in revision -09, so that idnits should no longer
> complain
>
> >> about this.
>
> >
>
> > Hmmm. Idnits continues to object.
>
> > I don’t have a strong opinion, but inserting an Informative Reference
> would clean it up.
>
>
> We added a reference to RFC 8200 in revision -10 for another purpose, so
> that nit
>
> should be gone for good this time.
>
>
> Perfect
>
> >>> 13. Section 2 has:
>
> >>>
>
> >>> |   A compressed Segment List encoding may also contain
>
> >>> |   any number of uncompressed SID sequences.
>
> >>>
>
> >>>   Yeah, and zero is any number. But I think you say this more
>
> >>>   gracefully.
>
> >>
>
> >> This zero case was not intended to be covered by "any number" but
>
> >> by the use of the modal "may": "A compressed Segment List encoding
>
> >> **may** also contain \[...\]." That said, please let us know if you have
>
> >> any suggestion to improve this phrasing.
>
> >
>
> > Well, not sure. If you meant to exclude zero, then perhaps
>
> > | A compressed Segment List encoding contains one or more
>
> > | uncompressed SID sequences.
>
> > If you meant to allow zero, then
>
> > | A compressed Segment List encoding contains zero, one, or more
>
> > | uncompressed SID sequences.
>
>
> We rephrased this in revision -10 per your suggestion.
>
>
> | *  Compressed segment list encoding: A segment list encoding that
> |    reduces the packet header length thanks to one or more C-SID
> |    sequences.  A compressed segment list encoding also contains zero,
> |    one, or more uncompressed SID sequences.
>
> Nice
>
> >>> 16. Section 3
>
> >>>
>
> >>> |  When a sequence of consecutive SIDs in a Segment List shares a
> common
>
> >>> |  Locator-Block, a compressed Segment-List encoding can optimize the
>
> >>> |  packet header length by avoiding the repetition of the Locator-Block
>
> >>> |  and trailing bits with each individual SID.
>
> >>>
>
> >>>   I think you are saying two separate things in this paragraph, but the
>
> >>>   text is not very clear:
>
> >>>   - a compressed Segment-List encoding can be used
>
> >>>   - the act of compressing the Segment-List might reduce the packet
>
> >>>     header length
>
> >>
>
> >> We rephrased this sentence in revision -09.
>
> >>
>
> >> | The compressed segment list encoding decreases the packet header
>
> >> | length by avoiding the repetition of the same Locator-Block and
>
> >> | reducing the use of padding bits.
>
> >
>
> > This is much better.
>
> > I think you are asserting that the compressed list always reduces the
>
> > packet header length, but (of course) there is an edge condition where
>
> > it makes no difference (compress one SID into a C-SID).
>
>
> You're right. We adjusted the wording in revision -10 to state the intend
>
> rather the result.
>
>
> | The compressed segment list encoding seeks to decrease the packet
> | header length by avoiding the repetition of the same Locator-Block
> | and reducing the use of padding bits.
>
> Good
>
> >>> 26. Section 4.1
>
> >>>
>
> >>> |  An SR segment endpoint node instantiating a SID with the NEXT-C-SID
>
> >>> |  flavor MUST accept any argument value for that SID.
>
> >>>
>
> >>>   It is clear that the endpoint knows the flavor of the SIDs it has
>
> >>>   initiated, but it is not clear how the flavor of the SID is known
>
> >>>   by anyone else in order that they can compress it or use an
>
> >>>   argument value.
>
> >>
>
> >> The SID flavor is advertised in the control plane as part of the
> "behavior"
>
> >> identifier (see RFC 9252, RFC 9352, https://www.iana.org/assignments/
>
> >> segment-routing/segment-routing.xhtml#srv6-endpoint-behaviors).
>
> >
>
> > If you believe this is clear then, that’s fine. Otherwise, just add a
> few words.
>
>
> We added some text at the beginning of section 6 in revision -10 to clarify
>
> this aspect.
>
>
> | An SR source node may learn from a control plane protocol (see
> | Section 8) or local configuration the SIDs that it can use in a
> | segment list, along with their respective SR segment endpoint
> | behavior, flavors, structure, and any other relevant attribute (e.g.,
> | the set of L3 adjacencies associated with an End.X SID).
>
> Looks good.
>
> >>> 40. Note that, per #39, there is a gnarly error condition. If a not
>
> >>>  REPLACE-C-SID LNF finds its way into a C-SID sequence and it is not
>
> >>>  at the end of the sequence, that is OK because the rest of the
>
> >>>  sequence will be skipped, except...
>
> >>>
>
> >>>  If the not-REPLACE-C-SID is in one C-SID container and there follows
>
> >>>  another (continuation) C-SID container, then stuff will go badly
>
> >>>  wrong! The packet will either be misrouted or dropped at the next
>
> >>>  node. Dropping is not so bad, misrouting is embarrassing and to be
>
> >>>  avoided. In both cases, network diagnostics are needed.
>
> >>>
>
> >>>  In general, it may be argued that this is an encoding error. Whoever,
>
> >>>  built the SID list made a mess. But there is the case where the node
>
> >>>  that initiated the SID has made a mistake, and there may be a transit
>
> >>>  case where a SID is moving between flavors.
>
> >>
>
> >> The problem that you describe can happen with any SRv6 SID. If the
>
> >> SR source node places an incorrect SID in the segment list, or if the
>
> >> SR segment endpoint node advertises something different than
>
> >> what it installed, then issues can happen. Classic network diagnostic
>
> >> tools like ping or traceroute can be used to troubleshoot such issues.
>
> >
>
> > I don’t want to make a big thing of this, and you are, of course, right
> that
>
> > any SID list could be messed up with “interesting” results.
>
> > However, I think this document introduces another way to mix things up
>
> > because the SID list could be built correctly, but compressed
> incorrectly.
>
> > I appreciate that ping and traceroute are good diagnostic tools, and they
>
> > can help isolate the point in the compressed SID list where the error is
>
> > found.
>
> >
>
> > Maybe it is not necessary to say any more, although I always like to call
>
> > out potential problems because they help people identify what they
>
> > should worry about in an implementation and deployment.
>
>
> The compression is really a part of building the SRv6 packet. The source
>
> node is responsible for finding our the right SIDs to use, compressing
> them,
>
> and generating the appropriate packet header. It may outsource the first
>
> operation (e.g., when the segment list is obtained via config, PCEP, or
> BGP),
>
> but remains in charge of the last two and may mess them up.
>
>
> Yes, that's the point I was trying to drive at. The SID list is built by
> one component and it gets it right (or wrong in the way we are familiar
> with). Another component is responsible for SID compression and could mess
> that up in its own way.
>
> From an externally visible perspective, there is no difference whether the
>
> bug resides in the compression logic or in the header generation. The same
>
> erroneous packet can be produced with the same results in the network.
>
>
> Right. If we treat everything as a black box, wrong is just wrong.
> Again, this is not a biggie, but I just think that this document adds more
> complexity (it's good complexity!) and so more opportunity for errors.
>
> >> 62. I had to read Section 8 a few times.
>
> >>
>
> >>  The End.XPS is a new SID behavior defined in this document. While you
>
> >>  then go on to define how it may be given a C-SID flavor, the End.XPS
>
> >>  SID is not anything to do with compression: it is a new concept and I
>
> >>  don't see why you have "hidden" it in this document. Indeed, it
>
> >>  doesn't seem to be mentioned in the Implementation Status section or
>
> >>  in the IANA section, so perhaps it is "ambitious" to include it in
>
> >>  this document.
>
> >>
>
> >>  While you say that the "End.XPS behavior described in this section is
>
> >>  OPTIONAL" I think that is a bit confusing. It implies that the
>
> >>  described processing is optional. I think you could use "The use of
>
> >>  the End.XPS SID behavior is OPTIONAL." But you do go on to write...
>
> >>
>
> >> |  This section defines an optional solution and SID behavior allowing
>
> >> |  for the use of different Locator-Blocks between routing domains.
>
> >>
>
> >>  So how do you handle the scenario described if you don't use this
>
> >>  optional solution and an End.XPS SID behavior?
>
> >
>
> > You don’t seem to have answered this one (now Section 7).
>
>
> Yes. We did not forget your question, but were still working on the text
>
> update for this section.
>
>
> We reworked this section 7 in revision -10, making it more clear why the
>
> solution is useful and how it works.
>
>
> If this solution is not available, the source node may need to use a
> different
>
> C-SID sequence for each of the traversed domains, ending the previous
>
> sequence before the domain boundary and starting a new one for the next
>
> domain (this is also mentionned in the new text).
>
>
> Section 7 in -10 is much better. Thanks.
>
> >>> 66. Section 9
>
> >>>
>
> >>> |  The SR segment endpoint node MUST set the SID argument bits to 0
> when
>
> >>> |  advertising a locally instantiated SID of this document in the
>
> >>> |  routing protocol (e.g., IS-IS [RFC9352], OSPF
>
> >>> |  [I-D.ietf-lsr-ospfv3-srv6-extensions], or BGP-LS
>
> >>> |  [I-D.ietf-idr-bgpls-srv6-ext]).
>
> >>>
>
> >>>  b. What happens if a node receives an advertisement of a SID with one
>
> >>>     of these flavors but does not support the advertised flavor? That
>
> >>>     may be answered with a simple "handled as described in..."
>
> >>
>
> >> If a node does not support the SIDs of this document, then it won't
> follow
>
> >> whatever this document says. It is not clear how adding text here could
> help.
>
> >
>
> > It’s true, you can’t say anything normative about how an implementation
>
> > that does not support this specification must behave.
>
> > But you can add information for the reader to explain how this is
> backward
>
> > compatible by noting (with reference) the expected behavior or a node
> that
>
> > receives an advertisement of a SID with SID type that is unknown or
>
> > unsupported.
>
>
> We added text following your suggestion at the end of section 8 in
> revision -10
>
> of the document.
>
>
> | When a node that does not support this specification receives an
> | advertisement of a SID of this document, it handles it as described
> | in the corresponding control plane specification (e.g., Sections 7.2,
> | 8.1, and 8.2 of [RFC9352], Sections 8, 9.1, and 9.2 of
> | [I-D.ietf-lsr-ospfv3-srv6-extensions], and Section 3.1 of [RFC9252]).
>
> Nice
>
> >>>  c. What happens if a node receives an advertisement of a SID with one
>
> >>>     of these flavors but the argument bits are non-zero? The answer is
>
> >>>     is not to be found in other documents because those documents don't
>
> >>>     describe those flavors (but you might have "MUST treat the received
>
> >>>     advertisement as malformed/unsupported and process it as described
>
> >>>     in Section x.y of RFC abcd."
>
> >>
>
> >> This is described in section 6. For example,
>
> >>
>
> >> | A SID with the NEXT-C-SID flavor is compressible if its structure is
>
> >> | known to the SR source node and its Argument value is 0.
>
> >>
>
> >> In this case the source node would not compress the SID.
>
> >
>
> > Ah, interesting. So this would be a valid advertisement and a valid SID
> that
>
> > can be used as a normal SID. It just can’t be compressed using the
>
> > mechanisms defined in this document.
>
>
> This is correct.
>
>
> OK. Clear.
>
> >>> 67. Section 9
>
> >>>
>
> >>> |  Signaling the SRv6 SID Structure is REQUIRED for all the SIDs
>
> >>> |  introduced in this document.
>
> >>>
>
> >>>   b. What does a receiver do if it gets an advertisement of one of a
>
> >>>      SID with one of these SID flavors but without an indication of the
>
> >>>      SRv6 SID Structure? Again, possibly, "MUST treat the received
>
> >>>      advertisement as malformed/unsupported and process it as described
>
> >>>      in Section x.y of RFC abcd."
>
> >>
>
> >> This is described in section 6 (see response to comment 66.c. above).
>
> >
>
> > And a similar response. You are saying that this is a valid
> advertisement
>
> > of a SID that can be used as normal, but can’t be compressed using the
>
> > mechanisms defined in this document.
>
>
> It wouldn't be a valid advertisement in the sense that the node advertising
>
> the SID did not follow the "REQUIRED", but the SID remains usable by the
>
> source node.
>
>
> Let's not quibble about the meaning of "valid advertisement" or we will
> get in a mess 😊
> The advertisement indicates a SID that can be used, so we're good.
>
> >>> 70. Section 9
>
> >>>
>
> >>>   For a segment list computed by a controller and signaled to an SR
>
> >>>   source node (e.g., via BGP [I-D.ietf-idr-segment-routing-te-policy]
>
> >>>   or PCEP [I-D.ietf-pce-segment-routing-ipv6]), the controller provides
>
> >>>   the ordered segment list comprising the uncompressed SIDs to the SR
>
> >>>   source node.  The SR source node may then compress the segment list
>
> >>>   as described in Section 7.
>
> >>>
>
> >>>  I asked a question in #53 about whether the compression could be done
>
> >>>  by a controller. You seem to be saying that it cannot, but I don't see
>
> >>>  why that is the case. Compression is non-trivial processing, and there
>
> >>>  could be implementation benefits from placing it in a controller.
>
> >>>
>
> >>>  However, it is possible that your thinking is that the source node
>
> >>>  would like to hold an uncompressed SID list for diagnostic purposes.
>
> >>>
>
> >>>  In any case, how does a source node process if it receives a SID list
>
> >>>  that has already been compresses? In some cases, how would it even
>
> >>>  know!
>
> >>>
>
> >>>  Actually, there is an implicit architectural requirement here that
>
> >>>  sets the control as determining the path as a SID list, but the source
>
> >>>  node as responsible for listening to the SID advertisements to know
>
> >>>  what flavors (and SID structures) have been advertised in order to
>
> >>>  process the compression. Why do you force this separation? Why can't
>
> >>>  the controller listen to all the advertisements?
>
> >>
>
> >> When a controller computes the segment list, it listens to all
>
> >> advertisements. It needs to know the meaning of each of the segments
>
> >> that it places in the segment list.
>
> >
>
> > I agree with this statement.
>
> >
>
> >> We rephrased this paragraph in revision -09 to clarify that the
> controller
>
> >> passes the behavior/structure information to the source node along with
>
> >> each SID.
>
> >>
>
> >>| For a segment list computed by a controller and signaled to an SR
>
> >>| source node (e.g., via BGP [I-D.ietf-idr-segment-routing-te-policy]
>
> >>| or PCEP [I-D.ietf-pce-segment-routing-ipv6]), the controller provides
>
> >>| the ordered segment list comprising the uncompressed SIDs, with their
>
> >>| respective behavior and structure, to the SR source node. The SR
>
> >>| source node may then compress the segment list as described in
>
> >>| Section 6.
>
> >
>
> > OK, this is clear, and reading the cited drafts indicates that the “SID
> list”
>
> > they facilitate the controller providing is a list of SIDs and not the
> SID list
>
> > that is placed in the SRH (without compression).
>
> >
>
> > I still think it is sad that there is no facility for the controller to
> perform
>
> > compression (since it has the time and the CPU), but, well, I won’t force
>
> > the point.
>
>
> We do not want to prevent a controller from performing compression in
>
> the future, but would like to limit the scope of this document to the case
>
> where the source node performs this operation.
>
>
> >> 74. I wonder what the plans are for the draft referenced from Section 11
>
> >>  I-D.clad-spring-srv6-srh-compression-illus appears to have expired
>
> >>  some long time ago and has only had nit changes since it was first
>
> >>  posted in October 2021. Is the content even consistent with this draft
>
> >>  which has constantly evolved over the last two years?
>
> >>
>
> >>  Clearly, that draft is not normative and only supplies illustrations,
>
> >>  but if it is deemed helpful to have illustrations, something needs to
>
> >>  change. Alternatively, perhaps Section 11 should be cut.
>
> >
>
> > You didn’t answer this and I don’t see any change in the document.
>
> > Also, I see no progress on the referenced draft.
>
> > I think it is time to cut this section – this document stands on its own.
>
>
> We removed this section and reference in revision -10.
>
>
> Ack
>
> >>> 75. I think Section 12 could really use some more details.
>
> >>>  For example:
>
> >>>  - Do you expect deployments to restrict a single SR-domain to use at
>
> >>>    most one flavor of C-SID?
>
> >>>    - If not, it would be useful to have a section in the document
>
> >>>      making a clear description of the processing when both flavors
>
> >>>      are present. I think it "just works" but a little more text
>
> >>>      describing how/why this is the case would help. And compare with
>
> >>>      Section 4 where there is a recommendation to limit to a single
>
> >>>      flavor in a single domain - certainly, the "ease of operation"
>
> >>>      mentioned in that section deserves to be called out here.
>
> >>>  - Do you make a distinction between SR-domain and AS/routing domain
>
> >>>    as described in Section 8?
>
> >>
>
> >> We reworked the text in section 3 and 8 to clearly differentiate the SR
>
> >> domain (RFC 8402) and the routing domain.
>
> >>
>
> >> In section 4,
>
> >>
>
> >>| The SIDs of both flavors can co-exist in the same SR domain, on the
>
> >>| same SR segment endpoint node, and even in the same segment list.
>
> >>| However, it is RECOMMENDED, for ease of operation, that a single
>
> >>| compressed encoding flavor be used in a given routing domain. In a
>
> >>| multi-domain deployment, different flavors MAY be used in different
>
> >>| routing domains of the SR domain.
>
> >>
>
> >> In section 8 (section 7 in revision -09),
>
> >>
>
> >>| Some SRv6 traffic may need to cross multiple routing domains, such as
>
> >>| different Autonomous Systems (ASes) or different routing areas within
>
> >>| an SR domain. Different routing domains may use different addressing
>
> >>| schema and Locator-Blocks.
>
> >
>
> > These are good changes. But Section (now) 11 remains looking very thin.
>
> > If you are reluctant to add substance to the section maybe we should cut
> it.
>
>
> We merged this section into the security considerations in revision -10.
>
>
> A good solution.
>
> >>> 76. You might add a note to the top of Section 13 to remind the RFC
>
> >>>  Editor to clean up the many references from this section when it is
>
> >>>  deleted.
>
> >>
>
> >> This sentence is an XML2RFC boilerplate (`<section
> removeInRFC="true">`).
>
> >> Can it be edited?
>
> >>
>
> > You can write whatever you like in addition to the auto-generated text.
>
> > My suggestion is to add something like.
>
> >
>
> > RFC-Editor: Please clean up the references cited by this section before
> publication.
>
>
> We added this text in revision -10.
>
>
> Fine.
>
> >> 77. I found Section 14 to be very sparse and so a little unbelievable.
>
> >>  Surely Section 8 introduces some Security concerns? Should you
>
> >>  have an Informative reference to draft-li-spring-srv6-security-
>
> >>  consideration or some similar ongoing work to address the continued
>
> >>  concerns about SR security.
>
> >
>
> > I don’t see an answer or any changes on this point. In order to get
> through
>
> > today’s IESG, I think you are going to have to say more than is written
> here.
>
> >
>
> > It is not a weakness to call out security vulnerabilities/concerns
> because
>
> > it helps people know exactly what precautions to take when deploying.
>
>
> Similar to #62 above, we were still working on the text update for this
> section.
>
>
> We reworked this section in revision -10.
>
>
> This is better. Thanks. We'll see what the IESG does with it.
>
> >> 78. Is Section 15 (IANA) missing registration for End.XPS with and
>
> >>  without flavors?
>
> >
>
> > I don’t see an answer or any changes on this point. Surely if the section
>
> > defining End.XPS is to remain in this document, there must also be
>
> > corresponding IANA work.
>
>
> Fixed in revision -10. We will request the codepoint allocation from IANA
>
> and update the table as soon as we get that.
>
>
> This looks right.
> I was momentarily concerned that there is no request of vanilla End.PS and
> End.XPS SIDs, but that is aligned with Sections 7.1 and 7.2.
>
> > 81. Hoping that Appendix A will be resolved
>
> >
>
> > Are these issues, in fact, resolved and just listed here for information?
>
> > If so, then I think it is time to remove the section or add a note that
> the
>
> > issues have been resolved. If not, then we need a plan to resolve them!
>
>
> This text indeed seems outdated. We will work with the chairs to figure
>
> out what to do with it.
>
>
> The issues related to this draft are tracked on GitHub.
>
>
> OK. I would certainly recommend having all existing issue in git hub
> resolved and this section removed before passing the draft to the AD.
>
> >>> 82. I wonder whether you need some clarification in the document to
>
> >>>  describe if you can have multiple C-SID flavors of the same SID
>
> >>>  advertised and, if so, how a path selection node might decide which
>
> >>>  flavor (including the non-CSID flavor) to use at any hop as it
>
> >>>  builds the path.
>
> >>
>
> >> It seems generally better for a source node to select a C-SID flavor SID
>
> >> over an equivalent non-C-SID flavor SID, given that the former enables
>
> >> compression.
>
> >
>
> > That’s a good thing to say. Want to add it to the document? It’s either
> plain
>
> > text, or a recommendation. And it is a very few words.
>
> >
>
> >> However, a choice between one C-SID flavor or the other is unlikely to
>
> >> present itself given the recommendation to avoid mixing C-SID flavors
>
> >> within a routing domain (section 4).
>
> >
>
> > Weeeeell, it is “only” a recommendation. And, indeed, the document
>
> > goes to some lengths (possibly to address the issue of “is this one or
>
> > two solutions presented in a single document?”) to show that you can
>
> > mix compression flavours in the same SID list. That means that
>
> > advertising both flavours of C-SID is both possible and acceptable. So
>
> > you can’t gloss over answering what happens when both flavours are
>
> > present: how do you choose?
>
>
> We added some guidance on this aspect in section 6.2 in revision -10,
>
> although the general mechanism to come up with an uncompressed
>
> segment list remains out of scope.
>
>
> | It is out of the scope of this document to describe the mechanism
> | through which an uncompressed segment list is derived.  As a general
> | guidance for implementation or future specification, such a mechanism
> | should aim to select the combination of SIDs that would result in the
> | shortest compressed segment list.  For example, by selecting a C-SID
> | flavor SID over an equivalent non-C-SID flavor SID or by consistently
> | selecting SIDs of the same C-SID flavor within each routing domain.
>
> That helps. Thanks.
>
> > 83. It would be really good to include a section on future compatibility.
>
> >
>
> >  a. What consideration should be given to future SID endpoint behaviors
>
> >     in terms of making them compressible using the flavors here?
>
>
> We added this new section in revision -10.
>
>
> | 11.  Applicability to other SR Segment Endpoint Behaviors
> |
> |    Future documents may extend the applicability of the NEXT-C-SID and
> |    REPLACE-C-SID flavors to other SR segment endpoint behaviors.
> |
> |    For an SR segment endpoint behavior that can be used before the last
> |    position of a segment list, a C-SID flavor is defined by reproducing
> |    the same logic as described in Section 4.1 and Section 4.2 of this
> |    document to determine the next segment in the segment list.
>
> Nice
>
> >  b. Are there any comments the document should include about inventing
>
> >     future C-SID flavors
>
>
> No comment. :)
>
>
> Well, section 11 says it all now, so good.
>
>
> === END
>
>
>
>
>
>
> On Nov 16, 2023 at 19:55:38, Adrian Farrel <mailto:adrian@olddog.co.uk>
> wrote:
> Hi again Francois,
>
> Thanks for your patience while I got back from Prague.
>
> I have looked through the diffs and respond in line below.
>
> This is good work, and captures very nearly everything. I snipped out
> every point of agreement.
>
> Best,
> Adrian
>
> > 0. Please get into the habit of running idnits before posting a new
>
> >   revision.
>
> >
>
> >   == Missing Reference: 'RFC8200' is mentioned on line 996, but not
>
> >   defined
>
>
> RFC 8200 is only mentioned in a quoted text from RFC 8754. We fixed
>
> the quote format in revision -09, so that idnits should no longer complain
>
> about this.
>
>
> Hmmm. Idnits continues to object.
> I don’t have a strong opinion, but inserting an Informative Reference
> would clean it up.
>
> > 13. Section 2 has:
>
> >
>
> > |   A compressed Segment List encoding may also contain
>
> > |   any number of uncompressed SID sequences.
>
> >
>
> >   Yeah, and zero is any number. But I think you say this more
>
> >   gracefully.
>
>
> This zero case was not intended to be covered by "any number" but
>
> by the use of the modal "may": "A compressed Segment List encoding
>
> **may** also contain \[...\]." That said, please let us know if you have
>
> any suggestion to improve this phrasing.
>
>
> Well, not sure. If you meant to exclude zero, then perhaps
> | A compressed Segment List encoding contains one or more
> | uncompressed SID sequences.
> If you meant to allow zero, then
> | A compressed Segment List encoding contains zero, one, or more
> | uncompressed SID sequences.
>
> > 16. Section 3
>
> >
>
> > |  When a sequence of consecutive SIDs in a Segment List shares a common
>
> > |  Locator-Block, a compressed Segment-List encoding can optimize the
>
> > |  packet header length by avoiding the repetition of the Locator-Block
>
> > |  and trailing bits with each individual SID.
>
> >
>
> >   I think you are saying two separate things in this paragraph, but the
>
> >   text is not very clear:
>
> >   - a compressed Segment-List encoding can be used
>
> >   - the act of compressing the Segment-List might reduce the packet
>
> >     header length
>
>
> We rephrased this sentence in revision -09.
>
>
> | The compressed segment list encoding decreases the packet header
>
> | length by avoiding the repetition of the same Locator-Block and
>
> | reducing the use of padding bits.
>
>
> This is much better.
> I think you are asserting that the compressed list always reduces the
> packet header length, but (of course) there is an edge condition where it
> makes no difference (compress one SID into a C-SID).
>
> > 26. Section 4.1
>
> >
>
> > |  An SR segment endpoint node instantiating a SID with the NEXT-C-SID
>
> > |  flavor MUST accept any argument value for that SID.
>
> >
>
> >   It is clear that the endpoint knows the flavor of the SIDs it has
>
> >   initiated, but it is not clear how the flavor of the SID is known
>
> >   by anyone else in order that they can compress it or use an
>
> >   argument value.
>
>
> The SID flavor is advertised in the control plane as part of the "behavior"
>
> identifier (see RFC 9252, RFC 9352,
> https://www.iana.org/assignments/segment-routing/segment-routing.xhtml#srv6-endpoint-behaviors
> ).
>
>
> If you believe this is clear then, that’s fine. Otherwise, just add a few
> words.
>
> > 40. Note that, per #39, there is a gnarly error condition. If a not
>
> >  REPLACE-C-SID LNF finds its way into a C-SID sequence and it is not
>
> >  at the end of the sequence, that is OK because the rest of the
>
> >  sequence will be skipped, except...
>
> >
>
> >  If the not-REPLACE-C-SID is in one C-SID container and there follows
>
> >  another (continuation) C-SID container, then stuff will go badly
>
> >  wrong! The packet will either be misrouted or dropped at the next
>
> >  node. Dropping is not so bad, misrouting is embarrassing and to be
>
> >  avoided. In both cases, network diagnostics are needed.
>
> >
>
> >  In general, it may be argued that this is an encoding error. Whoever,
>
> >  built the SID list made a mess. But there is the case where the node
>
> >  that initiated the SID has made a mistake, and there may be a transit
>
> >  case where a SID is moving between flavors.
>
>
> The problem that you describe can happen with any SRv6 SID. If the
>
> SR source node places an incorrect SID in the segment list, or if the
>
> SR segment endpoint node advertises something different than
>
> what it installed, then issues can happen. Classic network diagnostic
>
> tools like ping or traceroute can be used to troubleshoot such issues.
>
>
> I don’t want to make a big thing of this, and you are, of course, right
> that any SID list could be messed up with “interesting” results.
> However, I think this document introduces another way to mix things up
> because the SID list could be built correctly, but compressed incorrectly.
> I appreciate that ping and traceroute are good diagnostic tools, and they
> can help isolate the point in the compressed SID list where the error is
> found.
>
> Maybe it is not necessary to say any more, although I always like to call
> out potential problems because they help people identify what they should
> worry about in an implementation and deployment.
>
> 62. I had to read Section 8 a few times.
>
>
>  The End.XPS is a new SID behavior defined in this document. While you
>
>  then go on to define how it may be given a C-SID flavor, the End.XPS
>
>  SID is not anything to do with compression: it is a new concept and I
>
>  don't see why you have "hidden" it in this document. Indeed, it
>
>  doesn't seem to be mentioned in the Implementation Status section or
>
>  in the IANA section, so perhaps it is "ambitious" to include it in
>
>  this document.
>
>
>  While you say that the "End.XPS behavior described in this section is
>
>  OPTIONAL" I think that is a bit confusing. It implies that the
>
>  described processing is optional. I think you could use "The use of
>
>  the End.XPS SID behavior is OPTIONAL." But you do go on to write...
>
>
> |  This section defines an optional solution and SID behavior allowing
>
> |  for the use of different Locator-Blocks between routing domains.
>
>
>  So how do you handle the scenario described if you don't use this
>
>  optional solution and an End.XPS SID behavior?
>
>
> You don’t seem to have answered this one (now Section 7).
>
> > 66. Section 9
>
> >
>
> > |  The SR segment endpoint node MUST set the SID argument bits to 0 when
>
> > |  advertising a locally instantiated SID of this document in the
>
> > |  routing protocol (e.g., IS-IS [RFC9352], OSPF
>
> > |  [I-D.ietf-lsr-ospfv3-srv6-extensions], or BGP-LS
>
> > |  [I-D.ietf-idr-bgpls-srv6-ext]).
>
>
> >  b. What happens if a node receives an advertisement of a SID with one
>
> >     of these flavors but does not support the advertised flavor? That
>
> >     may be answered with a simple "handled as described in..."
>
>
> If a node does not support the SIDs of this document, then it won't follow
>
> whatever this document says. It is not clear how adding text here could
> help.
>
>
> It’s true, you can’t say anything normative about how an implementation
> that does not support this specification must behave.
> But you can add information for the reader to explain how this is backward
> compatible by noting (with reference) the expected behavior or a node that
> receives an advertisement of a SID with SID type that is unknown or
> unsupported.
>
> >  c. What happens if a node receives an advertisement of a SID with one
>
> >     of these flavors but the argument bits are non-zero? The answer is
>
> >     is not to be found in other documents because those documents don't
>
> >     describe those flavors (but you might have "MUST treat the received
>
> >     advertisement as malformed/unsupported and process it as described
>
> >     in Section x.y of RFC abcd."
>
>
> This is described in section 6. For example,
>
>
> | A SID with the NEXT-C-SID flavor is compressible if its structure is
>
> | known to the SR source node and its Argument value is 0.
>
>
> In this case the source node would not compress the SID.
>
>
> Ah, interesting. So this would be a valid advertisement and a valid SID
> that can be used as a normal SID. It just can’t be compressed using the
> mechanisms defined in this document.
>
> > 67. Section 9
>
> >
>
> > |  Signaling the SRv6 SID Structure is REQUIRED for all the SIDs
>
> > |  introduced in this document.
>
> >
>
> >   b. What does a receiver do if it gets an advertisement of one of a
>
> >      SID with one of these SID flavors but without an indication of the
>
> >      SRv6 SID Structure? Again, possibly, "MUST treat the received
>
> >      advertisement as malformed/unsupported and process it as described
>
> >      in Section x.y of RFC abcd."
>
>
> This is described in section 6 (see response to comment 66.c. above).
>
>
> And a similar response. You are saying that this is a valid advertisement
> of a SID that can be used as normal, but can’t be compressed using the
> mechanisms defined in this document.
>
> > 70. Section 9
>
> >
>
> >   For a segment list computed by a controller and signaled to an SR
>
> >   source node (e.g., via BGP [I-D.ietf-idr-segment-routing-te-policy]
>
> >   or PCEP [I-D.ietf-pce-segment-routing-ipv6]), the controller provides
>
> >   the ordered segment list comprising the uncompressed SIDs to the SR
>
> >   source node.  The SR source node may then compress the segment list
>
> >   as described in Section 7.
>
> >
>
> >  I asked a question in #53 about whether the compression could be done
>
> >  by a controller. You seem to be saying that it cannot, but I don't see
>
> >  why that is the case. Compression is non-trivial processing, and there
>
> >  could be implementation benefits from placing it in a controller.
>
> >
>
> >  However, it is possible that your thinking is that the source node
>
> >  would like to hold an uncompressed SID list for diagnostic purposes.
>
> >
>
> >  In any case, how does a source node process if it receives a SID list
>
> >  that has already been compresses? In some cases, how would it even
>
> >  know!
>
> >
>
> >  Actually, there is an implicit architectural requirement here that
>
> >  sets the control as determining the path as a SID list, but the source
>
> >  node as responsible for listening to the SID advertisements to know
>
> >  what flavors (and SID structures) have been advertised in order to
>
> >  process the compression. Why do you force this separation? Why can't
>
> >  the controller listen to all the advertisements?
>
>
> When a controller computes the segment list, it listens to all
>
> advertisements. It needs to know the meaning of each of the segments
>
> that it places in the segment list.
>
>
> I agree with this statement.
>
> We rephrased this paragraph in revision -09 to clarify that the controller
>
> passes the behavior/structure information to the source node along with
>
> each SID.
>
>
> | For a segment list computed by a controller and signaled to an SR
>
> | source node (e.g., via BGP [I-D.ietf-idr-segment-routing-te-policy]
>
> | or PCEP [I-D.ietf-pce-segment-routing-ipv6]), the controller provides
>
> | the ordered segment list comprising the uncompressed SIDs, with their
>
> | respective behavior and structure, to the SR source node. The SR
>
> | source node may then compress the segment list as described in
>
> | Section 6.
>
>
> OK, this is clear, and reading the cited drafts indicates that the “SID
> list” they facilitate the controller providing is a list of SIDs and not
> the SID list that is placed in the SRH (without compression).
>
> I still think it is sad that there is no facility for the controller to
> perform compression (since it has the time and the CPU), but, well, I won’t
> force the point.
>
> 74. I wonder what the plans are for the draft referenced from Section 11
>
>  I-D.clad-spring-srv6-srh-compression-illus appears to have expired
>
>  some long time ago and has only had nit changes since it was first
>
>  posted in October 2021. Is the content even consistent with this draft
>
>  which has constantly evolved over the last two years?
>
>
>  Clearly, that draft is not normative and only supplies illustrations,
>
>  but if it is deemed helpful to have illustrations, something needs to
>
>  change. Alternatively, perhaps Section 11 should be cut.
>
>
> You didn’t answer this and I don’t see any change in the document.
> Also, I see no progress on the referenced draft.
> I think it is time to cut this section – this document stands on its own.
>
> > 75. I think Section 12 could really use some more details.
>
> >  For example:
>
> >  - Do you expect deployments to restrict a single SR-domain to use at
>
> >    most one flavor of C-SID?
>
> >    - If not, it would be useful to have a section in the document
>
> >      making a clear description of the processing when both flavors
>
> >      are present. I think it "just works" but a little more text
>
> >      describing how/why this is the case would help. And compare with
>
> >      Section 4 where there is a recommendation to limit to a single
>
> >      flavor in a single domain - certainly, the "ease of operation"
>
> >      mentioned in that section deserves to be called out here.
>
> >  - Do you make a distinction between SR-domain and AS/routing domain
>
> >    as described in Section 8?
>
>
> We reworked the text in section 3 and 8 to clearly differentiate the SR
>
> domain (RFC 8402) and the routing domain.
>
>
> In section 4,
>
>
> | The SIDs of both flavors can co-exist in the same SR domain, on the
>
> | same SR segment endpoint node, and even in the same segment list.
>
> | However, it is RECOMMENDED, for ease of operation, that a single
>
> | compressed encoding flavor be used in a given routing domain. In a
>
> | multi-domain deployment, different flavors MAY be used in different
>
> | routing domains of the SR domain.
>
>
> In section 8 (section 7 in revision -09),
>
>
> | Some SRv6 traffic may need to cross multiple routing domains, such as
>
> | different Autonomous Systems (ASes) or different routing areas within
>
> | an SR domain. Different routing domains may use different addressing
>
> | schema and Locator-Blocks.
>
>
> These are good changes. But Section (now) 11 remains looking very thin.
> If you are reluctant to add substance to the section maybe we should cut
> it.
>
> > 76. You might add a note to the top of Section 13 to remind the RFC
>
> >  Editor to clean up the many references from this section when it is
>
> >  deleted.
>
>
> This sentence is an XML2RFC boilerplate (`<section removeInRFC="true">`).
>
> Can it be edited?
>
>
> You can write whatever you like in addition to the auto-generated text.
> My suggestion is to add something like.
>
> RFC-Editor: Please clean up the references cited by this section before
> publication.
>
> 77. I found Section 14 to be very sparse and so a little unbelievable.
>
>  Surely Section 8 introduces some Security concerns? Should you
>
>  have an Informative reference to draft-li-spring-srv6-security-
>
>  consideration or some similar ongoing work to address the continued
>
>  concerns about SR security.
>
>
> I don’t see an answer or any changes on this point. In order to get
> through today’s IESG, I think you are going to have to say more than is
> written here.
>
> It is not a weakness to call out security vulnerabilities/concerns because
> it helps people know exactly what precautions to take when deploying.
>
> 78. Is Section 15 (IANA) missing registration for End.XPS with and
>
>  without flavors?
>
>
> I don’t see an answer or any changes on this point. Surely if the section
> defining End.XPS is to remain in this document, there must also been
> corresponding IANA work.
>
> 81. Hoping that Appendix A will be resolved
>
>
> Are these issues, in fact, resolved and just listed here for information?
> If so, then I think it is time to remove the section or add a note that the
> issues have been resolved. If not, then we need a plan to resolve them!
>
> > 82. I wonder whether you need some clarification in the document to
>
> >  describe if you can have multiple C-SID flavors of the same SID
>
> >  advertised and, if so, how a path selection node might decide which
>
> >  flavor (including the non-CSID flavor) to use at any hop as it
>
> >  builds the path.
>
>
> It seems generally better for a source node to select a C-SID flavor SID
>
> over an equivalent non-C-SID flavor SID, given that the former enables
>
> compression.
>
>
> That’s a good thing to say. Want to add it to the document? It’s either
> plain text, or a recommendation. And it is a very few words.
>
> However, a choice between one C-SID flavor or the other is unlikely to
>
> present itself given the recommendation to avoid mixing C-SID flavors
>
> within a routing domain (section 4).
>
>
> Weeeeell, it is “only” a recommendation. And, indeed, the document goes to
> some lengths (possibly to address the issue of “is this one or two
> solutions presented in a single document?”) to show that you can mix
> compression flavours in the same SID list. That means that advertising both
> flavours of C-SID is both possible and acceptable. So you can’t gloss over
> answering what happens when both flavours are present: how do you choose?
>
> 83. It would be really good to include a section on future compatibility.
>
>
>  a. What consideration should be given to future SID endpoint behaviors
>
>     in terms of making them compressible using the flavors here?
>
>
>  b. Are there any comments the document should include about inventing
>
>     future C-SID flavors
>
>
> Nothing for this?
>
>