-
-
Notifications
You must be signed in to change notification settings - Fork 90
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
IGMP "Other querier present timer" not implemented #35
Comments
True, that's one of several features missing. Do you have a patch? :) |
Not at the moment, no. But now that I've finally found the root cause of what caused multicast to fail in our data centers, I can probably prioritize making a patch soon. |
I just noticed that my other project, mrouted, which is the base used by the original pimd authors,
So it should be fairly easy to port it to pimd. The layout of the is a bit different, this piece of |
Signed-off-by: Joachim Nilsson <[email protected]>
Huh, that was almost too easy. Just ported the above code to cc03559 on branch igmp-querier-timeout and a very basic test seems to indicate that it works! If possible, could you test this @pchri03 before I merge to master for release? I'd of course like to have this, and #31 configurable via |
Got a few hours off tonight, so now I've also implemented rudimentary configuration of |
Nice! I tested the code in a virtual environment and it worked as expected. I'll probably attempt to deploy a build with the changes to our multicast routers tomorrow night. |
Thanks for verifying the fix, much appreciated! :) Reopening the issue, however. I like to keep issues open until the fix is in the master (release) branch. |
Merged to master, closing. |
It seems that the "other querier present timer" is not implemented in the IGMP code (See RFC 2236 section 8.5, and section 7). The consequence hereof is that pimd does not resume as a querier if another querier with a lower IP address has been present in the past. With IGMP snooping switches without inbuilt queriers, this may break multicast altogether on the network.
Essentially, a non-querier IGMP router should listen for general queries from other queries, and restart the other querier present timer when it hears one. If the timer times out (other-querier-present-interval = robustness * query-interval + query-response-interval / 2 = 2 * 125 + 10 / 2 = 255 seconds), the IGMP router should switch to querier state and immediate transmit a general query. If it fails to do so, the multicast memberships expires 5 seconds after (group-membership-interval = robustness * query-interval + query-response-interval = 2 * 125 + 10 = 260 seconds).
The text was updated successfully, but these errors were encountered: