Download PDF
Home

1. Introduction

Internet Group Management (IGMP) protocol allows a host to advertise its multicast group membership to neighbouring switches and routers. IGMP is a standard protocol used by the TCP/IP protocol suite to achieve dynamic multicasting.

There are two components in the IGMP solution:

  • IGMPv2/v3 Client: It sends Join or Leave messages to a multicast group. Typical example of a client is a SET-TOP box. The IGMP client can respond to any IGMP general queries or group-specific queries that are received.

  • Multicast Router: The recipient of IGMP Join/Leave message. After receiving the message, it determines whether the corresponding message needs to be processed or not. After processing the IGMP messages, it sends this information to its multicast upstream router. Along with this, it can program certain entries in its routers which results in forwarding specific multicast packets on that interface.

1.1. IGMPv3 Lite

IGMP 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, or from all but specific source addresses, sent to a particular multicast address. That information may be used by multicast routing protocols to avoid delivering multicast packets from specific sources to networks where there are no interested receivers.

The RtBrick IGMP v3lite solution adds support for source filtering. Source filtering enables a multicast receiver host to signal from which groups it wants to receive multicast traffic, and from which sources this traffic is expected. That information may be used by multicast routing protocols to avoid delivering multicast packets from specific sources to networks where there are no interested receivers.

IGMP Version 3 will help conserve bandwidth by allowing a host to select the specific sources from which it wants to receive traffic. Also, multicast routing protocols will be able to make use of this information to conserve bandwidth when constructing the branches of their multicast delivery trees.

1.1.1. Static Joins

After an interface on a multicast device is configured to statically join an IGMP group, the multicast device considers that the interface has static multicast group members and sends multicast packets to this interface, regardless of whether hosts connected to this interface request the multicast packets.

1.1.2. SSM Mapping

SSM mapping takes IGMPv2 reports and converts them to IGMPv3. In case of legacy devices, there could be a possibility that BNG might receive IGMPv2 membership reports. If BNG receives an IGMPv2 membership for a specific group G1, BNG uses the SSM mapping configuration to determine one or more Source (S) addresses for a given group. This SSM mappings are translated to the IGMPv3 joins like IGMPV3 JOIN INCLUDE (G, [S1, G1], [S2, G1] and so on) and BNG continues to process as if it has received from the subscriber.

1.2. Supported Platforms

Not all features are necessarily supported on each hardware platform. Refer to the Platform Guide for the features and the sub-features that are or are not supported by each platform.

2. Configuring IGMP

2.1. Configuration Hierarchy

The diagram illustrates the IGMP configuration hierarchy.

IGMP Configuration Hierarchy

2.2. Configuration Syntax and Commands

The following sections describe the interface configuration syntax and commands.

2.2.1. Multicast Address Family Configuration

You can enable the multicast IPv4 address family under the IGMP instance using the following command:

Syntax:

set instance <instance> address-family <attribute> <value>

Attribute Description

<instance>

Specifies the name of the network instance

<afi>

Address family identifier (AFI). Supported value: ipv4

<safi>

Subsequent address family identifier (SAFI), that is, multicast.

Example: Multicast Address Family Configuration

{
    "rtbrick-config:address-family": [
      {
        "afi": "ipv4",
        "safi": "multicast"
      }
    ]
  }

2.2.2. IGMP Protocol Configuration

To configure an IGMP on an instance, the same instance should be enabled globally with AFI IPv4 and SAFI as both unicast and multicast.

Syntax:

set instance <instance> protocol igmp <attribute> <values>

Note If no instance is specified, IGMP will be enabled on the default instance.
Options Description

<instance>

Name of the IGMP instance.

interfaces <…​>

IGMP interface configuration. Refer to section 2.2.1.1 for the IGMP interface configuration.

robustness-variable <variable-value>

The robustness value is used by IGMP to determine the number of times to send messages. Default value: 3. Range: 0-255.

source-address <source-address>

Source address of the IGMP query at the instance-level.
NOTE: IF subscriber IFL is configured with the source address, then takes priority; otherwise, the the instance-level source address will be used. If source address is not configured, 0.0.0.0 will be the default address.

static-group <…​>

Static multicast route configuration. Refer to section 2.2.2.2 for the IGMP static join configuration.

Example: IGMP Configuration

