Configuring IGMP

Configuration Hierarchy

The diagram illustrates the IGMP configuration hierarchy.

IGMP Configuration Hierarchy

Configuration Syntax and Commands

The following sections describe the interface configuration syntax and commands.

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"
      }
    ]
  }

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.
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": "198.51.100.177"
    }
  }

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"
      }
    ]
  }

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": "198.51.100.200",
        "source-address": "198.51.100.1",
        "outgoing-interface": "null0"
      }
    ]
  }

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"
      }
    ]
  }

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
        }
      }
    ]
  }

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
          }
        }
      ]
    }
  }
}