Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for IGMP v3 Membership Reports #26

Closed
troglobit opened this issue Jan 2, 2014 · 0 comments
Closed

Add support for IGMP v3 Membership Reports #26

troglobit opened this issue Jan 2, 2014 · 0 comments

Comments

@troglobit
Copy link
Owner

Gil Beniamini reports (via mail) having patched up pimd with basic IGMP v3 support.

Issue which lead to investigation:
In one setup multicast stream would start and work for about 5 minutes and stop forever (until pimd is restarted), apparently I found out that PIMd neighbor which was WinXP started with sending iGMPv2 membership_report(==join), but after 2 reports switched to iGMPv3 MEMBERSHIP_REPORT which is not handled by pimd v2.1.8, and so after timeout delete_leaf() is called and receive of multicast by that neighbor is stopped!

Further findings:
pimd v2.1.8 did not support iGMP v3, and if neighbor "node" was sending MEMBERSHIP_REPORT in iGMPv3 ((even if not SSM) for PIM-SM with EXCLUDE "source"), it was not received by pimd and MCAST tree failed to be created as expected
=> need to support iGMPv3 in iGMPv2 compatibility mode (our patch marked with GIL_SUPPORT_IGMPV3, related files vif.c & igmp.c).

ROOT-CAUSE: Why did our neighbor "node" switch to iGMPv3 after ~2 minutes?
In our case on our subnet there is an ADSL-router who sends once every 125sec iGMPv3-Query. When our "pimd" comes up it also sends one iGMPv2-Query and cause our listen/Mcast-Receiver PC to switch to iGMPv2, but once our "pimd" receive iGMPv3-Query from the neighbor ADSL-router it replies but also stop sending it's iGMPv2 Query. After timeout (260sec from last iGMPv2 MEMBERSHIP_REPORT) and when only the ADSL-router V3 Queries are on our subnet, it cause the neighbor Mcast-Receiver PC to switch to iGMPv3 MEMBERSHIP_REPORTS!

This is the root cause to add support for accepting IGMPv3 MEMBERSHIP_REPORT!

I have created a small patch, to enable “pimd” receive iGMPv3 messages, and also handle iGMPv3_MEMBERSHIP_REPORTS with source-exclude to trigger the correct accept_group_report() / accept_leave_message().

Now the above setup is perfectly working.

troglobit pushed a commit that referenced this issue Jan 3, 2014
This commit adds initial IGMPv3 support to pimd.  Hence, no PIM-SSM
support yet, only to be able to support IGMPv3 membership reports.

Signed-off-by: Gil Beniamini <[email protected]>
Signed-off-by: Joachim Nilsson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant