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.

../../../_images/igmpqueriertopology.svg

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
  }
}