Sorry for the late reply.

I posted version 16 of the draft to address Gunter's latest comments and address some of your comments. I also moved sections 11 and 12 in version 14 to appendices in version 15. That is why I did not respond to your comments about them

A general comment, IMO words like "impression", "seems like", "appears to", "looks like", "essence",..., etc are subjective and very hard to measure or objectively characterize. For example, I do not think we can get consensus on the "essence" of a document like IP Fast Reroute Framework [RFC5714]. I do not even think we can get consensus what the "essence of a document" means :)

At this point in time, your concern is based what you refer to as "impression". However the document clearly and unambiguously states that what you have "impression" about is not correct.

Last, since it boiled down to linguistics, here is a quotation from Merriam Webster Dictionary at https://www.merriam-webster.com/dictionary/key when used as an adjective

key

2 of 5


   adjective <https://www.merriam-webster.com/dictionary/adjective>

*: *extremely or crucially important
key issues
a key moment in the game
a key member of the staff

Marriam Websteris not using "essential". However both Marriam Webster and www.dictionary.com agree on "important". In all scenarios, the document explicitly says that post-convergence is not mandatory.

For the other comments, I have replies inline at ##Ahmed

On 5/22/24 8:52 AM, John Scudder wrote:
Hi Ahmed,

Thanks for posting version 15, it was helpful.

In the interest of keeping things constructive, I'm top-posting my comments on the DISCUSS points, rather than attempting a point-by-point reply. Other points are replied to in line. Agreed points (or “I disagree but it’s not a blocking issue and I don’t want to drag it out” points) are snipped (“…”) for brevity.

### Whole document, is post-convergence of the essence, or not?
##Ahmed: I do not understand what you mean "of the essence". But if it means mandatory, must-have, constraint,..., etc, then the short answer is "NO"

