IGMP
IGMP overview
Internet Group Management Protocol (IGMP) is used by IPv4 hosts and routers to report their IP multicast group memberships to neighboring multicast routers. A multicast router keeps a list of multicast group memberships for each attached network, and a timer for each membership.
Multicast group memberships include at least one member of a multicast group on a specific attached network, not a list of all the members. With respect to each of its attached networks, a multicast router can assume one of two roles, querier or non-querier. There is normally only one querier per physical network.
A querier issues two types of queries, a general query and a group-specific query. General queries are issued to solicit membership information with regard to any multicast group. Group-specific queries are issued when a router receives a leave message from the node it perceives as the last group member remaining on that network segment.
Hosts wanting to receive a multicast session issue a multicast group membership report. These reports must be sent to all multicast enabled routers.
IGMP versions and interoperability requirements
If routers run different versions of IGMP, they negotiate the lowest common version of IGMP that is supported on their subnet and operate in that version.
- Version 1
Specified in RFC 1112, Host extensions for IP Multicasting, was the first widely deployed version and the first version to become an Internet standard.
- Version 2
Specified in RFC 2236, Internet Group Management Protocol, Version 2, added support for ‟low leave latency”, that is, a reduction in the time it takes for a multicast router to learn that there are no longer any members of a particular group present on an attached network.
- Version 3
Specified in RFC 3376, Internet Group Management Protocol, Version 3, adds support for source filtering; that is, the ability for a system to report interest in receiving packets only from specific source addresses, as required to support SSM, or from all but specific source addresses, sent to a particular multicast address.
IGMPv3 must keep state per group per attached network. This group state consists of a filter-mode, a list of sources, and various timers. For each attached network running IGMP, a multicast router records the needed reception state for that network.
IGMP version transition
Nokia routers are capable of interoperating with routers and hosts running IGMPv1, IGMPv2, or IGMPv3. RFC 5186, Internet Group Management Protocol Version 3 (IGMPv3)/Multicast Listener Discovery Version 2 (MLDv2) and Multicast Routing Protocol Interaction explores some of the interoperability issues and how they affect the various routing protocols.
IGMP version 3 specifies that if at any point a router receives an older version query message on an interface that it must immediately switch into a compatibility mode with that earlier version. Because none of the previous versions of IGMP are source aware, should this occur and the interface switch to Version 1 or 2 compatibility mode, any previously learned group memberships with specific sources (learned via the IGMPv3 specific INCLUDE or EXCLUDE mechanisms) must be converted to non-source specific group memberships. The routing protocol then treats this as if there is no EXCLUDE definition present.
Source-specific multicast groups
IGMPv3 allows a receiver to join a group and specify that it only wants to receive traffic for a group if that traffic comes from a particular source. If a receiver does this, and no other receiver on the LAN requires all the traffic for the group, then the designated router (DR) can omit performing a (*,G) join to set up the shared tree, and instead issue a source-specific (S,G) join only.
The range of multicast addresses from 232.0.0.0 to 232.255.255.255 is currently set aside for source-specific multicast in IPv4. For groups in this range, receivers should only issue source-specific IGMPv3 joins. If a PIM router receives a non-source-specific join for a group in this range, it should ignore it.
A Nokia router PIM router must silently ignore a received (*,G) PIM join message where G is a multicast group address from the multicast address group range that has been explicitly configured for SSM. This occurrence should generate an event. If configured, the IGMPv2 request can be translated into IGMPv3. The router allows for the conversion of an IGMPv2 (*,G) request into a IGMPv3 (S,G) request based on manual entries. A maximum of 32 SSM ranges is supported.
IGMPv3 also allows a receiver to join a group and specify that it only wants to receive traffic for a group if that traffic does not come from a specific source or sources. In this case, the DR performs a (*,G) join as normal, but can combine this with a prune for each of the sources the receiver does not want to receive.
Query messages
The IGMP query source address is configurable at two hierarchal levels. It can be configured globally at each router instance IGMP level and can be configured at individual at the group-interface level. The group-interface level overrides the src-ip address configured at the router instance level.
By default, subscribers with IGMP policies send IGMP queries with an all zero SRC IP address (0.0.0.0). However, some systems only accept and process IGMP query messages with non-zero SRC IP addresses. This feature allows the BNG to inter-operate with such systems.
Configuring IGMP with CLI
This section provides information to configure IGMP using the command line interface.
IGMP configuration overview
The routers use IGMP to manage membership for a multicast session. IGMP is not enabled by default. When enabled, at least one interface must be specified in the IGMP context as IGMP is an interface function. Creating an interface enables IGMP. Traffic can only flow away from the router to an IGMP interface and to and from a PIM interface. A router directly connected to a source must have PIM enabled on the interface to that source. The traffic travels in a network from PIM interface to PIM interface and arrives finally on an IGMP enabled interface.
The IGMP CLI context allows you to specify an existing IP interface and modify the interface-specific parameters. Static IGMP group memberships can be configured to test multicast forwarding without a receiver host. When IGMP static group membership is enabled, data is forwarded to an interface without receiving membership reports from host members.
When static IGMP group entries on point-to-point links that connect routers to a rendezvous point (RP) are configured, the static IGMP group entries do not generate join messages toward the RP. When a host wants to receive multicast sessions it sends a join message for each multicast group it wants to join. Then, a leave message may be sent for each multicast group it no longer needs to participate with.
A multicast router keeps a list of multicast group memberships for each attached network, and an interval timer for each membership. Hosts issue a Multicast Group Membership Report when they want to receive a multicast session. The reports are sent to all multicast routers.
Basic IGMP configuration
Perform the following basic multicast configuration tasks:
- Required: Enable IGMP.
- Required: Configure IGMP interfaces.
- Optional: Specify the IGMP version on the interface.
- Optional: Configure static (S,G)/(*,G).
- Optional: Configure SSM translation.
Configuring IGMP
Enabling IGMP
Use the commands in the following context to enable IGMP.
configure router igmp
The following example shows IGMP configuration information.
MD-CLI
[ex:/configure router "base" igmp]
A:admin@node-2# info
admin-state enable
query-interval 125
query-last-member-interval 1
query-response-interval 10
robust-count 2
...
classic CLI
A:node-2>config>router# info
...
#------------------------------------------
echo "IGMP Configuration"
#------------------------------------------
igmp
query-interval 125
query-last-member-interval 1
query-response-interval 10
robust-count 2
no shutdown
exit
#------------------------------------------
Configuring an IGMP interface
Use the following command to configure an interface for IGMP. You can reference interfaces configured in the router, IES service, or IES service video-interface context.
configure router igmp interface
The following example shows interfaces configured for IGMP.
Configure interfaces for IGMP (MD-CLI)
[ex:/configure router "2" igmp]
A:admin@node-2# info
...
interface "itf1" {
admin-state enable
}
interface "itf2" {
admin-state enable
}
interface "ip-1.1.1.3" {
admin-state enable
}
...
Configure interfaces for IGMP (classic CLI)
A:node-2>config>router>igmp# info
----------------------------------------------
...
interface "itf1"
no shutdown
exit
interface "itf2"
no shutdown
exit
interface "ip-1.1.1.3"
no shutdown
exit
no shutdown
...
----------------------------------------------
Use the commands in the interface context to configure the interface for IGMP. The following example shows some IGMP interface configuration options.
Configure IGMP interface options (MD-CLI)
[ex:/configure router "2" igmp interface "itf1"]
A:admin@node-2# info
admin-state enable
maximum-number-group-sources 5
maximum-number-sources 10
version 2
...
Configure IGMP interface options (classic CLI)
A:node-2>config>router>igmp# interface "itf1"
A:node-2>config>router>igmp>if# info
----------------------------------------------
version 2
max-groups 5
max-sources 10
no shutdown
...
----------------------------------------------
Configuring IGMP static multicast
configure router igmp interface static
-
Configure an IGMP static multicast group.
configure router igmp interface ip-int-name static group ip-address
-
Configure a source IP address or a static (*,G) entry for the group.
configure router igmp interface ip-int-name static group ip-address source ip-address configure router igmp interface ip-int-name static group ip-address starg
MD-CLI[ex:/configure router "Base" igmp] A:admin@node-2# info ... interface "itf1" { ... static { group 239.255.0.2 { source 172.22.184.197 { } } } } interface "itf2" { static { group 239.1.1.1 { starg } } }
classic CLIA:node-2>config>router>igmp# info ---------------------------------------------- ... interface "itf1" ... static group 239.255.0.2 source 172.22.184.197 exit exit exit interface "itf2" ... static group 239.1.1.1 starg exit exit exit ----------------------------------------------
Configuring SSM translation
Use the commands in the following context to configure SSM translation for IGMP.
configure router igmp ssm-translate
The following example shows an SSM translation configuration for IGMP.
MD-CLI
[ex:/configure router "Base" igmp]
A:admin@node-2# info
...
ssm-translate {
group-range start 239.255.0.1 end 239.2.2.2 {
source 10.1.1.1 { }
}
}
...
classic CLI
A:node-2>config>router>igmp# info
----------------------------------------------
...
ssm-translate
grp-range 239.255.0.1 239.2.2.2
source 10.1.1.1
exit
exit
...
----------------------------------------------
Disabling IGMP
IGMP is enabled by default. Use the following command to disable IGMP:
- MD-CLI
configure router igmp admin-state disable
- classic
CLI
configure router igmp shutdown