troglobit / pimd

PIM-SM/SSM multicast routing for UNIX and Linux
http://troglobit.com/projects/pimd/
BSD 3-Clause "New" or "Revised" License
194 stars 86 forks source link

Odd Join/Prune interaction #130

Open ruckc opened 5 years ago

ruckc commented 5 years ago

So, in our environment, with two pimd routers, we see an oddity, as our one of our MC Producer joins the group it is sending to.

image

So, in the above picture, the MC Producer, also is joining the group, creating an IGMP join to it's local the DR. So when the consumer joins the group, the RP, ends up outputting the multicast traffic on both interfaces, back to the originating DR, and to the MC Consumer.

It appears this join causing the RP pimd to send it back to the DR is from the DR's join/prune, that is joining the group's RP address with (SWR) flags, and pruning it's source with (SR) flags.

In pimd -r (and pimctl compat) we see the (*,G) route with a join and outgoing to the interface back to the DR, and on the (S,G) route we see that interface with a and prune.

So, while we completely recognize that the MC Producer shouldn't be joining the group, we don't understand why pimd is sending the pruned (S,G) data back to the DR, even though it has a (*,G) join.

troglobit commented 5 years ago

Not sure really, pimd was originally written a long time ago, based on RFC 2362. I believe the original idea was to forward all multicast to the RP and then have end devices join via the RP, when a threshold was reached an SPT switchover is triggered which would alla shortest-path tree to be constructed instead.

However, legacy aside, it could also be a bug that causes this. You're more than welcome to look into this since my time with this project is rather limited for the time being.