Hi Olivier,

Thank you very much for your thoughtful review and detailed comments, much 
appreciated.

I’d like to clarify an important distinction: PcRpt(+Delegate) is not being 
used to ask for a path, rather, it's used to immediately hand over control of 
an LSP, which yes, eventually leads to the LSP being given a path. One could 
consider this a more declarative approach to controlling LSPs, as opposed to 
first requesting a path for the LSP and then giving control. While it’s a 
subtle distinction, it does impact system behavior and implementation.

Additional replies in line below with <Andrew></Andrew> (hopefully my 
indentations come through okay 😊).

Thanks!
Andrew

From: olivier.dug...@orange.com <olivier.dug...@orange.com>
Date: Monday, March 31, 2025 at 4:35 AM
To: pce@ietf.org <pce@ietf.org>
Subject: [Pce] Comments on draft draft-many-pce-stateful-amendment-01
 Dear authors,

I would raised come comments on your draft following its presentation during 
the last IETF meeting.

First, regarding section 2, using PcRpt to request a path to PCE is not a good 
idea, IMHO, for many reasons:

 - You claim that it will simplify the protocol and reduce the number of 
messages. But, in case of PcReq
   usage, there is 3 messages (PcReq from PCC to PCE, PcRep from PCE to PCC and 
PcRpt from PCC to PCE) which
   is the same with an empty PcRpt: 3 messages take place (PcRpt from PCC to 
PCE, PcUpdate from PCE to PCC
   and PcRpt from PCC to PCE),

<Andrew>
It does simplify the protocol, but I don’t see any assertions in the document 
that it reduces the number of messages. Could you point me to that? The text 
states it "optimizes" the original procedure, not that it reduces message 
count. From both a simplification and optimization perspective, it does improve 
both for stateful deployments in that:

Simplifies:

1.      Reduces the types of messages exchanged to a single, consistent flow 
(Reporting and Updating only – less is more).

2.      PcReq introduces additional behavior, such as cancellations, that now 
must be considered and handled.

3.      As you mentioned, the PCE MUST reply to the PcReq, even if there is no 
path or availability to bring up the path. This raises the question: how long 
should the PCC wait before receiving a response to the PcReq? When should it 
cancel a PcReq? Some implementations added timeouts to retry PcReq, leading to 
additional complexities.

4.      As described in the document, it implicitly removes the need to guess 
whether a PcReq should be handled statefully (i.e., reservations). The PCE 
doesn’t know if a PcReport will follow a PcReply, so if it does want to 
statefully handle PcReq it must also handle PcReq/PcReply timeouts


Optimizes:

  *   Achieves delegation control in the very first message (compared to the 
round-trip Req/Reply/Report).

     *   This can impact how the PCE decides if and when to act on an LSP. The 
PCE can act immediately based on its current state, without waiting for 
delegation confirmation. For instance, with co-routed paths that appear 
simultaneously, the PcReq/Reply/PcRpt workflow is more complex compared to the 
simpler PcRpt(+Delegate) workflow.

        *   Example: If LSP 1 and LSP 2 turn up simultaneously and use 
association diversity, the PcReq model might result in LSP1 being replied to 
first. If the PCE then needs to move LSP1 to allocate a path for LSP2, it must 
wait for the LSP1 report to confirm delegation. With the PcRpt(+Delegate) 
model, the PCE can immediately send subsequent PcUpd for LSP1 without waiting. 
Needless to say SVEC would add even more complexity on it.

  *   Eliminates the need to send a PcReply when there is no valid path.
  *   At scale, with a large volume of activities ongoing in PCE -> dealing 
with PcReq storms is a lot more complex and potentially inefficient compared to 
already having delegated LSPs under control/reactivity and letting PCE decide 
what operations to take, and when.
</Andrew>




 - It is clearly mention that a PCE MAY send a PcUpdate message when a PCC 
sends a PcRpt with an LSP mark
   as down (with or without an empty ERO) in RFC8231. Thus, in your proposal, 
there is no guarantee that a
   PCC receives a path from the PCE while, with a PcReq, a PCE MUST answer even 
with a NO-PATH Object
   as per RFC5440 definition,

