Thanks a lot, Adrian for the review.

Please find responses inline marked with <S>.

Regards,
Samuel

From: Adrian Farrel <[email protected]>
Date: Tuesday, 17 February 2026 at 20:35
To: [email protected] <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Shepherd review of draft-ietf-pce-multipath

Hi authors,

I'm your shepherd for the next stage of the journey. As part of that
process, I am doing a review during working group last call to be ready
to do the shepherd write-up. I found a number of issues and nits which
will require some discussion and a new revision.

Best,
Adrian

===

Author count. As you all know, the RFC Editor has a front page limit of
five authors unless the IESG can be persuaded to vary that. The shepherd
is expected to provide *good* reasons why a document has more than five
front-page authors.

The options here are:
1. Reduce the count to 5 by moving some to Contributors. Perhaps you
   could limit to one per company.
2. Drop to just the Editor on the front page and move everyone else to
   Contributors.
3. Come up with a really good reason that will convince me, and I will
   try to convince the AD.

<S> The same topic was already discussed with other co-authors and resulted in 
reduction of number of authors from 9 to 7, but I initiated another mail thread 
to agree on next steps. Please give me a few more days to get closure on this.

---

Are you really updating 8231 and 8281?
An update would mean that an implementation of either of those RFCs MUST
include what is in this document.

I think it is probable that you are simply defining a new tool that an
implementation may choose to include. This view is supported by the fact
that you have defined a mechanism to discovery whether the tool is
supported.

<S> I agree that it is new tool and it is even guaraded with new capabilities, 
so update is probably not required. I'll udpate the RFC to drop it.

---

The Abstract got me quite worried because PCEP, as defined in 5440,
allows a PCE to supply multiple paths.
 Section 6.5
   The PCRep message may also contain multiple
   acceptable paths corresponding to the same request.
...and then...
   If the path computation request can be satisfied (i.e., the PCE finds
   a set of paths that satisfy the set of constraints), the set of
   computed paths specified by means of Explicit Route Objects (EROs) is
   inserted in the PCRep message.  The ERO is defined in Section 7.9.
   The situation where multiple computed paths are provided in a PCRep
   message is discussed in detail in Section 7.13.  Furthermore, when a
   PCC requests the computation of a set of paths for a total amount of
   bandwidth by means of a LOAD-BALANCING object carried within a PCReq
   message, the ERO of each computed path may be followed by a BANDWIDTH
   object as discussed in section Section 7.16.

It was only when I got to "[RFC9862] specifically avoids defining how to
signal multiple Segment Lists" that it became clear that you are talking
about PCEP for SR.

I think your Abstract could use a little cleaning up. And the document
title is probably wrong as well.

The nub of the problem comes in section 2.1. It is not that multiple
EROs cannot be present on a PCRep; the problem is with the definition of
"path" and "LSP" in SR. We're not going to fix any of that (although,
IMHO, it would be really neat if we could), so what this document needs
to do, up front and in the Introduction, is set out the terminology...
- Path
- LSP
- Segment list
- ERO
Then everything else will fall into place.

You should also check through the rest of the text (especially the
Introduction) for places where it says "PCEP" but means "PCEP for SR"
or "multipath" where it means "SR multipath".

<S> The base idea was that the draft defines extensions for SR, but in a way 
that it can be easily re-used for other path types in the future That's why 
even terminology in the draft is trying to be generic ("path" vs 
"segment-list"). If we will strictly define all new TLVs/objects with SR 
terminology, then it can be difficult to re-use them for different path types.

But I agree that current text in abstract is not correct, when it is saying 
that PCEP was not allowing encoding of multiple paths before and I'll fix it to 
make it more SR specific and update terminology as you suggested. I'll re-check 
other sections as well.

---

3.2

Why does this text use "SHOULD" and not "MUST"? Under what circumstances
would this not be the case (i.e., what is the missing "MAY")?

But, anyway, it reads very odd so say something about per PATH metrics
and then immediately say per-path metrics are out of scope.

Why do you mix "PATH" and "path"?

<S> What about:

The PCEP METRIC object can continue to be used at the LSP level.
Mechanisms for encoding per-path metrics (e.g., a separate METRIC
for each path) are outside the scope of this document and would
require further extensions.

---

3.4

Why not move the definition of the MULTIPATH-BACKUP TLV to [I-D.draft-
ietf-pce-sr-p2mp-policy] since that appears to be the only use case for
it at the moment and since you are specifically ruling out P2P at this
time?

And given that you are ruling out P2P, why do you only say the an
implementation "SHOULD" reject a MULTIPATH-BACKUP TLV applied to a P2P
path?

On the other hand, I fail to see why p2p is such a hard case that has to
be excluded here. After all p2p is just p2mp is the special case of a
single destination. The example in 6.2 seems to work for p2p.

