Hi,

As this document approaches being ready for working group last call, I
thought it might be helpful if I did a review.

Cheers,
Adrian

===

The document title could do with some clean-up.
- Remove the full stop
- Perhaps make it more straight-forward. For example,  Procedures for
Communication between Stateful Path Computation Elements

---

Abstract para 2

s/an LSP/LSP/

---

Abstract para 3

s/a stateful/stateful/

---

1. para 2

s/paths,/paths)/

---

1. para 4

s/an LSP state/LSP state/
s/of a LSP/of an LSP/
s/to only a single PCE/to a single PCE/

---

1.

s/to allow a stateful/to allow stateful/

---

1.

OLD
   Further, the examples in this section are for illustrative purpose to
   showcase the need for inter-PCE stateful PCEP sessions.
NEW
   This section contains illustrative examples to showcase the need for
   inter-PCE stateful PCEP sessions.
END


However, I find the examples running through sections 1.2, 1.3, and 1.4 to
be quite unnecessary. There is a feeling of "trying too hard" to prove that
there are uses for the protocol extensions described in the body of the
document. I would have been very happy with just one paragraph listing out a
few of the possible use cases.

Further, section 4 (which seems to rework the examples in sections 1.2, 1.3,
and 1.4) is not really an explanation of how the protocol extension works,
but more of a set of use cases. Again, this feels like it is trying to prove
the value of the extension. Do we really need it? It is such a simple
protocol extension.

---

1.2 para 1

s/an LSP state/LSP state/
s/grants the control/grants control/

---

1.2 para 2

This is really to read.

   In a multi PCE deployment (redundancy, loadbalancing...), with the
   current specification defined in [RFC8231], when a PCE makes an
   update, it is the PCC that is in charge of reporting the LSP status
   to all PCEs with LSP parameter change which brings additional hops
   and delays in notifying the overall network of the LSP parameter
   change.

a) s/current specification/specification/

b) s/with LSP parameter change/with any LSP parameter changes/

c) I can't tell what the final part of the paragraph means. Is it the
   reporting that brings additional hops and delays? How does the
   reporting cause this?

---

1.2 para 4

s/As stateful PCE make/As a stateful PCE makes/

s/immediately to/to/

---

All the figures in the document need numbers and titles. The text should
refer to them using <xref> rather than "the figure above" etc.

---

1.2

OLD
   PCE1 is responsible to compute paths for PCC1 and PCE2 is responsible
   to compute paths for PCC2.
NEW
   PCE1 is responsible for computing paths for PCC1, and PCE2 is
   responsible for computing paths for PCC2.
END

OLD
   PCE2 will so
   be notified of the change only after receiving the PCRpt message from
   PCC1.
NEW
   So PCE2 will
   be notified of the change only after receiving the PCRpt message from
   PCC1.
END

---

I'm confused by the example given in 1.2. LSP1 is under the control of PCE1,
so any changes that are made are made with the direct instruction from PCE1.
Therefore, it is not necessary to wait for the change to be reported by PCC1
- PCE2 can be notified of the intended change. Surely that would be more
efficient. (Yes, that would only be possible if there is a session between
the PCEs.)

Additionally, when the change is made in the network, it seems unlikely to
me that PCC1 would be aware that it is LSP2 that has had its resources
reduced because PCC1 does not know about the existence of LSP2. However, the
network nodes servicing LSP2 would know about this and so it would be
reported to PCC2 which can report it direct to PCE2.

(Note that this does not take anything away from the proposed protocol
extension. It is just a confusing example.)

---

1.3

s/failure, PCC/failure, the PCC/
s/sending new/sending a new/
Expand 'ERO' on first use.

---

1.3

   When the failed PCE or PCEP session comes back online, it will
   be up to the implementation to do preemption.  Doing preemption may
   lead to some disruption on the existing path if path results from
   both PCEs are not exactly the same.

The term 'preemption' may cause some confusion. I don't think you are
referring to the type of preemption of resources mentioned in the example in
the previous section. Perhaps...

   When the failed PCE or PCEP session comes back online, it will
   be up to the implementation whether to revert back to the original 
   primary PCE.  Reverting may lead to some disruption on the existing
   path if computation results from both PCEs are not exactly the same.

