Subject: [Pce] Shepherd review of draft-ietf-pce-segment-routing-12

From: Dhruv Dhody <[email-masked]>
Date: Thu, 9 Aug 2018 11:36:05 +0000

Hi,

I am assigned the shepherded for this document. I have previously given my input and liked the direction of the update with the -12 version, but also found some new issues.

Disclaimer - I discussed some of the points with the authors F2F during the IETF meeting as well.

Major:
*******

(1) Though I appreciated the details in the new section 6.2.2. I feel the right place for this should be in 'draft-ietf-spring-segment-routing-mpls' because the source of the SID stack could be PCEP, BGP or Yang. The text related to the interpretation of the SID stack rightly belong in that draft and in this I-D should just refer it (and specify the PCEP specific error handling and procedures only).  I hope the chairs and AD of the WG could conclude on that. We could initiate a separate thread to discuss this point with spring chairs/AD.

(2) The change of the field ST (SID type) to NT (NAI type) was done in the last update. This change was done in the -12 version with the expectation that this is just a name change and would have no other impact. But since NAI is optional and might not be included, and in that case one would not be able to interpret what the SID represents when NAI is not provided. Though, it might be possible to find that information via searching the local database, there is no apparent benefit in making this change and limiting the knowledge of the SID type only when NAI is included.

Changes would be needed in various places including Section 6.2.1.

(3) There is no mention of the SR policy in the draft. This is a source of confusion, so a reference and relationship between them should be added in the Introduction.

(4) I think we should enhance the security consideration section 9 a little bit more. Since a label stack can be pushed directly for the PCE, this would have a bigger security impact then a path that gets further signaled by RSVP-TE and verified in control plane. We should talk about MSD information as well.

Minor:
*******

(1) I am not comfortable with the use of term LSDB, you would note no other SR documents uses it either.  SR architecture also allow future innovation in control plane especially in the centralized mode. May be we should use the term SR-DB introduced by the policy draft? Or a generic term such as local database?

(2) In section 3, it describes the 3 representations for SR-ERO, I have following suggestion -
OLD:
   o  An ordered set of IP addresses representing network nodes/links:
      In this case, the PCC needs to convert the IP addresses into the
      corresponding MPLS labels by consulting its Link State Database
      (LSDB).

   o  An ordered set of SIDs, with or without the corresponding IP
      addresses.

   o  An ordered set of MPLS labels and IP addresses: In this case, the
      PCC needs to convert the IP addresses into the corresponding SIDs
      by consulting its LSDB.
NEW:
   o  An ordered set of IP addresses representing network nodes/links.
      In this case, the PCC needs to convert the IP addresses into the
      corresponding MPLS labels by consulting its Link State Database
      (LSDB).

   o  An ordered set of SID index values, with or without the corresponding IP
      addresses. The PCC needs to convert the index into the corresponding
      MPLS label stack as per [I-D.ietf-spring-segment-routing-mpls].

   o  An ordered set of MPLS labels, with or without corresponding IP
      address. The top label in the label stack received from the PCE is
      from the point of view of the ingress PCC and it must follow the
      procedures as described in [I-D.ietf-spring-segment-routing-mpls]
      while pushing the label stack.

The idea behind this is to specify that PCE should prepare the label stack with the top label from the point of view of Ingress and label stack might change. The change could be an outgoing label change as per the SRGB of neighbor towards which the packet is sent; or it could be an adjacency label pop identifying the out-interface.
- In section 6.2.1, we should remove this condition requiring NAI MUST be present for the first SR-ERO sub-object and corresponding error-code.
- In Section 6.2.2.1, we should update the procedure and the next-hop is not identified from the NAI

Regarding the text in section 6.2.2, once the agreement is met to move the text to the SR-MPLS document, the text needs to be modified accordingly from the point of view of a generic MPLS Control Plane Client (MCC). And we should simply refer to it saying PCC is one such client.
Note that 'only NAI' in SR-ERO would be a unique feature for PCEP and thus section 6.2.2.3 would still be needed.