<Andrew>
I do not see how this(no guarantee) is a negative/concern?. If the goal is to 
delegate the LSP and there is no path available, why send a NO-PATH response? 
Instead, simply report that the LSP exists, along with its criteria to PCE, and 
let the PCE determine if/when to act and give a path. In a PcReq model, if the 
PCE replies with NO-PATH, what would fundamentally change? From what I’m aware 
of, implementations just delegate to the same PCE after the PcReply, regardless 
of the LSP's state.

While PCC could technically send a PcReq to another PCE, in practice, PCC 
implementations tend to treat PCEs in a backup-prioritization model 
(active/current). Typically, the same PCE handles(PcReq or delegation) all LSPs 
from the PCC or none. Delegating paths to different PCEs on a per-path basis 
would complicate operations, making management and troubleshooting more 
challenging. It would also introduce the complexities outlined in 
draft-ietf-pce-state-sync.
</Andrew>




 - Changing above behavior for PCE, i.e. PCE MUST reply to a PcRpt with an 
empty ERO with a PcUpdate will
   violate the base principle of IETF where only one message is allowed per 
protocol for a given action.
   Here, your proposal will introduce the possibility to request a Path with 
two different messages within
   the same protocol,
 - Doing that, as two consequences:
       - there is no possiblity for the PCE with an PcUpdate message to 
advertise the PCC that there is no
         path with all indications allowed by the NO-PATH Object,
       - Using PcRpt to request a path is also restrictive compared to a PcReq. 
In particular, the PcRpt
         could not contains an IRO/XRO or SVEC Objects which are mandatory 
constraints for operator,
         in particular in the scope of geopolitical / tactical path 
computation, path diversity,
         path protection ...

<Andrew>
As per previous remark, PCC is not ‘requesting’ a path using PcRpt. It’s giving 
control of the LSP to the PCE to take actions on the LSP. I do not see this as 
an overlap of two messages achieving the same thing. The semantics and workflow 
are different. Regarding your first bullet – that sounds like previous above 
comments, why does the PCE need to actively inform PCC that there’s no path for 
this LSP? There already is no path (the LSP was just ‘turned up’) and it’s 
under control of the PCE to decide when to bring it up. What difference would 
take place should the PCC be informed no path when it will delegate anyways?

Regarding IRO/XRO constraints, those would be carried in PcRpt messages via 
<intended-attribute-list> (see 5.8.2 RFC 8231) otherwise IROs that involve 
PCE-INIT redelegation to another PCE would be missing too, as well consider 
that the scenario (PcRpt+Delegation) of an LSP to a backup PCE (RFC8231) for an 
already established LSP.
</Andrew>




However, I agree that when a PCC would request a new path, the number of 
messages is increase as it MUST
first send a PcRpt to stop delegation, then sends a PcReq message, wait for the 
PcRep and finaly sends
another PcRpt to re-delegate the LSP.

<Andrew>
Note that use case of PCC revoking delegation to perform PcReq does not change 
with this proposal. Consider that, however, the requirement/use of a PCC 
revoking delegation should only actually be required in scenarios where local 
configuration have changed. In a fully delegated mode, the PCC simply relies on 
the PCE to know if/when to perform path calculations and updates for the LSP 
based on the LSPs state changing and topology or associated lsp changes.
</Andrew>




But, if the goal is to simplify the protocol, I would suggest to take the 
problem in another way:
Why not enhance the PcReq and as consequence PcRep messages to stateful? I mean:

<Andrew>
We’re simplifying the protocol by removing – and not adding anything new. 
Related to examples described above – the beauty of the PcRpt+Delegation turn 
up is there is no change to the existing protocol semantics, and in fact, PCEs 
*should *already* be handling what happens when receiving a PcRpt+delegation in 
an ad-hoc manner to deal with PCE-PCC Sync scenarios and PCE backup / 
redelegation, so even implementations themselves should not need to change.  
The update simply makes the RFC text clear that there’s no requirement to first 
send a PcReq and that one can skip ahead to the stateful turn up mode.
</Andrew>




LSP is already part of PcReq and PcRep messages. Thus, there is no modification 
in the protocol. We just
need to authorize the Delegation within the PcReq and PcRep messages. 
Operations will be as follow:
 - A PCC sends a PcReq message with Delegate=1 to both request and delegate a 
path to PCE,

<Andrew>
It seems to me there is a contradiction in saying there is no modification to 
the protocol but then now needing to introduce a new bit into an existing 
message and have new code to interpret that bit :)
</Andrew>




 - PCE MUST reply to PcReq with a PcRep message with Delegate=1 or Delegate=0 
