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:adr...@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?
_______________________________________________
spring mailing list
spring@ietf.org
https://www.ietf.org/mailman/listinfo/spring