Internet DRAFT - draft-liu-pim-igmp-mld-yang
draft-liu-pim-igmp-mld-yang
Network Working Group Y. Liu
Internet-Draft F. Guo
Intended status: Standards Track Huawei
Expires: September 23, 2015 March 22, 2015
Yang Model for Internet Group Management Protocol (IGMP) and Multicast
Listener Discovery (MLD)
draft-liu-pim-igmp-mld-yang-01
Abstract
This document defines a YANG data model that can be used to configure
and manage IGMP and MLD.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 23, 2015.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
Liu & Guo Expires September 23, 2015 [Page 1]
Internet-Draft GMP YANG model March 2015
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. GMP Per-instance Configuration . . . . . . . . . . . . . 4
3.2.1. Per-instance Parameters . . . . . . . . . . . . . . . 4
3.2.2. Per-SSM-Mapping Configuration of GMP Instance . . . . 5
3.2.3. Per-interface Configuration of GMP Instance . . . . . 5
3.3. Operational State . . . . . . . . . . . . . . . . . . . . 7
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 10
5. GMP Yang Module . . . . . . . . . . . . . . . . . . . . . . . 11
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 53
7. Security Considerations . . . . . . . . . . . . . . . . . . . 53
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.1. Normative References . . . . . . . . . . . . . . . . . . 53
9.2. Informative References . . . . . . . . . . . . . . . . . 54
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54
1. Introduction
YANG[RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF[RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other
interfaces(e.g. REST) and encoding other than XML (e.g. JSON) are
being defined. Furthermore, YANG data models can be used as the
basis of implementation for other interface, such as CLI and
Programmatic APIs.
This document defines a YANG data model that can be used to configure
and manage IGMP and MLD. It includes IGMPv1[RFC1112],
IGMPv2[RFC2236], IGMPv3[RFC3376] and MLDv1[RFC2710], MLDv2[RFC3810].
In addition, features described in IGMP and MLD standards other than
mentioned above RFC are also supported. For convenience, IGMP and
MLD are wholly called GMP below.
Liu & Guo Expires September 23, 2015 [Page 2]
Internet-Draft GMP YANG model March 2015
2. Terminology
o IGMP: Internet Group Management Protocol
o MLD: Multicast Listener Discovery
o GMP: Group Management Protocol
o SSM: Source-Specific Multicast
3. Design of Data Model
3.1. Overview
The GMP Yang module has only one main container ::
o gmp-instances : that contains per-instance writable configuration
objects.
o gmp-group-infos : provide IGMP or MLD group state for all of the
dynamic group members.
o gmp-static-group-infos : provide IGMP or MLD static group state
for all of the static group members.
o gmp-if-infos : provide IGMP or MLD interface state and running
parameters for all of the IGMP or MLD interfaces.
o gmp-packet-statistics : provide IGMP or MLD packet statistical
information for all of the IGMP or MLD protocol packets.
The figure below describes the overall structure of the GMP Yang
module :
Liu & Guo Expires September 23, 2015 [Page 3]
Internet-Draft GMP YANG model March 2015
module: gmp
+--rw gmp
+--rw gmp-instances
| +--rw gmp-instance* [vrf-name addr-family]
| +--...
| +--rw gmp-ssm-mappings
| | +--rw gmp-ssm-mapping
| | +--...
| +--rw gmp-interfaces
| +--rw gmp-interface* [vrf-name if-name addr-family]
| +--...
| +--rw gmp-static-groups
| +--rw gmp-static-group
| +--...
+--rw gmp-group-infos
| +--ro gmp-group-info* [vrf-name addr-family if-name]
| +--...
| +--ro gmp-source-infos
| +--ro gmp-source-info* [ipv4-source-addr ipv6-source-addr]
| +--...
+--rw gmp-static-group-infos
| +--ro gmp-static-group-info* [vrf-name addr-family if-name]
| +--...
+--rw gmp-if-infos
| +--ro gmp-if-info* [vrf-name if-name addr-family]
| +--...
+--rw gmp-packet-statistics
+--ro gmp-packet-statistic* [vrf-name addr-family if-name]
+--...
Figure 1 The overview of GMP YANG data model
3.2. GMP Per-instance Configuration
GMP per-instance configuration container includes parameters of the
public GMP instance or the GMP instance binding a specific VRF. GMP
per-instance configuration container is divided into:
o Per-instance parameters
o Per-SSM-Mapping configuration of the GMP instance
o Per-interface configuration of the GMP instance
3.2.1. Per-instance Parameters
The per-instance parameter includes the name of the VRF bound by the
GMP instance, and timer parameters such as query interval etc.
Liu & Guo Expires September 23, 2015 [Page 4]
Internet-Draft GMP YANG model March 2015
+--rw gmp-instances
| +--rw gmp-instance* [vrf-name addr-family]
| +--rw vrf-name string
| +--rw addr-family enumeration
| +--rw query-interval? uint16
| +--rw query-rsp-interval? uint8
| +--rw robustness? uint8
| +--rw last-member-query-interval? uint8
| +--rw require-router-alert? boolean
| +--rw send-router-alert? boolean
| +--rw other-querier-present-time? uint16
| +--ro gmp-entry-limit? uint32
| +--rw ipsec-name? string
| +--rw ipsec-type? enumeration
Figure 2 The YANG data model of GMP instance configuration
3.2.2. Per-SSM-Mapping Configuration of GMP Instance
Per-SSM-Mapping configuration of the GMP instance includes the SSM
Mapping rules.IGMPv1/v2 and MLDv1 reports can use these rules to map
SG state for PIM SSM[RFC4607].IGMPv3 and MLDv2 can default use PIM
SSM , which is described in [RFC4604].
| +--rw gmp-ssm-mappings
| | +--rw gmp-ssm-mapping
| | +--rw ipv4-ssm-maping-group inet:ipv4-address
| | +--rw ipv6-ssm-maping-group inet:ipv6-address
| | +--rw is-ssmap-mask boolean
| | +--rw ipv4-ssm-maping-mask? inet:ipv4-address
| | +--rw ipv6-ssm-maping-mask? uint8
| | +--rw is-masklen boolean
| | +--rw masklen? uint8
| | +--rw ipv4-source-addr inet:ipv4-address
| | +--rw ipv6-source-addr inet:ipv6-address
Figure 3 The YANG data model of GMP SSM-Mapping configuration
3.2.3. Per-interface Configuration of GMP Instance
Per-interface configuration of the GMP instance includes the
interface name, timer parameters, policies, static groups etc.GMP
per-instance configuration container is divided into two containers:
o Per-interface parameters
o Per-static-group configuration of the GMP interface
Liu & Guo Expires September 23, 2015 [Page 5]
Internet-Draft GMP YANG model March 2015
3.2.3.1. Per-interface Parameters
The per-interface parameter includes the name of the interface, and
the VRF name bound by the interface, and time parameters, policies
etc.
| +--rw gmp-interfaces
| +--rw gmp-interface* [vrf-name if-name addr-family]
| +--rw vrf-name string
| +--rw if-name if-name
| +--rw addr-family enumeration
| +--rw gmp-enable boolean
| +--rw ip-source-ply? boolean
| +--rw ip-source-acl-name? string
| +--rw ip-source-acl-name-ipv6? string
| +--rw query-interval? uint16
| +--rw query-rsp-interval? uint8
| +--rw robustness? uint8
| +--rw version? uint8
| +--rw last-member-query-interval? uint8
| +--rw require-router-alert? boolean
| +--rw send-router-alert? boolean
| +--rw other-querier-present-time? uint16
| +--rw immediate-leave? boolean
| +--rw immediate-leave-acl-name? string
| +--rw immediate-leave-acl-name-ipv6? string
| +--rw gmp-entry-limit? uint16
| +--rw except-acl-name? string
| +--rw except-acl-name-ipv6? string
| +--rw ssmap-enable? boolean
| +--rw group-acl-name? string
| +--rw group-acl-name-ipv6? string
| +--rw group-acl-gmp-ver? uint8
| +--rw query-acl-name? string
| +--rw queryaclnameipv6? string
| +--rw ipsec-name? string
| +--rw ipsec-type? enumeration
Figure 4 The YANG data model of GMP interface configuration
3.2.3.2. Per-static-group Configuration of GMP interface
Per-static-group configuration of the GMP interface includes the
static group address, and as a option also includes source address,
every static group step, and group numbers on the interface.
Liu & Guo Expires September 23, 2015 [Page 6]
Internet-Draft GMP YANG model March 2015
| +--rw gmp-static-groups
| +--rw gmp-static-group
| +--rw vrf-name string
| +--rw addr-family enumeration
| +--rw if-name if-name
| +--rw ipv4-static-group inet:ipv4-address
| +--rw ipv6-static-group inet:ipv6-address
| +--rw is-source-addr boolean
| +--rw ipv4-source-addr? inet:ipv4-address
| +--rw ipv6-source-addr? inet:ipv6-address
| +--rw is-step-grp-mask boolean
| +--rw ipv4-inc-step-group-mask? inet:ipv4-address
| +--rw ipv6-inc-step-group-mask? inet:ipv6-address
| +--rw is-masklen boolean
| +--rw masklen? uint8
| +--rw total-number? uint16
Figure 5 The YANG data model of GMP static group configuration
3.3. Operational State
"gmp" container provides operational states for IGMP or MLD. This
container is divided in four components:
o gmp-group-infos : provide IGMP or MLD group state for all of the
dynamic group members.
o gmp-static-group-infos : provide IGMP or MLD static group state
for all of the static group members.
o gmp-if-infos : provide IGMP or MLD interface state and running
parameters for all of the IGMP or MLD interfaces.
o gmp-packet-statistics : provide IGMP or MLD packet statistical
information for all of the IGMP or MLD protocol packets.
Liu & Guo Expires September 23, 2015 [Page 7]
Internet-Draft GMP YANG model March 2015
+--rw gmp-group-infos
| +--ro gmp-group-info* [vrf-name addr-family if-name]
| +--ro vrf-name string
| +--ro addr-family enumeration
| +--ro if-name if-name
| +--ro ipv4-group-addr? inet:ipv4-address
| +--ro ipv6-group-addr? inet:ipv6-address
| +--ro ipv4-last-report-addr? inet:ipv4-address
| +--ro ipv6-last-report-addr? inet:ipv6-address
| +--ro up-time? uint32
| +--ro expire-time? uint32
| +--ro last-member-query-count? uint8
| +--ro last-member-query-time? uint8
| +--ro source-filter-mode? enumeration
| +--ro v1-host-timer? uint32
| +--ro v2-host-timer? uint32
| +--ro is-ssm-mapping? boolean
| +--ro gmp-source-infos
| +--ro gmp-source-info* [ipv4-source-addr ipv6-source-addr]
| +--ro ipv4-source-addr inet:ipv4-address
| +--ro ipv6-source-addr inet:ipv6-address
| +--ro source-up-time? uint32
| +--ro source-expire-time? uint32
| +--ro source-last-member-query-count? uint8
| +--ro source-last-member-query-time? uint8
The Figure 6 The YANG data model of GMP dynamic group and source information
+--rw gmp-static-group-infos
| +--ro gmp-static-group-info* [vrf-name addr-family if-name]
| +--ro vrf-name string
| +--ro addr-family enumeration
| +--ro if-name if-name
| +--ro ipv4-group-addr? inet:ipv4-address
| +--ro ipv6-group-addr? inet:ipv6-address
| +--ro ipv4-source-addr? inet:ipv4-address
| +--ro ipv6-source-addr? inet:ipv6-address
| +--ro multicast-boundary? boolean
The Figure 7 The YANG data model of GMP static group and source information
Liu & Guo Expires September 23, 2015 [Page 8]
Internet-Draft GMP YANG model March 2015
+--rw gmp-if-infos
| +--ro gmp-if-info* [vrf-name if-name addr-family]
| +--ro vrf-name string
| +--ro if-name if-name
| +--ro addr-family enumeration
| +--ro ipv4-if-addr? inet:ipv4-address
| +--ro ipv6-if-addr? inet:ipv6-address
| +--ro gmp-if-state? enumeration
| +--ro negotiate-query-time? uint16
| +--ro configure-query-time? uint16
| +--ro other-querier-timeout? uint16
| +--ro max-query-response-time? uint8
| +--ro last-member-query-time? uint8
| +--ro startup-query-interval? uint16
| +--ro startup-query-count? uint8
| +--ro general-query-time? uint16
| +--ro ipv4-querier-addr? inet:ipv4-address
| +--ro ipv6-querier-addr? inet:ipv6-address
| +--ro querier-local? enumeration
| +--ro gmp-joins? uint32
| +--ro gmp-leaves? uint32
| +--ro negotiate-robust? uint8
| +--ro configure-robust? uint8
| +--ro startup-query-timer-state? enumeration
| +--ro other-querier-timer-state? enumeration
| +--ro ipsec-name? string
| +--ro ipsec-type? enumeration
The Figure 8 The YANG data model of GMP interface information
+--rw gmp-packet-statistics
+--ro gmp-packet-statistic* [vrf-name addr-family if-name]
+--ro vrf-name string
+--ro if-name if-name
+--ro addr-family enumeration
+--ro ipv4-if-addr? inet:ipv4-address
+--ro ipv6-if-addr? inet:ipv6-address
+--ro query-recv-valid-num? uint32
+--ro query-recv-invalid-num? uint32
+--ro query-recv-ignore-num? uint32
+--ro report-v1v2-asm-recv-valid-num? uint32
+--ro report-v1v2-asm-recv-invalid-num? uint32
+--ro report-v1v2-asm-recv-ignore-num? uint32
+--ro report-v1v2-ssm-recv-valid-num? uint32
+--ro report-v1v2-ssm-recv-invalid-num? uint32
+--ro report-v1v2-ssm-recv-ignore-num? uint32
+--ro leave-asm-recv-valid-num? uint32
+--ro leave-asm-recv-invalid-num? uint32
Liu & Guo Expires September 23, 2015 [Page 9]
Internet-Draft GMP YANG model March 2015
+--ro leave-asm-recv-ignore-num? uint32
+--ro leave-ssm-recv-valid-num? uint32
+--ro leave-ssm-recv-invalid-num? uint32
+--ro leave-ssm-recv-ignore-num? uint32
+--ro report-v3-isin-recv-valid-num? uint32
+--ro report-v3-isin-recv-invalid-num? uint32
+--ro report-v3-isin-recv-ignore-num? uint32
+--ro report-v3-isex-recv-valid-num? uint32
+--ro report-v3-isex-recv-invalid-num? uint32
+--ro report-v3-isex-recv-ignore-num? uint32
+--ro report-v3-toin-recv-valid-num? uint32
+--ro report-v3-toin-recv-invalid-num? uint32
+--ro report-v3-toin-recv-ignore-num? uint32
+--ro report-v3-toex-recv-valid-num? uint32
+--ro report-v3-toex-recv-invalid-num? uint32
+--ro report-v3-toex-recv-ignore-num? uint32
+--ro report-v3-allow-recv-valid-num? uint32
+--ro report-v3-allow-recv-invalid-num? uint32
+--ro report-v3-allow-recv-ignore-num? uint32
+--ro report-v3-block-recv-valid-num? uint32
+--ro report-v3-block-recv-invalid-num? uint32
+--ro report-v3-block-recv-ignore-num? uint32
+--ro source-recv-valid-num? uint32
+--ro source-recv-invalid-num? uint32
+--ro source-recv-ignore-num? uint32
+--ro query-send-num? uint32
+--ro report-v1v2-asm-send-num? uint32
+--ro report-v1v2-ssm-send-num? uint32
+--ro leave-asm-send-num? uint32
+--ro leave-ssm-send-num? uint32
+--ro query-g-send-num? uint32
+--ro query-sg-send-num? uint32
+--ro report-v3-isin-send-num? uint32
+--ro report-v3-isex-send-num? uint32
+--ro report-v3-toin-send-num? uint32
+--ro report-v3-toex-send-num? uint32
+--ro report-v3-allow-send-num? uint32
+--ro report-v3-block-send-num? uint32
+--ro source-send-num? uint32
The Figure 9 The YANG data model of GMP packet statistics
4. Notifications
The gmp yang data model introduces some notifications:
gmp-group-join : This notification is sent when the system receive a
IGMP or MLD group membership report.
Liu & Guo Expires September 23, 2015 [Page 10]
Internet-Draft GMP YANG model March 2015
gmp-group-leave : This notification is sent when the system receive a
IGMP or MLD group membership leave.
notifications:
+---n gmp-group-join
| +--ro vrf-name? string
| +--ro if-name? if-name
| +--ro addr-family? enumeration
| +--ro ipv4-group-addr? inet:ipv4-address
| +--ro ipv6-group-addr? inet:ipv6-address
| +--ro ipv4-source-addr? inet:ipv4-address
| +--ro ipv6-source-addr? inet:ipv6-address
| +--ro ipv4-sender-addr? inet:ipv4-address
| +--ro ipv6-sender-addr? inet:ipv6-address
+---n gmp-group-leave
+--ro vrf-name? string
+--ro if-name? if-name
+--ro addr-family? enumeration
+--ro ipv4-group-addr? inet:ipv4-address
+--ro ipv6-group-addr? inet:ipv6-address
+--ro ipv4-source-addr? inet:ipv4-address
+--ro ipv6-source-addr? inet:ipv6-address
+--ro ipv4-sender-addr? inet:ipv4-address
+--ro ipv6-sender-addr? inet:ipv6-address
The Figure 10 The YANG data model of GMP notifications
5. GMP Yang Module
module gmp {
namespace "urn:huawei:params:xml:ns:yang:gmp";
// replace with IANA namespace when assigned -
// urn:ietf:params:xml:ns:yang:1
prefix "gmp";
import ietf-inet-types {
prefix inet;
}
organization
"IETF PIM(Protocol Independent Multicast) Working Group";
contact
"liuyisong@huawei.com
guofeng@huawei.com ";
description
"This YANG module defines the generic configuration data for GMP,
i.e. IGMP and MLD, which is common across all of the vendor
implementations of the protocol. It is intended that the module
will be extended by vendors to define vendor-specific
GMP configuration parameters.";
Liu & Guo Expires September 23, 2015 [Page 11]
Internet-Draft GMP YANG model March 2015
revision 2015-03-09 {
description
"Add operation and notification contents.";
}
revision 2014-10-21 {
description
"Initial revision.";
}
typedef if-name {
description "if-name is like ethernet1/1/1/1";
type string {
length "1..63";
}
}
container gmp {
container gmp-instances {
list gmp-instance {
key "vrf-name addr-family";
max-elements "unbounded";
min-elements "0";
description "Specifies a list of gmp instances.";
leaf vrf-name {
description
"Name of an gmp instance.If the name string is
empty the instance means a public instance
whose name is _public_.";
config "true";
//default "_public_";
type string {
length "0..32";
}
}
leaf addr-family {
description
"Specify an address family, which determines
whether an address is an ipv4 or ipv6 address.";
config "true";
mandatory "true";
type enumeration {
enum ipv4unicast {
value "0";
Liu & Guo Expires September 23, 2015 [Page 12]
Internet-Draft GMP YANG model March 2015
description
"Specify an address family, which
determines whether an address is an
ipv4 or ipv6 address.";
}
enum ipv6unicast {
value "1";
description
"Specify an address family, which
determines whether an address is an
ipv4 or ipv6 address.";
}
}
}
leaf query-interval {
description
"Specify the interval at which the router sends
general query messages. The value is an integer
ranging from 1 to 18000, in seconds. The default
value for ipv4 is 60, and 125 for ipv6.";
config "true";
default "60";
type uint16 {
range "1..18000";
}
}
leaf query-rsp-interval {
description
"Specify the maximum response time for a query
message. The value is an integer ranging from
1 to 25, in seconds. The default value is 10.";
config "true";
default "10";
type uint8 {
range "1..25";
}
}
leaf robustness {
description
"Specify the number of times for retransmitting
a message to avoid the packet loss. The value is
an integer ranging from 2 to 5. The default
value is 2.";
config "true";
default "2";
type uint8 {
range "2..5";
}
Liu & Guo Expires September 23, 2015 [Page 13]
Internet-Draft GMP YANG model March 2015
}
leaf last-member-query-interval {
description
"Specify the interval at which the querier sends
last-member query messages. The value is an
integer ranging from 1 to 5, in seconds. The
default value is 1. This parameter makes sense
only when the current querier runs igmpv2,
igmpv3 or mld.";
config "true";
default "1";
type uint8 {
range "1..5";
}
}
leaf require-router-alert {
description
"Configure the router to process only the
messages whose ip headers contain router-alert
options globally. By default, the router does
not check whether the received igmp messages
contain router-alert options.";
config "true";
type boolean;
}
leaf send-router-alert {
description
"Configure the router to send the messages with
router-alert options in the ip headers globally.
By default, the ip headers contain router-alert
options. ";
config "true";
type boolean;
}
leaf other-querier-present-time {
description
"Set the global keepalive period for other
queriers. ";
config "true";
type uint16 {
range "60..300";
}
}
leaf gmp-entry-limit {
description
"Set the maximum number of entries that can be
created for the current instance. The value is
an integer ranging from 1 to 65536. The default
Liu & Guo Expires September 23, 2015 [Page 14]
Internet-Draft GMP YANG model March 2015
value is 49152.";
config "false";
type uint32 {
range "1..65536";
}
}
leaf ipsec-name {
description
"Sa name. The value is a string of 1 to 15
characters.";
config "true";
type string {
length "1..15";
pattern "^[^ ]+$";
}
}
leaf ipsec-type {
description
"Ipsec type used as a query option.";
config "true";
type enumeration {
enum forall {
value "0";
description
"Ipsec type used as a query option.";
}
enum forquery {
value "1";
description
"Ipsec type used as a query option.";
}
}
}
container gmp-ssm-mappings {
container gmp-ssm-mapping {
leaf ipv4-ssm-maping-group {
description
"Specify the address of a multicast
group.";
config "true";
mandatory "true";
type inet:ipv4-address;
}
leaf ipv6-ssm-maping-group {
description
Liu & Guo Expires September 23, 2015 [Page 15]
Internet-Draft GMP YANG model March 2015
"Specify the address of a multicast
group.";
config "true";
mandatory "true";
type inet:ipv6-address;
}
leaf is-ssmap-mask {
description
"Whether a mask is configured for a
multicast group address.";
config "true";
mandatory "true";
type boolean;
}
leaf ipv4-ssm-maping-mask {
description
"Specify the mask of a multicast group
address.";
config "true";
type inet:ipv4-address;
}
leaf ipv6-ssm-maping-mask {
description
"Specify the mask of a multicast group
address.";
config "true";
type uint8 {
range "0..128";
}
}
leaf is-masklen {
description
"Whether the length is set for the mask
of a multicast group address.";
config "true";
mandatory "true";
type boolean;
}
leaf masklen {
description
"Specify the mask length of a multicast
group address. In the case of an ipv4
address, the mask length ranges from 4
to 32. In the case of an ipv6 address,
the mask length is 16/32/64/128.";
config "true";
type uint8 {
range "4..128";
Liu & Guo Expires September 23, 2015 [Page 16]
Internet-Draft GMP YANG model March 2015
}
}
leaf ipv4-source-addr {
description
"Specify the address of a multicast
source.";
config "true";
mandatory "true";
type inet:ipv4-address;
}
leaf ipv6-source-addr {
description
"Specify the address of a multicast
source.";
config "true";
mandatory "true";
type inet:ipv6-address;
}
}
}
container gmp-interfaces {
list gmp-interface {
key "vrf-name if-name addr-family";
max-elements "unbounded";
min-elements "0";
description "Specifies an gmp interface.";
leaf vrf-name {
description
"Name of an gmp instance. If the name
string is empty the instance means a
public instance whose name is _public_.";
config "true";
mandatory "true";
//default "_public_";
type string {
length "0..32";
}
}
leaf if-name {
description "Interface name.";
config "true";
type if-name;
}
leaf addr-family {
Liu & Guo Expires September 23, 2015 [Page 17]
Internet-Draft GMP YANG model March 2015
description
"Specify an address family, which
determines whether an address is an
ipv4 or ipv6 address.";
config "true";
mandatory "true";
type enumeration {
enum ipv4unicast {
value "0";
description
"Specify an address family, which
determines whether an address is
an ipv4 or ipv6 address.";
}
enum ipv6unicast {
value "1";
description
"Specify an address family, which
determines whether an address is
an ipv4 or ipv6 address.";
}
}
}
leaf gmp-enable {
description
"Enable protocols on an interface.";
config "true";
mandatory "true";
type boolean;
}
leaf ip-source-ply {
description
"Configure a policy for filtering igmp
report messages based on host addresses.
By default, no policy is configured for
filtering igmp report messages based on
host addresses.";
config "true";
type boolean;
}
leaf ip-source-acl-name {
description
"Configure an acl that defines a host
addresses range. The value is an integer
ranging from 2000 to 2999, or a
case-sensitive string with a maximum of
32 characters. By default, the acl is
not configured.";
Liu & Guo Expires September 23, 2015 [Page 18]
Internet-Draft GMP YANG model March 2015
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf ip-source-acl-name-ipv6 {
description
"Configure an acl that defines a host
addresses range. The value is an integer
ranging from 2000 to 2999, or a
case-sensitive string with a maximum of
32 characters. By default, the acl is
not configured.";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf query-interval {
description
"Specify the interval at which the router
sends general query messages. The value
is an integer ranging from 1 to 18000,
in seconds. The default value for ipv4
is 60, and 125 for ipv6.";
config "true";
default "60";
type uint16 {
range "1..18000";
}
}
leaf query-rsp-interval {
description
"Specify the maximum response time for a
query message. The value is an integer
ranging from 1 to 25, in seconds. The
default value is 10. This time is used
to control the deadline of mainframe
feed back the relation-ship of group
members.";
config "true";
default "10";
type uint8 {
range "1..25";
}
}
Liu & Guo Expires September 23, 2015 [Page 19]
Internet-Draft GMP YANG model March 2015
leaf robustness {
description
"Specify the number of times for
retransmitting messages to avoid packet
loss. The value is an integer ranging
from 2 to 5. The default value is 2.";
config "true";
default "2";
type uint8 {
range "2..5";
}
}
leaf version {
description
"Specify the version of igmp or mld
running on an interface. By default,
igmpv2 or mldv2 is used.";
config "true";
default "2";
type uint8 {
range "1..3";
}
}
leaf last-member-query-interval {
description
"Specify the interval at which the
querier sends last-member query messages.
The value is an integer ranging from 1
to 5, in seconds. The default value is 1.
This parameter makes sense only when the
current querier runs igmpv2, igmpv3 or
mld.";
config "true";
default "1";
type uint8 {
range "1..5";
}
}
leaf require-router-alert {
description
"Configure an interface to process only
messages whose ip headers contain
router-alert options. By default, the
interface does not check whether the
received messages contain router-alert
options.";
config "true";
type boolean;
Liu & Guo Expires September 23, 2015 [Page 20]
Internet-Draft GMP YANG model March 2015
}
leaf send-router-alert {
description
"Configure an interface to send the
messages with router-alert options in
the ip headers. By default, the ip
header contain router-alert options.";
config "true";
default "true";
type boolean;
}
leaf other-querier-present-time {
description
"Set the keepalive period for other
queriers on an interface. The value
ranges from 60 to 300, in second.
By default, no keepalive period is set
for other queriers.";
config "true";
type uint16 {
range "60..300";
}
}
leaf immediate-leave {
description
"Configure an interface that receives a
leave message of a certain group to
immediately delete the corresponding
group records, without sending a
last-member query message.";
config "true";
type boolean;
}
leaf immediate-leave-acl-name {
description
"Configure an acl that defines a
multicast group range. the basic acl
number ranges from 2000 to 2999, and
the advanced acl number ranges from 3000
to 3999. The name is a string with a
maximum of 32 case-sensitive characters.
By default, the acl is not configured";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
Liu & Guo Expires September 23, 2015 [Page 21]
Internet-Draft GMP YANG model March 2015
leaf immediate-leave-acl-name-ipv6 {
description
"Configure an acl that defines a
multicast group range. The basic acl
number ranges from 2000 to 2999, and
the advanced acl number ranges from 3000
to 3999. The name is a string with a
maximum of 32 case-sensitive characters.
By default, the acl is not configured";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf gmp-entry-limit {
description
"Specify the maximum number of entries
that the current interface can create.
It is an integer ranging from 1 to
16384. The default value is 16384.";
config "true";
type uint16 {
range "1..16384";
}
}
leaf except-acl-name {
description
"Specify the range of multicast groups,
the number of igmp entries corresponding
to which needs not be limited. The basic
acl number ranges from 2000 to 2999. The
basic acl filters group addresses only,
without distinguishing (*, g) entries
and (s, g) entries.";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf except-acl-name-ipv6 {
description
"Specify the range of multicast groups,
the number of igmp entries corresponding
to which needs not be limited. The basic
acl number ranges from 2000 to 2999. The
basic acl filters group addresses only,
Liu & Guo Expires September 23, 2015 [Page 22]
Internet-Draft GMP YANG model March 2015
without distinguishing (*, g) entries
and (s, g) entries";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf ssmap-enable {
description
"Enable ssm mapping on an interface.";
config "true";
type boolean;
}
leaf group-acl-name {
description
"Set a filter for multicast groups on an
interface to control the range of
multicast groups that hosts can join.
The basic acl number ranges from 2000
to 2999, and the advanced acl number
ranges from 3000 to 3999. The name is a
string with a maximum of 32 ";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf group-acl-name-ipv6 {
description
"Set a filter for multicast groups on an
interface to control the range of
multicast groups that hosts can join.
The basic acl number ranges from 2000
to 2999, and the advanced acl number
ranges from 3000 to 3999. The name is a
string with a maximum of 32 ";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf group-acl-gmp-ver {
description
"Forbids hosts that use a specified
version to join the multicast group.
Liu & Guo Expires September 23, 2015 [Page 23]
Internet-Draft GMP YANG model March 2015
The version can be specified in this
command only after a multicast filtering
policy is configured.";
config "true";
type uint8 {
range "1..3";
}
}
leaf query-acl-name {
description
"Configure an acl that defines a host
addresses range. The value is an integer
ranging from 2000 to 2999, or a
case-sensitive string with a maximum of
32 characters. By default, the acl is
not configured.";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf queryaclnameipv6 {
description
"Configure an acl that defines a host
addresses range. The value is an integer
ranging from 2000 to 2999, or a
case-sensitive string with a maximum of
32 characters. By default, the acl is
not configured.";
config "true";
type string {
length "1..32";
pattern "^[^ ]+$";
}
}
leaf ipsec-name {
description
"Sa name. The value is a string of 1 to
15 characters.";
config "true";
type string {
length "1..15";
pattern "^[^ ]+$";
}
}
leaf ipsec-type {
description
Liu & Guo Expires September 23, 2015 [Page 24]
Internet-Draft GMP YANG model March 2015
"Ipsec type used as a query option.";
config "true";
type enumeration {
enum forall {
value "0";
description
"Ipsec type used as a query option.";
}
enum forquery {
value "1";
description
"Ipsec type used as a query option.";
}
}
}
container gmp-static-groups {
container gmp-static-group {
leaf vrf-name {
description
"Name of an gmp instance. If the
name string is empty the instance
means a public instance whose
name is _public_.";
config "true";
mandatory "true";
//default "_public_";
type string {
length "0..32";
}
}
leaf addr-family {
description
"Specify an address family, which
determines whether an ipv4 or
ipv6 address is used.";
config "true";
mandatory "true";
type enumeration {
enum ipv4unicast {
value "0";
description
"Specify an address family,
which determines whether
an ipv4 or ipv6 address
is used.";
Liu & Guo Expires September 23, 2015 [Page 25]
Internet-Draft GMP YANG model March 2015
}
enum ipv6unicast {
value "1";
description
"Specify an address family,
which determines whether
an ipv4 or ipv6 address
is used.";
}
}
}
leaf if-name {
description "Interface name.";
config "true";
mandatory "true";
type if-name;
}
leaf ipv4-static-group {
description
"Specifies the address of a
static group.";
config "true";
mandatory "true";
type inet:ipv4-address;
}
leaf ipv6-static-group {
description
"Specifies the address of a
static group.";
config "true";
mandatory "true";
type inet:ipv6-address;
}
leaf is-source-addr {
description
"Whether an address is configured
for the multicast source.";
config "true";
mandatory "true";
type boolean;
}
leaf ipv4-source-addr {
description
"Specifies the ipv4 address of a
remote neighbor.";
config "true";
type inet:ipv4-address;
}
Liu & Guo Expires September 23, 2015 [Page 26]
Internet-Draft GMP YANG model March 2015
leaf ipv6-source-addr {
description
"Specifies the ipv6 address of a
remote neighbor.";
config "true";
type inet:ipv6-address;
}
leaf is-step-grp-mask {
description
"Determine whether to specify the
step mask in batch configuration
mode.";
config "true";
mandatory "true";
type boolean;
}
leaf ipv4-inc-step-group-mask {
description
"Specify the step mask of a group
address in batch configuration
mode.";
config "true";
type inet:ipv4-address;
}
leaf ipv6-inc-step-group-mask {
description
"Specify the step mask of a group
address in batch configuration
mode.";
config "true";
type inet:ipv6-address;
}
leaf is-masklen {
description
"Determine whether to set the
length for the step mask of a
multicast group address in batch
configuration mode. ";
config "true";
mandatory "true";
type boolean;
}
leaf masklen {
description
"Specify the mask length of a
multicast group address. In the
case of an ipv4 address, the
mask length ranges from 4 to 32.
Liu & Guo Expires September 23, 2015 [Page 27]
Internet-Draft GMP YANG model March 2015
In the case of an ipv6 address,
the mask length is 16/32/64/128.";
config "true";
type uint8 {
range "4..128";
}
}
leaf total-number {
description
"Specify the number of multicast
group addresses in batch
configuration mode. It is an
integer ranging from 2 to 512.";
config "true";
default "2";
type uint16 {
range "2..512";
}
}
}
}
}
}
}
}
container gmp-group-infos {
list gmp-group-info {
key "vrf-name addr-family if-name";
config "false";
leaf vrf-name {
description "Specify the name of a vpn instance.";
config "false";
//default "_public_";
type string {
length "0..32";
}
}
leaf addr-family {
description
"Specify an address family, which determines
whether an address is an ipv4 or ipv6 address.";
Liu & Guo Expires September 23, 2015 [Page 28]
Internet-Draft GMP YANG model March 2015
config "false";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf if-name {
description "Specify the name of an interface.";
config "false";
type if-name;
}
leaf ipv4-group-addr {
description
"Multicast group address. In ipv4 address, the
value ranges from 224.0.0.0 to 239.255.255.255. ";
config "false";
type inet:ipv4-address;
}
leaf ipv6-group-addr {
description
"Multicast group address. In ipv6, the value is
in hexadecimal notation and in the format of
ffxx:xxxx:xxxx::xxxx ";
config "false";
type inet:ipv6-address;
}
leaf ipv4-last-report-addr {
description
"Specify the host that sends the last report
message.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-last-report-addr {
description
"Specify the host that sends the last report
message.";
config "false";
type inet:ipv6-address;
}
leaf up-time {
description
Liu & Guo Expires September 23, 2015 [Page 29]
Internet-Draft GMP YANG model March 2015
"Specify the time when a multicast group is
discovered, in seconds.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf expire-time {
description
"Specify the scheduled time to remove a group
from the group table. The value is expressed in
seconds.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf last-member-query-count {
description
"Specify the number of times that the last member
query message is transmitted.";
config "false";
type uint8 {
range "1..5";
}
}
leaf last-member-query-time {
description
"Specify the timeout period for sending last member
query messages.";
config "false";
type uint8 {
range "1..25";
}
}
leaf source-filter-mode {
description
"Specify the group mode, exclude or include.";
config "false";
type enumeration {
enum include {
value "0";
description "include:include";
}
enum exclude {
value "1";
description "exclude:exclude";
}
Liu & Guo Expires September 23, 2015 [Page 30]
Internet-Draft GMP YANG model March 2015
enum na {
value "2";
description "na:na";
}
}
}
leaf v1-host-timer {
description
"Specify the timeout period of an v1 host.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf v2-host-timer {
description
"Specify the timeout period of an v2 host.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf is-ssm-mapping {
description
"Identifies an ssm mapping-enabled group.";
config "false";
type boolean;
}
container gmp-source-infos {
list gmp-source-info {
description
"Specify dynamic multicast source information.";
key "ipv4-source-addr ipv6-source-addr";
config "false";
leaf ipv4-source-addr {
description
"Specify the address of a multicast source.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-source-addr {
description
"Specify the address of a multicast source.";
config "false";
type inet:ipv6-address;
Liu & Guo Expires September 23, 2015 [Page 31]
Internet-Draft GMP YANG model March 2015
}
leaf source-up-time {
description
"Specify the time when a multicast source
is discovered.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf source-expire-time {
description
"Specify the time left to delete records
from the source table.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf source-last-member-query-count {
description
"Specify the number of times that the
last member query message is transmitted.";
config "false";
type uint8 {
range "1..5";
}
}
leaf source-last-member-query-time {
description
"Specify the timeout period for sending
last member query messages.";
config "false";
type uint8 {
range "1..25";
}
}
}
}
}
}
container gmp-static-group-infos {
Liu & Guo Expires September 23, 2015 [Page 32]
Internet-Draft GMP YANG model March 2015
list gmp-static-group-info {
description
"Specify static multicast group information.";
key "vrf-name addr-family if-name";
config "false";
leaf vrf-name {
description "Specify the name of a vpn instance.";
config "false";
//default "_public_";
type string {
length "0..32";
}
}
leaf addr-family {
description
"Specify an address family, which determines
whether an address is an ipv4 or ipv6 address.";
config "false";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf if-name {
description "Specify the name of an interface.";
config "false";
type if-name;
}
leaf ipv4-group-addr {
description
"Multicast group address. In ipv4 address, the
value ranges from 239.0.0.0 to 239.255.255.255. ";
config "false";
type inet:ipv4-address;
}
leaf ipv6-group-addr {
description
"Multicast group address. In ipv6, the value is
in hexadecimal notation and in the format of
ffxx:xxxx:xxxx::xxxx ";
Liu & Guo Expires September 23, 2015 [Page 33]
Internet-Draft GMP YANG model March 2015
config "false";
type inet:ipv6-address;
}
leaf ipv4-source-addr {
description
"Specify the address of a multicast source.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-source-addr {
description
"Specify the address of a multicast source.";
config "false";
type inet:ipv6-address;
}
leaf multicast-boundary {
description
"Whether the multicast forwarding boundary is
configured.";
config "false";
type boolean;
}
}
}
container gmp-if-infos {
list gmp-if-info {
description "Specify interface information.";
key "vrf-name if-name addr-family";
config "false";
leaf vrf-name {
description "Specify the name of a vpn instance.";
config "false";
//default "_public_";
type string {
length "0..32";
}
}
leaf if-name {
description "Specify the name of an interface.";
config "false";
type if-name;
}
leaf addr-family {
Liu & Guo Expires September 23, 2015 [Page 34]
Internet-Draft GMP YANG model March 2015
description
"Specify an address family, which determines
whether an address is an ipv4 or ipv6 address.";
config "false";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf ipv4-if-addr {
description
"Specify the ip address of an interface.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-if-addr {
description
"Specify the ip address of an interface.";
config "false";
type inet:ipv6-address;
}
leaf gmp-if-state {
description
"Specify the status of an interface enabled with
a protocol. The value can be up or down.";
config "false";
type enumeration {
enum down {
value "0";
description "down:down";
}
enum up {
value "1";
description "up:up";
}
}
}
leaf negotiate-query-time {
description
"Interval negotiated by non-queriers for sending
query messages, in seconds. The negotiated value
is supported by igmpv3 or mldv2 only.";
Liu & Guo Expires September 23, 2015 [Page 35]
Internet-Draft GMP YANG model March 2015
config "false";
type uint16 {
range "1..18000";
}
}
leaf configure-query-time {
description
"Interval configured by non-queriers for sending
query messages, in seconds. ";
config "false";
type uint16 {
range "1..18000";
}
}
leaf other-querier-timeout {
description
"Specify the timeout period of other queriers.
The value decreases by one per second. The value
is 0 on the interface that acts as the querier.";
config "false";
type uint16 {
range "1..65535";
}
}
leaf max-query-response-time {
description
"Specify the maximum response time carried in a
query message.";
config "false";
type uint8 {
range "1..25";
}
}
leaf last-member-query-time {
description
"Specify the timeout period for sending the
last-member query message.";
config "false";
type uint8 {
range "1..25";
}
}
leaf startup-query-interval {
description
"Specify the interval at which an interface
functioning as the querier sends query messages
when it is started. ";
config "false";
Liu & Guo Expires September 23, 2015 [Page 36]
Internet-Draft GMP YANG model March 2015
type uint16 {
range "1..18000";
}
}
leaf startup-query-count {
description
"Specify the number of times that an interface
functioning as the querier sends query messages
when it is started. ";
config "false";
type uint8 {
range "2..5";
}
}
leaf general-query-time {
description
"Specify the timeout period of a general query
timer.";
config "false";
type uint16 {
range "1..18000";
}
}
leaf ipv4-querier-addr {
description
"Specify the address of a querier.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-querier-addr {
description
"Specify the address of a querier.";
config "false";
type inet:ipv6-address;
}
leaf querier-local {
description "Whether a query is a local query.";
config "false";
type enumeration {
enum na {
value "0";
description "na:na";
}
enum no_querier {
value "1";
description "no_querier:no_querier";
}
enum this_router {
Liu & Guo Expires September 23, 2015 [Page 37]
Internet-Draft GMP YANG model March 2015
value "2";
description "this_router:this_router";
}
enum other_router {
value "3";
description "other_router:other_router";
}
}
}
leaf gmp-joins {
description
"Specify the number of groups that an interface
has joined. When the interface joins a new
group, the value increases by one; when the
interface leaves a group, the value remains
unchanged";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf gmp-leaves {
description
"Specify the number of groups that the interface
leaves. Each time when the interface leaves a
group, the value increases by one.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf negotiate-robust {
description
"Specify the robustness variable negotiated by
non-queriers. The value is supported by igmpv3
or mldv2 only.";
config "false";
type uint8 {
range "2..5";
}
}
leaf configure-robust {
description
"Specify the robustness variable configured by
non-queriers. ";
config "false";
type uint8 {
range "2..5";
Liu & Guo Expires September 23, 2015 [Page 38]
Internet-Draft GMP YANG model March 2015
}
}
leaf startup-query-timer-state {
description
"Specify the status of the timer for the interface
functioning as the querier after being started.
off: the interface immediately sends a query
message after being started.
on: the interface does not send a query message
after being started.";
config "false";
type enumeration {
enum off {
value "0";
description "off:off";
}
enum on {
value "1";
description "on:on";
}
enum na {
value "2";
description "na:na";
}
}
}
leaf other-querier-timer-state {
description
"Specify the status of the timer identifying
whether another querier is present.
off: the interface considers itself as a querier
and that no other queriers exist. ";
config "false";
type enumeration {
enum off {
value "0";
description "off:off";
}
enum on {
value "1";
description "on:on";
}
}
}
leaf ipsec-name {
description
"Sa name. the value is a string of 1 to 15
characters.";
Liu & Guo Expires September 23, 2015 [Page 39]
Internet-Draft GMP YANG model March 2015
config "false";
type string {
length "1..15";
}
}
leaf ipsec-type {
description
"Ipsec type used as a query option.";
config "false";
type enumeration {
enum forall {
value "0";
description "ipsec sa for all:";
}
enum forquery {
value "1";
description "ipsec sa for query:";
}
}
}
}
}
container gmp-packet-statistics {
list gmp-packet-statistic {
key "vrf-name addr-family if-name";
config "false";
leaf vrf-name {
description "Specify the name of a vpn instance.";
config "false";
//default "_public_";
type string {
length "0..32";
}
}
leaf if-name {
description "Specify the name of an interface.";
config "false";
type if-name;
}
leaf addr-family {
config "false";
type enumeration {
enum ipv4unicast {
Liu & Guo Expires September 23, 2015 [Page 40]
Internet-Draft GMP YANG model March 2015
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf ipv4-if-addr {
description
"Specify the ip address of an interface.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-if-addr {
description
"Specify the ip address of an interface.";
config "false";
type inet:ipv6-address;
}
leaf query-recv-valid-num {
description
"Number of valid general query message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf query-recv-invalid-num {
description
"Number of invalid general query message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf query-recv-ignore-num {
description
"Number of ignored general query message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
Liu & Guo Expires September 23, 2015 [Page 41]
Internet-Draft GMP YANG model March 2015
leaf report-v1v2-asm-recv-valid-num {
description
"Number of valid asm v1v2 report message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-asm-recv-invalid-num {
description
"Number of invalid asm v1v2 report message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-asm-recv-ignore-num {
description
"Number of ignored asm v1v2 report message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-ssm-recv-valid-num {
description
"Number of valid ssm v1v2 report message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-ssm-recv-invalid-num {
description
"Number of invalid ssm v1v2 report message received
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-ssm-recv-ignore-num {
description
"Number of ignored ssm v1v2 report message received
Liu & Guo Expires September 23, 2015 [Page 42]
Internet-Draft GMP YANG model March 2015
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-asm-recv-valid-num {
description
"Number of valid asm leave message received on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-asm-recv-invalid-num {
description
"Number of invalid asm leave message received on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-asm-recv-ignore-num {
description
"Number of ignored asm leave message received on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-ssm-recv-valid-num {
description
"Number of valid ssm leave message received on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-ssm-recv-invalid-num {
description
"Number of invalid ssm leave message received on
the interface.";
config "false";
type uint32 {
Liu & Guo Expires September 23, 2015 [Page 43]
Internet-Draft GMP YANG model March 2015
range "0..4294967295";
}
}
leaf leave-ssm-recv-ignore-num {
description
"Number of ignored ssm leave message received on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isin-recv-valid-num {
description
"Number of valid isin message received on the
interface";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isin-recv-invalid-num {
description
"Number of invalid isin message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isin-recv-ignore-num {
description
"Number of ignored isin message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isex-recv-valid-num {
description
"Number of valid isex message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
Liu & Guo Expires September 23, 2015 [Page 44]
Internet-Draft GMP YANG model March 2015
leaf report-v3-isex-recv-invalid-num {
description
"Number of invalid isex message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isex-recv-ignore-num {
description
"Number of ignored isex message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toin-recv-valid-num {
description
"Number of valid toin message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toin-recv-invalid-num {
description
"Number of invalid toin message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toin-recv-ignore-num {
description
"Number of ignored toin message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toex-recv-valid-num {
description
"Number of valid toex message received on the
Liu & Guo Expires September 23, 2015 [Page 45]
Internet-Draft GMP YANG model March 2015
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toex-recv-invalid-num {
description
"Number of invalid toex message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toex-recv-ignore-num {
description
"Number of ignored toex message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-allow-recv-valid-num {
description
"Number of valid allow message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-allow-recv-invalid-num {
description
"Number of invalid allow message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-allow-recv-ignore-num {
description
"Number of ignored allow message received on the
interface.";
config "false";
type uint32 {
Liu & Guo Expires September 23, 2015 [Page 46]
Internet-Draft GMP YANG model March 2015
range "0..4294967295";
}
}
leaf report-v3-block-recv-valid-num {
description
"Number of valid block message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-block-recv-invalid-num {
description
"Number of invalid block message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-block-recv-ignore-num {
description
"Number of ignored block message received on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf source-recv-valid-num {
description
"Number of valid source received on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf source-recv-invalid-num {
description
"Number of invalid source received on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf source-recv-ignore-num {
description
Liu & Guo Expires September 23, 2015 [Page 47]
Internet-Draft GMP YANG model March 2015
"Number of ignored source received on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf query-send-num {
description
"Specifies count of send query message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-asm-send-num {
description
"Specifies count of send asm v1v2 report message
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v1v2-ssm-send-num {
description
"Specifies count of send ssm v1v2 report message
on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-asm-send-num {
description
"Specifies count of send asm leave message on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf leave-ssm-send-num {
description
"Specifies count of send ssm leave message on
the interface.";
config "false";
type uint32 {
Liu & Guo Expires September 23, 2015 [Page 48]
Internet-Draft GMP YANG model March 2015
range "0..4294967295";
}
}
leaf query-g-send-num {
description
"Specifies count of send (g) query message on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf query-sg-send-num {
description
"Specifies count of send (sg) query message on
the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isin-send-num {
description
"Specifies count of send isin message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-isex-send-num {
description
"Specifies count of send isex message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-toin-send-num {
description
"Specifies count of send toin message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
Liu & Guo Expires September 23, 2015 [Page 49]
Internet-Draft GMP YANG model March 2015
leaf report-v3-toex-send-num {
description
"Specifies count of send toex message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-allow-send-num {
description
"Specifies count of send allow message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf report-v3-block-send-num {
description
"Specifies count of send block message on the
interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
leaf source-send-num {
description
"Specifies count of send source on the interface.";
config "false";
type uint32 {
range "0..4294967295";
}
}
}
}
}
notification gmp-group-join {
description "Receive a group membership report";
leaf vrf-name {
description "Specify the name of a vpn instance.";
//default "_public_";
Liu & Guo Expires September 23, 2015 [Page 50]
Internet-Draft GMP YANG model March 2015
type string {
length "0..32";
}
}
leaf if-name {
description "Specify the name of an interface.";
type if-name;
}
leaf addr-family {
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf ipv4-group-addr {
description
"Multicast group address. In ipv4 address, the value
ranges from 239.0.0.0 to 239.255.255.255. ";
type inet:ipv4-address;
}
leaf ipv6-group-addr {
description
"Multicast group address. In ipv6, the value is in
hexadecimal notation and in the format of
ffxx:xxxx:xxxx::xxxx ";
type inet:ipv6-address;
}
leaf ipv4-source-addr {
description
"Specify the address of a multicast source.";
type inet:ipv4-address;
}
leaf ipv6-source-addr {
description
"Specify the address of a multicast source.";
type inet:ipv6-address;
}
leaf ipv4-sender-addr {
description "Specify the address of sender.";
type inet:ipv4-address;
}
leaf ipv6-sender-addr {
Liu & Guo Expires September 23, 2015 [Page 51]
Internet-Draft GMP YANG model March 2015
description "Specify the address of sender.";
type inet:ipv6-address;
}
}
notification gmp-group-leave {
description "Receive a group membership leave";
leaf vrf-name {
description "specify the name of a vpn instance.";
//default "_public_";
type string {
length "0..32";
}
}
leaf if-name {
description "Specify the name of an interface.";
type if-name;
}
leaf addr-family {
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf ipv4-group-addr {
description
"Multicast group address. In ipv4 address, the value
ranges from 239.0.0.0 to 239.255.255.255. ";
type inet:ipv4-address;
}
leaf ipv6-group-addr {
description
"Multicast group address. In ipv6, the value is in
hexadecimal notation and in the format of
ffxx:xxxx:xxxx::xxxx ";
type inet:ipv6-address;
}
leaf ipv4-source-addr {
description
"Specify the address of a multicast source.";
Liu & Guo Expires September 23, 2015 [Page 52]
Internet-Draft GMP YANG model March 2015
type inet:ipv4-address;
}
leaf ipv6-source-addr {
description
"Specify the address of a multicast source.";
type inet:ipv6-address;
}
leaf ipv4-sender-addr {
description "Specify the address of sender.";
type inet:ipv4-address;
}
leaf ipv6-sender-addr {
description "Specify the address of sender.";
type inet:ipv6-address;
}
}
}
6. IANA Considerations
This draft includes no request to IANA.
7. Security Considerations
The data model defined does not create any security implications.
This draft does not change any underlying security issues inherent in
[I-D.ietf-netmod-routing-cfg].
8. Acknowledgements
TBD
9. References
9.1. Normative References
[I-D.ietf-netmod-routing-cfg]
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", draft-ietf-netmod-routing-cfg-17 (work in
progress), March 2015.
[RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5,
RFC 1112, August 1989.
[RFC2236] Fenner, W., "Internet Group Management Protocol, Version
2", RFC 2236, November 1997.
Liu & Guo Expires September 23, 2015 [Page 53]
Internet-Draft GMP YANG model March 2015
[RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast
Listener Discovery (MLD) for IPv6", RFC 2710, October
1999.
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A.
Thyagarajan, "Internet Group Management Protocol, Version
3", RFC 3376, October 2002.
[RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery
Version 2 (MLDv2) for IPv6", RFC 3810, June 2004.
[RFC4604] Holbrook, H., Cain, B., and B. Haberman, "Using Internet
Group Management Protocol Version 3 (IGMPv3) and Multicast
Listener Discovery Protocol Version 2 (MLDv2) for Source-
Specific Multicast", RFC 4604, August 2006.
[RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for
IP", RFC 4607, August 2006.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", RFC
6241, June 2011.
9.2. Informative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
Authors' Addresses
Yisong Liu
Huawei
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: liuyisong@huawei.com
Liu & Guo Expires September 23, 2015 [Page 54]
Internet-Draft GMP YANG model March 2015
Feng Guo
Huawei
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: guofeng@huawei.com
Liu & Guo Expires September 23, 2015 [Page 55]