Subject: Re: [Pce] Alvaro Retana's Discuss on draft-ietf-pce-segment-routing-14: (with DISCUSS and COMMENT)

From: Jonathan Hardwick <[email-masked]>
Date: Fri, 18 Jan 2019 16:45:49 +0000

Hi Alvaro

I'm sorry that it has taken longer than I thought to reply to your comments!  Please find our replies below.  I will post an updated version of the document as soon as I can.

Many thanks
Jon

<snip>

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

[Jon] Happy to change this.  This draft actually pre-dates RFC 8491, but now the definition has moved there, we can point to it.

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

[Jon] In many deployments we anticipate that link MSDs are homogeneous.  In those cases, link state routing might not distribute per-link MSDs (e.g. routers might not even support RFC 8491).  In such cases, the per-node MSD on the PCEP session is sufficient.  All the draft says is that MSD information available from link state routing, if any, must take priority over that defined on the PCEP session.  I don't see a problem with that.

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

[Jon] This document (and the SR-PCE-CAPABILITY) is scoped to MPLS only.  I believe that draft-negi defines its own SRV6-PCE-CAPABILITY TLV and I don't see any reference to MSD in it, but if a new MSD type is needed for other dataplane types, I think it's expected that a new SR capability TLV will be defined to convey it.  I don't expect to generalize the SR-PCE-CAPABILITY TLV.

Note that the MSD in the SR-PCE-CAPABILITY is a BMI-MSD. Although RFC 8491 defines a generic MSD container, the MSD in this document is specifically a BMI-MSD.

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

[Jon] You are right, this should be more explicit.  How about this.

NEW
  If the subobjects contain NAI only, the PCC first converts
  each NAI into a SID index value and then proceeds as above.
  To convert an NAI to a SID index, the PCC looks for a fully-specified
  prefix or adjacency matching the fields in the NAI.  If the PCC finds
  a matching prefix/adjacency, and the matching prefix/adjacency has a SID associated
  with it, then the PCC uses that SID.  If the PCC cannot find a
  matching prefix/adjacency, or if the matching prefix/adjacency has no SID associated
  with it, the PCC behaves as specified in section 6.2.2.1.
END NEW

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.

[Jon] This is specified in 6.2.2.1.  First bullet - if the prefix is found in the SR-DB but has no SID, send error TBD3.  Second bullet - if the NAI is not found in the SR-DB, send error TBD4.

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.

[Jon] Hopefully the new text proposed above will do that.

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

[Jon] Rather than add an extra normative dependency, we would prefer to remove the dependency on the definition of the SR-DB and instead explicitly define in our document what information is to searched.

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

[Jon] Yes, this section was painful to write, and was done after an on-list consultation with the working group.  I can provide some references.  The relevant thread starts here.
https://www.ietf.org/mail-archive/web/pce/current/msg05397.html

We got firm feedback from one vendor that the old behaviour needed to be accommodated.
https://www.ietf.org/mail-archive/web/pce/current/msg05415.html

There were good reasons for us changing the spec at a late stage, but this unfortunately left us needing to make a special case of the SR-CAPABILITY-TLV or else break a fielded implementation.  So we collectively held our noses and did it.  Hopefully, this plus the thread above gives you the background to the decision.

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

[Jon] I don't think there is an intent that any TLV can be used as a sub-TLV.  This argues for making a new registry for the sub-TLVs of the PATH-SETUP-TYPE-CAPABILITY TLV (although we will have a vestigial code point allocation for SR-PCE-CAPABILITY as a top-level TLV because of section 7).  I think therefore that this draft should create the registry and update RFC 8408.

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

[Jon] OK

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

[Jon] OK

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

[Jon] Oops - I will delete the duplicate text from the 2nd para.

