bbf-mgmd-common

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on Multicast Group Members...

  • Version: 2023-12-15

    bbf-mgmd-common@2023-12-15


    
      module bbf-mgmd-common {
    
        yang-version 1.1;
    
        namespace "urn:bbf:yang:bbf-mgmd-common";
    
        prefix bbf-mgmdc;
    
        import ietf-yang-types {
          prefix yang;
        }
    
        organization
          "Broadband Forum <https://www.broadband-forum.org>
    Common YANG Work Area";
    
        contact
          "Comments or questions about this Broadband Forum YANG module
    should be directed to <mailto:help@broadband-forum.org>.
    
    Editor:      Nick Hancock, Adtran
    
    Editor:      Ludwig Pauwels, Nokia
    
    PS Leader:   Joey Boyd, Adtran
    
    WA Director: Joey Boyd, Adtran
    
    WA Director: Sven Ooghe, Nokia";
    
        description
          "This module contains a collection of YANG definitions for
    supporting the Broadband Forum requirements on Multicast Group
    Membership Discovery (MGMD) protocols.
    
    Specifically, this module describes reusable groupings containing
    configuration and operational data nodes used for managing the
    Internet Group Management Protocol (IGMP) and the Multicast
    Listener Discovery (MLD) protocol in case the system acts as a
    snooper.
    
    Copyright (c) 2017-2023, Broadband Forum
    
    Redistribution and use in source and binary forms, with or
    without modification, are permitted provided that the following
    conditions are met:
    
    1. Redistributions of source code must retain the above copyright
       notice, this list of conditions and the following disclaimer.
    
    2. Redistributions in binary form must reproduce the above
       copyright notice, this list of conditions and the following
       disclaimer in the documentation and/or other materials
       provided with the distribution.
    
    3. Neither the name of the copyright holder nor the names of its
       contributors may be used to endorse or promote products
       derived from this software without specific prior written
       permission.
    
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    The above license is used as a license under copyright only.
    Please reference the Forum IPR Policy for patent licensing terms
    <https://www.broadband-forum.org/ipr-policy>.
    
    Any moral rights which are necessary to exercise under the above
    license grant are also deemed granted under this license.
    
    This version of this YANG module is part of TR-383a7; see
    the TR itself for full legal notices.";
    
        revision "2023-12-15" {
          description
            "Amendment 7.
    * Approval Date:    2023-12-15.
    * Publication Date: 2023-12-15.";
          reference
            "TR-383a7: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-7.pdf>";
    
        }
    
    
        grouping interface-to-host {
          description
            "Data nodes used for configuring the Internet Group Management
    Protocol (IGMP) and the Multicast Listener Discovery (MLD)
    protocol on interfaces that connect multicast hosts.";
          leaf query-interval {
            type uint32 {
              range "1..31744";
            }
            units "seconds";
            default "125";
            description
              "The interval at which MGMD General Query messages (GMQs) are
    sent on interfaces.";
            reference
              "RFC 3376 Section 8.2;
               RFC 3810 Section 9.14.2;
               RFC 5519 Section 5 - mgmdRouterInterfaceQueryInterval";
    
          }
    
          leaf query-max-response-time {
            type uint32 {
              range "0..31744";
            }
            units "0.1 seconds";
            default "100";
            description
              "The maximum query response time advertised in MGMD General
    Query messages sent on interfaces. The value 0 means that the
    host receiving the Query message shall reply immediately to
    it. A value different than 0 means that the host waits a
    random time between 0 and the time specified in the Query
    message before answering the Query message.
    
    This configuration is shared between IGMPv2, MLDv1, IGMPv3
    and MLDv2 but has a difference in translating the configured
    value into a time inserted in the Query message:
    
    IGMPv2:
      Configured value < 255 : the time value is equal to the
      configured value (units in 100ms)
      Configured value >= 255 : the time value is 255 (units in
      100ms)
    
    MLDv1:
      Configured value < 374 : the time value is equal to the
      configured value (units in 100ms)
      Configured value >= 374 : the time value is 374 (units in
      100ms)
    
    IGMPv3 & MLDv2:
      Configured value < 128 : the time value is equal to the
      configured value (units in 100ms)
      Configured value >= 128 : the time value is calculated from
      the data node value. It is the lowest discrete value higher
      or equal to the data node value.
      The supported set of discrete values are calculated from a
      floating point calculation 'mantissa * (2 power(exponent))'
      for which the mantissa is a number from 16 to 31 and the
      exponent is a number from 3 to 10.";
            reference
              "RFC 2710 Section 7.3;
               RFC 2933 Section 4 - igmpInterfaceQueryMaxResponseTime;
               RFC 3376 Section 8.3;
               RFC 3810 Section 5.1.9;
               RFC 5519 Section 5 -
              mgmdRouterInterfaceQueryMaxResponseTime";
    
          }
    
          leaf last-member-query-interval {
            when
              "../immediate-leave = "disabled"";
            type uint32 {
              range "2..31744";
            }
            units "0.1 seconds";
            default "10";
            description
              "The last member query interval is the max response time
    inserted into MGMD Group-Specific Query messages sent in
    response to leaves, and is also the amount of time between
    MGMD Group-Specific Query messages.";
            reference
              "RFC 2710 Section 7.8;
               RFC 3376 Section 8.8;
               RFC 5519 Section 5 - mgmdRouterLastMemberQueryInterval";
    
          }
    
          leaf last-member-query-count {
            when
              "../immediate-leave = "disabled"";
            type uint32 {
              range "1..255";
            }
            default "2";
            description
              "The number of unanswered MGMD Group-Specific Query messages
    sent out before it is assumed that there are no local members
    interested in the IP multicast stream.
    
    This data node is applied to each interface on which the
    proxy generates MGMD Membership Query messages.";
            reference
              "RFC 3376 Section 8.9";
    
          }
    
          leaf startup-query-interval {
            type uint32 {
              range "0..31744";
            }
            units "seconds";
            default "30";
            description
              "This variable represents the interval between MGMD General
    Query messages sent by a Querier on startup.";
            reference
              "RFC 3376 Section 8.6";
    
          }
    
          leaf startup-query-count {
            type uint32 {
              range "1..255";
            }
            default "2";
            description
              "The startup query count is the number of MGMD General Query
    messages sent out on startup, separated by the startup query
    interval.";
            reference
              "RFC 3376 Section 8.7";
    
          }
    
          leaf immediate-leave {
            type enumeration {
              enum "enabled" {
                value 0;
                description "Enabled.";
              }
              enum "disabled" {
                value 1;
                description "Disabled.";
              }
            }
            default "disabled";
            description
              "Immediate leave controls the function by which an interface
    that receives a leave for a certain group might immediately
    delete the corresponding group record.
    
    Configuring immediate leave reduces the amount of time it
    takes for the switch to stop sending multicast traffic to an
    interface when the last host on that interface leaves the
    group.
    
    When immediate leave is disabled, the switch no longer tracks
    hosts. Instead, whenever it receives a leave from a host on
    an interface, it sends out a MGMD Group-Specific Query
    message to all hosts on that interface. If it does not
    receive any MGMD Membership Report message on the interface
    in response to the MGMD Group-Specific Query message within a
    set interval, it stops forwarding multicast traffic to the
    interface.";
            reference
              "ITU-T G.988 Clause 9.3.27 - Immediate Leave";
    
          }
    
          leaf robustness {
            type uint32 {
              range "1..255";
            }
            default "2";
            description
              "The robustness variable allows tuning for the expected packet
    loss on a subnet. If a subnet is expected to be lossy, the
    robustness variable may be increased. IGMP and MLD are robust
    to (robustness variable - 1) packet losses.";
            reference
              "RFC 3376 Section 8.1;
               RFC 5519 Section 5 - mgmdRouterInterfaceRobustness";
    
          }
        }  // grouping interface-to-host
    
        grouping interface-to-router {
          description
            "Data nodes used for configuring the Internet Group Management
    Protocol (IGMP) and the Multicast Listener Discovery (MLD)
    protocol on interfaces that connect multicast routers.";
          leaf unsolicited-report-interval {
            type uint32 {
              range "1..255";
            }
            units "0.1 seconds";
            default "10";
            description
              "The interval between repetitions of a host's initial report
    of interest in a multicast address.";
            reference
              "RFC 3376 Section 8.11;
               RFC 3810 Section 9.11";
    
          }
    
          leaf robustness {
            type uint32 {
              range "1..255";
            }
            default "2";
            description
              "The robustness variable allows tuning for the expected packet
    loss on a subnet. If a subnet is expected to be lossy, the
    robustness variable may be increased. IGMP and MLD are robust
    to (robustness variable - 1) packet losses.";
            reference
              "RFC 3376 Section 8.1;
               RFC 5519 Section 5 - mgmdHostInterfaceVersion3Robustness";
    
          }
        }  // grouping interface-to-router
    
        grouping multicast-snoop {
          description
            "Data nodes used for configuring the Internet Group Management
    Protocol (IGMP) and the Multicast Listener Discovery (MLD)
    protocol on a layer 2 system that connects multicast hosts
    and multicast routers and for which the system acts as a
    MGMD snooper.";
          leaf immediate-leave {
            type enumeration {
              enum "enabled" {
                value 0;
                description
                  "Immediate leave enabled means the system performs host
    tracking. Then the reception of a leave results in
    immediately removing this host from the subscription
    list.";
              }
              enum "disabled" {
                value 1;
                description
                  "Immediate leave disabled means the system sends MGMD
    Group-Specific Query messages on the interface to find
    out if other hosts connected to the same interface would
    still be interested in receiving the multicast channel.";
              }
            }
            default "disabled";
            description
              "Immediate leave controls the function by which an interface
    that receives a leave for a certain group might immediately
    delete the corresponding group record.
    
    Configuring immediate leave reduces the amount of time it
    takes for the switch to stop sending multicast traffic to an
    interface when the last host on that interface leaves the
    group.
    
    When immediate leave is disabled, the switch no longer tracks
    hosts. Instead, whenever it receives a leave from a host on
    an interface, it waits for a period as specified by the group
    membership interval. If it does not receive any MGMD
    Membership Report on the interface in that time interval, it
    stops forwarding multicast traffic to the interface.";
            reference
              "ITU-T G.988 Clause 9.3.27 - Immediate Leave;
               RFC 3810 Section A.2";
    
          }
    
          leaf group-membership-interval {
            type uint32 {
              range "1..31744";
            }
            units "seconds";
            default "260";
            description
              "The group membership interval is the amount of time that has
    to pass before a multicast router decides there are no more
    members of a group or a particular source on an interface.
    
    This leaf, as a parameter of a snooper, has to be consistent
    with the parameters configured in the multicast router that
    is connected to the snooper. It has to be equal to or larger
    than ((the Robustness Variable) times (the Query Interval))
    plus (one Query Response Interval) as calculated from
    parameters configured in the multicast router.";
            reference
              "RFC 4541 Section 2.1.1 - Item 6;
               RFC 3376 Section 8.4";
    
          }
    
          leaf last-member-query-interval {
            type uint32 {
              range "2..31744";
            }
            units "0.1 seconds";
            default "10";
            description
              "The last member query interval is the maximum response time
    inserted into MGMD Group-Specific Query messages sent in
    response to leaves, and is also the amount of time between
    MGMD Group-Specific Query messages.
    
    This feature is optional for a snooper and can be used in a
    slow network. When this feature is enabled, it permits a
    snooper to send a MGMD Group-Specific Query message after the
    group membership has timed out to verify that clients have
    stopped watching a channel. If no response is received to the
    MGMD Group-Specific Query message, it removes the group state
    and discontinuous multicast transmission for that channel.";
            reference
              "RFC 3376 Section 8.8;
               RFC 5519 Section 5
              - mgmdRouterInterfaceLastMemberQueryInterval";
    
          }
    
          leaf last-member-query-count {
            type uint32 {
              range "1..255";
            }
            default "2";
            description
              "The number of unanswered MGMD Group-Specific Query messages
    sent out before it is assumed that there are no local members
    interested in the IP multicast stream.
    
    This feature is optional for a snooper and can be used in a
    slow network. When this feature is enabled, it permits a
    snooper to send a MGMD Group-Specific Query message after the
    group membership has timed out to verify that clients have
    stopped watching a channel. If no response is received to the
    MGMD Group-Specific Query message, it removes the group state
    and discontinuous multicast transmission for that channel.";
            reference
              "RFC 3376 Section 8.9";
    
          }
        }  // grouping multicast-snoop
    
        grouping mgmd-interface-to-hosts-receive-state {
          description
            "Data nodes used for monitoring the Internet Group Management
    Protocol (IGMP) and the Multicast Listener Discovery (MLD)
    protocol on interfaces that connect a system to a multicast
    host.";
          leaf in-successful-join-requests {
            type yang:counter32;
            units "messages";
            description
              "Counts the total number of successful join requests received
    from hosts connected to the interface. This includes new
    joins (which make a new connection) and re-joins (which
    already have a connection).
    
    For MGMD version 2 it counts the number of Membership Report
    messages that resulted in a successful join.
    
    MGMD version 3 defines a Membership Report message to contain
    multiple group records. Within a group record there is a
    parameter 'multicast address' and a list of 'source
    addresses'. A tree is managed per (multicast address, source
    address) pair. Hence a join is a request that requests
    associating the interface to a tree. In case one Membership
    Report message results in requests for associating the
    interface to N trees, then this corresponds to N joins. For
    MGMD version 3 the counter result in-successful-join-requests
    counts the number of joins that in successfully associating
    the interface to a tree.";
            reference
              "TR-101i2 R-251 - 'Per port, per multicast VLAN counters',
              Item 1";
    
          }
    
          leaf in-unsuccessful-join-requests {
            type yang:counter32;
            units "messages";
            description
              "Counts the total number of unsuccessful new join requests
    from hosts connected to the interface. The failures could be
    due to the following reasons: permission failure, bitrate
    failure, lack of resource or invalid group address.
    
    For MGMD version 2 it counts the number of Membership Report
    messages that failed to result in a successful join.
    
    MGMD version 3 defines a Membership Report message to contain
    multiple group records. Within a group record there is a
    parameter 'multicast address' and a list of 'source
    addresses'. A tree is managed per (multicast address, source
    address) pair. Hence a join is a request that requests
    associating the interface to a tree. In case one Membership
    Report message results in requests for associating the
    interface to N trees, then this corresponds to N joins. For
    MGMD version 3 the counter in-unsuccessful-join-requests
    counts the number of joins that did not result in
    successfully associating the interface to a tree.";
          }
    
          leaf in-leaves {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of Leave Group
    messages received on this interface, i.e., messages that are
    requesting to leave a multicast group address.
    
    MGMD version 3 defines a Membership Report message to contain
    multiple group records. Within a group record there is a
    parameter 'multicast address' and a list of 'source
    addresses'. A tree is managed per (multicast address, source
    address) pair. Hence a leave is a request that requests to
    remove the association from an interface to a tree. In case
    one Membership Report message results in requests for
    removing N associations from the interface from trees, then
    this corresponds to N leaves.";
            reference
              "TR-101i2 R-251 - 'Per port, per multicast VLAN counters',
              Item 2";
    
          }
    
          leaf in-valid-messages {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of Membership Report
    messages plus the number of MGMD Leave Group messages
    received on this interface and that had valid formatting.
    
    For MGMD version 3 it also counts the number of Membership
    Report messages received on this interface and that had valid
    formatting.";
          }
    
          leaf in-invalid-messages {
            type yang:counter32;
            units "messages";
            description
              "Counts the number of invalid MGMD messages received on this
    interface.";
            reference
              "TR-101i2 R-251 - 'Per port, per multicast VLAN counters',
              Item 5";
    
          }
        }  // grouping mgmd-interface-to-hosts-receive-state
    
        grouping mgmd-interface-to-hosts-transmit-state {
          description
            "Data nodes used for monitoring the Internet Group Management
    Protocol (IGMP) and the Multicast Listener Discovery (MLD)
    protocol on interfaces that connect a system to multicast
    hosts.";
          leaf out-specific-queries {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of sent MGMD
    Group-Specific Query messages.
    
    MGMD version 3 defines a Query message to contain a single
    group address' and a list of 'source addresses'. A tree is
    managed per group address, source address) pair. For MGMD
    version 3 a MGMD Group-Specific Query message is a Query
    message for which the group address is not the zero address.
    The counter out-specific-queries is incremented once for a
    sent ASM Group-Specific Query message (i.e., no source
    address), and is incremented with N for SSM Group-Specific
    Query messages that are sent to the router, where N is the
    number of source addresses in the Query message.";
            reference
              "TR-101i2 R-251 - 'Per port, per multicast VLAN counters',
              Item 4";
    
          }
    
          leaf out-general-queries {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of sent MGMD General
    Query messages.
    
    MGMD version 3 defines a Query message to contain a single
    group address' and a list of 'source addresses'. For MGMD
    version 3 a MGMD General Query message is a Query message for
    which the group address is the zero address and there are no
    sources addresses. The counter out-generic-queries is
    incremented once per sent MGMD General Query message.";
            reference
              "TR-101i2 R-251 - 'Per port, per multicast VLAN counters',
              Item 3";
    
          }
        }  // grouping mgmd-interface-to-hosts-transmit-state
    
        grouping mgmd-host-interface-state {
          description
            "Data nodes used for monitoring the Internet Group Management
    Protocol (IGMP) and the Multicast Listener Discovery (MLD)
    protocol on interfaces that connect a system to multicast
    routers.";
          leaf out-joins {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of Membership Report
    messages sent on this interface, i.e., messages that are
    requesting to join a multicast group address.
    
    MGMD version 3 defines a Membership Report message to contain
    multiple group records. Within a group record there is a
    parameter 'multicast address' and a list of 'source
    addresses'. A tree is managed per (multicast address, source
    address) pair. Hence a join is a request that requests
    associating the interface to a tree. In case one Membership
    Report message results in requests for associating the
    interface to N trees, then this corresponds to N joins. For
    MGMD version 3 the counter counts the number of joins that
    are sent to the router.";
            reference
              "TR-101i2 R-251 - 'Per multicast VLAN counters', Item 2";
    
          }
    
          leaf out-leaves {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of Leave Group
    messages sent on this interface, i.e., messages that are
    requesting to leave a multicast group address.
    
    MGMD version 3 defines a Membership Report message to contain
    multiple group records. Within a group record there is a
    parameter 'multicast address' and a list of 'source
    addresses'. A tree is managed per (multicast address, source
    address) pair. Hence a leave is a request that requests to
    remove the association from an interface to a tree. In case
    one Membership Report message results in requests for
    removing N associations from trees for the interface, then
    this corresponds to N leaves.";
            reference
              "TR-101i2 R-251 - 'Per multicast VLAN counters', Item 4";
    
          }
    
          leaf in-general-queries {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of received General
    Query messages.
    
    MGMD version 3 defines a Query message to contain a single
    'group address' and a list of 'source addresses'. For MGMD
    version 3 a General Query message is a Query message for
    which the group address is  the zero address and there are no
    sources addresses. The counter in-general-queries is
    incremented once per received General Query message.";
            reference
              "TR-101i2 R-251 - 'Per multicast VLAN counters', Item 7";
    
          }
    
          leaf in-specific-queries {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of received
    Group-Specific Query messages.
    
    MGMD version 3 defines a Query message to contain a single
    'group address' and a list of 'source addresses'. A tree is
    managed per group address, source address) pair. For MGMD
    version 3 a Group-Specific Query message is a Query message
    for which the group address is not the zero address.  The
    counter in-specific-queries is incremented once for a
    received ASM Group-Specific Query message (i.e., no source
    address), and is incremented with N for SSM Group-Specific
    Query messages received to the router, where N is the number
    of source addresses in the Query message.";
            reference
              "TR-101i2 R-251 - 'Per multicast VLAN counters', Item 9";
    
          }
    
          leaf in-valid-messages {
            type yang:counter32;
            units "messages";
            description
              "For MGMD version 2 it counts the number of Query messages
    received on this interface and that had valid formatting.
    
    For MGMD version 3 it also counts the number of Query
    messages received on this interface and that had valid
    formatting.";
          }
    
          leaf in-invalid-message {
            type yang:counter32;
            units "messages";
            description
              "Counts the number of invalid messages received on the
    interface.";
            reference
              "TR-101i2 R-251 - 'Per multicast VLAN counters', Item 10";
    
          }
    
          leaf in-interface-wrong-version-queries {
            type yang:counter32;
            units "messages";
            description
              "The number of MGMD General Query messages received whose IGMP
    or MLD version does not match the version configured in the
    VPN its protocol version.
    
    Both IGMP and MLD require that all routers on a LAN be
    configured to run the same version.  Thus, if any MGMD
    General Query messages are received with the wrong version,
    this indicates a configuration error.";
            reference
              "RFC 5519 Section 5 - mgmdRouterInterfaceWrongVersionQueries";
    
          }
    
          leaf host-interface-version2-querier-time {
            type yang:timeticks;
            units "0.01 seconds";
            description
              "The time remaining until the host assumes that there are no
    MGMDv2 routers present on the interface. While this is
    non-zero, the host will reply to all MGMD Membership Query
    messages with version 2 Membership Reports. This variable
    applies to MGMDv3 hosts that are forced to run in v2 for
    compatibility with v2 hosts or routers present on the
    interface.";
            reference
              "RFC 3376 Section 7.2.1;
               RFC 5519 Section 5 - mgmdHostInterfaceVersion2QuerierTimer";
    
          }
        }  // grouping mgmd-host-interface-state
      }  // module bbf-mgmd-common
    

© 2023 YumaWorks, Inc. All rights reserved.