---

1.3

   By considering a network with
   multiple PCCs and implementing multiple stateful PCEs for redundancy
   purpose, there is no guarantee that at any time all the PCCs delegate
   their LSPs to the same PCE.

There is something not quite right about this sentence. Is there a 'not'
missing, such as...

   By considering a network with
   multiple PCCs and implementing multiple stateful PCEs for redundancy
   purpose, there is no guarantee that at any time all the PCCs will not
   delegate their LSPs to the same PCE.

The word 'preemption' is used later in the section, as well.

---

1.3

OLD
   The set of LSPs that are dependent to each other may
   start from a different head-end.
NEW
   The set of LSPs that are dependent on each other may
   start from different head-ends.
END

---

1.3

OLD  
   In the topology, all links cost
   metric is set to 1
NEW
   In the topology, all link cost
   metrics are set to 1
END

---

1.3. The figures on page 7, it is slightly odd that you have named the
destination/egress of the LSPs as PCCs. It is true that they might be PCCs
for other LSPs, but is that relevant?

---

It might help if the scenarios in section 1.3 were given their own
subsections (1.3.1, etc.).

---

1.3

The figures for scenarios 2, 3, 4 show D=0 and D=1 next to the links.
But I don't see anything that explains what this means. I assume that this
is the "delegate" flag.

---

1.3 scenario 3

s/sequence of event/sequence of events/

---

1.3 scenario 6

This scenario makes me very uneasy. Why do you have two domains if you are
sharing all of the topology information? A substantial reason for domains is
scalability. Another reason is confidentiality. 

Why do you show the PCEs as belonging to the separate domains if they share
all of the information? Surely they should be shown as outside the domains?

BGP-LS was intended as a "north-bound" policy-based export of information.
It does not follow that a BGP-LS speaker in one domain would entertain a
session with a node outside the domain, nor that it would share a full set
of information.

The question of multi-domain PCE and BGP-LS has been discussed in a large
set of previous RFCs, and this approach seems to go against all of that
prior work.

But looking at this scenario, I wonder why you even assume that the PCEs
need to be able to see topology in both domains. It just seems unnecessary.

---

2.1

OLD
   This document specify a mechanism to set-up a PCEP session between
   the stateful PCEs.  Creating such a session is already authorized by
   multiple scenarios like the one described in [RFC4655] (multiple PCEs
   that are handling part of the path computation) and [RFC6805]
   (hierarchical PCE) but was only focused on the stateless PCEP
   sessions.  As stateful PCE brings additional features (LSP state
   synchronization, path update, delegation, ...), thus some new
   behaviors need to be defined.

   This inter-PCE PCEP session will allow the exchange of LSP states
   between PCEs that would help some scenarios where PCEP sessions are
   lost between PCC and PCE.  This inter-PCE PCEP session is henceforth
   called a state-sync session.
NEW
   This document specify a mechanism to set up a PCEP session between
   the stateful PCEs.  Creating a PCEP session between PCEs is already 
   enabled for multiple scenarios like the ones described in [RFC4655]
   (multiple PCEs that are handling part of a path computation) and 
   [RFC6805] (hierarchical PCE).  But that earlier work focused only on
   the sessions between stateless PCEs.  

   Stateful PCE brings additional features to PCEP (LSP state 
   synchronization, path update, delegation, ...).  Thus some new
   behaviors need to be defined on the inter-PCE PCEP session.

   This inter-PCE PCEP session allows the exchange of LSP states between
   PCEs that can help in some scenarios where PCEP sessions are lost
   between PCCs and PCEs.  This inter-PCE PCEP session is called a
   "state-sync session" in this document.
END

---

2.1

s/session will allow for a PCE/session will allow a PCE/

---

2.2

   To provide
   the best efficiency, an LSP association constraint-based computation
   requires that a single PCE performs the path computation for all LSPs
   in the association group.

I don't agree with this as stated.

I do agree that it can be more optimal, and that there are some algorithms
that compute two paths at the same time, but it is also possible to
construct "split brain" solutions that work fine, if a little more slowly
and with more information exchange.

