Re: [Pce] WG Last Call for draft-ietf-pce-segment-routing-ipv6-15

Cheng Li <c.l@huawei.com> Tue, 28 February 2023 07:58 UTC

Return-Path: <c.l@huawei.com>
X-Original-To: pce@ietfa.amsl.com
Delivered-To: pce@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 38163C14CF1C for <pce@ietfa.amsl.com>; Mon, 27 Feb 2023 23:58:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.897
X-Spam-Level:
X-Spam-Status: No, score=-6.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GnPnHsYm9r3j for <pce@ietfa.amsl.com>; Mon, 27 Feb 2023 23:58:06 -0800 (PST)
Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A55EBC14F72F for <pce@ietf.org>; Mon, 27 Feb 2023 23:58:06 -0800 (PST)
Received: from lhrpeml500002.china.huawei.com (unknown [172.18.147.200]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4PQqVF5c7fz6J75c for <pce@ietf.org>; Tue, 28 Feb 2023 15:57:57 +0800 (CST)
Received: from dggpemm100008.china.huawei.com (7.185.36.125) by lhrpeml500002.china.huawei.com (7.191.160.78) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Feb 2023 07:58:02 +0000
Received: from dggpemm500003.china.huawei.com (7.185.36.56) by dggpemm100008.china.huawei.com (7.185.36.125) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Feb 2023 15:58:00 +0800
Received: from dggpemm500003.china.huawei.com ([7.185.36.56]) by dggpemm500003.china.huawei.com ([7.185.36.56]) with mapi id 15.01.2507.021; Tue, 28 Feb 2023 15:58:00 +0800
From: Cheng Li <c.l@huawei.com>
To: "adrian@olddog.co.uk" <adrian@olddog.co.uk>, "julien.meuric@orange.com" <julien.meuric@orange.com>, "pce@ietf.org" <pce@ietf.org>
Thread-Topic: [Pce] WG Last Call for draft-ietf-pce-segment-routing-ipv6-15
Thread-Index: AQHZP9JEuFtmdfudoESX7FgP8diOxq7X2sQAgAw52FA=
Date: Tue, 28 Feb 2023 07:58:00 +0000
Message-ID: <c4f5d8a259ec4437bfa531008d4a9bf8@huawei.com>
References: <89861225-cfa6-19e0-c40f-27f3305650ea@orange.com> <0ad301d94570$43fdcae0$cbf960a0$@olddog.co.uk>
In-Reply-To: <0ad301d94570$43fdcae0$cbf960a0$@olddog.co.uk>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.112.40.81]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/pce/24zXlhNHtf6E7KyYA6BSMPMz5vE>
Subject: Re: [Pce] WG Last Call for draft-ietf-pce-segment-routing-ipv6-15
X-BeenThere: pce@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Path Computation Element <pce.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pce>, <mailto:pce-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/pce/>
List-Post: <mailto:pce@ietf.org>
List-Help: <mailto:pce-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pce>, <mailto:pce-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Feb 2023 07:58:11 -0000

Hello Adrian,

Many thanks for your comments, brilliant!

I am preparing a update to address your comments and other guys' comments together, please wait for few days.

Cheers,
Cheng



-----Original Message-----
From: Pce [mailto:pce-bounces@ietf.org] On Behalf Of Adrian Farrel
Sent: Tuesday, February 21, 2023 5:14 AM
To: julien.meuric@orange.com; pce@ietf.org
Subject: Re: [Pce] WG Last Call for draft-ietf-pce-segment-routing-ipv6-15

Hi,

Here is my WG last call review of this document. Thanks to the authors for all of the work that has gone in.

[A note for the chairs: Was this last call shared with SPRING?]

Cheers,
Adrian

===

Abstract

   The Source Packet Routing in Networking (SPRING) architecture

In fact, although RFCs 7855, 8354, and 8355 talk about "Source Packet Routing in Networking (SPRING)", the architecture document (RFC 8402) is the "Segment Routing Architecture."

---

Abstract

   It depends only on "segments"

As it is a new paragraph, you need to clarify what "it" is. Or maybe move this sentence to the previous paragraph so that para 2 begins "A Segment Routed Path..."

