Hi Lucy,

[Lucy] A parent for a mcast group can not consider the route to have
been withdrawn and replaced because of RT is not indicate the parent.
The parent must check if the leaf A-D for the mcast is from its child.
There is a case, a parent for a mcast group receives an leaf A-D of the
group from a downstream node whose parent is not this parent. In this
case, the parent must not treat it as implicit withdraw.

I believe your suggestion is in violation of the BGP specification.

[Lucy] Leaf A-D is for downstream to inform upstream parent, shouldn't
be the same for segmented P-tunnels (IR) or non-segmented P-tunnels? If
not, please explain.

When non-segmented ingress replication is used, the ingress PE needs to see the Leaf A-D routes from all the egress PEs. (The ingress PE is the upstream parent in this case, even if the ingress PE is not a BGP peer of the egress PEs.) This means that the RT on the Leaf A-D routes needs to identify the ingress PE. However, the Leaf A-D routes may need to travel over multiple BGP sessions before they reach the ingress PE. Some of these BGP sessions may be IBGP sessions, some may be EBGP sessions. It's rather important that the route not get discarded before it reaches the ingress PE, even though it passes through multiple BGP speakers. If one wants to constrain the distribution of the routes, one still has to guarantee that the routes will reach their targets.

Now let's turn to the issue you raised with regard to section 6.2 of the draft -- when is it is safe for an intermediate node to assign the same label to two tunnels?

Consider two flows that originate from the same ingress PE (and same ingress VRF). Call these flows K1 and K2. We'll call the ingress PE "I-PE".

Let's consider a single egress PE, "E-PE", and let's suppose that we are using segmented ingress replication.

The following diagram depicts a possible way that the Leaf A-D routes may flow from E-PE to I-PE (thanks, Jeffrey, for the diagram):


                   K1: L4 <----       K1: L2 <----
      <------    -------------- N2 -----------------      <-----
      K1&K2: L6 /                                   \    K1&K2: L1
I-PE --------- N1                                   N3 ----------- E-PE
                \                                   /
                 -------------- N4 -----------------
                   K2: L5 <----       K2: L3 <----
In words:

- E-PE sends Leaf(K1) to N3 with label L1.

- E-PE sends Leaf(K2) to N3 with label L1. (Flows K1 and K2 have same ingress PE and same parent node, so can be assigned the same label.)

- N3 sends Leaf(K1) to N2 with label L2.

- N3 sends Leaf(K2) to N4 with label L3. (The choice of N4 rather than N2 as parent might be due to ECMP.)

- N2 sends Leaf(K1) to N1, with label L4.

- N4 sends Leaf(K2) to N1, with label L5.

Now N1 has to send both Leaf(K1) and Leaf(K2) to I-PE. Per section 6.2, it will assign a different label in each Leaf A-D route, since K1 and K2 have different children. But let's suppose for now we follow your suggestion, and allow N1 to assign the same label (L6) in both Leaf A-D routes.

Let's look at the resulting data flow. Suppose I-PE sends a K1 packet to N1, with label L6. N1 will have to send this packet to N2 with label L4, and to N4 with label L6.

N2 will send the packet to N3 with label L2, and N4 will send the packet to N3 with label L3.

N3 will send both packets to E-PE with label L1.

E-PE will then have received two copies of the K1 packet, and both copies carry label L1. Therefore E-PE has no way of knowing that it needs to discard one copy. The result is that E-PE will forward duplicate traffic out its VRF interface.

On the other hand, if we follow the procedure specifies in section 6.2, N1 will not forward K1 packets to N4, and E-PE will not forward duplicate traffic.


Eric

_______________________________________________
BESS mailing list
BESS@ietf.org
https://www.ietf.org/mailman/listinfo/bess

Reply via email to