<S> P2P was excluded as there were concerns that use for P2P will require 
further definition as since there is known usecase currently, the it was 
considered as safer to exclude it and any future document, which will define 
usecase, you unblock use of it (potentially with required capabilities as well 
since implementations may not properly support it).

For moving "MULTIPATH-BACKUP TLV" to P2MP draft - that discussion happened 
already (including during last presentantion on IETF), but overall preference 
from authors of both drafts was to preserve it in this draft to allow potential 
re-use (P2P, but also other path types) and keep "framework" to support 
multiple paths in single document (even if that is not that strong argument 
after you high-lighted existing LOAD-BALANCING object).

I'll convert SHOULD to MUST.

---

3.4

It would be really helpful to what the Backup Path IDs match against.
Where are the identifiers of the backup paths found?

<S> I'll change to:

Backup Path ID(s): A series of 4-octet identifier(s) that reference the
Path ID field (see {{PATH-ID}}) of other PATH-ATTRIB objects within the
same PCEP LSP. These referenced paths act as backup paths that protect
this primary path. Each Backup Path ID value MUST match the Path ID of a
PATH-ATTRIB object in the same LSP that has the B-flag set (indicating
it is a pure backup path).

And I'll update section 3.5 based on that as well ("Opposite Direction Path ID" 
field definition).

---

3.5

   New MULTIPATH-OPPDIR-PATH TLV is optional in the PATH-ATTRIB object.
   Multiple instances of the TLV are allowed in the same PATH-ATTRIB
   object.  This TLV encodes a many-to-many mapping between forward and
   reverse paths.

I don't think this TLV encodes a many-to-many mapping because it is
present in the PATH-ATTRIB object of a single path, and encodes a single
Opposite Direction Path ID. So, the TLV encodes a relationship between
two paths, one in each direction.

You cover this nicely, later, with:

   Multiple instances of this TLV present in the same PATH-ATTRIB object
   indicate that there are multiple opposite-direction paths
   corresponding to the given path.  This allows for many-to-many
   relationship among the paths of two opposite direction LSPs.

<S>I'll update to:

New MULTIPATH-OPPDIR-PATH TLV is optional in the PATH-ATTRIB object.
Multiple instances of the TLV are allowed in the same PATH-ATTRIB object.
Each TLV instance identifies one opposite-direction path for the path
described by this PATH-ATTRIB object. When multiple instances of this
TLV are present in the same PATH-ATTRIB object, they collectively enable
a many-to-many mapping between forward and reverse paths.
---

3.5

I think you need some commentary on the non-setting of bits N and L.
In particular, not setting N does not mandate that the two paths use
different nodes: they may use the same or different nodes.

You might also note that setting L implies that the two paths also use
the same set of nodes, but it is not necessary to set N when L is set.

<S> Please check update definition of those flags:

* N (Node co-routed): If set, indicates this path is
node co-routed with its opposite direction path, specified in this TLV.
Two opposite direction paths are node co-routed if they
traverse the same nodes, but MAY traverse different links.
If not set, the paths are not guaranteed to be node co-routed
(they may or may not traverse the same set of nodes).

* L (Link co-routed): If set, indicates this path is
link co-routed with its opposite direction path, specified in this TLV.
Two opposite direction paths are link co-routed if they
traverse the same links (but in opposite directions).
Link co-routing implies node co-routing; therefore, it is not
necessary to set the N flag when the L flag is set.
---

3.5

You describe the requirement that if path a shows an opposite direction
relationship with path b.

But (presumably) there is the possibility of setting up paths one at a
time. How does that work?

<S> Do you mean in case of opposite paths associated within single LSP? If yes, 
then I would expect them to be always signalled atomically - I can add text to 
mnake it clear:

Typically, the referenced path is in the same PCEP LSP, where
forward paths (R-flag=0) and reverse paths (R-flag=1) are
signaled together in a single PCEP message. This allows bidirectional
path relationships to be established atomically within one LSP.
Alternatively, the referenced path may be in an associated
opposite-direction LSP (using the ASSOCIATION object per RFC 9059).

---

3.5

I wondered, given that the draft rules out using the backup processing
for p2p paths, whether you should rule out using the reverse path
association for p2mp paths. It is certainly the case that p2mp reverse
path is a complex issue.

<S> I'm fine with that. P2MP draft can still define it if needed.

---

3.6

   To signal the Composite Candidate Path, we make use of the COLOR TLV,
   defined in [RFC9863].  For a Composite Candidate Path, the COLOR TLV
   is included in the PATH-ATTRIB Object, thus allowing each Composite
   Candidate Path to do ECMP/W-ECMP among SR Policies identified by its
   constituent Colors.  Only one COLOR TLV MUST be included into the
   PATH-ATTRIB object.  If multiple COLOR TLVs are contained in the
   PATH-ATTRIB object, only the first one MUST be processed and the
   others MUST be ignored.

