IGMPv2 issue in response to IGMPv3 BLOCK_OLD_SOURCES on pimd 2.3.2 #247
franciszekk
started this conversation in
General
Replies: 1 comment
-
There are several fixes on the master branch that improve on the state of pimd v2.3.2. The idea was to create a release v3.0, but due to lack of time on my part and community engagement this has not happened yet. For the same reasons there will also not be any v2.3.3 with backports of select fixes. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Opening this discussion related to pimd version 2.3.2.
In this version the service in response to igmpv3 message that include "IGMP_BLOCK_OLD_SOURCES" sends to the network IGMP_MEMBERSHIP_QUERY igmpv3 (src: igmp_proto.c accept_leave_message() line 520) and next second IGMP_MEMBERSHIP_QUERY but this time as igmpv2 even if the debug log is printing igmpv3
After investigation, found that this is due to implementation of SendQuery() igmp_proto.c SendQuery() line 878 which is invoked by a timer, this function call send_query() omitting the variable value cbk->q_len causing it to send an igmpv2 IGMP_MEMBERSHIP_QUERY (src: gmp_proto.c send_query() line 866 ).
The side effect of this behaviour is that if the client, which expects SSM multicast, is changing the multicast source ip, receive IGMP_MEMBERSHIP_QUERY igmpv3 followed by another IGMP_MEMBERSHIP_QUERY igmpv2, In response to this sequence, the client switches igmpv2 compatibility mode (see the linux igmp implementation, the usage of macro IGMP_V2_SEEN relies on the variable mr_v2_seen)
I see that on master branch, thanks to the commit Refactor, sync with pimd-dense this is changed, now in SendQuery() the value cbk->q_len is not omitted but passed to the function send_igmp()
Question if this commit can be backported to pimd 2.3.2 (for various reason build pimd from maser is not possible) ?
Beta Was this translation helpful? Give feedback.
All reactions