Re: [spring] draft-ietf-spring-mpls-path-segment

Cheng Li <c.l@huawei.com> Mon, 17 July 2023 10:42 UTC

Return-Path: <c.l@huawei.com>
X-Original-To: spring@ietfa.amsl.com
Delivered-To: spring@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A0E01C151536; Mon, 17 Jul 2023 03:42:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.184
X-Spam-Level:
X-Spam-Status: No, score=-4.184 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_HTML_ATTACH=0.01, 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 ocbeqajdj65O; Mon, 17 Jul 2023 03:42:50 -0700 (PDT)
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 18869C151533; Mon, 17 Jul 2023 03:42:49 -0700 (PDT)
Received: from lhrpeml500002.china.huawei.com (unknown [172.18.147.200]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4R4JVW0Nffz6J7fr; Mon, 17 Jul 2023 18:39:31 +0800 (CST)
Received: from dggpemm100007.china.huawei.com (7.185.36.116) 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.27; Mon, 17 Jul 2023 11:42:42 +0100
Received: from dggpemm500003.china.huawei.com (7.185.36.56) by dggpemm100007.china.huawei.com (7.185.36.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 17 Jul 2023 18:42:40 +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.027; Mon, 17 Jul 2023 18:42:40 +0800
From: Cheng Li <c.l@huawei.com>
To: "bruno.decraene@orange.com" <bruno.decraene@orange.com>, "draft-ietf-spring-mpls-path-segment@ietf.org" <draft-ietf-spring-mpls-path-segment@ietf.org>, SPRING WG <spring@ietf.org>
CC: James Guichard <james.n.guichard@futurewei.com>, "ketant.ietf@gmail.com" <ketant.ietf@gmail.com>, Stewart Bryant <stewart.bryant@gmail.com>
Thread-Topic: draft-ietf-spring-mpls-path-segment
Thread-Index: Adm0yKBf68bXFQtZRNikkDrURktqwABN6NzQ
Date: Mon, 17 Jul 2023 10:42:40 +0000
Message-ID: <d47bbd1b7a984fdf9ae6094cd1b2f78d@huawei.com>
References: <AS2PR02MB8839A0F038AE3B20067A4184F036A@AS2PR02MB8839.eurprd02.prod.outlook.com>
In-Reply-To: <AS2PR02MB8839A0F038AE3B20067A4184F036A@AS2PR02MB8839.eurprd02.prod.outlook.com>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [10.50.76.121]
Content-Type: multipart/mixed; boundary="_006_d47bbd1b7a984fdf9ae6094cd1b2f78dhuaweicom_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/spring/q9iUtKibXVm6H52id34_sYegqso>
Subject: Re: [spring] draft-ietf-spring-mpls-path-segment
X-BeenThere: spring@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Source Packet Routing in NetworkinG \(SPRING\)" <spring.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spring>, <mailto:spring-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spring/>
List-Post: <mailto:spring@ietf.org>
List-Help: <mailto:spring-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spring>, <mailto:spring-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 17 Jul 2023 10:42:54 -0000

Hi Bruno,

Many thanks for your work! I am addressing the comments received from the WG, so it is fine/good to me that address your comments in the same time 😊
Please see my reply inline. The diff is generated by comparing with 09. The proposed update tries to address the comments from you, Ketan and Stewart.

If you like to use Github, the link is here: https://github.com/muzixing/SR-MPLS-Path-Segment/commit/3ace59b1e87859950dfac8a967ee560128843b6b

Respect and thanks,
Cheng


From: bruno.decraene@orange.com <bruno.decraene@orange.com>
Sent: Wednesday, July 12, 2023 10:41 PM
To: draft-ietf-spring-mpls-path-segment@ietf.org; SPRING WG <spring@ietf.org>
Cc: James Guichard <james.n.guichard@futurewei.com>
Subject: draft-ietf-spring-mpls-path-segment

Hi authors,

Since Jim is now the responsible AD, the shepherd for this document has been changed from Jim to myself.
As a result you/this document benefit/suffer from another review.

Please find below my comments/questions.

On a side note, I have two questions for you (for the shepherd writeup):
Are there existing implementations of the protocol?
Have a significant number of vendors indicated their plan to implement the specification?

[Cheng]Weiqiang has replied to you on these two questions. Path Segment has been implemented by a significant number of vendors for several years, and it has been used in large scale networks.
---

Abstract
"This document defines a new type of segment that is referred to as Path Segment, which is used to identify an SR path in an SR-MPLS network."

Given that the path segment may be allocated from a local label of the egress node, (e.g. SRLB, dynamic pool), I believe that only the egress node may use that label to identify an SR-path. (not any node on the path/in the network).
If so I believe the following change would be more accurate:
OLD; to identify an SR path in an SR-MPLS network.
NEW: to identify an SR path on the egress LER

[Cheng] I tend to agree with you. However, the controller/Ingress may know the meaning of the Path Segment as well, so use ‘in an SR-MPLS network’ may be better than ‘on the egress LER’ ? But it looks ok to me to modify the text.

Same comment for the §1 Introduction. ("A Path Segment is defined to uniquely identify an SR path in an SR-MPLS network.")
[Cheng] Same above. Addressed.

-------
Abstract:
"A Segment Routing (SR) path is identified by an SR segment list. Only the complete segment list can identify the end-to-end SR path, and a sub-set of segments from the segment list cannot distinguish one SR path from another as they may be partially congruent. SR path identification is a pre-requisite for various use-cases such as Performance Measurement (PM), bidirectional paths correlation, and end-to-end 1+1 path protection."

This seems to be saying that "Performance Measurement (PM), bidirectional paths correlation, and end-to-end 1+1 path protection" is not possible without MPLS Path Segment. I don't feel that this is correct. Eventually you mean that "a form of path identification/discrimination", which is different as this identification may be performed at a different layer than the SR-path. (e.g. different egresss loopbacl/prefix SID, any form of ID below that MPLS stack (e.g. different IP address, L4 source/destination port, application specific ID (e.g. My Miscriminator?)...
May be consider rephrasing.

[Cheng] How about this?

_____NEW_____
A Segment Routing (SR) path is identified by an SR segment list. A
sub-set of segments from the segment list cannot distinguish one SR path
from another as they may be partially congruent. SR path identification
is a pre-requisite for various use-cases such as Performance Measurement
(PM), and end-to-end 1+1 path protection.

In SR for MPLS data plane (SR-MPLS), an Egress node can not determine on which SR path a packet traversed the network from the label stack because the segment identifiers are stripped from the label stack as the packet transits the network.

This document defines Path Segment to identify an SR path on the egress node of the path.
_____NEW_____


Same text/comment in the §1 Introduction.

-------

§1 Introduction
"or IPv6 data plane using an SRH header via SRv6 [RFC8986]"
Since this document is specific to SR-MPLS, I don't think that this text and reference are needed.
[Cheng]Agree, deleted.

-------
§1.2
"SRv6: Instantiation of SR on the IPv6 data plane."
Since this document is specific to SR-MPLS, I don't think that this text is needed.
[Cheng] Agree, deleted.

-----
§1 Introduction
"Thus, the egress node cannot determine along which SR path the packet came."

As per a previous comment, may be restricting this statement to the SR-path.
e.g. NEW: Thus, the egress node cannot use the SR label stack to determine along which SR path the packet came.
[Cheng] Agree.

------
§2

"If the Path Segment is used by an intermediate node to identify an SR path, the SRGB MUST be used."

I don't think that the use of a label from the SRGB allows to identify the path on a intermediate node. e.g. this label may have been chosen by LDP/BGP LU/BGP VPN by a non SR compliant router. Also the MPLS WG is discussing MNA which allows inserting any number/thing in the stack (so including a value which is part of the SRGB).
I would propose to remove this sentence (alternatively define another technical solution for this, but any significant technical change may justify returning the document to the WG)
[Cheng] Agree,  deleted.

-----------
§2

"The term of SR path used in this document is a general term that can be used to describe an SR Policy, a Candidate-Path (CP), or a Segment-List (SL) [RFC9256]. Therefore, the PSID may be used to identify an SR Policy, its CP, or a SL terminating on an egress node depending on the use-case."

From a general standpoint, the PSID may probably be used to identify whatever you want _assuming_ a coordination between the ingress and the egress to specify the scope of the identification.
So IMO,
- either this document specify the scope of the identification, in which case no additional coordination is required, but this may limit the future use cases. I would suggest that a PSID identifies a Candidate-Path as this seems inline with RFC 9256.
- or this document defines how this scope/meaning is coordinated between the ingress and egress. ( section 3 says that this is out of scope). In which case this document can't say what this PSID identify. (it could be a SR Policy, or a Candidate-Path or just anything including application specific (e.g. Altnernate marking). To some extend the name of the ID (PSID) and even the name of the Segment type (Path Segment) is debatable as you may not be identifying a path. This looks like a bigger change.

(More generally MPLS is about making an association between a label value (any number) and a FEC/signification. In this document you propose to use a label value but you declare that assigning the FEC/signification is out of scope. To me this significantly reduce the interest of this document and the ability to have interoperability between two nodes implementing this document making it more a framework and than a STD track document.)

I think my suggestion would be to say that a PSID identifies a Candidate Path [RFC9256].  That way both the ingress and the egress knowns that using a different PSID means using a different candidate path. This still leave out of scope how the ingress knows about the PSID to use for each CP (let's say it's part of the SR policy configured/pushed) and what is the behavior on the receiver. And if one really needs to identify the SR Policy, one could achieve by either configuring, on the ingress, the same PSID for all the CP of the SR Policy.; or by configuring on the egress all the PSID used by the CP of a given SR Policy.

[Cheng] It is really weird that this question has been raised several times. But to me, this is quite clear. Your first sentence is totally correct  “From a general standpoint, the PSID may probably be used to identify whatever you want _assuming_ a coordination between the ingress and the egress to specify the scope of the identification.”

Let’s explain this in this way.

First of all, a PSID is associated with a SID list that identifies a forwarding path. This is the key use cases for the Path Segment.
When we use the same PSID to the SID lists in a Candidate path, then actually, we can say that this PSID is used to identify a CP.
When we use the same PSID to all the SID lists in a SR policy, we can say that this PSID is used to identify an SR policy.

But, now I think I know where the weird feeling comes. We may not say that a PSID is used for IDENTIFYING a CP or SR Policy. We should modify it in this way.

___OLD____
"The term of SR path used in this document is a general term that can be used to describe an SR Policy, a Candidate-Path (CP), or a Segment-List (SL) [RFC9256]. Therefore, the PSID may be used to identify an SR Policy, its CP, or a SL terminating on an egress node depending on the use-case."


___NEW___

The term of SR path used in this document is a path described by a Segment-List (SL). A PSID is used to identify a Segment List. However, one PSID can be used to identify multiple Segment Lists in some use cases if needed. For example, all the Segment lists in a Candidate path can use a single PSID, and all the Segment Lists in an SR policy can share the same PSID, if customers would like to aggregate the data among the Segment Lists. How to use the PSID to Segment Lists depends on the requirements of the use cases.


-----
§2
"The value of the TTL field in the MPLS label stack entry containing the PSID MUST be set to the same value as the TTL of the last label stack entry for the last segment in the SR path."
"MUST" is a pretty strong statement. What is the reason for this? What is the egress supposed to do if this is not the case?
Interestingly, RFC 6790 has a oppositive position with regards to the Entropy Label: "The TTL for the EL MUST be zero to ensure that it is not used inadvertently for forwarding." while the case seems similar (addition of a label "not used for forwarding")
https://datatracker.ietf.org/doc/html/rfc6790#section-4.2

Is there any rule for the TC field? (if not, please say so; if so, please specify the rule)
[Cheng] because we do not use Path Segment for forwarding, so IMHO, the TTL can be any, like 0, or same as the previous one.  How about the following modifications?
___OLD____
"The value of the TTL field in the MPLS label stack entry containing the PSID MUST be set to the same value as the TTL of the last label stack entry for the last segment in the SR path."

___NEW___
"The value of the TTL field in the MPLS label stack entry containing the PSID can be set to any value including 0, or the same value as the TTL of the last label stack entry for the last segment in the SR path."
---

§2
"Normally, an intermediate node will not process the PSID in the label stack because the PSID is inserted after the routing segment pointing to the egress node. But in some use cases, an intermediate node MAY process the PSID in the label stack by scanning the label stack or other means. In these cases, the PSID MUST be learned before processing. The detailed use cases and processing is out of the scope of this document."

I think that this text is about coordinating the semantic of the PSID between the node writing it (ingress) and the node(s) reading it (egrees or transit). Hence I think this point should rather be moved to section " 3. PSID Allocation and Distribution "
[Cheng] Let’s delete this paragraph of intermediate node processing. Stewart also suggested to do so.

------
§2

"A PSID can be used in the case of Penultimate Hop Popping (PHP), where some labels are be popped off at the penultimate hop of an SR path, but the PSID MUST NOT be popped off until it reaches at the egress node."

You cannot define a behavior, not to mention a "MUST" on a node which may not be compliant with this document.
I personally don't believe that you need to define a new behavior and I would propose:
OLD:
A PSID can be used in the case of Penultimate Hop Popping (PHP), where some labels are be popped off at the penultimate hop of an SR path, but the PSID MUST NOT be popped off until it reaches at the egress node.

NEW:
A PSID can be used in the case of Penultimate Hop Popping (PHP), where some labels are be popped off at the penultimate hop of an SR path. As per regular MPLS processing, the label below (including the PSID in this case) will not be popped by the penultimate node.
[Cheng] Agree. Thank you!

-----
§2

"In some deployments, service labels may be added after the Path Segment label in the MPLS label stack. In this case, the egress node MUST be capable of processing more than one label. The additional processing required, may have an impact on forwarding performance."
I belive that when the PSID is used, there is _always_ an extra processing work on the data plane (the processing of the PSID). So I don't think that this is specific to "some deployments" or "service label".
If so, please rephrase.


[Cheng]Well, to me, the sentence is trying to explain the cases that the egress node needs to support processing of multiple labels. But we do have some use cases that the only label is processed on the egress node is the PSID. For example, we only encode the labels of the LSP and PSID in the label stack while the last forwarding label is a PHP enable label. Therefore, when a packet arrives on the egress node, only one single label(The PSID) will be processed. In this case, multiple labels processing is not required.

In other words, this paragraph is only for info that it explains we may have differences with or without services label. If without services label, then the requirement of processing multiple labels MAY not changed. Indeed, the processing of PSID is new in any cases.

---
§2
"Entropy label and Entropy Label Indicator (ELI) as described in [RFC8662] for SR-MPLS path, can be placed before or after the PSID in the MPLS label stack."
You seem to be re-specifying the EL spec. From the perspetive of this egress node, the ELI, EL MUST be placed before the tunnel label (as per RFC6790) and the PSID MUST be placed after the tunnel label (as per this document).
So IMO this sentence is adding unnecessary confusion.
I would propose
OLD:
Entropy label and Entropy Label Indicator (ELI) as described in [RFC8662] for SR-MPLS path, can be placed before or after the PSID in the MPLS label stack.

NEW:
If Entropy Label is also used on this egress node, as per [RFC6790] the Entropy label Indicator (ELI) and Entropy Label (EL) would be placed before the tunnel label and hence does not interfere with the PSID which is placed below.
[Cheng] Agree, thank you. The key info is that ELI/EL is irrelevant with the PSID in using.

 ----
§2
"Generic Associated Label (GAL) MAY be used for Operations, Administration and Maintenance (OAM) in MPLS networks [RFC5586]. When GAL is used, it MUST be added at the bottom of the label stack after the PSID."

Reading RFC 5586, that seems to be already the rule for GAL.  Hence I don't think that this needs to be defined as a new rule (MUST). Especially as this seems to indicate a variation (before BoS vs after BoS) hence this may add confusion.
I would propose:
OLD: Generic Associated Label (GAL) MAY be used for Operations, Administration and Maintenance (OAM) in MPLS networks [RFC5586]. When GAL is used, it MUST be added at the bottom of the label stack after the PSID.
NEW: Generic Associated Label (GAL) MAY be used for Operations, Administration and Maintenance (OAM) in MPLS networks. As per [RFC5586], when GAL is used, it the ACH appears immediately after the bottom of the label stack.
[Cheng] OK, thank you!
---
§2

"The MSD used for path computation MUST include the PSID."

MSD is already defined and you cannot redefine it with a new rule (MUST). Actually RC 8491 already states that the MSD include all labels that can be imposed ("the total number of MPLS labels that can be imposed, including all service/transport/special labels")
https://www.rfc-editor.org/rfc/rfc8491.html#section-5

I would propose
OLD: The MSD used for path computation MUST include the PSID.
NEW: As per RFC8491 the MSD signals the total number of MPLS labels that can be imposed. This includes the PSID.
[Cheng]Wonderful! I do like your working style of providing text directly, LOL. Professional indeed! Respect!

-----
§2
"In addition, adding a PSID to a label stack will increase the depth of the label stack, the PSID should be accounted when considering Maximum SID Depth (MSD)[RFC8992]."
The above last sentence of §2 seems to be duplicating some previous text (below) and hence seem not useful. I would propose to remove it.

"The SR path computation needs to know the Maximum SID Depth (MSD) that can be imposed at each node/link of a given SR path [RFC8664]. This ensures that the SID stack depth of a computed path does not exceed the number of SIDs the node is capable of imposing. The MSD used for path computation MUST include the PSID."

[Cheng] Removed already, thank you!
 ----
§3
"If an egress cannot support the use of the PSID, it MUST reject the attemption of configuration."

If a egress doest not support PSID, how would it support the above rule?
It would seem easier to put the rule/burden on one pushing the PSID (e.g. the 'centralized controller" although the latter is "out of scope of this document")
[Cheng]You are right. We might delete it directly, because it is obvious as well.


--
§7 (and also mostly §6)
To some extend, this whole section is about signaling the context and semantic of the PSID between the ingress and the egress. Personally I would rather move this section inside section 3.
[Cheng] Sorry I don’t really get this. To me, these two sections are about the use cases of how PSID can be used. We also leave the part of signaling of PSID to PCE/IDR drafts. So it will be ok to keep it as is?


---
§ 8. Security Considerations

 "no new security threats are introduced comparing to current SR-MPLS"
In general, such statement may be read by security guys as "we did not really bothered studying the security implications". IMO it's better to put more text to explain _why_ there is no impact on security.
As a matter of fact, I'm not sure to agree with this statement: the one (e.g. an attacket) having the ability to signal a PSID value to an ingress, would have the ability to signal any label including a label value used as a service (VPN) label. This would trigger a VPN breach (injecting packets in the VPN).
This may not be not specific to the PSID, but even an "old" RFC with "old" security considerations is doing an effort well beyond "nothing new". https://datatracker.ietf.org/doc/html/rfc5036#section-5
So please consider enhancing the security consideration.

[Cheng] I have to say sorry here, because I am not an expert of security. How about the following modifications?

___NEW___
A Path Segment in SR-MPLS is a label similar to other labels/Segment, such as a VPN label or a Prefix SID, defined in MPLS and SR-MPLS. The data plane processing of a PSID is a local implementation of an ingress node, or an egress node, which follows the same logic of existing MPLS dataplane.

A Path Segment is used within an SR-MPLS domain {{RFC8402}} and SHOULD not leak outside the domain, therefore no new security threats are introduced comparing to current SR-MPLS. The security consideration of SR-MPLS, such as boundary filtering described in {{Section 8.1 of RFC8402}} applies to this document.

A PSID is allocated by an egress node and distributed to an ingress. The distribution is performed within an SR trusted domain. However, the mechanism of distributing a PSID is out of the scope of this document, and its security consideration will be described in other documents.



Thanks,
BR
--Bruno

____________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc

pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler

a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,

Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.



This message and its attachments may contain confidential or privileged information that may be protected by law;

they should not be distributed, used or copied without authorisation.

If you have received this email in error, please notify the sender and delete this message and its attachments.

As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.

Thank you.