Further, not all LSP associations need knowledge of the path of one LSP to
establish the other LSPs.

---

2.2

s/This document specify/This document specifies/

---

2.2

   The
   priority could be set per association, per PCC, or for all LSPs.

Is this really...

   The
   priority could be set per association, per PCC, or for all PCEs.

---

2.2

s/shortest path at/shortest path as/

---

In 2.2 I am not clear whether PCE2 is transferring delegation to PCE1 or
just asking PCE1 to perform a computation. I think that PCE2 is allowed to
ask anyone for help performing a computation, but the issue of delegation
could be sensitive - the PCC has delegated to PCE2: does that mean that the
PCC is giving permission for the delegation to be passed on? Could this be
sensitive because PCE2 might be in a domain that the PCC doesn't trust? Or
do you assume that, because the PCC has a session with both PCEs, it trusts
them equally?

I did find 3.5 about "sub-delegation" and I think this is relevant.

---

3.1.1

   A PCE indicates its support of state-sync procedures during the PCEP
   Initialization phase [RFC5440].  The OPEN object in the Open message
   MUST contains the "Stateful PCE Capability" TLV defined in [RFC8231].
   A new P (INTER-PCE-CAPABILITY) flag is introduced to indicate the
   support of state-sync.

There is some history of flags being given letters, although not many of
these are tracked in the IANA registry (I note that you also don't ask for
this in section 11.3).

RFC 8623 defines the P2MP-LSP-INSTANTIATION-CAPABILITY flag and calls it the
P-flag. So you have a clash.

---

3.1.1

   *  P (INTER-PCE-CAPABILITY - 1 bit - TBD4): If set to 1 by a PCEP
      Speaker, the PCEP speaker indicates that the session MUST follow
      the state-sync procedures as described in this document.  The P
      bit MUST be set by both speakers: if a PCEP Speaker receives a
      STATEFUL-PCE-CAPABILITY TLV with P=0 while it advertised P=1 or if
      both set P flag to 0, the session SHOULD be set-up but the state-
      sync procedures MUST NOT be applied on this session.

There's a contradiction here. Initially, you say that if a PCE sets P=1 the
session MUST follow the procedures. Then you say that if the other PCE sets
P=0 the procedures MUST NOT be followed. 

I think it is clear what you intend, but it needs tidying.

How about...

   *  P (INTER-PCE-CAPABILITY - 1 bit - TBD4): If set to 1 by a PCEP
      speaker, the PCEP speaker indicates that it wants to use the
      state-sync procedures as described in this document.  If the P
      bit is set by both speakers, the procedures MUST be used.  If a
      PCEP speaker receives a STATEFUL-PCE-CAPABILITY TLV with P=0 while
      it advertised P=1 or if both set P flag to 0, the session SHOULD
      be set-up but the state-sync procedures MUST NOT be applied on 
      this session.  A PCE MAY decide to close a session if the received
      setting of the P flag is not acceptable.

---

