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?

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.

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!

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.


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 to 
https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/<https://urldefense.com/v3/__https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/__;!!NEt6yMaO-gk!Cfbrr6ZaOgH0backvKwwo9W-jNxM5JZuxAPIY97sFKYLeYAJyik34ClQcFp65uGyh8kjs7Ku6A9t0nfYAdFBpA$>
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/<https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-ietf-rtgwg-segment-routing-ti-lfa/__;!!NEt6yMaO-gk!Cfbrr6ZaOgH0backvKwwo9W-jNxM5JZuxAPIY97sFKYLeYAJyik34ClQcFp65uGyh8kjs7Ku6A9t0nfqpCMjug$>



----------------------------------------------------------------------
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"??.


   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/<https://urldefense.com/v3/__https://author-tools.ietf.org/__;!!NEt6yMaO-gk!Cfbrr6ZaOgH0backvKwwo9W-jNxM5JZuxAPIY97sFKYLeYAJyik34ClQcFp65uGyh8kjs7Ku6A9t0nc4d2cvvQ$>

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.

…


### 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]”.

…


### 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,

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)).

…


### 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.


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”.

(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.)



### 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

(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).


### 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.”



### 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.


### Section 11, TI-LFA and SR policies don't mix?


...

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.


### 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.


### 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.

…


## 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<https://urldefense.com/v3/__https://github.com/mnot/ietf-comments/blob/main/format.md__;!!NEt6yMaO-gk!Cfbrr6ZaOgH0backvKwwo9W-jNxM5JZuxAPIY97sFKYLeYAJyik34ClQcFp65uGyh8kjs7Ku6A9t0ndAEcolfQ$>
[ICT]: 
https://github.com/mnot/ietf-comments<https://urldefense.com/v3/__https://github.com/mnot/ietf-comments__;!!NEt6yMaO-gk!Cfbrr6ZaOgH0backvKwwo9W-jNxM5JZuxAPIY97sFKYLeYAJyik34ClQcFp65uGyh8kjs7Ku6A9t0nfFpEkUFg$>





[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