depending if it accepts or
   not the delegation as usual,
 - PCC install the path and sends a PcRpt message with Delegate=1 as usual,

<Andrew>
Certainly, an interesting and valid idea to give-delegation right at PcReq 
time, but this now seems to add even more mechanisms (complexity) to give back 
delegation - a PcReply now also can return delegation? why would that be 
necessary? What happens if PCE replies Delegate=0, should PCC still PcRpt with 
delegate=1?  Or should the PCC never delegate=0?  Could we end up in a 
delegation offer/rejection loop?
</Andrew>




 - In case of NO-PATH, the PCE could accept the delegation by setting 
Delegate=1. PCC sends a PcRpt with
   state down. PCE could then update later the path when resource or constraint 
become available by
   sending a PcUpdate message. PCC could also sends a new PcReq message already 
with Delegate=1 after
   relaxing some constraints accoring to the NO-PATH Object it received 
previously.

<Andrew>
The proposal is an implicit acceptance of delegate=1 (no different than a 
synchronization or redelegation scenario). However, I do see one remark here 
that is not considered in the proposal. Would it be correct to say that your 
intention and concern with PCE sending NO-PATH is so that way PCC can decide to 
relax constraints and try-again with another PcReq? If so, would it not be 
cleaner, to simply inform PCE which constraints -could- be relaxed and let PCE 
compute the ‘best’ result for the given scenario against the set of 
constraints/relaxable constraints?
</Andrew>




 - During path life, PCC could sends new PcReq message already with Delegate=1 
to request a new path. This
   time, we save exchanges between PCC and PCE.

<Andrew>
As per existing RFCs, PCC would still need to revoke delegation first before 
sending PcReq. If the intent is to drop that behavior, it’s also worth 
considering now this would introduce additional race condition complexity for 
any inflight PcUpd and PcReq messages. The nice thing about delegation 
control/revoke is the race conditions on which message is respected is removed. 
Also consider, In general, once PCC sends PcRpt+Delegate to a PCE, there’s 
really no need for PCC to ever send a PcReq unless some localized 
configurations have changed. That’s the value of delegation, is that, as the 
network and LSP state changes, PCE acts upon it as it sees necessary (including 
turn up, turn down, reroute).
</Andrew>


Another benefit of this solution will be the possibility for a PCC to request a 
new path in the case of a
PCE Initiated path. Today, PCC has no possiblity to advertise or request a new 
path to the PCE in the case
of an initiated tunnel. Only a PcRpt message could be send with a Down or 
Goes-to-Down bit set. But, there
is again no guarantee that the PCE will update the path.

<Andrew>
True, I agree with the use case example of PCC asking for a refresh on a PCE 
initiated path. It echoes our session discussions we had just recently on PCC 
asking for a path refresh/resignal of a delegated LSP (perhaps using PcNtfy, 
for example). However, I don’t see that as being a PcReq/Reply/Report styled 
workflow, but rather a uni-directional unacknowledged signal for “refresh the 
delegated LSP” that can be sent to PCE. Implementations generally support this 
idea already through API and/or timers -> exposing access to PCC through a 
message without changing the delegation workflow would be more ideal in my 
opinion. example: a PcNtfy would get the job done without inducing any changes 
to existing message handling or MBB workflow .
</Andrew>




Now, regarding section 3, I agree that both ERO and RRO with SR or SRv6 path is 
useless. However, I think,
IMHO, that it would be better to keep or render mandatory RRO Object instead of 
ERO. Indeed, the purpose
of PcRpt is to synchronise the LSP-DB between PCC and PCE but also report to 
PCE the state of the LSP.
Thus, in this scope, RRO, which represent the actual path, has more meaning 
compared to ERO which represents
the intend path.

<Andrew>
While I agree with your definition use of actual and intended, that’s the 
nature of the change -> the only common denominator is the ERO. You simply 
always only have an intended path. Worth also noting that consolidating on ERO 
simplifies message consistency - all messages (PcUpd, PcRpt) simply use and 
look only at ERO.
</Andrew>



Best Regards

Olivier
____________________________________________________________________________________________________________
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.
_______________________________________________
Pce mailing list -- pce@ietf.org
To unsubscribe send an email to pce-le...@ietf.org
_______________________________________________
Pce mailing list -- pce@ietf.org
To unsubscribe send an email to pce-le...@ietf.org

Reply via email to