IGMP
IP hosts use Internet Group Management Protocol (IGMP) to report their multicast group memberships to neighboring routers. Similarly, multicast routers, such as the ERX system, use IGMP to discover which of their hosts belong to multicast groups.
The IPv4 address scheme assigns Class D addresses for IP multicasting. IGMP is the protocol that uses these addresses, which can be in the range 224.0.0.0 to 239.255.255.255. The following addresses have specific functions or are unavailable:
- 224.0.0.0 is reserved, and you cannot assign it to a group.
- 224.0.0.1 is the all-hosts address - a packet sent to this address reaches all hosts on a subnet.
- 224.0.0.2 is the all-routers address - a packet sent to this address reaches all routers on a subnet.
This implementation of IGMP complies with IGMPv2, which supports both IGMPv1 and IGMPv2 hosts.
IGMP Operation
IGMPv2 involves the exchange of the following types of messages between routers and hosts:
Group Membership Queries
A multicast router can be a querier or a nonquerier. There is only one querier on a network at any time. Multicast routers monitor queries from other multicast routers to determine the status of the querier. If the querier hears a query from a router with a lower IP address, it relinquishes its role to that router.
Multicast routers send two types of group membership queries to hosts on the network:
- General queries to the all-hosts group address (224.0.0.1)
- Specific queries to the appropriate multicast group address
The purpose of a membership group query is to discover the multicast groups to which a host belongs.
IGMPv2 group membership queries have a Max Response Time field. This response time is the maximum that a host can take to reply to a query.
Group Membership Reports
When a host receives a group membership query, it identifies the groups associated with the query and determines to which groups it belongs. The host then sets a timer, with a value less than the Max Response Time field in the query, for each group to which it belongs.
When the timer expires, the host multicasts a group membership report to the group address. When a multicast router receives a report, it adds the group to the membership list for the network and sets a timer to the Group Membership Interval. If this timer expires before the router receives another group membership report, the router determines that the group has no members left on the network.
If the router does not receive any reports for a specific multicast group within the Max Response Time, it assumes that the group has no members on the network. The router does not forward subsequent multicasts for that group to the network.
Leave Group Membership Messages
When a host leaves a group, it sends a leave group membership message to multicast routers on the network. A host generally addresses leave group membership messages to the all-routers group address, 224.0.0.2.
Configuring Static and Dynamic IGMP Interfaces
The system supports static and dynamic IGMP interfaces. Unlike static interfaces, dynamic interfaces are not restored when you reboot the system. For some protocols, dynamic layers can build on static layers in an interface; however, in a dynamic IGMP interface, all the layers are dynamic. See Figure 4-2 for examples of static and dynamic IGMP interfaces.
![]()
Static IGMP interfaces are configured with software such as the CLI or an SNMP application; dynamic IGMP interfaces are configured with a profile. A profile comprises a set of attributes for an interface; a profile for dynamic IGMP interfaces contains attributes for configuring all the layers in the interface.
You define a profile using the same CLI commands that you use to configure a static IGMP interface; however, the mode in which you use the commands differs. Use the commands in Interface Configuration mode to configure a static IGMP interface and in Profile Configuration mode to define a profile.
When you have defined a profile, you can apply it to an interface or group of interfaces. Profiles provide an efficient method of creating and managing large numbers of dynamic interfaces. For detailed information about creating and assigning profiles, see ERX Physical and Link Layers Configuration Guide, Chapter 21, Configuring Dynamic Interfaces. When you create a profile for dynamic IGMP interfaces, specify attributes for configuring all layers in the interface.
You use the following IGMP commands to configure a static IGMP interface. You also use these commands to define the attributes for the IGMP layer when you create a profile for dynamic IGMP interfaces.
- ip igmp
- ip igmp group limit
- ip igmp immediate-leave
- ip igmp last-member query-interval
- ip igmp promiscuous
- ip igmp querier
- ip igmp querier-timeout
- ip igmp query-interval
- ip igmp query-max-response-time
- ip igmp robustness
- ip igmp static-group
- ip igmp version
The following sections describe the tasks associated with these commands.
Enabling IGMP on an Interface
You must start IGMP on each interface that you want to use the protocol. You can configure IGMP and either PIM or DVMRP on the same interface. If you configure IGMP only on an interface, the system considers that IGMP "owns" that interface. If you configure IGMP and either PIM or DVMRP on an interface, the system considers that PIM or DVMRP owns the interface.
For networks that use only IGMPv1, you can configure an interface to operate in IGMPv1 mode. However, IGMPv2 interfaces will support IGMPv1 hosts. In an IGMPv1 network, you must configure one interface to act as a querier. In an IGMPv2 network, the querier is the router with the lowest IP address.
To start IGMP, complete the following steps:
- Enable IGMP on the interface.
- (IGMPv1 only) Specify IGMPv1 for the interface.
- (IGMPv1 only) Specify that the interface will act as the querier for the network.
ip igmp
host1:boston(config-if)#ip igmpip igmp querier
Note: This command is valid only for interfaces on which you configured IGMPv1.![]()
host1:boston(config-if)#ip igmp querier
- Use the no version to restore the default situation, in which the interface does not act as a querier.
ip igmp version
host1:boston(config-if)#ip igmp version 1Configuring IGMP Settings for an Interface
When you start IGMP on an interface, it operates with the default settings. You can, however, modify:
- The method that the router uses to remove hosts from multicast groups (IGMPv2 interfaces only).
- The time interval at which the querier multicasts group membership queries.
- The time that a querier waits before sending a new query to hosts from which it receives leave group membership messages.
- The time that a new querier waits before sending query messages after it assumes responsibility from another querier.
- The time that a host can take to reply to a query (maximum response time).
- The number of times that the system sends each IGMP messages from this interface.
ip igmp immediate-leave
- Use to specify that when the router receives a leave group membership message from a host associated with this interface, the router will immediately remove that host from the multicast group.
Caution: Issue this command only on IGMPv2 interfaces to which one IGMP host is connected. If there is more than one IGMP host connected to a LAN through the same interface, and one host sends a leave group message, the router will remove all hosts on the interface from the multicast group. The router will lose contact with the hosts that should remain in the multicast group until they send join requests in response to the router's next general group membership query.![]()
host1:boston(config-if)#ip igmp immediate-leave
- Use the no version to restore the default situation, in which the router removes a host from a multicast group if that host does not return a group membership report within a certain length of time of receiving a group membership query from the router.
ip igmp last-member query-interval
- Use to specify in tenths of a second how long the system waits before sending out another query to a host that sent a leave group membership message.
- Using a lower value allows members to leave groups more quickly.
- Example
host1:boston(config-if)#ip igmp last-member-query-interval 90ip igmp querier-timeout
- Use to set the time in seconds that the interface waits before sending query messages after it becomes the querier.
- Example
host1:boston(config-if)#ip igmp querier-timeout 200ip igmp query-interval
host1:boston(config-if)#ip igmp query-interval 100ip igmp query-max-response-time
- Use to specify the period in tenths of a second during which the host is expected to respond to a group membership query.
- IGMPv2 includes this value in IGMP query messages sent out on the interface.
- You cannot set this value on interfaces running IGMPv1.
- Using a lower value allows members to join and leave groups more quickly.
- Example
host1:boston(config-if)#ip igmp query-max-response-time 120ip igmp robustness
- Use to specify the number of times that the system sends each IGMP message from this interface.
- Use a higher value to ensure high reliability from IGMP.
- Specify a number in the range 1-4.
- Example
host1:boston(config-if)#ip igmp robustness 2Assigning a Multicast Group to an Interface
You can assign an interface to send and receive all traffic for a particular multicast group. This feature allows you to control the IGMP traffic and to test the behavior of multicast protocols in the network.
ip igmp static-group
- Use to send and receive all traffic for a multicast group from a specific interface.
- The interface sets no timers for this group.
- Example
host1:boston(config-if)#ip igmp static-group 225.1.2.3Specifying Multicast Groups
You can use a standard IP access list to specify the multicast groups that a host can join.
ip igmp group limit
- Use to restrict hosts on this subnet to joining only multicast groups that appear on the specified IP access list.
- Example
host1:boston(config-if)#ip igmp access-group boston-list
- Use the no version to disassociate the interface from an access list and to allow hosts on the interface to join any multicast group.
Limiting the Number of Accepted IGMP Groups
By default, there is no limit on the number of IGMP groups that an IGMP interface can accept. However, you can manage multicast traffic on the system by restricting the number of IGMP groups accepted by
If you set limits for both a port and for interfaces on that port, the system uses the lower of the two limits when determining how many IGMP groups an interface can accept. For example, if you set a limit of 10 groups for the port and 15 groups for each interface, the system allows only 10 groups to be accepted among the interfaces.
However, if you set a limit for a port and that limit is lower than the number of groups currently accepted by the interfaces on that port, the system does not disassociate the groups from the interfaces. The system enforces the new limit on the port when the number of groups associated with the interfaces falls to that limit. For example, if the interfaces on the port have accepted a total of 15 groups, and you set a limit of 10 groups on the port, the system does not disconnect any of the groups, and does not allow the interfaces to accept any more groups. Over time, some groups leave the interfaces, and eventually, a maximum of ten groups remain connected.
ip igmp group limit
host1:boston(config-if)#ip igmp group limit 5
- Use the no version to restore the default situation, in which there is no limit on the number of IGMP groups that an interface can accept.
multicast group port limit
- Use to limit the number of IGMP groups that a port can accept.
- Specify the identifier for the port in slot/port format and the maximum number of IGMP groups that interfaces can accept.
- slot - number of the chassis slot in the range 0-6 (ERX-700 series) and 0-13 (ERX-1400 series)
- port - port number on the I/O module
host1#multicast group port 3/0 limit 5
- Use the no version to restore the default situation, in which there is no limit on the number of IGMP groups that a port can accept.
Accepting IGMP Reports from Remote Subnets
By default, IGMP interfaces accept IGMP reports only from associated subnets. You can configure the system to accept IGMP reports from subnets that are not associated with its interfaces. The igmp promiscuous command in Router Configuration mode specifies whether or not interfaces on the router should accept IGMP reports from indirectly connected subnets. To override this global setting on a particular interface, use the ip igmp promiscuous command in Interface Configuration mode.
Example
In the following example, the router is configured to accept IGMP reports from indirectly connected subnets on all interfaces. The interface on port 0 of the line module in slot 4 is then configured to accept IGMP reports only from directly connected subnets.
host1(config)#virtual-router bostonhost1:boston(config)#router igmphost1:boston(config-router)#igmp promiscuoushost1:boston(config-router)#exithost1:boston(config)#interface serial 4/0host1:boston(config-if)#ip igmp promiscuous offigmp promiscuous
- Use to allow all IGMP interfaces on the router to accept IGMP reports from hosts on any subnet.
- Example
host1:boston(config-router)#igmp promiscuous
- Use the no version to allow IGMP interfaces on the router to accept IGMP reports only from hosts on their associated subnets.
ip igmp promiscuous
- Use the on keyword to enable the interface to accept IGMP reports from hosts on any subnet.
- Use the off keyword to allow the interface to accept IGMP reports only from hosts on subnets associated with this interface
host1:boston(config-if)#ip igmp promiscuous on
- Use the no version mode to configure an IGMP interface to use the Router Configuration mode setting to determine the subnets from which it can accept IGMP reports.
Disabling and Removing IGMP
You can disable and reenable IGMP on the VR. You can also remove IGMP from the VR and recreate it on the VR.
igmp disable
host1(config)#virtual-router bostonhost1:boston(config)#router igmphost1:boston(config-router)#igmp disablerouter igmp
host1(config)#virtual-router bostonhost1:boston(config)#router igmpMonitoring IGMP
You can establish a reference point for IGMP statistics by setting the statistics' counters to zero.
To display IGMP parameters, use the show commands described in this section.
baseline ip igmp
(host1)#baseline ip igmpshow ip igmp
- Administrative State - status of IGMP in the software: enabled or disabled
- Operational State - status of IGMP on the VR: enabled or disabled
- Total Interfaces - number of interfaces on which you started IGMP
- Enabled - number of interfaces on which IGMP is enabled
- Disabled - number of interfaces on which IGMP is disabled
- Learnt Groups - number of multicast groups that the VR has discovered
- IGMP Statistics: Rcvd - statistics for IGMP messages received
- Total - number of IGMP messages received
- Checksum Errors - number of IGMP messages received with checksum errors
- Unknown Types - number of messages received that are not group membership queries, group membership reports, or leave group membership messages
- Queries - number of group member queries
- Reports - number of group membership reports
- Leaves - number of leave group membership messages
host1:boston#show ip igmpRouting Process IGMP, Administrative state enabled, Operational state enabled2 total interfaces, 2 enabled, 0 disabled2 learnt groupsIGMP Statistics:Rvcd: 1 total, 0 checksum errors, 0 unknown types0 queries, 1 reports, 0 leavesSent: 11 totalshow ip igmp groups
- Use to display statically joined and directly connected groups learned through IGMP.
- Field descriptions
- Grp Address - address of the multicast group
- Interface - interface that discovered the multicast group
- State - IGMP version on the interface
- ExpTim - time, in seconds, at which the router decides there are no more members of this group
- v1HTim - time at which the router decides there are no more IGMPv1 members of a group. If this value is 0, the interface has received no IGMPv1 reports for the group.
host1:boston#show ip igmp groupsGrp Address Interface State ExpTim v1HTim----------- --------------- ---------- ------ ------225.1.1.1 fastEthernet0/0 Version2 never 0232.1.1.1 fastEthernet0/0 Version2 359 0Count: 2 Groups(Note: 225.1.1.1 is a "static group")show ip igmp interface
- Use to display IGMP information for interfaces on which you enabled IGMP.
- Specify the brief keyword to see a summary of the information.
- Specify the count keyword to see the number of IGMP interfaces.
- Specify the group address keyword to see information for interfaces that belong to that group.
- Field descriptions
- Interface - type of interface and interface specifier. For details about interface types and specifiers, see ERX Command Reference Guide, About This Guide.
- Address - IP address of the interface
- Administrative state - status of the interface in the software: enabled or disabled
- Operational state - physical status of the interface: enabled or disabled
- Version - IGMP version
- State - function of the interface: querier or nonquerier
- Query Interval - time interval at which this interface sends query messages
- Other querier present interval - time that the interface waits before declaring itself as the querier
- Maximum response time - time interval during which this interface expects a host to respond
- Last member query interval - time that this interface waits before sending a new query to a host that sends a group leave message
- Robustness - number of times this interface sends IGMP messages
- Information about whether interface accepts IGMP reports from hosts on any subnet
- Interface defaults to global promiscuous mode - interface uses the setting of the igmp promiscuous command to determine whether it accepts IGMP reports from hosts on any subnet
- Information about standard IP access lists configured with the ip igmp group limit command
- Immediate Leave - setting of the ip igmp immediate-leave command: enabled or disabled
- Max-Group limit - number of IGMP groups that the interface can accept, as configured with the ip igmp group limit command
- Group Count - number of IGMP groups that the interface has accepted
- Interface statistics: Rcvd - information about IGMP messages received on this interface
- Reports - number of group membership reports received
- Leaves - number of group leave messages received
- Wrong Version Queries - number of group membership queries received from devices running a different version of IGMP
- Interface statistics: Sent - number of IGMP messages this interface has sent
- Interface statistics: Groups learned - number of groups this interface has discovered
- Count - total number of IGMP interfaces
host1:boston#show ip igmp interfaceInterface ATM2/1.15 address 15.0.0.2/255.255.255.0Administrative state enabled, Operational state enabledInterface parameters:Version 2State QuerierQuery Interval 125 secs, 53 secs before the next queryOther querier present interval 250 secsMaximum response time 100 (in 10ths of a second)Last member query interval 10 (in 10ths of a second)Robustness 3Interface defaults to global promiscuous modeNo inbound access groupImmediate Leave: disabledMax-Group limit: No LimitGroup Count: 1Interface statistics:Rcvd: 0 reports, 0 leaves, 0 wrong version queriesSent: 1 queriesGroups learned: 1Counts: 0 down, 0 init state, 1 querier, 0 non-querier, 1 Totalshow ip igmp interface brief
- Use to display a summary of IGMP information for interfaces on which you enabled IGMP.
- Field descriptions
- Interface - type of interface and interface specifier. For details about interface types and specifiers, see ERX Command Reference Guide, About This Guide.
- Intf Address - IP address of the interface
- Ver - IGMP version
- State - function of the interface: querier or nonquerier
- Querier - IP address of the querier on the network to which this interface connects
- QTime - time interval at which this interface sends query messages
- QPTime - time that the interface waits before declaring itself as the querier
host1:boston#show ip igmp interface briefInterface Intf Address Ver State Querier QTime QPTime-------------- ---------- --- ------ ------------- ----- ---fastEthernet0/0 192.168.1.250/24 2 Querier 192.168.1.250 28 0atm3/0.2 21.1.1.1/8 2 Querier 21.1.1.1 26 0Count: 2 interfacesshow multicast group limit
- Use to display the number of IGMP groups that ports have accepted, and if configured, the maximum number of groups that ports can accept.
- Only ports that have accepted IGMP groups and ports for which you have configured a limit for the number of IGMP groups appear in this display.
- Field Descriptions
- slot - number of the chassis slot in the range 0-6 (ERX-700 series) and 0-13 (ERX-1400 series)
- port - port number on the I/O module
- limit - maximum number of IGMP groups that the port can accept. A value of -1 indicates that no limit has been specified.
- count - actual number of IGMP groups the port has accepted
host1:boston#show multicast group limitPort limit count--------- ----- -----2/0 5 02/1 -1 1