---

Abstract

s/forwarding plane/forwarding planes/    (twice)
s/support for IPv6 data plane in/support for the IPv6 data plane in the/

---

Abstract

OLD
   The PCEP extension and mechanism to support SR-MPLS
   is described in RFC 8664.
NEW
   The PCEP extensions and mechanisms to support SR-MPLS
   are described in RFC 8664.
END

---

Abstract

I think the final sentence is superfluous (or confusing).
Probably this is a repeat of "This document describes the extensions required for SR support for IPv6 data plane in Path Computation Element communication Protocol (PCEP)."

---

1.

s/Locater/Locator/
s/The list of segment/The list of segments/

---

1.

   Upon completion of a segment, a pointer in the new
   routing header is incremented and indicates the next segment.

Not so new anymore!
Try...

   Upon completion of a segment, a pointer in the SRH
   is incremented and indicates the next segment.

---

1.

   Segment Routing use cases are described in [RFC7855] and [RFC8354].
   Segment Routing protocol extensions are defined in [RFC8667], and
   [RFC8666].

There is nothing untrue in this paragraph. But what does it add? The use cases aren't mentioned anywhere in the document, and the protocol elements aren't used.

I'd just remove the paragraph.

---

1.

   As per [RFC8754], an SRv6 Segment identifier is an 128-bit value.
   "SRv6 SID" or simply "SID" are often used as a shorter reference for
   "SRv6 Segment".  Further details are in an illustration provided in
   [RFC8986].

This duplicates and somewhat modifies where the first paragraph says...

   An ordered list of segments
   is encoded as an ordered list of IPv6 addresses in the routing
   header.

I suggest you try to fold this short paragraph into the first paragraph and clarify the difference between "an 128-bit value" and "IPv6 address"

---

1.

   The SR is applied to IPV6 forwarding
   plane using Source Routing Header (SRH) [RFC8754].

You've already said this in the first paragraph

---

1.

   A SR path can be
   derived from an IGP Shortest Path Tree (SPT), but SR-TE paths may not
   follow IGP SPT.

a. You have just introduced "SR-TE". You need to expand it as "Segment
   Routing Traffic-Engineering".

b. Is there actually any difference between an SR path and an SR-TE 
   path? If so, you might add it to Section 2 after the definition of
   "SR Path".

c. Notwithstanding RFC 8664, s/may/might/ to avoid confusion with the
   normal English "you may not do it!"

---

1.

s/SR-TE LSP for MPLS data plane/SR-TE LSP for the MPLS data plane/ s/support SR for IPv6 data plane/support SR for the IPv6 data plane/ s/either stateful or a stateless PCE/either a stateful or stateless PCE/

---

2.

s/equivalent to a SRv6 Path/equivalent to an SRv6 Path/

---

3.

s/operations for PCEP speakers is/operations for PCEP speakers are/

---

3.

   SR-capable PCEP speakers should be able to generate and/or process
   such an ERO subobject.

"should be able to" ??

Maybe...

   SR-capable PCEP speakers can generate or process
   such an ERO subobject.

---

3.

   This document define new subobjects "SRv6-ERO" and "SRv6-RRO" in the
   ERO and the RRO respectively to carry the SRv6 SID (IPv6 Address).

Should the previous paragraph have talked about the RRO?

---

3.1

   In SR networks, an ingress node of an SR path appends all outgoing
   packets with an SR header consisting of a list of SIDs (IPv6 Prefix
   in case of SRv6).

a. s/SR header/SRH/

b. The SRH is only used for SRv6, so this text is a bit mixed-up

c. Isn't there technically a case where only one SID is present so the
   SRH is not needed (the SID is put in the DA field of the 
   encapsulating IPv6 header)?

---

3.1

OLD
   For the use of IPv6 in control plane only with MPLS data plane,
   mechanism remains the same as specified in [RFC8664].
NEW
   For the use of an IPv6 control plane but an MPLS data plane, the
   mechanism remains the same as specified in [RFC8664].
END

---

3.1

   This document describes an extension to the SR path for the IPv6 data
   plane.