{
    "rtbrick-config:igmp": {
      "robustness-variable": 5,
      "source-address": "192.168.9.1"
    }
  }
2.2.2.1. IGMP Interface Configuration
Note When you start IGMP on an interface, it operates with the default settings.

Syntax:

set instance <instance> protocol igmp interfaces interface <interface-name> <attribute> <value>

Attribute Description

<instance>

Name of the instance

<interface-name>

Name of the IP multicast interface

max-groups <count>

Specifies the maximum count of multicast group memberships

version <version>

Specifies the IGMP version, that is, IGMPv2 or IGMPv3

interface-profile <profile>

Name of the interface configuration profile

Example: IGMP Interface Configuration

{
    "rtbrick-config:interface": [
      {
        "interface-name": "hostif-0/0/0/1",
        "version": "IGMPv3",
        "max-groups": 30,
        "interface-profile": "profile1"
      }
    ]
  }
2.2.2.2. IGMP Static Join Configuration

Syntax:

set instance <instance> protocol igmp static-group <attribute> <value>

Command Parameters

<instance>

Specifies the instance name

<group-address>

Specifies the multicast address

<outgoing-interface>

Name of the outbound interface. The null0 is a discard or sink interface for IGMP static join configuration.

Example: IGMP Static Join Configuration

{
    "rtbrick-config:static-group": [
      {
        "group-address": "232.2.2.2",
        "source-address": "1.1.1.1",
        "outgoing-interface": "null0"
      }
    ]
  }

2.2.3. IGMP Interface Profile Configuration

Syntax:

set multicast-options igmp interface-profile <attribute> <value>

Attribute Description

filter-policy <filter-policy>

Specifies the filter policy. The policy should be defined under policy statement.

immediate-leave <enable | disable>

Enable or disable the immediate leave option. The immediate-leave attribute removes group membership immediately upon receiving a group leave membership report. If enabled, IGMP perform an immediate leave upon receiving an IGMP group leave message. If the router is IGMP-enabled, it sends an IGMP last member query with a last member query response time. However, the router does not wait for the response time before it prunes off the group querier-timeout-interval IGMP other querier timeout. Default: 425s

query-interval <query-interval>

IGMP query interval in seconds. The query interval ranges from 1 to 1024 seconds. The default value is 125 seconds.

query-max-response-time <query-max-response-time>

Maximum query response interval in seconds. The maximum query response interval ranges from 1 to 1024 seconds. The default value is 100 seconds.

ssm-map-policy <ssm-map-policy>

IGMP SSM policy name. The policy for (*,G) mapping to (S,G)

start-query-count <start-query-count>

Specifies the number of queries sent out on startup, separated by the Start Query Interval. The start query count ranges from 1 to 1024. The default value is 3.

start-query-interval <start-query-interval>

Specifies the start query interval. The start-query-interval ranges from 1 to 1024 seconds. The default value is 31 seconds (query-interval/4).

Example: IGMP Interface Profile Configuration

{
    "rtbrick-config:interface-profile": [
      {
        "profile-name": "profile1",
        "immediate-leave": "enable",
        "query-interval": 30,
        "query-max-response-time": 10,
        "start-query-count": 10,
        "start-query-interval": 10,
        "filter-policy": "filter_policy",
        "ssm-map-policy": "ssm_policy"
      }
    ]
  }

2.2.4. Service Profile IGMP Configuration

Syntax:

set access service-profile <profile-name> igmp <attribute> <value>

Attribute Description

<profile-name>

Name of the service profile

enable <true|false>

Enable IGMP service

max-members <max-members>

Maximum IGMP membership per subscriber

profile <profile>

IGMP profile

version [IGMPv1/IGMPv2/IGMPv3]

IGMP version. The default IGMP version is IGMPv3.

Example: Service Profile IGMP Configuration

{
    "rtbrick-config:service-profile": [
      {
        "profile-name": "service-profile1",
        "igmp": {
          "enable": "true",
          "profile": "INTERFACE_PROFILE_1",
          "version": "IGMPv3",
          "max-members": 10
        }
      }
    ]
  }

2.3. IGMP Configuration Example