(2) In section 5.3.1, it says -
    An SR-ERO subobject consists of a 32-bit header followed by the SID
   and/or the NAI associated with the SID.

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |L|   Type=36   |     Length    |  NT   |     Flags     |F|S|C|M|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                         SID (optional)                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     //                   NAI (variable, optional)                  //
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

I think it is wrong to consider the first 32-bit as a header as per RFC 3209 specification.

    0                   1
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+
   |L|    Type     |     Length    | (Subobject contents)          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+

(3) Section 6.1, the N flag indicates the capability to get SID from NAI, so it should be applicable when only NAI is sent.
OLD:
   If a PCC sets the N flag to 1, then the PCE MAY send NAI to the PCC
   within the SR-ERO subobject (see Section 6.2).  Otherwise, the PCE
   MUST NOT send NAI to the PCC.
NEW:
   If a PCC sets the N flag to 1, then the PCE MAY send NAI only to the PCC
   within the SR-ERO subobject (see Section 6.2).  Otherwise, the PCE
   MUST NOT send NAI only to the PCC.

(4) Section 6.2.1, it says -
   If a PCC receives an SR-ERO subobject in which the S bit is set to
   zero and the M bit is set to 1 (that is, it represents an MPLS label
   value), its value (20 most significant bits) MUST be larger than 15,
   unless it is a special purpose label, such as an Entropy Label
   Indicator (ELI).

Since all labels < 15 are special-purpose label, the above sentence isn't correct. Do you mean ELI is the only special purpose label that is allowed? Or we should simply say the label should be valid from PCC's point of view without worrying about special-purpose label.

Suggestions:
**************

(1) In section 3, it says -
   An PCE can update an LSP that is initially established via RSVP-TE
   signaling to use an SR-TE path, by sending a PCUpd to the PCC that
   delegated the LSP to it ([RFC8231]).  Similarly, an LSP initially
   created with an SR-TE path can be updated to use RSVP-TE signaling,
   if necessary.  This capability is useful when a network is migrated
   from RSVP-TE to SR-TE technology.

We should also add text for LSPs that are not delegated and in control with PCC, where PCC will trigger the migration and this should be reported to the PCE via the PCRpt message.

(2) In section 5.1, can we describe the value part of the sub-TLV in the order, currently we have MSD, Reserved and then flags.
Also, we should state if future extension can define new flags (and create a corresponding IANA registry) and unassigned bits in the flags MUST be set to 0.
Since MSD value 0 as a special purpose, we should mention that and provide reference to section 5.5

(3) In section 5.3.1 (M bit in Flag field), we should reference SR I-D while describing the interpretation of index.
OLD:
      *  M: If this bit is set to 1, the SID value represents an MPLS
         label stack entry as specified in [RFC3032].  Otherwise, the
         SID value is an administratively configured value which acts as
         an index into an MPLS label space.
NEW:
      *  M: If this bit is set to 1, the SID value represents an MPLS
         label stack entry as specified in [RFC3032].  Otherwise, the
         SID value is an administratively configured value which represents
         an index into an MPLS label space (either SRGB or SRLB) as per
         [RFC8402].

(4) In section 5.3.1, can we add a little more description for SID.
OLD:
SID  is the Segment Identifier.
NEW:
SID is the Segment Identifier. According to the M bit, it contains
either:

  * A 4 octet index defining the offset into an MPLS label space as
    per [RFC8402].
  * A 4 octet MPLS label stack entry where the 20 rightmost bits are
    used for encoding the label value as per [RFC3032].

(5) In section 5.3.2, It would be nice to explicitly mention the length of the NAI field in each case.

(6) Section 5.4, we should add little bit more meat to this section to clearly state what does RRO represents in case of SR-TE LSP. Currently we simply say that -

   A PCC can record an SR-TE LSP and report the LSP to a PCE via the
   RRO.

PCC reports the state of LSP to the PCE. RRO represents the actual path in the PCRpt message, thus the RRO for SR-TE represents the SID list applied by the PCC. This could be represented as MPLS label stack or as the list of indexes. In some cases, the ERO (intended path) and RRO (actual path) might be different based on local policy applied by the PCC. We should state that procedures as per [RFC8231] with no change.

