]> git.proxmox.com Git - mirror_frr.git/commit
pimd: Handling SGRPT prune received
authorSarita Patra <saritap@vmware.com>
Wed, 14 Dec 2022 17:24:57 +0000 (09:24 -0800)
committerSarita Patra <saritap@vmware.com>
Thu, 15 Dec 2022 12:02:23 +0000 (04:02 -0800)
commit50b8574d5449b80b760666c789ce84d839feedd0
tree2e19428d3ac3cd91ed49688eef135c884bccb13a
parent5519e0eb1481900f3ad415cba9b67f962abdceb7
pimd: Handling SGRPT prune received

Topology:
========
Receiver----R1----(ens192)R2(ens224)----R3----R4----Source
              --------------------------
R1=LHR
R2=RP
R4=FHR

Problem:
=======
1. Direct  connected link between R1 and R3 is down initially.
2. So traffic flow path is R4<->R3<->R2<->R1<->Receiver.
3. Mroutes are properly created on all the nodes.
4. Up the direct connected link between R1 and R3.
5. Traffic flows in both the paths.
   R4<->R3<->R2<->R1<->Receiver
   R4<->R3<->R1<->Receiver
6. Duplicate traffic received at the receiver.

Root Cause:
==========
Initially when the direct connected link between R1 and R3 is
down, traffic flows via RP(R2). So in RP (S,G) installed with
IIF as ens224 and OIF as ens192 (reference = 2) with mask
PIM_OIF_FLAG_PROTO_STAR and PIM_OIF_FLAG_PROTO_PIM.

Now when the direct link between R1 and R3 is Up, LHR(R1) sends
SGRPT prune. After prune received, RP(R2) will remove OIF ens224
with mask PIM_OIF_FLAG_PROTO_STAR.
Since OIF ens224 is still present with mask PIM_OIF_FLAG_PROTO_PIM,
RP(R2) will not send prune towards R3.
So traffic continues to flow in the path R4<->R3<->R2<->R1<->Receiver.

Fix:
====
When SGRpt prune received, remove OIF irrespective of the OIF is
installed with mask "PIM_OIF_FLAG_PROTO_STAR" or "PIM_OIF_FLAG_PROTO_PIM".
Once OIF is removed, RP sends prune towards R3.

Issue: #11347

Signed-off-by: Sarita Patra <saritap@vmware.com>
pimd/pim_ifchannel.c