It does? I thought it was all about PCEP.

---

3.1 seems to have some duplication of content from Section 3.

---

4.1.1

To avoid any risk of stale text persisting into the RFC (and given that you have this covered in the IANA section)...

OLD
   *  PST = 3 (early allocated by IANA): Path is setup using SRv6.
NEW
   *  PST = 3 : Path is setup using SRv6.
END

...and...

OLD
   If a PCEP speaker includes PST=3 (early allocated by
   IANA)
NEW
   If a PCEP speaker includes PST=3
END 

...and...

OLD
   The code point for the TLV type is 27 (early allocated by IANA).  The
   TLV length is variable.
NEW
   The code point for the TLV type is 27.  The TLV length is variable.
END

---

4.1.1

   A PCEP speaker MUST indicate its support of the function described in
   this document by sending a PATH-SETUP-TYPE-CAPABILITY TLV in the OPEN
   object with this new PST "3" included in the PST list.

I think that "MUST" is not needed here. So s/MUST indicate/indicates/

---

4.1.1

   If a PCEP speaker includes PST=3 (early allocated by
   IANA) in the PST List of the PATH-SETUP-TYPE-CAPABILITY TLV then it
   MUST also include the SRv6-PCE-CAPABILITY sub-TLV inside the PATH-
   SETUP-TYPE-CAPABILITY TLV.

Two questions:

   a. What happens if PST=3 is present but SRv6-PCE-CAPABILITY is
      missing?

   b. What happens if SRv6-PCE-CAPABILITY is present, but PST=3 was not
      included? (You don't say that that is not allowed.)

It's possible that a forward pointer to Section 5 is enough (I didn't cross-check this).

---

4.1.1

It's OK to say the TLV length is variable, but you should refer back to the RFC that defines what a TLV length is.

Ah! and then the final paragraph of 4.1.1 makes it clear. Maybe that paragraph needed to come before the figure?

---

4.1.1

      Flags: 2 octet, two bits are currently assigned in this document.

A pointer to Section 9.4 would be useful

---

4.2

   In order to indicate the SRv6 path, RP or SRP object MUST include the
   PATH-SETUP-TYPE TLV specified in [RFC8408].  This document defines a
   new Path Setup Type (PST=3 (early allocated by IANA)) for SRv6.

s/the SRv6 path/that the path is for SRv6/ s/RP or SRP/any RP or SRP/ d/(early allocated by IANA)/

---

4.2

   The LSP-IDENTIFIERS TLV MAY be present for the above PST type.

You need to give an implementer a clue about why they might include the TLV and why they might leave it out. It is OK to refer to another document if the decision process is identical.

It's possible that a forward pointer to Section 5 is enough (I didn't cross-check this).

---

4.3

OLD
   In order to support SRv6, new subobject "SRv6-ERO" is defined in ERO.
NEW
   In order to support SRv6, a new "SRv6-ERO" subobject is defined for
   inclusion in the in ERO.
END

---

4.3.1

d/(early allocated by IANA)/
s/a SRv6-ERO/an SRv6-ERO/
s/a SRv6 SID/an SRv6 SID/

---

4.3.1

This section includes a lot of encoding rules using "MUST". Good, but you need to say what a receiver does when it discovers a rule has been broken.

Similarly for...
      SR-MPLS specific NT types are not valid in SRv6-ERO.

It's possible that a forward pointer to Section 5 is enough (I didn't cross-check this).

---

4.3.1

OLD
   This document reuses NT types defined in [RFC8664]:
NEW
   This document reuses NT types defined in [RFC8664], but assigns them
   new meanings appropriate to SRv6:
END

---

4.3.1  Flags

A pointer to Section 9.2 would be useful.

---

4.3.1

What is the interaction between the L flag in the subobject header and the S bit in the Flags field?

---

4.3.1

   The list of Endpoint behaviors are
   defined in [RFC8986].

s/are/is/

However, I think it would be better to say:

   [RFC8986] defined a registry of Endpoint Behaviors that is maintained
   by IANA.

---

4.3.1 / 4.3.1.1