{
  "ietf-restconf:data": {
    "rtbrick-config:instance": [
      {
        "name": "default",
        "protocol": {
          "igmp": {
            "robustness-variable": 5,
            "source-address": "192.168.9.1"
          }
        }
      }
    ],
    "rtbrick-config:multicast-options": {
      "igmp": {
        "interface-profile": [
          {
            "profile-name": "INTERFACE_PROFILE_1",
            "query-interval": 10,
            "filter-policy": "FILTER_POLICY_1"
          },
          {
            "profile-name": "INTERFACE_PROFILE_2",
            "query-interval": 20,
            "ssm-map-policy": "SSM_POLICY_1"
          }
        ]
      }
    },
    "rtbrick-config:policy": {
      "statement": [
        {
          "name": "FILTER_POLICY_1",
          "ordinal": [
            {
              "ordinal": 1,
              "match": {
                "rule": [
                  {
                    "rule": 1,
                    "type": "ipv4-mcast-group",
                    "value-type": "discrete",
                    "match-type": "or-longer",
                    "value": "235.1.0.0/16"
                  }
                ]
              },
              "action": {
                "rule": [
                  {
                    "rule": 1,
                    "operation": "return-deny"
                  }
                ]
              }
            },
            {
              "ordinal": 2,
              "action": {
                "rule": [
                  {
                    "rule": 1,
                    "operation": "return-permit"
                  }
                ]
              }
            }
          ]
        },
        {
          "name": "SSM_POLICY_1",
          "ordinal": [
            {
              "ordinal": 1,
              "match": {
                "rule": [
                  {
                    "rule": 1,
                    "type": "ipv4-mcast-group",
                    "value-type": "discrete",
                    "match-type": "or-longer",
                    "value": "234.1.0.0/16"
                  }
                ]
              },
              "action": {
                "rule": [
                  {
                    "rule": 1,
                    "type": "ipv4-mcast-source",
                    "operation": "overwrite",
                    "value": "212.1.1.1/32"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "rtbrick-config:access": {
      "interface": {
        "double-tagged": [
          {
            "interface-name": "hostif-0/0/1",
            "outer-vlan-min": 1,
            "outer-vlan-max": 4049,
            "inner-vlan-min": 1,
            "inner-vlan-max": 4049,
            "access-type": "PPPoE",
            "access-profile-name": "access-profile1",
            "service-profile-name": "service-profile1",
            "aaa-profile-name": "aaa-profile1"
          }
        ]
      },
      "service-profile": [
        {
          "profile-name": "service-profile1",
          "igmp": {
            "enable": "true",
            "profile": "INTERFACE_PROFILE_1",
            "version": "IGMPv3",
            "max-members": 10
          }
        }
      ]
    }
  }
}

3. Operational Commands

3.1. IGMP Show Commands

Syntax:

show igmp <option>

Option Description

group

IGMP group summary information

group <group>

IGMP group detailed information

group instance <name>

IGMP group summary information in a specific instance

group outgoing-interface <interface_name>

IGMP group detailed information over a specific interface

interface

IGMP logical-interface summary information

interface instance <name>

IGMP interface summary information on specific instance

interface <interface_name>

IGMP interface detailed information

Example 1: Display IGMP interface details for all instances

supervisor@rtbrick>LEAF01: op> show igmp interface
Interface                     Primary Address   State          Querier Address   Instance          Uptime
null0                         n/a               n/a            n/a               vpn1            n/a
ppp-0/0/3/72339069014638597   100.100.100.1     Querier        192.1.4.3         vpn1            03h:37m:31s

Example 2: Display the interface summary for a specific instance

supervisor@rtbrick>LEAF01: op> show igmp interface instance vpn1
Interface                     Primary Address   State          Querier Address   Instance          Uptime
null0                         n/a               n/a            n/a               vpn1            n/a
ppp-0/0/3/72339069014638597   100.100.100.1     Querier        192.1.4.3         vpn1            03h:37m:39s

Example 3: Display IGMP group summary on all instances

supervisor@rtbrick>LEAF01: op> show igmp group
Source Address      Group Address       Interface                     Instance          Uptime         Expires     Version
50.0.0.234       233.233.233.223  null0                         vpn1            03h:42m:33s    n/a         IGMP
192.168.200.64   233.233.233.233  null0                         vpn1            03h:42m:33s    n/a         IGMP
50.0.0.1         232.27.72.2      ppp-0/0/3/72339069014638597   vpn1            00h:32m:58s    1m 43s      IGMPv3
50.0.0.1         232.27.72.5      ppp-0/0/3/72339069014638597   vpn1            00h:33m:03s    1m 48s      IGMPv3
50.0.0.3         232.27.72.3      ppp-0/0/3/72339069014638597   vpn1            00h:35m:26s    3m 36s      IGMPv3
50.0.0.4         232.27.72.4      ppp-0/0/3/72339069014638597   vpn1            00h:35m:26s    3m 35s      IGMPv3
50.0.0.6         225.0.0.6        ppp-0/0/3/72339069014638597   vpn1            03h:38m:16s    3m 33s      IGMPv3
50.0.0.7         225.0.0.7        ppp-0/0/3/72339069014638597   vpn1            03h:38m:16s    3m 29s      IGMPv3
50.0.0.8         225.0.0.8        ppp-0/0/3/72339069014638597   vpn1            03h:38m:16s    3m 42s      IGMPv3
50.0.0.9         225.0.0.9        ppp-0/0/3/72339069014638597   vpn1            03h:38m:16s    3m 35s      IGMPv3
50.0.0.10        225.0.0.10       ppp-0/0/3/72339069014638597   vpn1            03h:38m:16s    3m 40s      IGMPv3
50.0.0.125       232.2.2.2        ppp-0/0/3/72339069014638597   vpn1            00h:35m:26s    3m 40s      IGMPv3

Example 4: Display the group summary on specific instance

supervisor@rtbrick>LEAF01: op> show igmp group instance vpn1
Source Address      Group Address       Interface                     Instance          Uptime         Expires     Version
50.0.0.234       233.233.233.223  null0                         vpn1            03h:42m:37s    n/a         IGMP
192.168.200.64   233.233.233.233  null0                         vpn1            03h:42m:37s    n/a         IGMP
50.0.0.1         232.27.72.2      ppp-0/0/3/72339069014638597   vpn1            00h:33m:02s    1m 40s      IGMPv3
50.0.0.1         232.27.72.5      ppp-0/0/3/72339069014638597   vpn1            00h:33m:07s    1m 45s      IGMPv3
50.0.0.3         232.27.72.3      ppp-0/0/3/72339069014638597   vpn1            00h:35m:30s    3m 41s      IGMPv3
50.0.0.4         232.27.72.4      ppp-0/0/3/72339069014638597   vpn1            00h:35m:30s    3m 43s      IGMPv3
50.0.0.6         225.0.0.6        ppp-0/0/3/72339069014638597   vpn1            03h:38m:20s    3m 43s      IGMPv3
50.0.0.7         225.0.0.7        ppp-0/0/3/72339069014638597   vpn1            03h:38m:20s    3m 42s      IGMPv3
50.0.0.8         225.0.0.8        ppp-0/0/3/72339069014638597   vpn1            03h:38m:20s    3m 39s      IGMPv3
50.0.0.9         225.0.0.9        ppp-0/0/3/72339069014638597   vpn1            03h:38m:20s    3m 42s      IGMPv3
50.0.0.10        225.0.0.10       ppp-0/0/3/72339069014638597   vpn1            03h:38m:20s    3m 37s      IGMPv3
50.0.0.125       232.2.2.2        ppp-0/0/3/72339069014638597   vpn1            00h:35m:30s    3m 36s      IGMPv3

Example 5: Display detailed group information for specific group and source on all instances

supervisor@rtbrick>LEAF01: op> show igmp group 233.233.233.223 50.0.0.234
(50.0.0.234, 233.233.233.223)
  Outgoing interface      : null0
  Instance                : vpn1
  Source                  : Static
  State                   : No Members Present
  Version                 : IGMP
  Uptime                  : 03h:42m:54s
  Expires                 : n/a
  Membership interval     : n/a
  Last reporter           : n/a
  Last member query count : n/a
  Last member interval    : n/a
  Retransmit time         : n/a
  Max response time       : n/a

Example 6: Display detailed group information for specific group and source on all instances

supervisor@rtbrick>LEAF01: op> show igmp group outgoing-interface ppp-0/0/3/72339069014638597
(50.0.0.1, 232.27.72.2)
  Outgoing interface      : ppp-0/0/3/72339069014638597
  Instance                : vpn1
  Source                  : Dynamic
  State                   : Members Present
  Version                 : IGMPv3
  Uptime                  : 00h:33m:44s
  Expires                 : 1m 43s
  Membership interval     : 110s
  Last reporter           : 100.100.100.1
  Last member query count : 3
  Last member interval    : 1s
  Retransmit time         : 1s
  Max response time       : 0s
(50.0.0.1, 232.27.72.5)
  Outgoing interface      : ppp-0/0/3/72339069014638597
  Instance                : vpn1
  Source                  : Dynamic
  State                   : Members Present
  Version                 : IGMPv3
  Uptime                  : 00h:33m:49s
  Expires                 : 1m 48s
  Membership interval     : 110s
  Last reporter           : 100.100.100.1
  Last member query count : 3
  Last member interval    : 1s
  Retransmit time         : 1s
  Max response time       : 0s
(50.0.0.3, 232.27.72.3)
  Outgoing interface      : ppp-0/0/3/72339069014638597
  Instance                : vpn1
  Source                  : Dynamic
  State                   : Members Present
  Version                 : IGMPv3
  Uptime                  : 00h:36m:12s
  Expires                 : 3m 37s
  Membership interval     : 225s
  Last reporter           : 100.100.100.1
  Last member query count : 3
  Last member interval    : 1s
  Retransmit time         : 1s
  Max response time       : 0s
(50.0.0.4, 232.27.72.4)
  Outgoing interface      : ppp-0/0/3/72339069014638597
  Instance                : vpn1
  Source                  : Dynamic
  State                   : Members Present
  Version                 : IGMPv3
  Uptime                  : 00h:36m:12s
  Expires                 : 3m 41s
  Membership interval     : 225s
  Last reporter           : 100.100.100.1
  Last member query count : 3
  Last member interval    : 1s
  Retransmit time         : 1s
  Max response time       : 0s
(50.0.0.6, 225.0.0.6)
  Outgoing interface      : ppp-0/0/3/72339069014638597
  Instance                : vpn1
  Source                  : Dynamic
  State                   : Members Present
  Version                 : IGMPv3
  Uptime                  : 03h:39m:02s
  Expires                 : 3m 38s
  Membership interval     : 225s
  Last reporter           : 100.100.100.1
  Last member query count : 3
  Last member interval    : 1s
  Retransmit time         : 1s
  Max response time       : 0s

Example 7: Display detailed group information for specific group and source on selected instance

supervisor@rtbrick>LEAF01: op> show igmp group instance vpn1 225.0.0.7 50.0.0.7
(50.0.0.7, 225.0.0.7)
  Outgoing interface      : ppp-0/0/3/72339069014638597
  Instance                : vpn1
  Source                  : Dynamic
  State                   : Members Present
  Version                 : IGMPv3
  Uptime                  : 03h:39m:31s
  Expires                 : 3m 34s
  Membership interval     : 225s
  Last reporter           : 100.100.100.1
  Last member query count : 3
  Last member interval    : 1s
  Retransmit time         : 1s
  Max response time       : 0s
supervisor@rtbrick>LEAF01: op>

3.2. IGMP Clear Commands

3.2.1. IGMP Interface

Syntax:

clear igmp interface <attribute> <value>

Option Description

<interface_name>

Clears the specified IGMP interface

instance <instance> statistics

Clears the IGMP interface statistics for the specified instance.

Example: Clear interface IGMP statistics

supervisor@rtbrick>LEAF01: op> clear igmp interface instance default statistics
Interface IGMP statistics were successfully cleared
supervisor@rtbrick>LEAF01: op>

3.2.2. IGMP Group

Syntax:

clear igmp group <attribute> <value>

Option Description

all

Clear all IGMP groups present on all instances

instance <instance>

Clear all IGMP groups present on specific instance

interface <interface_name>

Clear all IGMP groups present on specific interface

Example: Clear all IGMP groups present on all instances

supervisor@rtbrick>LEAF01: op> clear igmp group all
IGMP groups were successfully cleared
supervisor@rtbrick>LEAF01: op>

©Copyright 2022 RtBrick, Inc. All rights reserved. The information contained herein is subject to change without notice. The trademarks, logos and service marks ("Marks") displayed in this documentation are the property of RtBrick in the United States and other countries. Use of the Marks are subject to RtBrick’s Term of Use Policy, available at https://www.rtbrick.com/privacy. Use of marks belonging to other parties is for informational purposes only.