1. Introduction
Internet Group Management (IGMP) protocol allows a host to advertise its multicast group membership to neighboring 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.
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>
![]() |
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. |
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": "198.51.100.177" } }
2.2.2.1. IGMP Interface Configuration
![]() |
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": "ifl-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 |
Example: IGMP Static Join Configuration
{ "rtbrick-config:static-group": [ { "group-address": "198.51.100.200", "source-address": "198.51.100.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 |
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": "198.51.100.91" } } } ], "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": "198.51.100.20/24" } ] }, "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": "198.51.100.10/24" } ] }, "action": { "rule": [ { "rule": 1, "type": "ipv4-mcast-source", "operation": "overwrite", "value": "198.51.100.11/24" } ] } } ] } ] }, "rtbrick-config:access": { "interface": { "double-tagged": [ { "interface-name": "ifp-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 198.51.100.100 Querier 198.51.100.133 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 198.51.100.100 Querier 198.51.100.133 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 198.51.100.79 198.51.100.233 null0 vpn1 03h:42m:33s n/a IGMP 198.51.100.43 198.51.100.222 null0 vpn1 03h:42m:33s n/a IGMP 198.51.100.51 198.51.100.71 ppp-0/0/3/72339069014638597 vpn1 00h:32m:58s 1m 43s IGMPv3 198.51.100.51 198.51.100.72 ppp-0/0/3/72339069014638597 vpn1 00h:33m:03s 1m 48s IGMPv3 198.51.100.53 198.51.100.73 ppp-0/0/3/72339069014638597 vpn1 00h:35m:26s 3m 36s IGMPv3 198.51.100.54 198.51.100.74 ppp-0/0/3/72339069014638597 vpn1 00h:35m:26s 3m 35s IGMPv3 198.51.100.56 198.51.100.115 ppp-0/0/3/72339069014638597 vpn1 03h:38m:16s 3m 33s IGMPv3 198.51.100.57 198.51.100.117 ppp-0/0/3/72339069014638597 vpn1 03h:38m:16s 3m 29s IGMPv3 198.51.100.58 198.51.100.18 ppp-0/0/3/72339069014638597 vpn1 03h:38m:16s 3m 42s IGMPv3 198.51.100.59 198.51.100.19 ppp-0/0/3/72339069014638597 vpn1 03h:38m:16s 3m 35s IGMPv3 198.51.100.90 198.51.100.64 ppp-0/0/3/72339069014638597 vpn1 03h:38m:16s 3m 40s IGMPv3 198.51.100.225 198.51.100.68 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 198.51.100.79 198.51.100.233 null0 vpn1 03h:42m:37s n/a IGMP 198.51.100.43 198.51.100.233 null0 vpn1 03h:42m:37s n/a IGMP 198.51.100.51 198.51.100.71 ppp-0/0/3/72339069014638597 vpn1 00h:33m:02s 1m 40s IGMPv3 198.51.100.51 198.51.100.72 ppp-0/0/3/72339069014638597 vpn1 00h:33m:07s 1m 45s IGMPv3 198.51.100.53 198.51.100.73 ppp-0/0/3/72339069014638597 vpn1 00h:35m:30s 3m 41s IGMPv3 198.51.100.54 198.51.100.74 ppp-0/0/3/72339069014638597 vpn1 00h:35m:30s 3m 43s IGMPv3 198.51.100.56 198.51.100.115 ppp-0/0/3/72339069014638597 vpn1 03h:38m:20s 3m 43s IGMPv3 198.51.100.57 198.51.100.117 ppp-0/0/3/72339069014638597 vpn1 03h:38m:20s 3m 42s IGMPv3 198.51.100.58 198.51.100.18 ppp-0/0/3/72339069014638597 vpn1 03h:38m:20s 3m 39s IGMPv3 198.51.100.59 198.51.100.19 ppp-0/0/3/72339069014638597 vpn1 03h:38m:20s 3m 42s IGMPv3 198.51.100.90 198.51.100.64 ppp-0/0/3/72339069014638597 vpn1 03h:38m:20s 3m 37s IGMPv3 198.51.100.225 198.51.100.68 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 198.51.100.233 198.51.100.79 (198.51.100.79, 198.51.100.233) 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 (198.51.100.51, 198.51.100.71) 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 : 198.51.100.100 Last member query count : 3 Last member interval : 1s Retransmit time : 1s Max response time : 0s (198.51.100.51, 198.51.100.72) 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 : 198.51.100.100 Last member query count : 3 Last member interval : 1s Retransmit time : 1s Max response time : 0s (198.51.100.53, 198.51.100.73) 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 : 198.51.100.100 Last member query count : 3 Last member interval : 1s Retransmit time : 1s Max response time : 0s (198.51.100.54, 198.51.100.74) 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 : 198.51.100.100 Last member query count : 3 Last member interval : 1s Retransmit time : 1s Max response time : 0s (198.51.100.56, 198.51.100.115) 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 : 198.51.100.100 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 198.51.100.117 198.51.100.57 (198.51.100.57, 198.51.100.117) 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 : 198.51.100.100 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 2023 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.