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:

  1. Required: Enable IGMP.
  2. Required: Configure IGMP interfaces.
  3. Optional: Specify the IGMP version on the interface.
  4. Optional: Configure static (S,G)/(*,G).
  5. 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

This task describes how to configure an IGMP static multicast group and add a source IP address or starg entry. Use the commands in the following context to configure an IGMP static multicast group.
configure router igmp interface static
  1. Configure an IGMP static multicast group.
    configure router igmp interface ip-int-name static group ip-address
  2. 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 CLI
    A: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