Subject: Re: [bess] Shepherd's Review of draft-ietf-bess-evpn-pref-df

From: "Rabadan, Jorge (Nokia - US/Mountain View)" <[email-masked]>
Date: Fri, 19 Jun 2020 18:37:14 +0000

Hi Stephane,

Thanks for the review and my apologies for the delay.
We just posted a new revision.

As usual, very good points. Please see in-line.

Thx
Jorge

From: "[email-masked]" <[email-masked]>
Date: Wednesday, February 26, 2020 at 3:20 PM
To: "[email-masked]" <[email-masked]>, 'BESS' <[email-masked]>
Cc: "[email-masked]" <[email-masked]>
Subject: Shepherd's Review of draft-ietf-bess-evpn-pref-df
Resent-From: <[email-masked]>
Resent-To: <[email-masked]>, <[email-masked]>, <[email-masked]>, <[email-masked]>, <[email-masked]>, <[email-masked]>, <[email-masked]>
Resent-Date: Wednesday, February 26, 2020 at 3:20 PM

Hi Authors,

Here is my review of the document:

Please look at the nits and fix them.
https://www6.ietf.org/tools/idnits?url=https://www.ietf.org/archive/id/draft-ietf-bess-evpn-pref-df-05.txt

[Jorge] done.

Section 3:

-          Is the DF preference field only there when DF Alg=2 ? I mean if DF Alg !=2, can the reserved field be encoded differently ? This should be clear IMO.

[Jorge] ok, added:
“If the DF Alg is different than Alg 2, these two octets can be encoded differently.”

Section 4.1:

        “ Note that, by default, the Highest-Preference is chosen for each
       ES or vES, however the ES configuration can be changed to the
       Lowest-Preference algorithm as long as this option is consistent
       in all the PEs in the ES.
I don’t think it is a good idea to open this modification. People can play with preference values to achieve the required behavior while always keeping high pref.
We have no way to ensure consistency, except if we advertise the behavior as part of the exct. Consistency of DF election is key and needs to be ensured as much as we can.
[Jorge] the idea is have the highest preference as default (maybe use normative language?), which means that it will work fine. Opening to lowest is to give more flexibility, knowing that if the user has to change the config from the default, they will do it in all the PEs of the ES.

In case of equal Preference in two or more PEs in the ES, the

       tie-breakers will be the DP bit and the lowest IP PE, in that

       order.  For instance:
The sentence is not clear enough and must use normative language.
Example: In case of equal Preference between two or more PEs in the ES, an implementation MUST first prefer PEs advertising the DP bit set and then prefer the PE with the lowest IP address.
Which IP address are we talking about exactly here ?
[Jorge] I change this text to:
“In case of equal Preference in two or more PEs in the ES, the DP bit and the lowest IP of the candidate PEs are used as tie-breakers. After selecting the PEs with the highest Preference value, an implementation MUST first select the PE advertising the DP bit set, and then select the PE with the lowest IP address (if the DP bit selection does not yield a unique candidate). The PE's IP address is the address used in the candidate list and it is derived from the Originating Router's IP address of the ES route. Some examples of the use of the DP bit and IP address tie-breakers follow…”

Section 4.3:
Typo on:

A new "Don't Preempt Me" capability is defined on a per-PE per-ES

       Basis

Should be : “A new "Don't Preempt Me" capability is defined on a per-PE

       basis
[Jorge] actually the DP capability is defined per ES on each PE. So I changed it to the following to make it clear:
“A new "Don't Preempt Me" capability is defined on a per-PE/per-ES basis,”

s/however this document do not enforces the/however this document does not enforce the/

Question: Why don’t you enforce consistency ? What is the side effect of not ensuring consistency ?

[Jorge] The “SHOULD” term is because normally you would expect all the PEs in the ES to be consistent in the use of DP. But the procedures are really independently run by each PE and there is no negative side effect if only part of the PEs are configured as non-revertive. Former DF PEs configured without this capability will preempt the DF when they recover after a failure, but that is of course expected. In any case, I added: “In case of inconsistency in the support of the DP capability in the PEs of the same ES, non-revertive behavior is not guaranteed.”

“When PE3's vES2 comes back up, PE3 will start a boot-timer (if

       booting up) or hold-timer (if the port or EVC recovers).  That

       timer will allow some time for PE3 to receive the ES routes from

       PE1 and PE2. »

Are you changing the way the DF election works ? Usually, PE advertises its route and then wait to receive other routes.

[Jorge] those timers are on top of the FSM defined in RFC8584, e.g. we need to give some extra time before the ES goes up and we advertise the ES route, if the ES is configured with the DP capability. This is because the advertised preference and DP values may not be the same as the configured ones, and the ‘in-use’ values will depend on the other ES routes in the ES. If we advertise the ES route immediately after the ES is up, we may not have received the other ES routes and we don’t know what “in-use” values to advertise in order to avoid preemption in the ES. I added some text on point 5 (section 4.3).

What happens if all PEs on the ES are failing at the same time or the ES booting up on all the PEs at the same time ? you have no way to hear what is the pref from the remote.

[Jorge] The non-revertive capability makes sense when there is at least one PE alive in the ES and we don’t want to preempt it so that there is no traffic impact. If all the PEs fail, there is traffic impact anyway, so there is really no non-revertive behavior, but an initialization in all the PEs.

Shouldn’t the “no preemption” thing be valuable being agnostic to DF Alg ?

[Jorge] the non-preemption may not be possible with some Algs, so it has to be studied with each individual Alg. For instance, I can’t see how it can work with the default Alg in the way it is defined.

On 6)

Consider that we had:

PE3 advertising <300,1>

PE2 advertising <200,1>

PE1 advertising <100,1>

PE3 fails and come back, advertising [200,0], leading to PE2 being DF.

PE2 fails, but in a similar time PE1 changes its pref to 250. This leads to PE1 being DF while in this case PE3 should be DF because it should have recovered its preference but it can’t.

[Jorge] there may be race conditions, but whenever PE3 receives PE2 withdraw, it advertises (300,1). Even if both things happen at the same time, both will be computed by PE3. The main point is that upon a change in the ES, all the PEs calculate the highest and lowest PEs that are active in the ES. And if a PE becomes either one and its ‘in-use’ pref != ‘admin’ pref, then it will send an update with its admin values.

References:

I think vES should be set as normative as people really need to understand what vES is to understand the document.

[Jorge] ok, I made a few changes in the references. Let me know if it is ok.

Brgds,

Stephane