Figure 2 shows the "SID Structure" field as 32 bits, but Figure 3 is pretty clear that it is 64 bits. I think Figure 2 is broken.

---

4.4

OLD
   In order to support SRv6, new subobject "SRv6-RRO" is defined in RRO.
NEW
   In order to support SRv6, a new "SRv6-RRO" subobject is defined for
   inclusion in the in RRO.
END

---

4.4.1

Is the SRv6-SID field optional in the RRO subobject? The figure implies it must be present, and that would seem pretty reasonable for an RRO.
But the text says all the fields are exactly as in the ERO, and the S flag seems to still have meaning.

There is the same problem with the length of the SID structure field.

---

5.1

d/(early allocated by IANA)/    (three times)
s/Error- Type/Error-Type/       (might be an XML2RFC bug)
s/PATH-SETUP- TYPE-CAPABILITY/PATH-SETUP-TYPE-CAPABILITY/
s/plane's capability/plane capability/

---

5.1

   If a PCE
   receives an SRv6-PCE-CAPABILITY sub-TLV with the X flag set to 1 then
   it MUST ignore any MSD-Type, MSD-Value fields and MUST assume that
   the sender can impose any length of SRH.

Is that really "MUST assume" or just "may assume"?  That would seem to be consistent with...

   However, if a PCE learns these via different means, e.g
   routing protocols, as specified in:
   [I-D.ietf-lsr-ospfv3-srv6-extensions];
   [I-D.ietf-lsr-isis-srv6-extensions]; [I-D.ietf-idr-bgpls-srv6-ext],
   then it ignores the values in the SRv6-PCE-CAPABILITY sub-TLV.

But there's a hole :-( If we follow the previous paragraph, the PCE may send an ERO with more SIDs than allowed by the MSD in the Open message (if the value learned from the IGP is a larger number. But...

   If a PCEP
   session is established with a non-zero SRv6 MSD value, and the PCC
   receives an SRv6 path containing more SIDs than specified in the SRv6
   MSD value (based on the SRv6 MSD type), the PCC MUST send a PCErr
   message with Error-Type = 10 (Reception of an invalid object) and
   Error-Value = TBD1 (Unsupported number of SRv6-ERO subobjects).

...says that regardless of the MSD in the IGP, the PCC must reject an ERO that contains more SIDs that specified in the Open message.