As written, the use of "MUST" is a little confusing.
Are you saying that it is a requirement that a COLOR TLV is present in
the PATH-ATTRIB object?
I think you can safely delete the "Only one..." sentence.
And you can change the second sentence to:
   If multiple COLOR TLVs are contained in the
   PATH-ATTRIB object, the first one is processed and the others MUST be
   ignored.

<S> Sure, I'll update it.

---

3.6.1

Is there any guidance about the value of the FC field? Is it

<S> Is the comment complete? I can imagine extending definition of FC field for 
example with following text (but I'm not sure if you are really looking for 
that or something else):

The FC field allows up to 8 different forward classes
(values 0-7). The semantics of specific FC values are locally significant
and determined by local policy or configuration.

---

4.1.1

   When PCE computes the LSP path, it MUST NOT return more forward
   multipaths than the corresponding value of "Number of Multipaths"
   from the MULTIPATH-CAP TLV.  If this TLV is absent (from both OPEN
   and LSP objects), then the "Number of Multipaths" is assumed to be 1.

The value the PCE sent, or the value the PCC sent? Or both?
And what if it does?

<S> I can update it to:

When a PCE computes an LSP path, it MUST NOT return more forward
multipaths than the minimum of the "Number of Multipaths" values
advertised by both the PCE and PCC in their respective MULTIPATH-CAP TLVs
during capability negotiation. This ensures the PCE does not exceed either
its own computation capability or the PCC's installation capability.
If this TLV is absent (from both OPEN and LSP objects), then the
"Number of Multipaths" is assumed to be 1.

If a PCC receives more paths than it advertised support for, it MUST
send a PCError message with Error-Type = 19 ("Invalid Operation") and
Error-Value = TBD3 ("Unsupported multipath capability").

---

5.

I wanted to check that the RBNF you present is really what you want. You
have:

      <intended-path> ::= (<ERO>|
                          (<PATH-ATTRIB><ERO>)
                          [<intended-path>])

This is ambiguous because you can't see whether the repeated
<intended-path> happens only if (<PATH-ATTRIB><ERO>) is chosen.

I think you probably mean:

      <intended-path> ::= ( <ERO> | (<PATH-ATTRIB><ERO>) )
                          [<intended-path>]

If so, you could write:

      <intended-path> ::= [<PATH-ATTRIB>]<ERO>
                          [<intended-path>]

The same for <actual-path>

<S> Thanks for finding it. I'll update it.

---

5.

   Each path is preceded by a PATH-ATTRIB object that
   describes it.

According to the RBNF (whether you make my change or not) this should
read:

   Each path may be preceded by a PATH-ATTRIB object that
   describes it.

<S> Ack, I'll update it.

---

6.

I believe your examples should use addresses from the ranges reserved
for documentation. That is 2001:db8::/32 and 3fff::/20

<S> Are you referring to "100:1.1.1.1" and "100:2.2.2.2"? If yes, then I assume 
that we need to replace them with blocks from 
"https://datatracker.ietf.org/doc/html/rfc5737#section-3"; since those are just 
combinations of originator ASN (100) and IPv4 addresses.

---

6.1

   Consider the following sample SR Policy, taken from
   [RFC9256].

I don't find that sample in 9256.

<S> I assume that it was originally referring to:
https://www.rfc-editor.org/rfc/rfc9256#section-2.13
But I can just simplify to "Consider the following sample SR Policy".

---

6.1

It would be useful to refer to 8231 for <state-report>

<S> Sure.

---

The inclusion of the Implementation Status section is appreciated
(although it is pretty thin). Obviously, the early assignments done by
IANA has made this a lot easier. Given that there are some code points
still marked as TBDx, I wonder how the "full" implementations have been
achieved.

<S> Ack, I'm not sure about that part. I'll keep authors/contributors from 
Ciena to comment. Otherwise I can just update it to "Partial".

---

8.1 correctly asks for IANA to confirm the assignment of object-class 45
and the object-type 1. However, it should also describe the other
object-type values shown in the registry.

<S> Ack, I'll add 0 and 2-15.

---


== Nits

<S> Ack, for nits. I'll update them.

1.

There are no PCEP standards, so probably s/standards/specifications/

---

2.3
s/path(s)/paths/

---

3.1
"several ERO/Recorded Route Object (RRO) objects"
"ERO/RRO objects"
Seems to be tautology

---

3.1
The text should directly reference "Figure 1"

---

3.1
Missing description of "Optional TLVs"

---

3.3
You should probably say that Weight is an unsigned integer

---

3.4
s/path(s)/paths/  (four times)
s/ID(s)/IDs/
s/identifier(s)/identifiers/

---

4.3

Expand PLSP on first use. Does it also need a reference?

---

4.3

Steps 2 and 3 use the passive voice. It would be helpful to say which
component is responsible for each action.

---

_______________________________________________
Pce mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to