Check Igmp Querier
In the same network, more than one multicast router can run the IGMP protocol. However, only one of these routers, the IGMP Querier, can launch IGMP queries in the same segment. Therefore, a single router must be chosen to perform the IGMP Querier role. In order for all IGMP routers to select the same Querier, a simple criteria is established: the IGMP Querier shall be the one with the lowest IP address.
Test IGMP Querier
Description
The following scenario shows how this election mechanism works when configuring the IGMP protocol on DUT0 and DUT1.
Scenario
Step 1: Set the following configuration in DUT0
:
set interfaces ethernet eth0 address 10.0.0.1/24
Step 2: Set the following configuration in DUT1
:
set interfaces ethernet eth0 address 10.0.0.2/24
Note
Initially, the IGMP protocol is only configured on DUT1, so this router should be selected as the IGMP Querier.
Step 3: Set the following configuration in DUT1
:
set interfaces ethernet eth0 ip igmp query-interval 24
Step 4: Run command interfaces ethernet eth0 ip igmp show json
at DUT1
and expect this output:
Show output
{ "eth0":{ "name":"eth0", "state":"up", "address":"10.0.0.2", "index":2, "flagMulticast":true, "flagBroadcast":true, "lanDelayEnabled":true, "upTime":"00:00:01", "querier":"local", "querierIp":"10.0.0.2", "queryStartCount":0, "queryQueryTimer":"00:00:05", "queryOtherTimer":"--:--:--", "version":3, "timerGroupMembershipIntervalMsec":58000, "lastMemberQueryCount":2, "timerLastMemberQueryMsec":2000, "timerOlderHostPresentIntervalMsec":58000, "timerOtherQuerierPresentIntervalMsec":53000, "timerQueryInterval":24, "timerQueryResponseIntervalMsec":10000, "timerRobustnessVariable":2, "timerStartupQueryInterval":6 } }
Note
After configuring the IGMP protocol also in DUT0, this router should be selected as IGMP Querier (since it has the lowest IP).
Step 5: Set the following configuration in DUT0
:
set interfaces ethernet eth0 ip igmp query-interval 20
Step 6: Run command interfaces ethernet eth0 ip igmp show json
at DUT0
and expect this output:
Show output
{ "eth0":{ "name":"eth0", "state":"up", "address":"10.0.0.1", "index":2, "flagMulticast":true, "flagBroadcast":true, "lanDelayEnabled":true, "upTime":"00:00:01", "querier":"local", "querierIp":"10.0.0.1", "queryStartCount":0, "queryQueryTimer":"00:00:04", "queryOtherTimer":"--:--:--", "version":3, "timerGroupMembershipIntervalMsec":50000, "lastMemberQueryCount":2, "timerLastMemberQueryMsec":2000, "timerOlderHostPresentIntervalMsec":50000, "timerOtherQuerierPresentIntervalMsec":45000, "timerQueryInterval":20, "timerQueryResponseIntervalMsec":10000, "timerRobustnessVariable":2, "timerStartupQueryInterval":5 } }
Step 7: Run command interfaces ethernet eth0 ip igmp show json
at DUT1
and expect this output:
Show output
{ "eth0":{ "name":"eth0", "state":"up", "address":"10.0.0.2", "index":2, "flagMulticast":true, "flagBroadcast":true, "lanDelayEnabled":true, "upTime":"00:00:04", "querier":"other", "querierIp":"10.0.0.1", "queryStartCount":0, "queryQueryTimer":"--:--:--", "queryOtherTimer":"00:00:52", "version":3, "timerGroupMembershipIntervalMsec":50000, "lastMemberQueryCount":2, "timerLastMemberQueryMsec":2000, "timerOlderHostPresentIntervalMsec":50000, "timerOtherQuerierPresentIntervalMsec":45000, "timerQueryInterval":20, "timerQueryResponseIntervalMsec":10000, "timerRobustnessVariable":2, "timerStartupQueryInterval":6 } }
Note
After removing the IGMP protocol configuration from DUT0, the DUT1 router should be selected as the IGMP Querier when it detects that DUT0 no longer sends IGMP queries (in this scenario, after about 52.0 seconds).
Step 8: Set the following configuration in DUT0
:
del interfaces ethernet eth0 ip igmp
Step 9: Run command interfaces ethernet eth0 ip igmp show json
at DUT1
and expect this output:
Show output
{ "eth0":{ "name":"eth0", "state":"up", "address":"10.0.0.2", "index":2, "flagMulticast":true, "flagBroadcast":true, "lanDelayEnabled":true, "upTime":"00:00:56", "querier":"local", "querierIp":"10.0.0.2", "queryStartCount":0, "queryQueryTimer":"00:00:19", "queryOtherTimer":"--:--:--", "version":3, "timerGroupMembershipIntervalMsec":50000, "lastMemberQueryCount":2, "timerLastMemberQueryMsec":2000, "timerOlderHostPresentIntervalMsec":50000, "timerOtherQuerierPresentIntervalMsec":45000, "timerQueryInterval":20, "timerQueryResponseIntervalMsec":10000, "timerRobustnessVariable":2, "timerStartupQueryInterval":6 } }