IGMP Configuration
This chapter describes how to configure Internet Group Management Protocol (IGMP). 
The Internet Group Management Protocol (IGMP) is used by IP hosts to report their multicast group memberships to      any immediately-neighboring multicast routers.
Using the information obtained through IGMP, the router maintains a list of multicast group on a per-interface basis. The routers that receive these IGMP packets send multicast data that they receive for requested groups out the network segment of the known receivers.
By default, when PIM is enabled on an interface, IGMP version 3 is enabled. IGMP can be enabled on an interface explicitly.
IGMP Versions
OcNOS supports IGMPv2 and IGMPv3, as well as IGMPv1 report reception. By default, OcNOS enables IGMPv3 when PIM is enabled on an interface.
IGMPv3 includes the following key changes from IGMPv2:
•	Support for Source-Specific Multicast (SSM), which builds shortest path trees from each receiver to the source, through the following feature: 
•	Host messages that can specify both the group and the source.
•	The multicast state that is maintained for groups and sources, not just for groups as in IGMPv2.
•	Hosts no longer perform report suppression, which means that hosts always send IGMP membership reports when an IGMP query message is received.
IGMP Operation
IGMP works on the premise of three major packets exchange between IGMP enabled routers and hosts, interested in joining a particular group.
IGMP Query Operation
Once IGMP is enabled or pim is enabled (which enables igmpv3), on any interface it starts sending Query message, which is called general query to the all-hosts multicast group at 224.0.0.1 periodically to discover whether any hosts want to receive multicast data.
OcNOS elects a router as the IGMP querier on a subnet if it has the lowest IP address. As long as a router continues to receive query messages from a router with a lower IP address, it resets a timer that is based on its querier timeout value. If the querier timer of a router expires, it becomes the designated querier. If that router later receives a host query message from a router with a lower IP address, it drops its role as the designated querier and sets its querier timer again.
In the figure below Router-1 eth2 sends query every query-interval. Since Router1-eth2 IP address is less than Router-2 eth2, Router-1 eth2 becomes querier on the LAN.
IGMP Membership Report Operation
When a host receives a query from the local router it sends a Host Membership Report for all the multicast groups for which it wants to receive multicast traffic. This is called solicited membership report.
When a host joins a new group, the host immediately sends a Membership Report to inform a local router that it wants to receive multicast traffic for the group it has just joined without waiting to receive a Query. This is called unsolicited membership report.
In the figure below Host-1 and Host-2 sends membership reports to Router-1 eth2 for all the multicast groups for which they want to receive multicast traffic. Upon reception of membership report Router-1 maintains an IGMP group table containing multicast group-address, interface name on which it receives the report.
IGMP Leave Operation
When a multicast host leaves a group, a host that runs IGMPv2 or later sends an IGMP leave message. To check if this host is the last host to leave the group, the router sends an IGMP query (Called as Group-specific-query) message and starts a timer that you can configure called the last member query response interval. If no reports are received before the timer expires, the software removes the group state. The router continues to send multicast traffic for a group until its state is removed.
In the figure below Host-1 and Host-2 sends leave message to Router-1 eth2 for all the multicast groups for which they don’t want to receive multicast traffic. In response to leave message Router-1 eth2 sends an group-specific-query message before removing the multicast group address from the IGMP table.
Topology
The procedures in this section use the topology in 
Figure 1-1.
IGMP Topology
IGMP Configuration
The following example shows IGMP configuration on Router1.
Configuring IGMP Version
The configuration that follows shows how IGMP version can be configured.
 
#configure terminal  | Enter configure mode.  | 
(config)#ip multicast-routing  | Enable IP multicast routing  | 
(config)#interface eth2  | Enter interface mode.  | 
(config-if)#ip address 10.1.1.10/24  | Assign IP address to an interface  | 
(config-if)#ip igmp version 2  | Enable IGMP version as v2.  | 
(config-if)#exit  | Exit interface mode.  | 
(config)#exit  | Exit Configure mode.  | 
Validation
Enter the commands listed in this section to confirm the previous configurations.
#show  running-config
!
no service password-encryption
!
hostname rtr1
!
ip multicast-routing
!
!
interface eth2
ip address 10.1.1.10/24
no shutdown
ip igmp version 2
Configuring IGMP Parameters
The configuration that follows shows how IGMP parameters can be configured.
 
