Hi Alvaro

Many thanks for these comments.  I have read them, but need to have a 
discussion with my co-authors before I can answer them all.  I hope to get back 
to you with a full reply early next week.

Many thanks
Jon


-----Original Message-----
From: Alvaro Retana <aretana.i...@gmail.com> 
Sent: Wednesday, 5 December, 2018 3:25 PM
To: The IESG <i...@ietf.org>
Cc: draft-ietf-pce-segment-rout...@ietf.org; Dhruv Dhody 
<dhruv.i...@gmail.com>; pce-cha...@ietf.org; pce@ietf.org
Subject: Alvaro Retana's Discuss on draft-ietf-pce-segment-routing-14: (with 
DISCUSS and COMMENT)

Alvaro Retana has entered the following ballot position for
draft-ietf-pce-segment-routing-14: 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/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-pce-segment-routing/



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

I am balloting DISCUSS because I think that there are some technical and 
clarity issues that makes understanding, and potentially implementing this 
document hard.  I also want to discuss the "backwards compatibility" and the 
use of TLVs as sub-TLVs in PCEP as introduced in this document.

(1) MSD Definition.  The MSD may be learned from a variety of sources, 
including the SR-PCE-CAPABILITY sub-TLV defined in this document.  It is 
important then for the MSD to be defined consistently everywhere.  Please use 
the BMI-MSD definition from rfc8491.

(2) Ability to signal the MSD per link, not just per node.  Clearly the 
calculation of paths through specific links (using an Adjacency SID, for
example) would require that information (if different/lower from what the node 
may support).

Note that §6.1 seems to assume that the MSD will normally be advertised through 
different mechanisms, and it uses that to work around the fact that there's no 
link-specific information: "Furthermore, whenever a PCE learns the MSD for a 
link via different means, it MUST use that value for that link regardless of 
the MSD value exchanged in the SR-PCE-CAPABILITY sub-TLV."  However, the text 
doesn't mandate the IGP/BGP-LS information to be available to the PCE.  IOW, as 
written, the specification can't guarantee the proper calculation of paths that 
require the PCE to consider link MSDs.

(3) Extensibility to advertise other MSD-Types. [This point is not 
DISCUSS-worthy, but I'm including it here since I'm already talking about the 
MSD.]

rfc8491 (aka I-D.ietf-isis-segment-routing-msd) and 
I-D.ietf-ospf-segment-routing-msd encode the MSD advertisement as a pair:
MSD-Type and MSD-Value, with the expectation that "new MSD-Types will be 
defined to signal additional capabilities, e.g., entropy labels, SIDs that can 
be imposed through recirculation, or SIDs associated with another data plane 
such as IPv6."  IOW, the encoding is reusable with other dataplanes.  I peeked 
into draft-negi-pce-segment-routing-ipv6 [*] and i don't see anything in there 
that couldn't be signaled using the SR-PCE-CAPABILITY sub-TLV defined here (+ 
the MSD_Value).  I think this is important for consistency.

[*] I realize that draft-negi-pce-segment-routing-ipv6 is not even a WG 
document, but it is the only potential reference I found to what a different 
dataplane might look line.

(4) §6.2.2 (Interpreting the SR-ERO):

  o  If the subobjects contain NAI only, then the PCC first converts
     each NAI into a SID index value by looking it up in its local
     database, and then proceeds as above.

I believe that this step in the interpretation of the SR-ERO is not properly 
specified.

Which "local database" are you referring to?  §6.2.2.1 mentions the SR-DB (when 
talking about errors)...but the specification should be clear about which 
database and what the specific procedure is.

For example, what is the specific process that the PCC needs to follow to 
convert a Node ID/IP address to the SID/MPLS label?  What if the SR-DB doesn't 
contain an SID associated to the specific Node ID/IP address?  How should the 
router react to that?  This case is not covered in the Error Handling section
(6.2.2.1) either.

A pointer to the SR-DB (as defined in I-D.ietf-spring-segment-routing-policy)
is not enough because it is composed of optional information (according to the 
description in §3 (Segment Routing Database)).  This document should be 
specific about what information must be contained in the SR-DB for the 
conversion to be successful.

The requirement of the information to be contained in the SR-DB makes 
I-D.ietf-spring-segment-routing-policy a Normative reference.

(5) §7 (Backward Compatibility)  "Some implementations, which are compliant 
with an earlier version of this specification..." <sigh>

I understand that there may be implementations that are non-compliant with this 
specification out in the field.  However, why is this document making 
accommodations for them?  Not only are these implementations not compliant with 
this document, but are also non compliant with rfc8408, which implies the use 
of a new sub-TLV per PST.

I didn't find a discussion on the mailing list related to this issue. 
Specifying alternate behavior to accommodate non-compliant implementations is 
not the best way to define new functionality.  If the support for those old 
implementations was an imperative then the new functionality should have been 
fully specified to seamlessly interoperate with what is already deployed.  The 
current result is two ways to do the same thing...

