1. IGMP Overview
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.
2. Configuring IGMP
2.1. Enabling IGMPv3 Service on an Instance
2.1.1. Adding IGMPv3 Service on an Instance
To add IGMPv3 service on an instance, enter the following command:
Syntax
Command Parameters
<instance> |
Name of the routing instance |
Example
ubuntu@rtbrick:~$ rtb confd set igmp instance default ubuntu@rtbrick:~$ rtb confd show datastore table dump global.igmp.instance.config json | jq . { "table": { "table_name": "global.igmp.instance.config", "table_index": "sequence" }, "objects": [ { "sequence": 2000003, "update": true, "timestamp": "Mon Jul 27 14:47:10 GMT +0000 2020", "attribute": { "instance_name": "default" } } ] }
2.1.2. Deleting IGMPv3 Service on an Instance
Syntax
Command Parameters
<instance> |
Name of the routing instance |
Example
ubuntu@rtbrick:~$ rtb confd delete igmp instance default
2.2. Enabling IGMPv3 Service on an Interface
2.2.1. Adding IGMPv3 Service on an Interface
To add IGMPv3 service on an interface, enter the following command:
Syntax
To configure the interface options, enter the following commands:
Command Parameters
<interface> |
Name of the IP multicast interface |
<profile> |
Name of the interface configuration profile |
<count> |
Specifies the maximum count of multicast group members |
<IGMPv2 |IGMPv3> |
Specifies the IGMP version |
Example
ubuntu@rtbrick:~$ rtb confd set igmp interface ifl-0/0/1/1 interface-cofiguration-profile profile ubuntu@rtbrick:~$ rtb confd set igmp interface ifl-0/0/1/1 max-members 10 ubuntu@rtbrick:~$ rtb confd set igmp interface ifl-0/0/1/1 protocol-version IGMPv3 ubuntu@rtbrick:~$ rtb confd show datastore table dump default.igmp.interface.config json | jq . { "table": { "table_name": "default.igmp.interface.config", "table_index": "sequence" }, "objects": [ { "sequence": 1400004, "update": true, "timestamp": "Mon Jul 27 14:35:44 GMT +0000 2020", "attribute": { "interface_name": "ifl-0/0/1/1", "version": "IGMPv3", "config_profile_name": "iprofile", "max_members_per_interface": 10 } } ] }
2.2.2. Deleting IGMPv3 Service on an Interface
To delete IGMPv3 service on an interface, enter the following command:
Syntax
To delete the interface options, enter the following commands:
Command Parameters
<interface> |
Name of the IP multicast interface |
Example
ubuntu@rtbrick:~$ rtb confd delete igmp interface ifl-0/0/1/1 protocol-version ubuntu@rtbrick:~$ rtb confd delete igmp interface ifl-0/0/1/1 max-members ubuntu@rtbrick:~$ rtb confd delete igmp interface ifl-0/0/1/1 interface-cofiguration-profile ubuntu@rtbrick:~$ rtb confd delete igmp interface ifl-0/0/1/1
2.3. Configuring IGMP Version
The version command sets the IGMP version on the interface.
Syntax
Command Parameters
<IGMPv2 |
IGMPv3> |
Example
ubuntu@rtbrick:~$ rtb confd set igmp interface ifl-0/0/1/1 protocol-version IGMPv3
2.4. Configuring IGMPv3 Interface Profile
You need configure the following interface profiles:
-
Immediate Leave
-
SSM Mapping
-
Filter List
2.4.1. Adding IGMPv3 Interface Profile
To add IGMPv3 interface profile, enter the following command:
Syntax
To configure interface profile options, enter the following commands:
Command Parameters
<interface> |
Name of the IP multicast interface |
<profile> |
Name of the interface configuration profile |
<enable |disable> |
Enable or disable the immediate leave option |
maximum-query-response-interval <interval> |
Maximum query response interval. The default value is 100 seconds. |
<query_interval> |
IGMP query interval. The default value is 125 seconds. |
<name> |
Name of the SSM mapping profile |
<count> |
The count of multicast group members |
Example
ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile maximum-query-response-interval 10 ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile query-interval 10 ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile start-query-count 10 ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile querier-timeout-interval 10 ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile start-query-interval 10 ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile immediate-leave Enable ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile ssm-mapping-profile sprofile ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile filter-list-profile flist default-action permit ubuntu@leaf2:~$ rtb confd show datastore table dump global.igmp.interface.config.profile json | jq . { "table": { "table_name": "global.igmp.interface.config.profile", "table_index": "sequence" }, "objects": [ { "sequence": 2000007, "update": true, "timestamp": "Mon Jul 27 14:22:24 GMT +0000 2020", "attribute": { "config_profile_name": "iprofile", "query_interval": 10, "start_query_interval": 10, "start_query_count": 10, "querier_timeout": 10, "maximum_query_response_time": 10, "ssm_mapping_profile_name": "sprofile", "filter_list_profile_name": "flist", "default_filter_action": "permit" } } ] }
2.4.2. Deleting IGMPv3 Interface Profile
To delete IGMPv3 interface profile and interface profile options, enter the following commands:
Syntax
Command Parameters
<interface> |
Name of the IP multicast interface configuration profile |
Example
ubuntu@rtbrick:~$ rtb confd delete multicast-options igmp interface-config-profile iprofile start-query-interval
2.5. Enabling or Disabling Immediate Leave
To enable the device to remove the group entry from the multicast routing table immediately upon receiving a leave message for the group, enter the following command.
Syntax
Command Parameters
<enable | disable> |
Enable or disable the immediate leave option |
Example
ubuntu@rtbrick:~$ rtb confd set multicast-options igmp interface-config-profile iprofile immediate-leave Enable
2.6. Configuring SSM Mapping Profile
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.
2.6.1. Adding an SSM Mapping profile
To add an SSM mapping profile, enter the following command:.
Syntax
Command Parameters
<profile> |
Specifies the SSM mapping profile |
<group> |
Specifies the name of the group |
<source> |
Specifies the source from which the multicast traffic is received |
Example
ubuntu@rtbrick$ rtb confd set multicast-options igmp ssm-mapping-profile sprofile group 224.0.40.1 source 1.1.1.1 ubuntu@rtbrick:~$ rtb confd show datastore table dump global.igmp.ssm.mapping.config json | jq . { "table": { "table_name": "global.igmp.ssm.mapping.config", "table_index": "sequence" }, "objects": [ { "sequence": 2000001, "update": true, "timestamp": "Mon Jul 27 14:13:08 GMT +0000 2020", "attribute": { "ssm_mapping_profile_name": "sprofile", "group4": "224.0.40.1", "source4": "1.1.1.1" } } ] }
2.6.2. Deleting an SSM Mapping profile
To delete an SSM mapping profile, enter the following command:.
Syntax
Command Parameters
<profile> |
Specifies the SSM mapping profile |
<source> |
Specifies the source from which the multicast traffic is received |
<group> |
Specifies the group address |
Example
ubuntu@rtbrick:~$ rtb confd delete multicast-options igmp ssm-mapping-profile sprofile group 224.0.40.1 source 1.1.1.1
2.7. Configuring Filter List
2.7.1. Adding a Filter List
To add a filter list, enter the following command:.
Syntax
Command Parameters
<list> |
Specifies the name of the profile list |
<group> |
Specifies the group name |
<source> |
Specifies the source from which the multicast traffic is received |
<action> |
Sets the action to permit or deny |
Example
ubuntu@rtbrick:$ rtb confd set multicast-options igmp filter-list list flist group 224.0.40.1 source 1.1.1.1 action deny ubuntu@rtbrick:$ rtb confd show datastore table dump global.igmp.filter.list.config json | jq . { "table": { "table_name": "global.igmp.filter.list.config", "table_index": "sequence" }, "objects": [ { "sequence": 2000001, "update": true, "timestamp": "Mon Jul 27 11:51:48 GMT +0000 2020", "attribute": { "filter_list_profile_name": "flist", "group4": "224.0.40.1", "source4": "1.1.1.1", "filter_action": "deny" } } ] }
2.7.2. Deleting a Filter List
To delete a filter list, enter the following command:.
Syntax
Command Parameters
<list> |
Specifies the name of the profile list |
<group4> |
Specifies the multicast group address |
<source4> |
Specifies the source from which the multicast traffic is received |
Example
ubuntu@rtbrick:~$ rtb confd delete multicast-options igmp filter-list list flist group 224.0.40.1
2.8. Configuring the IGMP 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.
2.8.1. Adding IGMP Static Joins
To add an IGMP static join, enter the following command:.
Syntax
To configure the static join options, enter the following command:
Command Parameters
<group> |
Specifies the group name |
<source> |
Specifies the source from which the multicast traffic is received |
<interface> |
Name of the outbound interface |
<value> |
refresh interval |
Example
ubuntu@rtbrick:$ rtb confd set igmp instance ip2vrf ubuntu@rtbrick:$ rtb confd set igmp instance ip2vrf static-join 239.0.0.1 source 100.10.1.2 oif null0 ubuntu@rtbrick:$ rtb confd set igmp instance ip2vrf static-join 239.0.0.1 source 100.10.1.2 ifl-0/0/1/1 refresh-interval 100 ubuntu@rtbrick:$ rtb confd show datastore table dump ip2vrf.igmp.static.membership.config object: 1, sequence: 1, last update: Tue Jul 28 05:10:12 GMT +0000 2020 attribute: source4 (1), type: ipv4addr (12), length: 4, value: 100.10.1.2 attribute: group4 (2), type: ipv4addr (12), length: 4, value: 239.0.0.1 attribute: oif_name (3), type: string (9), length: 6, value: null0 ubuntu@rtbrick:$ rtb confd show datastore table dump ip2vrf.igmp.static.membership.config object: 1, sequence: 3, last update: Tue Jul 28 05:18:10 GMT +0000 2020 attribute: source4 (1), type: ipv4addr (12), length: 4, value: 100.10.1.2 attribute: group4 (2), type: ipv4addr (12), length: 4, value: 239.0.0.1 attribute: oif_name (3), type: string (9), length: 15, value: ifl-0/0/1/1 attribute: refresh_interval (4), type: uint32 (4), length: 4, value: 100 ubuntu@rtbrick:$ rtb confd show datastore table dump ip2vrf.igmp.static.membership.config json | jq . { "table": { "table_name": "ip2vrf.igmp.static.membership.config", "table_index": "sequence" }, "objects": [ { "sequence": 1, "update": true, "timestamp": "Tue Jul 28 05:10:12 GMT +0000 2020", "attribute": { "source4": "100.10.1.2", "group4": "239.0.0.1", "oif_name": "null0" } } ] } ubuntu@rtbrick:$ rtb confd show datastore table dump ip2vrf.igmp.static.membership.config json | jq . { "table": { "table_name": "ip2vrf.igmp.static.membership.config", "table_index": "sequence" }, "objects": [ { "sequence": 3, "update": true, "timestamp": "Tue Jul 28 05:18:10 GMT +0000 2020", "attribute": { "source4": "100.10.1.2", "group4": "239.0.0.1", "oif_name": "ifl-0/0/1/1", "refresh_interval": 100 } } ] }
2.8.2. Deleting IGMP Static Joins
To delete an IGMP static join, enter the following command:.
Syntax
Command Parameters
<group> |
Specifies the multicast group name |
<source> |
Specifies the source from which the multicast traffic is received |
<interface> |
Name of the IP multicast interface |
Example
ubuntu@rtbrick:$ rtb confd delete igmp instance ip2vrf static-join 239.0.0.1 source 100.10.1.2 oif null0 ubuntu@rtbrick:$ rtb confd delete igmp instance ip2vrf static-join 239.0.0.1 source 100.10.1.2 oif ifl-0/0/1/1 ubuntu@rtbrick:$ rtb confd show datastore table dump ip2vrf.igmp.static.membership.config
2.9. Configuring PIM
Routing devices can translate Protocol Independent Multicast (PIM) join and prune messages into corresponding Internet Group Management Protocol (IGMP) or Multicast Listener Discovery (MLD) reports or leave messages.
2.9.1. Enabling PIM
To enable PIM, enter the following command.
Syntax
To configure PIM TOS value, enter the following command:
Command Parameters
<ipv4 | ipv6> |
Specifies the PIM address family. |
<tos value> |
Specifies the type of service, which is optional |
Example
ubuntu@rtbrick:$ rtb confd set pim address-family ipv4 tos 10 ubuntu@rtbrick:$ rtb confd show datastore table dump global.pim.instance.config json | jq . { "table": { "table_name": "global.pim.instance.config", "table_index": "sequence" }, "objects": [ { "sequence": 7700003, "update": true, "timestamp": "Wed Jul 29 16:02:54 GMT +0000 2020", "attribute": { "instance_name": "default", "afi": "ipv4", "tos": 10 } } ] }
2.9.2. Deleting PIM Configuration
To delete the PIM configuration, enter the following command.
Syntax
2.9.3. Enabling PIM on an Instance
To enable PIM on an instance, enter the following command.
Syntax
To configure PIM TOS value on an instance, enter the following command:
Command Parameters
<nstance> |
Name of the PIM instance |
<ipv4 | ipv6> |
Specifies the PIM address family |
<tos value> |
Specifies the type of service |
Example
ubuntu@rtbrick:$ rtb confd set pim instance red address-family ipv4 tos 10 ubuntu@rtbrick:$ rtb confd show datastore table dump global.pim.instance.config json | jq . { "table": { "table_name": "global.pim.instance.config", "table_index": "sequence" }, "objects": [ { "sequence": 7700004, "update": true, "timestamp": "Wed Jul 29 16:03:40 GMT +0000 2020", "attribute": { "instance_name": "red", "afi": "ipv4", "tos": 10 } } ] }
2.9.4. Deleting the PIM Configuration on an Instance
To delete the PIM configuration on an instance, enter the following command:
Syntax
2.10. IGMP Show Commands
2.10.1. Viewing IGMP Groups
To view IGMP groups, enter the following command:
Syntax
Example
ubuntu@rtbrick:~$ rtb igmp.iod.1 show igmpv3 instance ip2vrf groups +---------------+---------------+-------------------------+---------------+-------------------------+------------------------------+ Source Address Group Address Interface Last Reporter Uptime Expires +---------------+---------------+-------------------------+---------------+-------------------------+------------------------------+ 1.1.1.1 225.0.0.1 ppp-0/0/4/723390690146... 10.100.128.199 0d:0h:0m:0s 5110us 1.1.1.1 225.0.0.1 ppp-0/0/4/723390690146... 10.100.128.200 0d:0h:0m:0s 3407us 1.1.1.1 225.0.0.1 ppp-0/0/4/723390690146... 10.100.128.201 0d:0h:0m:0s 3851us 1.1.1.1 225.0.0.1 ppp-0/0/4/723390690146... 10.100.128.202 0d:0h:0m:0s 8896us 1.1.1.1 225.0.0.1 ppp-0/0/4/723390690146... 10.100.128.203 0d:0h:0m:0s 8299us 1.1.1.1 225.0.0.2 ppp-0/0/4/723390690146... 10.100.128.199 0d:0h:0m:0s 5392us 1.1.1.1 225.0.0.2 ppp-0/0/4/723390690146... 10.100.128.200 0d:0h:0m:0s 3608us 1.1.1.1 225.0.0.2 ppp-0/0/4/723390690146... 10.100.128.201 0d:0h:0m:0s 4053us 1.1.1.1 225.0.0.2 ppp-0/0/4/723390690146... 10.100.128.202 0d:0h:0m:0s 8973us +---------------+---------------+-------------------------+---------------+-------------------------+------------------------------+
2.10.2. Viewing IGMP Interface
To view IGMP interfaces, enter the following command:
Syntax
Example
ubuntu@rtbrick:~$ rtb igmp.iod.1 show igmpv3 instance ip2vrf interface +-------------------------+--------------------+---------------+--------------------+-----------------------------------+ Interface Primary Addr State Querier Addr Up Time +-------------------------+--------------------+---------------+--------------------+-----------------------------------+ ppp-0/0/4/723390690146... 10.100.128.199 Querier 10.100.128.199 Fri Jul 31 05:26:26 GMT +0000 2020 ppp-0/0/4/723390690146... 10.100.128.200 Querier 10.100.128.200 Fri Jul 31 05:26:26 GMT +0000 2020 ppp-0/0/4/723390690146... 10.100.128.201 Querier 10.100.128.201 Fri Jul 31 05:27:25 GMT +0000 2020 ppp-0/0/4/723390690146... 10.100.128.202 Querier 10.100.128.202 Fri Jul 31 05:26:26 GMT +0000 2020 ppp-0/0/4/723390690146... 10.100.128.203 Querier 10.100.128.203 Fri Jul 31 05:26:26 GMT +0000 2020 +-------------------------+--------------------+---------------+--------------------+-----------------------------------+
2.10.3. Viewing the Details of a Specific IGMP Interface
To view the details of a specific IGMP interfaces, enter the following command:
Syntax
Example
ubuntu@rtbrick:~$ rtb igmp.iod.1 show igmpv3 instance ip2vrf interface [<Enter>] <interface> ubuntu@rtbrick:~$ rtb igmp.iod.1 show igmpv3 instance ip2vrf interface ppp-0/0/4/72339069014638596 Interface : ppp-0/0/4/72339069014638596, State : Querier, Uptime : Fri Jul 31 05:27:25 GMT +0000 2020 Primary address is 10.100.128.201 Querier address is 10.100.128.201 IGMP Version running is 3 Timer values Query interval : 125 Other querier present interval : 425 Startup query interval : 31 Last member query interval : 1 Count values Last member query count : 3 Startup query count : 0 Statistics General query sent : 5 General query received : 0 Group specific query sent : 0 Group specific query received : 0 ubuntu@rtbrick:~$ ~
3. IGMP for Subscribers
IGMP can be configured as a service for subscribers in two ways:
-
Local Configuration
-
Using RADIUS Attributes
For more information about these, see the Subscriber Management Configuration Guide.
©Copyright 2020 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.