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