While I would prefer for this "backwards compatibility" not to be built into 
the specification, I am looking for discussion in the WG and a better 
justification that the current one (which can be reduced to "non-compliant 
implementations exist, so we need to fit them in here somehow").

(6) sub-TLV Space for the PATH-SETUP-TYPE-CAPABILITY TLV

rfc8408 failed to set up a sub-TLV registry for the PATH-SETUP-TYPE-CAPABILITY 
TLV.  The bigger issue is that it also doesn't say that other PCE TLVs can be 
used as sub-TLVs (nor does it prohibit that).  The Type for the 
SR-PCE-CAPABILITY sub-TLV is allocated from the PCEP TLV Type Indicators 
registry, making it a TLV.  I also couldn't find any mention of sub-TLVs in 
rfc5440, or the potential intent to have a single space from which both TLVs 
and sub-TLVs could come.

The question is: are all TLVs (defined in the PCEP TLV Type Indicators
registry) able to be used as sub-TLVs?  This question is general, but also 
specific to the PATH-SETUP-TYPE-CAPABILITY TLV.  At a minimum, it should be 
made clear which can be used with the PATH-SETUP-TYPE-CAPABILITY TLV -- because 
this is the first document to define a new PST and sub-TLV, it seems 
appropriate to Update rfc8408 here...but rfc5440 may also need an Update.


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

These comments don't raise to the level of a DISCUSS, but I would like to also 
see them addressed.

(1) [nit] "Both node segments and adjacency segments can be used for SR Traffic 
Engineering (SR-TE)." I find the use of SR-TE (instead of simply SR) gratuitous 
and potentially confusing; it introduces a new term which doesn't represent new 
functionality as compared to exiting segment routing documents.

(2) "This document is relevant to the MPLS forwarding plane only."  I believe 
that I-D.ietf-spring-segment-routing-mpls should be a Normative reference.

(3) In §3, the first two paragraphs have redundant text:

"In an SR network, the ingress node of an SR path prepends an SR header to all 
outgoing packets.  The SR header consists of a list of SIDs (or MPLS labels in 
the context of this document)....In SR networks, an ingress node of an SR path 
prepends an SR header to all outgoing packets.  The SR header consists of a 
list of SIDs (or MPLS labels in the context of this document)."

(4) §3: "...the PCEP messages (e.g., Path Computation Request, Path Computation 
Reply, Path Computation Report, Path Computation Update, Path Computation 
Initiate, etc.,) MUST be formatted according to [RFC5440], [RFC8231], 
[RFC8281], and any other applicable PCEP specifications."  I'm not sure what 
behavior is being specified here -- IOW, why do we need Normative language? 
This document defines the extensions referred to here, so the format should 
already be compliant with the RFCs mentioned.  s/MUST/must

(5) Following up from the last point...  §4 seems to address that MUST by 
saying that there's no requirement for "changes in the format of the PCReq and 
PCRep messages specified in [RFC5440], PCInitiate message specified in 
[RFC8281], and PCRpt and PCUpd messages specified in [RFC8231]."  I find this 
section unnecessary.

(6) [nit] §5.3.1 defines the "L Flag"...  §6.1, for example, uses "L flag" to 
refer to the L bit (§5.1.1).  Please try to be consistent to avoid 
confusion...or even better, use a different letter.

(7) §5.1.1 says that a "PCEP speaker SHOULD indicate its support of the 
function described in this document by sending a PATH-SETUP-TYPE-CAPABILITY 
TLV...[and]...MUST also include the SR-PCE-CAPABILITY sub-TLV"...but §6.1 then 
says that "if a PCE receives an SR-PCE-CAPABILITY sub-TLV with the L flag and 
MSD both set to zero then it MUST assume that the PCC is not capable of
imposing a SID stack of any depth and hence is not SR-TE capable".   Wait, the
sub-TLV is included because the TLV says that it supports SR.  Isn't this then 
a contradiction??  What good is it to signal support if the node is "not 
capable of imposing a SID stack of any depth"?  Shouldn't this combination 
result in an error message?

(8) §6.2.2  "According to [I-D.ietf-spring-segment-routing-policy], each SR-ERO 
subobject in the sequence identifies a segment that the traffic will be 
directed to, in the order given."

The SR-ERO subobject is defined in this document, so its interpretation is of 
obvious importance.  Because of that, I think that the text above makes the 
reference Normative.

However, I looked in I-D.ietf-spring-segment-routing-policy and I find no 
mention of the SR-ERO, ERO, or sequence.  The only related text (that I could
find) is the generic one about SR being an "ordered list of segments"...so I 
think that the reference to I-D.ietf-spring-segment-routing-policy is out of 
place.

Suggestion: replace the reference to I-D.ietf-spring-segment-routing-policy
with a reference to rfc8402.

(9) §6.2.2 "If the subobjects contain SID index values, then the PCC converts 
them into the corresponding MPLS labels by following the procedure defined in 
[I-D.ietf-spring-segment-routing-mpls]."  I think this statement requires 
I-D.ietf-spring-segment-routing-mpls to be a Normative reference.

(10) §6.2.2  Only the third procedure ends with "...and then directs the packet 
to the segment identified by the first SID", which is the obvious next step, 
but the text is only talking about the conversion.  Either make sure that it is 
clear that all the processes continue with sending, or take this piece of text 
out.  Be consistent.

(11) §5.5 "...the PCE MUST minimize the SID depth of the computed path."  If 
the B bit is not set (meaning not bound), what behavior is this phrase 
standardizing?  Given that we're not standardizing the computation done by the 
PCE, how can it be enforced?

(12) §8.1 (Controlling the Path Setup Type)  I find this section out of place 
in this document.  rfc8408 is the document that specifies the support for 
multiple path setup methods...while this document adds the SR-related type.  If 
kept, then I think this document should be tagged to Update rfc8408.


_______________________________________________
Pce mailing list
Pce@ietf.org
https://www.ietf.org/mailman/listinfo/pce

Reply via email to