IGMP
IP hosts use Internet Group Management Protocol (IGMP) in IPv4 to report their multicast group memberships to neighboring routers. Similarly, multicast routers, such as the E-series router, use IGMP to discover which of their hosts belong to multicast groups.
The IPv4 address scheme assigns class D addresses for IP multicast. 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 IGMP versions 1, 2, and 3. IGMPv3 allows for source-specific join and leave messages and is backward compatible with IGMPv1 and IGMPv2.
IGMP Operation
IGMPv2 mode interfaces exchange the following types of messages between routers and hosts:
IGMPv3 mode interfaces exchange the following types of messages with IGMPv3 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.
IGMPv1 and IGMPv3 mode interfaces 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
IGMPv3 mode interfaces send the following type of queries to IGMPv3 hosts:
The purpose of a membership group query is to discover the multicast groups to which a host belongs.
IGMPv2 and IGMPv3 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 maximum 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.
IGMPv3 supports an extended report format that allows you to report multiple groups and source lists in a single report.
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 router supports static and dynamic IGMP interfaces. Unlike static interfaces, dynamic interfaces are not restored when you reboot the router. 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 22 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 by 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 a 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 JUNOSe Link Layer Configuration Guide, Chapter 13, Configuring Dynamic Interfaces. When you create a profile for dynamic IGMP interfaces, specify attributes for configuring all layers in the interface.
You use the IGMP commands in Table 17 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.
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 only IGMP on an interface, the router considers that IGMP owns that interface. If you configure IGMP and either PIM or DVMRP on an interface, the router 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 and IGMPv3 interfaces will support IGMPv1 hosts. In an IGMPv1 network, you must configure one interface to act as a querier. In an IGMPv2 or IGMPv3 network, the querier is the router with the lowest IP address.
To start IGMP, complete the following steps:
- Enable IGMP on the interface (IGMPv2 is the default version).
- (IGMPv1 or IGMPv3) Specify the IGMP version for the interface.
- (IGMPv1 only) Specify that the interface will act as the querier for the network.
ip igmp
- Use to enable IGMP on an interface and to set the IGMP version to IGMPv2. Use the ip igmp version command to specify a different IGMP version.
- Example
host1:boston(config-if)#ip igmpUse the no version to disable IGMP on an interface. ip igmp querier
- Use to specify that this IGMPv1 interface will act as a querier.
NOTE: This command is valid only for interfaces on which you configured IGMPv1.
- Example
host1:boston(config-if)#ip igmp querierUse 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 1Use the no version to set the version to the default, IGMPv2. Configuring 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 and IGMPv3 interfaces only)
- The query time interval for the querier multicasts group membership
- 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 router sends each IGMP message 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.
- Example
host1:boston(config-if)#ip igmp immediate-leaveUse 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 after receiving a group membership query from the router. ip igmp last-member-query-interval
- Use to specify the last-member-query-interval value, in tenths of a second. When the router receives an IGMPv2 leave message or an IGMPv3 state change report, it sends out a query and expects a response within the time specified by this value.
- Using a lower value allows members to leave groups more quickly.
- Example
host1:boston(config-if)#ip igmp last-member-query-interval 90Use the no version to restore the default, 10-tenths of a second (1 second). ip 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 200Use the no version to set the time to the default, twice the query interval. ip igmp query-interval
host1:boston(config-if)#ip igmp query-interval 100Use the no version to set the polling interval to the default, 125 seconds. ip 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 and IGMPv3 include 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 120Use the no version to restore the default, 10-tenths of a second (1 second). ip igmp robustness
- Use to specify the number of times that the router 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 2Use the no version to restore the default, 3. Assigning 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.3Use the no version to remove the group from the interface. Specifying Multicast Groups
You can use a standard IP access list to specify the multicast groups that a host can join.
ip igmp access-group
- Use to restrict hosts on this subnetwork to join only multicast groups that appear on the specified IP access list.
- When configured, the access list is queried whenever the router receives an IGMPv2 report requesting membership of a group, and IGMPv3 ChangeToInclude or IsExclude reports. The request is ignored if the access list query fails. The ip igmp access-group command uses standard-format access lists (for example, access-list permit ip), which allow only a single address to be specified.
- Example
host1:boston(config-if)#ip igmp access-group boston-listUse the no version to dissociate the interface from an access list and to allow hosts on the interface to join any multicast group. ip igmp access-source-group
- Use to restrict hosts on this subnetwork to membership in those (S,G) pairs (also known as "channels") permitted by the specified IP access list.
- When configured, both source and group addresses query the associated access list whenever the router receives an IGMPv3 report requesting membership of the (S,G) pairs (that is, the router receives an IGMPv3 ChangeToInclude, IsInclude, or AllowNewSource group report). The request is ignored if the access list query fails. The ip igmp access-source-group command uses extended-format access lists (for example, access-list permit ip), which allow both source and destination addresses to be specified.
- Example
host1:boston(config-if)#ip igmp access-source-group dallas-listUse the no version to remove any access list restriction. Configuring SSM Mapping
SSM mapping allows the router to determine one or more source addresses for group G. The mapping effectively translates IGMPv1 or IGMPv2 membership reports to an IGMPv3 report, allowing the router to continue as if it had initially received an IGMPv3 report. Once the router is joined to these groups, it sends out PIM join messages and continues to allow joining from these groups, as long as it continues to receive IGMPv1 and IGMPv2 membership reports and no change occurs to the SSM mapping for the group.
When you statically configure SSM mapping, the router can discover source addresses from a statically configured table.
The following applies when you configure SSM mapping:
- When enabled, and either you have not configured a static SSM map or the router cannot find any matching access lists, the router continues to accept (*,G) groups. The PIM SSM range must deny any unacceptable SSM group addresses.
- When you issue the no ip igmp ssm-map enable command, the router removes all SSM map (S,G) states and establishes a (*,G) state.
- You can enter multiple ssm-map static commands for different access lists. Also, you can enter multiple ssm-map static commands for the same access list, as long as the access list uses different source addresses.
- SSM maps do not process statically configured groups.
ip igmp ssm-map enable
- Use to enable SSM mapping on the router. SSM mapping statically assigns sources to IGMPv1 and IGMPv2 groups. You must use SSM mapping for IGMPv1 and IGMPv2 hosts to interoperate with PIM SSM. SSM mapping allows the router to use a statically configured list to translate (*,G) memberships to (S,G) memberships.
- Example
host1:boston(config)#ip igmp ssm-map enableUse the no version to disable the SSM map. ip igmp ssm-map static
- Use to specify an access list and source address for use in SSM mapping. SSM mapping statically assigns sources to IGMPv1 and IGMPv2 groups. You must use SSM mapping for IGMPv1 and IGMPv2 hosts to interoperate with PIM SSM. SSM mapping allows the router to use a statically configured list to translate (*,G) memberships to (S,G) memberships.
- Example
host1:boston(config)#ip igmp ssm-map static boston-list 232.31.1.48Use the no version to remove the SSM map association. 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 router by restricting the number of IGMP groups accepted by:
If you set limits for both a port and interfaces on that port, the router 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 router 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 router does not dissociate the groups from the interfaces. The router 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 router 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 remains connected.
ip igmp group limit
host1:boston(config-if)#ip igmp group limit 5Use 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-7xx models) and 0-13 (ERX-14xx models)
- port—Port number on the I/O module
host1(config)#multicast group port 3/0 limit 5Use 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. Including and Excluding Traffic
IGMPv3 extends IGMPv2 functionality with the ability to include or exclude specific multicast traffic sources. That is, with IGMPv3, hosts signal (S,G) pairs that they want to include or exclude.
For hosts that cannot signal group membership dynamically, you can use the ip igmp static-include or ip igmp static-exclude command to statically include or exclude multicast traffic, respectively.
IGMPv3 is the industry-designated standard protocol for hosts to signal channel subscriptions in SSM. For additional information about SSM, see PIM Source-Specific Multicast later in this chapter.
ip igmp static-exclude
- Use to statically exclude the IGMP (S,G) membership for a host that is not capable of dynamically signaling group membership.
- Example
host1:boston(config-if)#ip igmp static-exclude 10.1.1.5 225.1.2.3Use the no version to remove the static designation. ip igmp static-include
- Use to statically include the IGMP (S,G) membership for a host that is not capable of dynamically signaling group membership.
- Example
host1:boston(config-if)#ip igmp static-include 10.1.1.1 225.1.2.3Use the no version to remove the static designation. Accepting IGMP Reports from Remote Subnetworks
By default, IGMP interfaces accept IGMP reports only from associated subnetworks. You can configure the router to accept IGMP reports from subnetworks 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 subnetwork.
- Example
host1:boston(config-router)#igmp promiscuousUse the no version to allow IGMP interfaces on the router to accept IGMP reports only from hosts on their associated subnetworks. ip igmp promiscuous
- Use to specify whether or not the interface should accept IGMP reports from hosts on any subnetwork.
- Use the on keyword to enable the interface to accept IGMP reports from hosts on any subnetwork.
- Use the off keyword to allow the interface to accept IGMP reports only from hosts on subnetworks associated with this interface.
host1:boston(config-if)#ip igmp promiscuous onUse the no version mode to configure an IGMP interface to use the Router Configuration mode setting to determine the subnetworks 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 disableUse the no version to enable IGMP on a VR. router igmp
host1(config)#virtual-router bostonhost1:boston(config)#router igmpUse the no version to delete IGMP and IGMP proxy from the VR. Monitoring 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 igmpThere is no no version. show 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—IIGMP 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 JUNOSe 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 subnetwork
- 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 subnetwork
- 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 JUNOSe 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 ip igmp ssm-mapping
- Used to display the SSM mapping state and the source list mapping associated with a multicast group address.
- Field descriptions
- SSM Mapping—Status of SSM mapping on the interface (enabled or disabled)
- Group Address—Multicast group address requested
- Source List—List of sources mapped to the multicast group address
host1:boston#show ip igmp ssm-mapping 232.1.1.1SSM Mapping : EnabledGroup Address : 232.1.1.1Source List : 172.1.1.1: 172.1.1.2show 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-7xx models) and 0-13 (ERX-14xx models)
- 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