In 3.2 I wonder how a PCE (acting as a PCE) can tell the difference between
information received from a PCC and a PCE acting as a PCC. This could be
made a bit clearer (because it is pretty important to stop the PCEs
reporting LSPs back to each other. This gets even more complicated if there
are more than 2 PCEs.

I suspect this shows up in 3.3 with the ORIGINAL-LSP-DB-VERSION

---

3.3

   When propagating LSP state changes from a PCE to other PCEs, it is
   mandatory to ensure that a PCE always uses the freshest state coming
   from the PCC.

I know why you say that. "Mandatory" sounds like a BCP 14 sort of word.
I wonder if you want to use "MUST". But also, I wonder whether this can be
reworded simply as what the PCE does.

---

3.3

s/and log such an event/and SHOULD log such an event/

---

3.4

   When a PCE receives a PCRpt on a state-sync session, it stores the
   LSP information into the original PCC address context (as the LSP
   belongs to the PCC).  

I'm not sure what "into the original PCC address context" means.
Is this simply that the LSP information is stored in the context of the PCC
that originally reported the LSP?

---

3.4
   
   A PCE SHOULD maintain a single state for a
   particular LSP and SHOULD maintain the list of sources it learned a
   particular state from.

You have two cases of "SHOULD". They are fine, but you need to explain what
the alternatives are ("MAY"), and how/why an implementation makes the
choice.

In fact, can you check through the whole document and look at the uses of
"SHOULD" to make sure the alternatives are properly covered.

---

3.5

s/it loose control/it loses control/

---

3.5

   If the highest priority PCE is failing or if the state-sync session
   between the local PCE and the highest priority PCE failed, the local
   PCE MAY decide to delegate the LSP to the next highest priority PCE
   or to take back control of the LSP.  It is a local policy decision.

What does "is failing" mean? How can one PCE know that another is failing?

---

3.5

In the case of sub-delegation, is there a requirement that the PCE that is
sub-delegated to has a PCEP session to the PCC that is headend for the LSP?

Suppose...

   PCE2--PCE1
          |
         PCC

If PCE1 sub-delegates to PCE2, how does PCE2 control the LSP without a
session to the PCC? But how does PCE1 know about the existence of PCE2's
sessions?

Do we rely on one of:
- All PCCs MUST have sessions to all PCEs
- A PCE MUST reject sub-delegation if it doesn't have a session to the
  PCC

You have text that says...

   In the case of sub-delegation, the
   computing PCE will send the PCUpd only to all state-sync sessions (as
   it has no direct delegation from a PCC).

...and...

   When a PCE receives a valid PCUpd on a state-sync session, it SHOULD
   forward the PCUpd to the appropriate PCC (identified based on the
   SPEAKER-ENTITY-ID TLV value) that delegated the LSP originally

This implies that PCE2 would send the PCUpd to PCE1, but PCE1 could have
been failing, or the session between PCE1 and the PCC might be down.

---

3.5.1

   A PCE SHOULD NOT compute a path
   using an association-group constraint if it has delegation for only a
   subset of LSPs in the association-group

It is unclear to me that a PCE can know this. In some cases, the association
is for a known number of LSPs (e.g., bidirectional), but in other cases
there can be a large number of LSPs in the group (e.g., VN), and the group
can be added to at any time.

---

3.7

s/a LSP/an LSP/
s/to other PCE/to another PCE/

---

6.

s/among PCEP speaker/among PCEP speakers/

---

6.

OLD
   *  ID Length: defines the length of the Speaker identity actual field
      (non-padded).
NEW
   *  ID Length: defines the length of the Speaker Entity identity field
      not counting any padding.
END

---

6.

   If a PCEP speaker receives a message with PCEP-PATH-VECTOR TLV and
   finds its speaker information already present in the PCEP-PATH-VECTOR
   TLV, it MUST ignore the PCEP message and SHOULD log it as an error.

Might be nice to say why...
...because this represents a message loop

---

6.

   The list of speakers within the PCEP-PATH-VECTOR TLV MUST be ordered.

Ah, but what order? 

   When sending a PCEP message (PCRpt, PCUpd, or PCInitiate), a PCEP
   Speaker MAY add the PCEP-PATH-VECTOR TLV with a PCEP-SPEAKER-
   INFORMATION containing its own information.

Addition is presumably in a specific order. "add to the end of the list"?

You do say "append" at the bottom of the paragraph, so I think it is clear
what you intend: you just need to bring it out more clearly.

---

7.

This is a reasonable section. 
I'm interested in the transfer of information outside the control of the
PCC. The PCC is in a trust relationship with the PCE, but this document
allows the PCE to share the information with other PCEs. While there is an
implied trust relationship between PCEs, there could be a long chain and the
PCC is not aware of the chain, I think.

This could be handled if the complete Path Vector TLV was returned back
through the PCEs to the PCC. Then, at least, it would know who had seen its
information.

---

Thanks for section 8. Of course, it would be better if someone would write
some code because that shows there is an actual need for this feature.

---

Thanks, also, for section 9.

---

9.1

s/for a inter-PCE session/for an inter-PCE session/ s/They MUST allow
configuration of/They MUST be allowed to configure/ s/MAY also allow
configuration of /MAY also be allowed to configure/ x2


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

Reply via email to