(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

[Jon] OK: "...the PCEP messages [...] are formatted according to..."

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

[Jon] Agreed - will remove it.

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

[Jon] Yes, unfortunate that they have the same name.  I'll clarify it.

(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?

[Jon] I can't think of any legitimate reason to signal that, so yes, this should probably be an error case instead.  I'll update the draft.

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

[Jon] On reflection I'm not sure we need any reference for this fairly straightforward statement.  I would amend it to:

NEW
   The SR-ERO contains a sequence of subobjects.  Each SR-ERO subobject in
   the sequence identifies a segment that the traffic will be directed
   to, in the order given.  That is, the first subobject identifies the
   first segment the traffic will be directed to, the second 
   subobject represents the second segment, and so on.
END NEW

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

[Jon] OK

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

[Jon] I'll remove it from the final bullet and then add this after the bullets: "For all cases above, after the PCC has imposed the label stack on the packet, it sends the packet to the segment identified by the first SID. "

(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?

[Jon] I think Martin pointed this out too.  I think the normative language is inappropriate here.  Instead: "... the PCE minimizes the SID depth..."  The MUST can be used only in conjunction with B=1 since only then can the PCE's behaviour 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.

[Jon] I agree that most of this text is generic and could have been written in RFC 8408.  I think we have already agreed to update RFC 8408, above, so there is presumably nothing more to do here.

---

From: Alvaro Retana <[email-masked]>
Date: Fri, 25 Jan 2019 08:28:53 -0800

On January 18, 2019 at 11:45:52 AM, Jonathan Hardwick (
[email-masked]) wrote:

Jon:

Hi!

I'm sorry that it has taken longer than I thought to reply to your
comments! Please find our replies below. I will post an updated version of
the document as soon as I can.

Many thanks
Jon

<snip>

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.

[Jon] Happy to change this. This draft actually pre-dates RFC 8491, but now
the definition has moved there, we can point to it.

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

[Jon] In many deployments we anticipate that link MSDs are homogeneous. In
those cases, link state routing might not distribute per-link MSDs (e.g.
routers might not even support RFC 8491). In such cases, the per-node MSD
on the PCEP session is sufficient. All the draft says is that MSD
information available from link state routing, if any, must take priority
over that defined on the PCEP session. I don't see a problem with that.

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

[Jon] This document (and the SR-PCE-CAPABILITY) is scoped to MPLS only. I
believe that draft-negi defines its own SRV6-PCE-CAPABILITY TLV and I don't
see any reference to MSD in it, but if a new MSD type is needed for other
dataplane types, I think it's expected that a new SR capability TLV will be
defined to convey it. I don't expect to generalize the SR-PCE-CAPABILITY
TLV.

Note that the MSD in the SR-PCE-CAPABILITY is a BMI-MSD. Although RFC 8491
defines a generic MSD container, the MSD in this document is specifically a
BMI-MSD.

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.

NEW
If the subobjects contain NAI only, the PCC first converts
each NAI into a SID index value and then proceeds as above.
To convert an NAI to a SID index, the PCC looks for a fully-specified
prefix or adjacency matching the fields in the NAI. If the PCC finds
a matching prefix/adjacency, and the matching prefix/adjacency has a SID
associated
with it, then the PCC uses that SID. If the PCC cannot find a
matching prefix/adjacency, or if the matching prefix/adjacency has no SID
associated
with it, the PCC behaves as specified in section 6.2.2.1.
END NEW

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.

[Jon] This is specified in 6.2.2.1. First bullet - if the prefix is found
in the SR-DB but has no SID, send error TBD3. Second bullet - if the NAI is
not found in the SR-DB, send error TBD4.

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.

[Jon] Rather than add an extra normative dependency, we would prefer to
remove the dependency on the definition of the SR-DB and instead explicitly
define in our document what information is to searched.

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

[Jon] Yes, this section was painful to write, and was done after an on-list
consultation with the working group. I can provide some references. The
relevant thread starts here.
https://www.ietf.org/mail-archive/web/pce/current/msg05397.html

We got firm feedback from one vendor that the old behaviour needed to be
accommodated.
https://www.ietf.org/mail-archive/web/pce/current/msg05415.html

There were good reasons for us changing the spec at a late stage, but this
unfortunately left us needing to make a special case of the
SR-CAPABILITY-TLV or else break a fielded implementation. So we
collectively held our noses and did it. Hopefully, this plus the thread
above gives you the background to the decision.

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.

[Jon] I don't think there is an intent that any TLV can be used as a
sub-TLV. This argues for making a new registry for the sub-TLVs of the
PATH-SETUP-TYPE-CAPABILITY TLV (although we will have a vestigial code
point allocation for SR-PCE-CAPABILITY as a top-level TLV because of
section 7). I think therefore that this draft should create the registry
and update RFC 8408.

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.

[Jon] OK

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

[Jon] OK

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

[Jon] I can't think of any legitimate reason to signal that, so yes, this
should probably be an error case instead. I'll update the draft.

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

[Jon] On reflection I'm not sure we need any reference for this fairly
straightforward statement. I would amend it to:

NEW

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

[Jon] OK

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

[Jon] I'll remove it from the final bullet and then add this after the
bullets: "For all cases above, after the PCC has imposed the label stack on
the packet, it sends the packet to the segment identified by the first SID.
"

(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?

[Jon] I think Martin pointed this out too. I think the normative language
is inappropriate here. Instead: "... the PCE minimizes the SID depth..."
The MUST can be used only in conjunction with B=1 since only then can the
PCE's behaviour 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.

[Jon] I agree that most of this text is generic and could have been written
in RFC 8408. I think we have already agreed to update RFC 8408, above, so
there is presumably nothing more to do here.

---

From: Alvaro Retana <[email-masked]>
Date: Fri, 25 Jan 2019 09:47:27 -0800

Jon:

Hi!

Sorry for the empty message I sent before this one…

I have some comments below.

Thanks!

Alvaro.

...

Please include the description of the assumptions in the document.

...

NEW

This sounds fine.

That’s fine with me too.

Ah..it was under the discussion for draft-ietf-pce-lsp-setup-type/rfc8404.
Not that it matters now, but I got a little lost as to why these provisions
were not put into rfc8404…maybe because of the SR-specific component...

<sigh!> :-(

I wouldn’t call the feedback firm…and it makes me very sad to see the WG
jumping through hoops to satisfy 1(!!) implementation, even if no one else
replied on the list. :-(

I realize it is too late to go back…and that I would probably end up in the
rough if we did.  Once we clear up the remaining DISCUSS points (+ publish
an update), I will be ABSTAINing.

I haven’t checked in detail, but I suspect that keeping §7 causes the
Management Considerations to be incomplete because they don’t include the
“backwards compatible” behavior.

The other option (to avoid the duplication) is to make it explicit that
the SR-PCE-CAPABILITY TLV can (only?) be used as a sub-TLV of
the PATH-SETUP-TYPE-CAPABILITY TLV…. As mentioned above, rfc8408 doesn’t
prohibit this, and because the space is so big it may not be an issue.

I’m ok with your other answers.

Thanks!

Alvaro.