Another query NAI only SR-RRO is of no use. I think we should not allow that!!

(7) Section 5.5, is METRIC object without bound allowed? I.e. a path computation request to optimize MSD valid?

(8) Section 6.2.1, it says -

   If a PCC receives an SR-ERO subobject in which the S bit is set to
   zero and the M bit is set to zero (that is, it represents an index
   value), then the SID MUST be a node-SID, an adjacency-SID or a
   binding-SID.  If the SID is not one of these types, the PCC MUST send
   a PCErr message with Error-Type = 10 ("Reception of an invalid
   object") and Error Value = TBD10 ("Bad SID type in SR-ERO").  If the
   SID is an Adjacency-SID then the L flag MUST NOT be set.  If the L
   flag is set for an Adjacency-SID then the PCC MUST send a PCErr
   message with Error-Type = 10 ("Reception of an invalid object") and
   Error-Value = 11 ("Malformed object").

Shouldn't we just say that PCC should support the SID type and leave the door open for any other SID type use for ex anycast SID or any other future SID type?

(8) Section 6.2.2.4, this error is not clear -

   o  If the PCC cannot find an SRGB in the LSDB, it MUST send a PCErr
      message with Error-Type = 10 ("Reception of an invalid object")
      and Error-Value = TBD5 ("Could not find SRGB").

Does it mean that a particular node does not support SR or did not advertise SRGB and thus PCC is unaware of the SRGB information of that node?

Nits:
*****

(1) https://www.ietf.org/tools/idnits?url=https://www.ietf.org/archive/id/draft-ietf-pce-segment-routing-12.txt - all easy to fix with a new update!
(2) s/ PATH_SETUP_TYPE/PATH-SETUP-TYPE/
(3) s/PATH_SETUP_TYPE_CAPABILITY/PATH-SETUP-TYPE-CAPABILITY/
(4) We have used the term octet mostly except for 2 instances of bytes. Suggest to use the same term.
(5) Section 8.1
OLD:
   o  When a PCC requests a path for an LSP, it can nominate a preferred
      path setup type by including it in the PATH-SETUP-TYPE TLV in the
      RP object of the PCInitiate message.
NEW:
   o  When a PCC requests a path for an LSP, it can nominate a preferred
      path setup type by including it in the PATH-SETUP-TYPE TLV in the
      RP object of the PCReq message.
(6) Section 8.3, for the first 2 bullets only L flag is mentioned. I think we should also include the N flag.
(7) The heading for section 10.1 is PCEP objects where as its content is about SE-ERO and SR-RRO sub-objects in RSVP registry!

Thanks again!

Looking forward to resolving the above points and moving the document quickly.

Regards,
Dhruv

Dhruv Dhody
Lead Architect
Network Business Line
Huawei Technologies India Pvt. Ltd.
Survey No. 37, Next to EPIP Area, Kundalahalli, Whitefield
Bengaluru, Karnataka - 560066
Tel: + 91-80-49160700 Ext 71583 II Email: [email-masked]<mailto:[email-masked]>
[Huawei-small]
This e-mail and its attachments contain confidential information from HUAWEI, which
is intended only for the person or entity whose address is listed above. Any use of the
information contained herein in any way (including, but not limited to, total or partial
disclosure, reproduction, or dissemination) by persons other than the intended
recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by
phone or email immediately and delete it!

---

From: Jonathan Hardwick <[email-masked]>
Date: Wed, 15 Aug 2018 15:02:18 +0000

Thanks for the review, Dhruv!  I'll think about your comments and get back to you SOON (possibly not until after my vacation next week).

Cheers
Jon

From: Dhruv Dhody [mailto:[email-masked]]
Sent: Thursday, August 9, 2018 12:36 PM
To: [email-masked]
Cc: [email-masked]; [email-masked]; Dhruv Dhody <[email-masked]>
Subject: Shepherd review of draft-ietf-pce-segment-routing-12

Hi,

Major:
*******

Minor:
*******

      0                   1                   2                   3

    0                   1

Suggestions:
**************

Nits:
*****

Thanks again!

Regards,
Dhruv

Dhruv Dhody
Lead Architect
Network Business Line