First and foremost, thank you for clarifying/confirming that the authors/working group intends that following the post-convergence path is a nice-to-have, not a required feature of the solution ("post-convergence is not a constrain or a requiremehnt”). I’m surprised by this, because as I noted in the DISCUSS, Sections 5-8 appear to mandate the use of the post-convergence path, not just suggest it, and for that matter many other parts of the document focus closely on post-convergence. But at least this lets us focus on the point of disagreement.
##Ahmed: A document either "mandates" or "does not mandate". "appear to mandate" is ambiguous.

I would normally request the authors clarify the document at this point. Since you don't agree that the document is internally inconsistent, we are at an impasse. I can do your work for you, suggesting rewrites that would resolve my concerns, but I might not be able to do this as quickly as you could. Also, to remove the impression that post-convergence is required would be a fairly huge rewrite!
##Ahmed: "Clarify" what? The document is very clear. Your words "appear", "essence",..., etc is what is not clear

Finally, although I regret having to get this far down in the weeds, it seems necessary that I cite a definition of the English adjective "key”. Dictionary.com <http://dictionary.com/> defines “key (adjective)” as “essential; central; important”. Other sources give similar definitions. It seems like you are leaning hard into the third and weakest sense, of “important”. The problem is that the first sense of “essential” shouldn't be ignored. Even if I concede for the purpose of discussion that there is room for debate, our goal with our specifications should be maximum clarity, not to squeeze through on a technicality.

I’m open to discussing this on the phone if it would help us move forward.

### Section 10, multiple unrelated failures

You ask,

I do not understand what is your concern?

To pare the point down to the essentials, it's that RFC 5714 is a framework, not a specification, and it doesn't make sense to say implementations should be “in accordance” with it since it has no normative requirements. An implementor looking at RFC 5714 would find nothing to tell them what code to write. A minimal fix would be to delete the sentence in question.

(Also, to the extent a framework places requirements on anyone, it isn't implementers, but rather authors of solutions. So, we might ask if this TI-LFA specification is “in accordance” with RFC 5714. But I think we probably don't want to go there, and the better solution is to delete the sentence and move on.)

So, my proposal here is:

OLD:
   Implementations of TI-LFA should deal with the
   occurrence of multiple unrelated failures in accordance to the IP
   Fast Reroute Framework [RFC5714].

NEW:
   <nothing>

To repeat, the reason for this is that the sentence is not actionable and implies something incorrect about the status and content of RFC 5714.

##Ahmed: removed as you suggested

On May 12, 2024, at 11:02 PM, Ahmed Bashandy <abashandy.i...@gmail.com> wrote:


Thanks for the thorough review


I am in the process of uploading version 15 of the document. So whenever I say "fixed", "changed", "modified",..., etc, I am referring to version 15

See inline comments at #Ahmed


Ahmed


On 4/16/24 1:14 PM, John Scudder via Datatracker wrote:
John Scudder has entered the following ballot position for
draft-ietf-rtgwg-segment-routing-ti-lfa-13: 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 tohttps://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-rtgwg-segment-routing-ti-lfa/



----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

# John Scudder, RTG AD, comments for draft-ietf-rtgwg-segment-routing-ti-lfa-13
CC @jgscudder

Thanks for this document. The technology is valuable, and the underlying
techniques sound. Despite what you might guess from my abundance of comments, I
like this document. I suspect it has suffered from having been edited
repeatedly by the same set of experts, it becomes hard to see it as a new
reader might. So, please accept my comments in the spirit of a new set of eyes
looking over some long-established text.

Although most of my remarks are non-blocking COMMENTs, I am putting two in as
DISCUSS points. Some of my other comments are of a similar nature, but I think
they're less serious for the overall coherence of the document.

## DISCUSS

### Whole document, is post-convergence of the essence, or not?
#Ahmed No. THere are many aspects in the documents that indicates that the whole document is not post convergence, although post-covergence aspect is a very important aspect of the document. In fact the sentence starting with "Although not a Ti-LFA requirement or constraint," that you quoted  in the comment after the next one explicitly mentions that post-convergence is not a constrain or a requiremehnt
The document seems to be arguing with itself about whether following the
post-convergence path is, or is not an essential/required feature. In the
Abstract:

    A key aspect of
    TI-LFA is the FRR path selection approach establishing protection
    over the expected post-convergence paths from the point of local
    repair

It's a *key* aspect! OK! But then, in the Introduction:

    Although not a Ti-LFA requirement or constraint, TI-LFA also brings
    the benefit of the ability to provide a backup path that follows the
    expected post-convergence path
#Ahmed: I do not understand why you think that the work "key" implies "only" or "must".
Wait, it's "key" but "not a requirement or constraint"? Moving on to Section 6,

#Ahmed: Again I do not understand how you came to the conclusion that "key" implies "requirement" or "constraint" even though the document explicitly mentions that post-convergence is neither a requirement nor a contraint

    The repair list encodes the
    explicit post-convergence path to the destination

So it "encodes the explicit post-convergence path". "Encodes", not "might
encode" or "can encode". So the Abstract is right and Section 2 is wrong. But
wait there's more! Later in Section 11,

#Ahmed: I really do not understand why you want to push "must be post convergence" or "only post-convergence" down the throat of this draft.

Does the sentence say "the repair list ****only**** encodes"??.

##Ahmed: I modified the wording to say "and possibly post-convergence,"

    traffic can
    be steered by the PLR onto its expected post-convergence path during
    the FRR phase

So it "can"... which implies "doesn't have to be".

#Ahmed: Of course it implies "doesn't have to be". If there is any sentence in the draft that says that a ti-lfa repair path must be on post convergence, I would be more than happy to re-word it.

There's more, for example, all of Section 5 talks about post-convergence paths,
and there are many more mentions in Section 6 too.
#Ahmed: Of course. It is a "key" attribute of the post convergence path and big advantage of ti-lfa, but not a "must-have", "a constraint", nor a "requirement" of ti-lfa
Given that Sections 5-8 seem to come closest to being the normative ones
(though the document is sadly not very precise in this regard) I'm left with
the impression that the Abstract is right ("key"), and the quoted passages of
Sections 2 and 11 are wrong. In any case, I think this needs to be resolved in
some way.
#Ahmed: IMO is no problem to solve as I mentioned in the replies to your above comments, which are hinged on a the **very big** assumption that "key" implies "constraint", "requirement" and/or "must-have"
### Section 10, multiple unrelated failures

    Implementations of TI-LFA should deal with the
    occurence of multiple unrelated failures in accordance to the IP Fast
    Reroute Framework [RFC5714].

(Nit, you misspelled "occurrence".)
#Ahmed: Fixed in version 15 (coming soon)
Can you explain what you mean by this sentence? I haven't reviewed it carefully
but RFC 5714 is a framework, and I don’t know what it means to be "in
accordance to" it. The only relevant text I was able to find in it was RFC 5714
Section 5.2.6,

    However, it is important that the occurrence of
    a second failure while one failure is undergoing repair should not
    result in a level of service which is significantly worse than that
    which would have been achieved in the absence of any repair strategy.

Putting that together with the quote from your specification, I come up with an
interpretation like "it's important to behave reasonably in the face of
multiple failures, we aren't going tell you how to do it, this other document
we are citing isn't going to tell you how to do it either, it's just going to
tell you that our specification was supposed to cover this, but we didn't.”

#Ahmed: The paragraph starting with "for each destination" near the bottom of page 5 indicates clearly mentioned that this document covers only a single failure. The above sentence refers the implementer to the framework of FRR.

I do not understand what is your concern?

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

## COMMENTS

### General Gripe, Y U no XML?

It looks like you must have uploaded the TXT rendering instead of the XML
source. Whenever it is you upload your next revision, please consider uploading
the XML source instead.
#Ahmed: I used https://author-tools.ietf.org/

OK. Next time you upload a revision, please upload XML instead of TXT.

### Abstract, for want of a hyphen the meaning was lost
I'm not sure the concept of two-connectedness is universally understood enough
that it's suitable for use in an Abstract, so I'd support further editing to
get rid of the graph theory term entirely, but at least this edit makes it
correct.
#Ahmed: 2-connectness is an important requirement for ti-lfa to be successful. I am 100% sure that all network engineers know what "two-connected means, and, if not are quite capable of looking up the term "two-connected graph”

If you are a betting man, I would happily wager stakes that your 100% prediction is not accurate.

Be that as it may, this is only a COMMENT; even though I think avoidance of the graph theory terminology would be preferable for readability, I don't insist, it’s not a big deal.
### Section 2, can't parse this sentence

    By relying on SR this document provides a local repair
    mechanism for standard link-state IGP shortest path capable of
    restoring end-to-end connectivity in the case of a sudden directly
    connected failure of a network component.

I can’t parse this sentence. I am *guessing* that what you mean is something
like,

NEW:
    This document leverages Segment Routing (SR) to provide a local
    repair mechanism for a shortest path computed by a standard
    link-state IGP. The local repair is capable of restoring end-to-end
    connectivity in the case of a failure of a directly connected
    network component.

If this is what you mean, you’re welcome to use this text if you want. If it’s
not what you mean, please explain?
#Ahmed: The text has been changed to be very close to what you are suggesting in version 14. I hope the latest text is satisfactory
Note I removed “sudden” in my NEW text because I’m guessing you don’t mean to
exclude a gradual or a foreseeable failure. A failure is a failure, after all.

The new version looks good, except the comment about “sudden” still stands for the new version which is “abrupt”. Isn’t the technology also applicable in the event of, for example, a planned failure? It seems like the sentence would be just fine without the adjective.
##Ahmed: I removed the word "abrupt"
### Section 2, “primary link”

You mention the “primary link” in a few places here (and nowhere else). What is
the “primary link”? Please clarify or re-word. For example, maybe you mean “the
link whose failure is detected”.
#Ahmed: I added definitions to the terms "primary link" and "primary interface" to the terminology section

Thanks! Since the uses in Section 2 precede the definitions, maybe insert a forward reference, as in “primary link [Section 2.1]”.

##Ahmed: added a reference pointing back to section 2.1
### Section 6, terminology is inconsistent and unclear
I can understand NodeSID(R1) well enough even though you haven't supplied a
definition, it’s the node SID for router R1. But what is “Node_SID(P)”? P isn’t
a router, it’s a set of routers, or a space. Please clarify, whether with a
definition or otherwise. Probably your clarification will fix both this and the
previous point.
#Ahmed:The sentence where "Node_SID(P)" says right before using the term "Node-SID(P)" says "from P to Q when these nodes". Pay special attention to "these nodes". AFAIK a "these" refers to last nouns and the last nouns are "P" and "Q". In addition I added definitions to "P node" and "Q node" to the terminology section based on your comment

Thanks for the improvements, they are good but don’t eliminate the issue. The underlying problem is that although you’ve defined “a P node” (which is helpful, thanks), “P” as you’ve used it here, without qualification, can refer in this document to either “a P node” or “P-space”, and either one potentially makes sense in this context, but only one is right.

There are various ways you could fix this. One fairly straightforward one goes like this,
##Ahmed using "a node P" is indefinite and hence in may be understood as "any node" and not a "P-node". So I emphasized the membership to P and Q spaces using the phrases "a P node in P(S,X)" and "a Q node in Q(D,X)", respectively

OLD:
   The TI-LFA repair path is found by intersecting P(S,X) and Q(D,X)
   with the post-convergence path to D and computing the explicit SR-
   based path EP(P, Q) from P to Q when these nodes are not adjacent
   along the post convergence path.  The TI-LFA repair list is expressed
   generally as (Node-SID(P), EP(P, Q)).

NEW:
   The TI-LFA repair path is found by intersecting P(S,X) and Q(D,X)
   with the post-convergence path to D and computing the explicit SR-
   based path EP(P, Q) from a node P to a node Q when these nodes are not adjacent
   along the post-convergence path.  The TI-LFA repair list is expressed
   generally as (Node-SID(P), EP(P, Q)).

…
##Ahmed: I used the wording as you suggested

### Sections 6.1, 6.2, 6.3, SHOULD NOT use SHOULD
What work are the SHOULDs doing here? Considering that in other parts of the
document you leave the computation of the repair path up to the implementation,
why are you mandating it here? And, if you’re mandating it, why not mandate it
all the way with a MUST?

#Ahmed: Every time the terms "should" or "should not" is/are used, it is clear what these terms are referring to. If there is a place where the terms "should" or "should not" are not clean, please point these places out so that I can correct them.

Second, we are not mandating anything in these sections because, as you mentioned, computation are part of the implementation.  Hence we did not use "MUST" or "MUST NOT"


I think you’ve misunderstood the use of RFC 2119 keywords. SHOULD is a weak mandate, it’s not just a casual suggestion. This is evident from the title of RFC 2119: "Key words for use in RFCs to Indicate Requirement Levels”. It’s about *requirements*. From RFC 2119:

3. SHOULD   This word, or the adjective "RECOMMENDED", mean that there
   may exist valid reasons in particular circumstances to ignore a
   particular item, but the full implications must be understood and
   carefully weighed before choosing a different course.

It’s essentially a MUST with an exception. If you can’t articulate the exception, the two things you should ask yourself are “is this actually a MUST?” and “is this actually a ’should’?” If you don’t want to specify requirements, you shouldn’t use RFC 2119 keywords here.
##Ahmed: I don't know the basis of your interpretation of "SHOULD" as "weak must" (IMO "week" and "must"  is an oxymoron, but that is a different story) or that an author has to articulate exceptions to the SHOULD. The term "SHOULD" is used all over the RFCs and many of them do not articulate any exception. Let me give examples in one of the reference RFCs:  The 2nd sentence in section 6.1 in RFC7916 is followed by a list that an LFA implementation "SHOULD"..., but it does not provide any indication of exceptions in which an implementation may deviate from the "SHOULD". The 4th bullet in the same section and RFC says prefix protection SHOULD have higher priority than interface protection then explains what it means by higher priority in the subsequent sentence. However it does not provide any explanations for exceptions to the "SHOULD".

It seems to me that if you don’t want to mandate implementation, it would be
sensible to take the RFC 2119 language out altogether. If you do want to
mandate implementation, I don’t see why you wouldn’t make this a MUST. If you
really do want it to be SHOULD, Please explain your reasoning.
#Ahmed: Disagree. There are certain properties that should exist in an implementation. However the implementation itself is out of scope.

Saying “disagree” isn’t an explanation [1]. You can give details of properties just fine using plain old lowercase “should”, etc. Once you reach for the Requirement Levels keywords you’re invoking the specific semantics defined by BCP 14, and you say you don’t want that. The all-caps keywords are not merely a way of providing emphasis, even though people often use ALL CAPS that way in other contexts — BCP 14 makes it very clear they have specified meaning in documents that cite it (which includes your document!), and that meaning is about “requirements”.
##Ahmed: In the sentence right after "Disagree", I explained why I am using "SHOULD". Besides there are RFCs, such as section 6.1 in RFC7916 that uses SHOULD with implementations. Second, again you're assuming "SHOULD" and "MUST" have the same interpretation, which is not what is defined in RFC2119 and RFC8174 (BCP 14) nor the way these two terms are used in many RFCs, at least in the examples that I gave

(I was expecting you to say that you used SHOULD the way RFC 2119 expects, which I think of as a kind of “MUST…UNLESS” pair (obviously “UNLESS” isn’t a real 2119 keyword), and to talk about what some reasonable exception cases might be.)\
##Ahmed: Again interpretation "SHOULD" as a "MUST". that contradicts the text in RFC2119 and the way it is used in many other RFCs

### Section 7, primary outgoing interface

The existence of a "primary outgoing interface" seems to imply the existence of
a secondary outgoing interface, tertiary outgoing interface, etc. Please define
primary outgoing interface, or if this isn't an important distinction, consider
whether you can simplify to just say "outgoing interface".
#Ahmed: I added definitions to the terms "primary link" and "primary interface" to the terminology section

Thanks! Consider either updating your definition to something like,

OLD:
   Primary Interface: It is one of the outgoing interface towards a
   destination according the IGP link-state protocol

NEW:
   Primary Interface, Primary Outgoing Interface: One of the outgoing interfaces towards a
   destination according to the IGP link-state protocol
##Ahmed: Used the suggested text (thanks)

(I made grammatical fixes while I was there)

Or, drop “outgoing” from the quoted text.

…
### Section 8.2 and others, description of SRv6 behaviors

RFC 8754 describes forwarding behaviors using a kind of line-numbered
pseudocode, and later documents that modify forwarding behaviors specify
updates to the pseudocode. (Examples: RFC 8986,
draft-ietf-spring-srv6-srh-compression-15,
draft-ietf-rtgwg-srv6-egress-protection-16,
draft-ietf-spring-sr-redundancy-protection-03,
draft-ietf-spring-srv6-path-segment-07)

You don’t do this, you use a descriptive approach instead. I'm ok with this in
isolation, but I’d like to know if you made an affirmative decision to diverge
from the usual SRv6 way of doing things, and if so, why, and if the SPRING
working group specifically considered this and is OK with it.
#Ahmed: When it comes to implementation specifics, we explicitly avoid to mandate anything. Pseudo code may appear to be  a mandate


But yet, the rest of the SRv6 document set (which also presumably doesn’t want to mandate implementation details) uses pseudocode. I’m not saying I love that approach, but the question stands as to whether there is some reason for the divergence other than author preferences (which is what I’m inferring so far).
##Ahmed: Again not sure about the concern. Is it mandatory or recommended for an RFC to use the "approach(es)" of its reference RFCs?

### Section 8.2, shorter than what?

    In such case, there is no need for a preceding
    Prefix SID and the resulting repair list is likely shorter.

Shorter than what? This is the first place in this document the string “Prefix
SID” occurs, so I’m confused.

#Ahmed: shorter than preceding the adjacency SID with a prefix SID.

For the term prefix-SID, it is defined in the SR architecture RFC [RFC8402]. I added a reference to RFC8402 beside the 1st mention of prefix-SID


My point wasn’t that I don’t know what a Prefix SID is (though defining it is a good idea) but rather that mentioning “a preceding Prefix SID” without anyone having suggested there should be one, to begin with, raises more questions than answers.

It wouldn’t hurt to spend a few more words to spell out what you’re trying to convey here. "Brevity is the soul of wit" is a good maxim but so is “everything should be made as simple as possible, but not simpler.”
##Ahmed: Agreed. Changed the wording to "there is no need for preceding an adjacency SID with a Prefix-SID"

### Section 11, limit the implementation of local FRR policies

    Based on this assumption, in order to facilitate the operation of
    FRR, and limit the implementation of local FRR policies

Do you mean "limit the need for implementation of local FRR policies"? (And you
could drop “implementation of” for that matter.)

I didn’t see a response to this question.
##Ahmed: This whole section has been moved to an appendix. That is why I did not respond

### Section 11, TI-LFA and SR policies don't mix?
##Ahmed: The section has been moved to an appendix. That is why I did not respond

...
Also, although I appreciate that you provided some rudimentary parameterization
of the topologies in Table 1, I think it would be helpful to at least say what
time period the topologies reflect —
draft-francois-rtgwg-segment-routing-ti-lfa-00 dates to summer of 2015; are we
talking about the topologies that were in vogue in 2015? Those of 2023? Etc.

This comment wasn’t responded to.
##Ahmed: The whole section moved to an appendix. That is why I did not respond

### Section 12, granularity wut

       We do not cover the
       case for 2 SIDs (Section 6.3) separately because there was no
       granularity in the result.

I don’t understand what this means. Can you rephrase it? Generally, I find the
words “granular”. “granularity”, and related have almost zero descriptive
power. :-(

This comment wasn’t responded to.
##Ahmed: Also this section was moved to an appendix

### Section 12, "2 or more" or "2", "3", and no more?

In your description of the table, you say,

The convention that we use is as follows

    *  0 SIDs: the calculated repair path starts with a directly
...
    *  1 SIDs: the repair node is a PQ node, in which case only 1 SID is
...
    *  2 or more SIDs: The repair path consists of 2 or more SIDs as
       described in Section 6.3 and Section 6.4.  We do not cover the
       case for 2 SIDs (Section 6.3) separately
...

But the table headers show:

    +-------------+------------+------------+------------+------------+
    |   Network   |    0 SIDs  |    1 SID   |   2 SIDs   |   3 SIDs   |
    +-------------+------------+------------+------------+------------+

I.e. the table headers don’t show “2 or more” they show 2, and 3, broken out
distinctly, and no "or more" case. Seems like these need to be reconciled.

This comment wasn’t responded to.
#Ahmed: Moved to Appendix
## 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


[1] https://en.wikipedia.org/wiki/Argument_Clinic
_______________________________________________
rtgwg mailing list -- rtgwg@ietf.org
To unsubscribe send an email to rtgwg-le...@ietf.org

Reply via email to