#configure terminal  | Enter configure mode.  | 
(config)#ip multicast-routing  | Enable IP multicast routing  | 
(config)#interface eth2  | Enter interface mode  | 
(config-if)#ip igmp access-group 1  | Configures a access-list policy to control the multicast groups that hosts on the subnet serviced by an interface can join.  | 
(config-if)#ip igmp immediate-leave group-list 1  | Enables the device to remove the group entry from the multicast routing table immediately upon receiving a leave message for the group.  | 
(config-if)#ip igmp  join-group 224.1.1.1  | Statically binds a multicast group to the outgoing interface  | 
(config-if)# ip igmp  last-member-query-count 7  | Sets the query count used when the software starts up.  | 
(config-if)# ip igmp  last-member-query-interval 25500  | Sets the query interval used when the software starts up.  | 
(config-if)#ip igmp limit 100  | Configure Max Allowed State on this interface  | 
(config-if)#ip igmp querier-timeout 300  | Sets the querier timeout that the router uses when deciding to take over as the querier.  | 
(config-if)#ip igmp  query-interval 200  | Sets the frequency at which the router sends IGMP host query messages.  | 
(config-if)#ip igmp  query-max-response-time 150  | Sets the response time advertised in IGMP queries.  | 
(config-if)#ip igmp  ra-option  | Enable ra-option.  | 
(config-if)#ip igmp  robustness-variable 4  | Sets the robustness variable.  | 
(config-if)#ip igmp startup-query-count 4  | Sets the query count used when the router starts up.  | 
(config-if)# ip igmp startup-query-interval 50  | Sets the query interval used when the router starts up.  | 
(config-if)# ip igmp static-group 225.1.1.1  | Statically binds a multicast group to the outgoing interface.  | 
(config-if)#exit  | Exit interface mode.  | 
(config)#exit  | Exit Configure mode.  | 
Validation
Enter the commands listed in this section to confirm the previous configurations.
Rtr1#show  running-config
!
no service password-encryption
!
hostname rtr1
!
!
ip multicast-routing
!
!
interface eth2
 ip address 10.1.1.10/24
 no shutdown
 ip igmp access-group 1
 ip igmp immediate-leave group-list 1
 ip igmp last-member-query-count 7
 ip igmp limit 100
 ip igmp join-group 224.1.1.1
 ip igmp static-group 225.1.1.1
 ip igmp last-member-query-interval 25500
 ip igmp querier-timeout 300
 ip igmp query-interval 200
 ip igmp query-max-response-time 150
 ip igmp startup-query-interval 50
 ip igmp startup-query-count 4
 ip igmp robustness-variable 4
 ip igmp ra-option
 ip igmp version 2
 !!
 
Rtr1#show  ip igmp   interface  eth2
Interface eth2 (Index 4)
 IGMP Enabled, Active, Querier, Configured for version 2
Internet address is 10.1.1.10
IGMP interface limit is 100
IGMP interface has 2 group-record states
IGMP Interface statistics:
v1-reports: 0
v2-reports: 0, v2-leaves: 0
v3-reports: 0
IGMP query interval is 200 seconds
IGMP Startup query interval is 50 seconds
IGMP Startup query count is 4
IGMP querier timeout is 300 seconds
IGMP max query response time is 150 seconds
Group Membership interval is 950 seconds
IGMP Last member query count is 7
Last member query response interval is 25500 milliseconds
Here is the sample configuration on Router-1 with all the IGMP related commands configured.
Rtr1#show  running-config
!
no service password-encryption
!
hostname rtr1
!
!
ip domain-lookup
!
ip multicast-routing
!
ip pim register-rp-reachability
ip pim crp-cisco-prefix
!
interface lo
 ip address 127.0.0.1/8
 ip address 1.1.1.57/32 secondary
 ipv6 address ::1/128
 no shutdown
!
interface eth0
 ip address 10.12.48.179/24
 no shutdown
!
interface eth1
 ip address 192.168.1.27/24
 no shutdown
 ip igmp version 2
 !