Furthermore, you have...

   If a PCC receives a list of SRv6 segments, and the number of SRv6
   segments exceeds the SRv6 MSD that the PCC can impose on the packet
   (SRH), it MUST send a PCErr message with Error-Type = 10 ("Reception
   of an invalid object") and Error-Value = TBD5 ("Unsupported number of
   SRv6-ERO subobjects") as per [RFC8664].

This last paragraph seems to cover all bases, so why not just use it?

---

5.1

There seems to be a contradiction about the MSD 0 case.

You have...

   If a PCE receives an SRv6-PCE-CAPABILITY sub-TLV
   with the X flag as set, and SRv6 MSD-Type or MSD-Value fields are set
   to zero then it is considered as an error and the PCE MUST respond
   with a PCErr message (Error-Type = 1 "PCEP session establishment
   failure" and Error-Value = 1 "reception of an invalid Open message or
   a non Open message.").

...and...

   If a
   PCEP session is established with an SRv6 MSD value of zero, then the
   PCC MAY specify an SRv6 MSD for each path computation request that it
   sends to the PCE, by including a "maximum SID depth" metric object on
   the request similar to [RFC8664].

The first says you can't have a session with MSD 0, the second tells you how to act if you do.

---

5.1

   The N flag, X flag and (MSD-Type,MSD-Value) pair inside the SRv6-PCE-
   CAPABILITY sub-TLV are meaningful only in the Open message sent from
   a PCC to a PCE.  As such, a PCE MUST set the flags to zero and not
   include any (MSD-Type,MSD-Value) pair in the SRv6-PCE-CAPABILITY sub-
   TLV in an outbound message to a PCC.  Similarly, a PCC MUST ignore
   N,X flag and any (MSD-Type,MSD-Value) pair received from a PCE.  If a
   PCE receives multiple SRv6-PCE-CAPABILITY sub-TLVs in an Open
   message, it processes only the first sub-TLV received.

How does this work when the session is between two PCEs?

---

5.2.1

I find the following...

   *  If NT=0, the F bit MUST be 1, the S bit MUST be zero and the
      Length MUST be 24.

So, NT=0, F=1, S=1 is an error.

Then...

   If a PCC finds that the NT field, Length field, S bit, F bit, and T
   bit are not consistent, it MUST consider the entire ERO invalid and
   MUST send a PCErr message with Error-Type = 10 ("Reception of an
   invalid object") and Error-Value = 11 ("Malformed object").

But...

   If a PCC receives an SRv6-ERO subobject in which the S and F bits are
   both set to 1 (that is, both the SID and NAI are absent), it MUST
   consider the entire ERO invalid and send a PCErr message with Error-
   Type = 10 ("Reception of an invalid object") and Error-value = TBD3
   ("Both SID and NAI are absent in the SRv6-ERO subobject").


Two error messages for the same error?

---

5.2.1

   If a PCC receives an SRv6-ERO subobject in which the S bit is set to
   1 and the F bit is set to zero (that is, the SID is absent and the
   NAI is present), but the PCC does not support NAI resolution, it MUST
   consider the entire ERO invalid and send a PCErr message with Error-
   Type = 4 ("Not supported object") and Error-value = 4 ("Unsupported
   parameter").

This is good. But it seems harsh for the poor PCE. How was the PCE supposed to know that the PCC didn't support NAI resolution?

---

5.2.1

d/(early allocated by IANA)/  (twice)

---

5.2.2

There is nothing wrong with what is written here, but it may be very helpful to PCC implementations if you make it clear that the SID list in an SRH is arranged in the reverse order to the ERO subobject list.

---

5.3

Here, too, it would be really helpful to be absolutely clear about the order of subobjects, and to compare this to the order of the SIDs in the SRH.

---

5.3

d/(early allocated by IANA)/  (twice)

---

5.3

RFC 8664 makes some wise observations about how a PCC constructs an RRO (how can it know?) and suggests that the mechanisms are out of scope of the RFC. I suggest you look at that text and write something similar here.

---

6.

No mention of RFC 8253?

---

7.1

s/be allowed to set/be allowed to be set/

---

7.4

I thought Endpoint Behavior and SID Structure were new to this document and provided the potential for (future) verification?

---

9.1

Isn't the RRO in PCEP the "Reported Route Object"?

---

9.1

I'm trying to find the document that makes the variation from RFC 5440 for the definition of "PCEP only" ERO and RRO subobjects. I understand why you want to do this, but what you are doing is contrary to RFC 5440.

I see that RFC 8664 dodged this by "forgetting" to mark the SR-ERO and SR-RRO subobjects as "PCEP only". 

I have started a separate thread on this on the mailing list and have copied TEAS because this seems to need some small administrative work to fix it up.

---

9.2

It might be nice if the columns in your table had the same names as you use in the text.

---

9.2

You need to tell IANA how many bits can be allocated. Otherwise they may try to allocate bit 12 to the next request.

---

9.4

It might be nice if the columns in your table had the same names as you use in the text.

---

9.4

The table headings are missing "-----" separators

---

9.4

You need to tell IANA how many bits can be allocated. Otherwise they may try to allocate bit 16 to the next request.

---

11.1

I think that 8402 is only an informative reference.

---

Appendix A.  

s/Contributor/Contributors/


-----Original Message-----
From: Pce <pce-bounces@ietf.org> On Behalf Of julien.meuric@orange.com
Sent: 13 February 2023 17:39
To: pce@ietf.org
Subject: [Pce] WG Last Call for draft-ietf-pce-segment-routing-ipv6-15

Dear PCE WG,

This message starts a 2-week WG last call on
draft-ietf-pce-segment-routing-ipv6-15 [1]. Please, be express any comments you have about this document using the PCE mailing list.

This WGLC will end on Tuesday 28th February 2023.

Thanks,

Julien

--
[1] https://datatracker.ietf.org/doc/draft-ietf-pce-segment-routing-ipv6/


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