interface eth2
 ip address 10.1.1.10/24
 no shutdown
 ip igmp access-group 1
 ip igmp immediate-leave group-list 1
 ip igmp last-member-query-count 7
 ip igmp limit 100
 ip igmp join-group 224.1.1.1
 ip igmp static-group 225.1.1.1
 ip igmp last-member-query-interval 25500
 ip igmp querier-timeout 300
 ip igmp query-interval 200
 ip igmp query-max-response-time 150
 ip igmp startup-query-interval 50
 ip igmp startup-query-count 4
 ip igmp robustness-variable 4
 ip igmp ra-option
 ip igmp version 2
 
!
line con 0
 login
line vty 0 16
 exec-timeout 0 0
 login
line vty 17 39
 login
!
End
 
IGMP Group Table after IGMPV2 Membership Report is received
IGMP group table is populated at router by virtue of either static join is configured on interface or dynamic report is being received on the interface.
The show ip igmp group command displays the IGMP group table. In this table, the following fields are defined.
 
Table 1-1: IGMP group table after IGMPV2 membership report
Group address  | Displays the Multicast Group for which report is received.  | 
Interface  | Interface name on which Membership report is received.  | 
Uptime  | Duration since the report is received.  | 
Expiry  | Time frame in which the multicast group is going to expire.  | 
Last Reporter  | Host address from where the report is generated.  | 
 
Rtr1#show  ip igmp groups
IGMP Connected Group Membership
Group Address    Interface      Uptime     Expires      Last Reporter
224.0.1.3            eth2       00:10:06   00:03:43     10.1.1.52
224.1.1.1            eth2       01:54:53   static         0.0.0.0
225.1.1.1            eth2       00:17:22   static         0.0.0.0
 
Rtr1#show ip igmp groups detail
IGMP Connected Group Membership Details
 
Flags: (M - SSM Mapping, R - Remote, L - Local,
        SG - Static Group, SS - Static Source)
Interface:      eth2
Group:          224.0.1.3
Flags:          R
Uptime:         00:10:06
Group mode:     Exclude (Expires: 00:03:43)
State: Active
Last reporter:  10.1.1.52
Source list is empty
 
Flags: (M - SSM Mapping, R - Remote, L - Local,
        SG - Static Group, SS - Static Source)
Interface:      eth2
Group:          224.1.1.1
Flags:          L
Uptime:         01:54:59
Group mode:     Exclude (Static)
State: Active
Last reporter:  0.0.0.0
Source list is empty
 
Flags: (M - SSM Mapping, R - Remote, L - Local,
        SG - Static Group, SS - Static Source)
Interface:      eth2
Group:          225.1.1.1
Flags:          SG
Uptime:         00:17:28
Group mode:     Exclude (Static)
State: Active
Last reporter:  0.0.0.0
Source list is empty
 
IGMP Group Table after IGMPV3 Membership report is received
IGMP group table is populated at router by virtue of either static join is configured on interface or dynamic report is being received on the interface. Here IGMPV3 should be configured on the interface (by default IGMPv3 will be enabled if pim is configured on the interface).
The show ip igmp group command displays the IGMP group table. In this table, the following fields are defined.
 
Table 1-2: IGMP group table after IGMPV3 membership
Group address  | Displays the Multicast Group for which report is received.  | 
Interface  | Interface name on which Membership report is received.  | 
Uptime  | Duration since the report is received.  | 
Expiry  | Time frame in which the multicast group is going to expire.  | 
Last Reporter  | Host address from where the report is generated.  | 
 
rtr6#show  ip igmp  groups
IGMP Connected Group Membership
Group Address    Interface            Uptime   Expires  Last Reporter
224.0.1.3        eth2                 00:08:50 00:02:10 192.168.10.52
rtr6#show  ip igmp  groups detail
IGMP Connected Group Membership Details
 
Flags: (M - SSM Mapping, R - Remote, L - Local,
        SG - Static Group, SS - Static Source)
Interface:      eth2
Group:          224.0.1.3
Flags:          R
Uptime:         00:08:50
Group mode:     Exclude (Expires: 00:04:57)
Last reporter:  192.168.10.52
Group source list: (R - Remote, M - SSM Mapping, S - Static, L - Local)
 
Exclude Source List :
  Source Address  Uptime    v3 Exp    Fwd  Flags
  1.2.3.4         00:08:50  stopped   No   R
 
For IGMPV3 report source list specifies which source to be included or exclude based on the membership report sent by the hosts.
 
In the above show command, Source address 1.2.3.4 is excluded to send Multicast data  for group 224.0.1.3