rfc9398.original | rfc9398.txt | |||
---|---|---|---|---|
PIM Working Group H. Zhao | ||||
Internet Draft Ericsson | ||||
Intended status: Standards Track X. Liu | ||||
Expires: July 04, 2023 IBM Corporation | ||||
Y. Liu | ||||
China Mobile | ||||
M. Panchanathan | ||||
Cisco Systems | ||||
M. Sivakumar | ||||
Juniper | ||||
January 05, 2023 | Internet Engineering Task Force (IETF) H. Zhao | |||
Request for Comments: 9398 Ericsson | ||||
Category: Standards Track X. Liu | ||||
ISSN: 2070-1721 Alef Edge | ||||
Y. Liu | ||||
China Mobile | ||||
M. Panchanathan | ||||
Cisco Systems, Inc. | ||||
M. Sivakumar | ||||
Juniper | ||||
May 2023 | ||||
A YANG Data Model for IGMP/MLD Proxy | A YANG Data Model for Internet Group Management Protocol (IGMP) and | |||
draft-ietf-pim-igmp-mld-proxy-yang-10 | Multicast Listener Discovery (MLD) Proxy Devices | |||
Abstract | Abstract | |||
This document defines a YANG data model that can be used to | This document defines a YANG data model that can be used to configure | |||
configure and manage Internet Group Management Protocol (IGMP) or | and manage Internet Group Management Protocol (IGMP) or Multicast | |||
Multicast Listener Discovery (MLD) proxy devices. The YANG module in | Listener Discovery (MLD) Proxy devices. The YANG module in this | |||
this document conforms to Network Management Datastore Architecture | document conforms to the Network Management Datastore Architecture | |||
(NMDA). | (NMDA). | |||
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 | Status of This Memo | |||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This is an Internet Standards Track document. | |||
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." | ||||
The list of current Internet-Drafts can be accessed at | This document is a product of the Internet Engineering Task Force | |||
http://www.ietf.org/ietf/1id-abstracts.txt | (IETF). It represents the consensus of the IETF community. It has | |||
The list of Internet-Draft Shadow Directories can be accessed at | received public review and has been approved for publication by the | |||
http://www.ietf.org/shadow.html | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on July 04, 2023. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9398. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction...................................................3 | 1. Introduction | |||
1.1. Terminology...............................................3 | 1.1. Terminology | |||
1.2. Tree Diagrams.............................................3 | 1.2. Tree Diagrams | |||
1.3. Prefixes in Data Node Names...............................3 | 1.3. Prefixes in Data Node Names | |||
2. Design of Data Model...........................................4 | 2. Design of Data Model | |||
2.1. Overview..................................................4 | 2.1. Overview | |||
2.2. Optional Features.........................................4 | 2.2. Optional Features | |||
2.3. Position of Address Family in Hierarchy...................4 | 2.3. Position of Address Family in Hierarchy | |||
3. Module Structure...............................................5 | 3. Module Structure | |||
3.1. IGMP Proxy Configuration and Operational State............5 | 3.1. IGMP Proxy Configuration and Operational State | |||
3.2. MLD Proxy Configuration and Operational State.............6 | 3.2. MLD Proxy Configuration and Operational State | |||
4. IGMP/MLD Proxy YANG Module.....................................7 | 4. IGMP/MLD Proxy YANG Module | |||
5. Security Considerations.......................................14 | 5. Security Considerations | |||
6. IANA Considerations...........................................16 | 6. IANA Considerations | |||
6.1. XML Registry.............................................16 | 6.1. IETF XML Registry | |||
6.2. YANG Module Names Registry...............................16 | 6.2. YANG Module Names Registry | |||
7. References....................................................16 | 7. References | |||
7.1. Normative References.....................................16 | 7.1. Normative References | |||
7.2. Informative References...................................18 | 7.2. Informative References | |||
Appendix. Data Tree Example......................................19 | Appendix A. Data Tree Example | |||
Authors' Addresses...............................................22 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC7950] data model for the management of | This document defines a YANG data model [RFC7950] for the management | |||
Internet Group Management Protocol (IGMP) or Multicast Listener | of Internet Group Management Protocol (IGMP) or Multicast Listener | |||
Discovery (MLD) Proxy [RFC4605] devices. The YANG module in this | Discovery (MLD) Proxy devices [RFC4605]. The YANG module in this | |||
document conforms to the Network Management Datastore Architecture | document conforms to the Network Management Datastore Architecture as | |||
defined in [RFC8342]. | defined in [RFC8342]. | |||
1.1. Terminology | 1.1. Terminology | |||
The terminology for describing YANG data models is found in [RFC6020] | The terminology for describing YANG data models is found in [RFC6020] | |||
and [RFC7950], including: | and [RFC7950], including: | |||
* augment | ||||
* data model | ||||
* data node | ||||
* identity | ||||
* module | ||||
The following abbreviations are used in this document and defined model: | * augment | |||
IGMP: Internet Group Management Protocol [RFC3376]. | ||||
MLD: Multicast Listener Discovery [RFC3810]. | ||||
PIM: Protocol Independent Multicast [RFC7761]. | ||||
1.2. Tree Diagrams | * data model | |||
Tree diagrams used in this document follow the notation defined in | * data node | |||
[RFC8340]. | * identity | |||
1.3. Prefixes in Data Node Names | * module | |||
In this document, names of data nodes, and other data model objects are | The following abbreviations are used in this document and in the | |||
often used without a prefix, as long as it is clear from the context in | defined YANG data model: | |||
which YANG module each name is defined. Otherwise, names are prefixed | ||||
using the standard prefix associated with the corresponding YANG module, | ||||
as shown in Table 1. | ||||
+----------+-----------------------+---------------------------------+ | IGMP: Internet Group Management Protocol [RFC3376]. | |||
| Prefix | YANG module | Reference | | ||||
+==========+=======================+=================================+ | ||||
| inet | ietf-inet-types | [RFC6991] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| if | ietf-interfaces | [RFC8343] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| rt | ietf-routing | [RFC8349] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| rt-types | ietf-routing-types | [RFC8294] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| pim-base | ietf-pim-base | [RFC9128] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
Table 1: Prefixes and Corresponding YANG Modules | ||||
2. Design of Data Model | MLD: Multicast Listener Discovery [RFC3810]. | |||
The model covers Internet Group Management Protocol (IGMP) / Multicast | PIM: Protocol Independent Multicast [RFC7761]. | |||
Listener Discovery (MLD) - Based Multicast Forwarding ("IGMP/MLD | ||||
Proxying") [RFC4605]. The goal of this document is to define a data | ||||
model that provides a common user interface to IGMP/MLD Proxy. | ||||
2.1. Overview | 1.2. Tree Diagrams | |||
The model defined in this document has all the common building blocks | Tree diagrams used in this document follow the notation defined in | |||
for the IGMP/MLD Proxy devices. It can be used to configure IGMP/MLD | [RFC8340]. | |||
Proxy. The operational state data and statistics can also be retrieved | ||||
by it. | ||||
2.2. Optional Features | 1.3. Prefixes in Data Node Names | |||
This model is designed to represent the basic capability subsets of IGMP | In this document, names of data nodes and other data model objects | |||
/ MLD Proxy. The main design goals of this document are that the basic | are often used without a prefix, as long as the context clearly | |||
capabilities described in the model are supported by any major now- | indicates the YANG module in which each name is defined. Otherwise, | |||
existing implementation, and that the configuration of all | names are prefixed using the standard prefix associated with the | |||
implementations meeting the specifications is easy to express through | corresponding YANG module, as shown in Table 1. | |||
some combination of the optional features in the model and simple vendor | ||||
augmentations. | ||||
This model declares two features representing capabilities that not all | +==========+====================+===========+ | |||
deployed devices support. One feature is igmp-proxy, and the other | | Prefix | YANG Module | Reference | | |||
feature is mld-proxy. Either or both features could be implemented, | +==========+====================+===========+ | |||
which could provide more choices for vendors. | | inet | ietf-inet-types | [RFC6991] | | |||
+----------+--------------------+-----------+ | ||||
| if | ietf-interfaces | [RFC8343] | | ||||
+----------+--------------------+-----------+ | ||||
| rt | ietf-routing | [RFC8349] | | ||||
+----------+--------------------+-----------+ | ||||
| rt-types | ietf-routing-types | [RFC8294] | | ||||
+----------+--------------------+-----------+ | ||||
| pim-base | ietf-pim-base | [RFC9128] | | ||||
+----------+--------------------+-----------+ | ||||
2.3. Position of Address Family in Hierarchy | Table 1: Prefixes and Corresponding YANG | |||
Modules | ||||
IGMP Proxy only supports IPv4, while MLD Proxy only supports IPv6. The | 2. Design of Data Model | |||
data model defined in this document can be used for both IPv4 and IPv6 | ||||
address families. | ||||
This document defines IGMP Proxy and MLD Proxy as separate schema | The model covers forwarding based on IGMP and MLD proxying [RFC4605]. | |||
branches in the structure. The benefits are: | One goal of this document is to define a data model that provides a | |||
common user interface for IGMP/MLD Proxy devices. | ||||
* The model can support IGMP Proxy (IPv4), MLD Proxy (IPv6), or both | 2.1. Overview | |||
optionally and independently. Such flexibility cannot be achieved | ||||
cleanly with a combined branch. | ||||
* The structure is consistent with other YANG data models such as | The model defined in this document has all the common building blocks | |||
[RFC8652], which uses separate branches for IPv4 and IPv6. | for IGMP/MLD Proxy devices and can be used to configure those | |||
devices. The operational state data and statistics can also be | ||||
retrieved via this model. | ||||
* Having separate branches for IGMP Proxy and MLD Proxy allows minor | 2.2. Optional Features | |||
differences in their behavior to be modelled more simply and cleanly. | ||||
The two branches can better support different features and node types. | This model is designed to represent the basic capability subsets of | |||
IGMP/MLD Proxies. The main design goals of this document are that | ||||
(1) the basic capabilities described in the model will be supported | ||||
by any major implementations that exist at the time of this writing | ||||
and (2) the configuration of all implementations meeting the | ||||
specifications will be easy to express through some combination of | ||||
the optional features in the model and simple vendor augmentations. | ||||
This model declares two features representing capabilities that not | ||||
all deployed devices support. One feature is called "igmp-proxy", | ||||
and the other feature is called "mld-proxy". Either or both features | ||||
could be implemented; this would provide more choices for vendors. | ||||
2.3. Position of Address Family in Hierarchy | ||||
IGMP Proxies only support IPv4, while MLD Proxies only support IPv6. | ||||
The data model defined in this document can be used for both IPv4 and | ||||
IPv6 address families. | ||||
This document defines IGMP Proxies and MLD Proxies in separate schema | ||||
branches in the structure. The benefits of this technique are as | ||||
follows: | ||||
* The model can support IGMP Proxies (IPv4), MLD Proxies (IPv6), or | ||||
both, optionally and independently. Such flexibility cannot be | ||||
achieved cleanly with a combined branch. | ||||
* The structure is consistent with other YANG data models such as | ||||
the model defined in [RFC8652], which uses separate branches for | ||||
IPv4 and IPv6. | ||||
* Having separate branches for IGMP Proxies and MLD Proxies allows | ||||
minor differences in their behavior to be modeled more simply and | ||||
cleanly. The two branches can better support different features | ||||
and node types. | ||||
3. Module Structure | 3. Module Structure | |||
This model augments the core routing data model specified in [RFC8349]. | This model augments the core routing data model specified in | |||
[RFC8349]. | ||||
+--rw routing | +--rw routing | |||
+--rw router-id? | +--rw router-id? | |||
+--rw control-plane-protocols | +--rw control-plane-protocols | |||
| +--rw control-plane-protocol* [type name] | | +--rw control-plane-protocol* [type name] | |||
| +--rw type | | +--rw type | |||
| +--rw name | | +--rw name | |||
| +--rw igmp-proxy <= Augmented by this Model | | +--rw igmp-proxy <= Augmented by this model | |||
... | ... | |||
| +--rw mld-proxy <= Augmented by this Model | | +--rw mld-proxy <= Augmented by this model | |||
The "igmp-proxy" container instantiates IGMP Proxy. The "mld-proxy" | The "igmp-proxy" container instantiates an IGMP Proxy. The "mld- | |||
container instantiates MLD Proxy. | proxy" container instantiates an MLD Proxy. | |||
3.1. IGMP Proxy Configuration and Operational State | 3.1. IGMP Proxy Configuration and Operational State | |||
The YANG module augments /rt:routing/rt:control-plane- | The YANG module augments /rt:routing/rt:control-plane-protocols/ | |||
protocols/rt:control-plane-protocol to add the igmp-proxy container. | rt:control-plane-protocol to add the igmp-proxy container. | |||
All the IGMP Proxy related attributes are defined in the igmp-proxy | All attributes related to IGMP Proxies are defined in the igmp-proxy | |||
container. The read-write attributes represent configurable data. The | container. The read-write attributes represent configurable data. | |||
read-only attributes represent state data. | The read-only attributes represent state data. | |||
The igmp-version represents the version of IGMP protocol, and the | The igmp-version parameter represents the IGMP protocol version; the | |||
default value is 2. If the value of enabled is true, it means IGMP Proxy | default value is 2. If the value of the "enabled" parameter is | |||
is enabled. | "true", it means that the IGMP Proxy is enabled. | |||
The interface list under igmp-proxy contains upstream interfaces for | The interface list under igmp-proxy contains upstream interfaces for | |||
IGMP proxy. There is also a constraint to make sure the upstream | an IGMP Proxy. A constraint is provided to make sure that the | |||
interface for IGMP proxy is not configured to use PIM. | upstream interface for the IGMP Proxy is not configured to use PIM. | |||
To configure a downstream interface for IGMP proxy, it is needed to | To configure a downstream interface for an IGMP Proxy, the ability to | |||
enable IGMP on that interface. This is defined in the YANG Data Model | enable IGMP on that interface is needed. This is defined in "A YANG | |||
for Internet Group Management Protocol (IGMP) and Multicast Listener | Data Model for the Internet Group Management Protocol (IGMP) and | |||
Discovery (MLD) [RFC8652]. | Multicast Listener Discovery (MLD)" [RFC8652]. | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
+--rw igmp-proxy! {igmp-proxy}? | +--rw igmp-proxy! {igmp-proxy}? | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface* [name] | +--rw interface* [name] | |||
+--rw name if:interface-ref | +--rw name if:interface-ref | |||
+--rw igmp-version? uint8 | +--rw igmp-version? uint8 | |||
+--rw enabled? boolean | +--rw enabled? boolean | |||
+--rw sender-source-address? inet:ipv4-address-no-zone | +--rw sender-source-address? inet:ipv4-address-no-zone | |||
+--ro group* [group-address] | +--ro group* [group-address] | |||
+--ro group-address | +--ro group-address | |||
| rt-types:ipv4-multicast-group-address | | rt-types:ipv4-multicast-group-address | |||
+--ro up-time? uint32 | +--ro up-time? uint32 | |||
+--ro filter-mode enumeration | +--ro filter-mode enumeration | |||
+--ro source* [source-address] | +--ro source* [source-address] | |||
+--ro source-address | +--ro source-address | |||
| inet:ipv4-address-no-zone | | inet:ipv4-address-no-zone | |||
+--ro up-time? uint32 | +--ro up-time? uint32 | |||
+--ro downstream-interface* [name] | +--ro downstream-interface* [name] | |||
+--ro name if:interface-ref | +--ro name if:interface-ref | |||
3.2. MLD Proxy Configuration and Operational State | 3.2. MLD Proxy Configuration and Operational State | |||
The YANG module augments /rt:routing/rt:control-plane- | The YANG module augments /rt:routing/rt:control-plane-protocols/ | |||
protocols/rt:control-plane-protocol to add the mld-proxy container. | rt:control-plane-protocol to add the mld-proxy container. | |||
All the MLD Proxy related attributes are defined in the mld-proxy | All attributes related to MLD Proxies are defined in the mld-proxy | |||
container. The read-write attributes represent configurable data. The | container. The read-write attributes represent configurable data. | |||
read-only attributes represent state data. | The read-only attributes represent state data. | |||
The mld-version represents the version of MLD protocol, and default | The mld-version parameter represents the MLD protocol version; the | |||
value is 2. If the value of enabled is true, it means MLD Proxy is | default value is 2. If the value of the "enabled" parameter is | |||
enabled. | "true", it means that the MLD Proxy is enabled. | |||
The interface list under mld-proxy contains upstream interfaces for MLD | The interface list under mld-proxy contains upstream interfaces for | |||
proxy. There is also a constraint to make sure the upstream interface | an MLD Proxy. A constraint is provided to make sure that the | |||
for MLD proxy is not configured to use PIM. | upstream interface for the MLD Proxy is not configured to use PIM. | |||
To configure a downstream interface for MLD proxy, enable MLD on that | To configure a downstream interface for an MLD Proxy, enable MLD on | |||
interface. This is defined in the YANG Data Model for Internet Group | that interface. This is defined in "A YANG Data Model for the | |||
Management Protocol (IGMP) and Multicast Listener Discovery (MLD) | Internet Group Management Protocol (IGMP) and Multicast Listener | |||
[RFC8652]. | Discovery (MLD)" [RFC8652]. | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
+--rw mld-proxy! {mld-proxy}? | +--rw mld-proxy! {mld-proxy}? | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface* [name] | +--rw interface* [name] | |||
+--rw name if:interface-ref | +--rw name if:interface-ref | |||
+--rw mld-version? uint8 | +--rw mld-version? uint8 | |||
+--rw enabled? boolean | +--rw enabled? boolean | |||
+--rw sender-source-address? inet:ipv6-address-no-zone | +--rw sender-source-address? inet:ipv6-address-no-zone | |||
+--ro group* [group-address] | +--ro group* [group-address] | |||
+--ro group-address | +--ro group-address | |||
| rt-types:ipv6-multicast-group-address | | rt-types:ipv6-multicast-group-address | |||
+--ro up-time? uint32 | +--ro up-time? uint32 | |||
+--ro filter-mode enumeration | +--ro filter-mode enumeration | |||
+--ro source* [source-address] | +--ro source* [source-address] | |||
+--ro source-address | +--ro source-address | |||
| inet:ipv6-address-no-zone | | inet:ipv6-address-no-zone | |||
+--ro up-time? uint32 | +--ro up-time? uint32 | |||
+--ro downstream-interface* [name] | +--ro downstream-interface* [name] | |||
+--ro name if:interface-ref | +--ro name if:interface-ref | |||
4. IGMP/MLD Proxy YANG Module | ||||
This module references [RFC4605], [RFC6991], [RFC8294], [RFC8343], | ||||
[RFC8349] and [RFC9128]. | ||||
<CODE BEGINS> file ietf-igmp-mld-proxy@2022-12-07.yang | 4. IGMP/MLD Proxy YANG Module | |||
module ietf-igmp-mld-proxy { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy"; | ||||
// replace with IANA namespace when assigned | ||||
prefix igmp-mld-proxy; | ||||
import ietf-inet-types { | This module references [RFC4605], [RFC6991], [RFC8294], [RFC8343], | |||
prefix inet; | [RFC8349], and [RFC9128]. | |||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-interfaces { | ||||
prefix if; | ||||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | ||||
import ietf-routing-types { | ||||
prefix rt-types; | ||||
reference | ||||
"RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
} | ||||
import ietf-pim-base { | ||||
prefix pim-base; | ||||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent Multicast | ||||
(PIM)"; | ||||
} | ||||
organization | <CODE BEGINS> file "ietf-igmp-mld-proxy@2023-04-25.yang" | |||
"IETF PIM Working Group"; | module ietf-igmp-mld-proxy { | |||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy"; | ||||
prefix igmp-mld-proxy; | ||||
contact | import ietf-inet-types { | |||
"WG Web: <https://datatracker.ietf.org/wg/pim/about/> | prefix inet; | |||
WG List: <mailto:pim@ietf.org> | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-interfaces { | ||||
prefix if; | ||||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | ||||
import ietf-routing-types { | ||||
prefix rt-types; | ||||
reference | ||||
"RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
} | ||||
import ietf-pim-base { | ||||
prefix pim-base; | ||||
reference | ||||
"RFC 9128: YANG Data Model for Protocol Independent Multicast | ||||
(PIM)"; | ||||
} | ||||
Editors: Hongji Zhao | organization | |||
<mailto:hongji.zhao@ericsson.com> | "IETF PIM Working Group"; | |||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/pim/> | ||||
WG List: <mailto:pim@ietf.org> | ||||
Xufeng Liu | Editors: Hongji Zhao | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:hongji.zhao@ericsson.com> | |||
Yisong Liu | Xufeng Liu | |||
<mailto:liuyisong@chinamobile.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Mani Panchanathan | Yisong Liu | |||
<mailto:mapancha@cisco.com> | <mailto:liuyisong@chinamobile.com> | |||
Mahesh Sivakumar | Mani Panchanathan | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:mapancha@cisco.com> | |||
"; | Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com>"; | ||||
description | ||||
"This module defines a collection of YANG definitions common for | ||||
all Internet Group Management Protocol (IGMP) and Multicast | ||||
Listener Discovery (MLD) Proxy devices. | ||||
description | Copyright (c) 2023 IETF Trust and the persons identified as | |||
"The module defines a collection of YANG definitions common for | authors of the code. All rights reserved. | |||
all Internet Group Management Protocol (IGMP) and Multicast | ||||
Listener Discovery (MLD) Proxy devices. | ||||
Copyright (c) 2022 IETF Trust and the persons identified as | Redistribution and use in source and binary forms, with or | |||
authors of the code. All rights reserved. | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Revised BSD License set | ||||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
Redistribution and use in source and binary forms, with or | This version of this YANG module is part of RFC 9398; see the | |||
without modification, is permitted pursuant to, and subject to | RFC itself for full legal notices."; | |||
the license terms contained in, the Revised BSD License set | ||||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see the | revision 2023-04-25 { | |||
RFC itself for full legal notices."; | description | |||
"Initial revision."; | ||||
reference | ||||
"RFC 9398: A YANG Data Model for Internet Group Management | ||||
Protocol (IGMP) and Multicast Listener Discovery (MLD) | ||||
Proxy Devices"; | ||||
} | ||||
revision 2022-12-07 { | /* | |||
description | * Features | |||
"Initial revision."; | */ | |||
reference | ||||
"RFC XXXX: A YANG Data Model for IGMP and MLD Proxy"; | ||||
} | ||||
/* | feature igmp-proxy { | |||
* Features | description | |||
*/ | "Support for the IGMP Proxy protocol."; | |||
reference | ||||
"RFC 4605: Internet Group Management Protocol (IGMP) / | ||||
Multicast Listener Discovery (MLD)-Based Multicast Forwarding | ||||
('IGMP/MLD Proxying')"; | ||||
} | ||||
feature igmp-proxy { | feature mld-proxy { | |||
description | description | |||
"Support IGMP Proxy protocol."; | "Support for the MLD Proxy protocol."; | |||
reference | reference | |||
"RFC 4605"; | "RFC 4605: Internet Group Management Protocol (IGMP) / | |||
} | Multicast Listener Discovery (MLD)-Based Multicast Forwarding | |||
('IGMP/MLD Proxying')"; | ||||
} | ||||
feature mld-proxy { | /* | |||
description | * Identities | |||
"Support MLD Proxy protocol."; | */ | |||
reference | ||||
"RFC 4605"; | ||||
} | ||||
/* | identity igmp-proxy { | |||
* Identities | base rt:control-plane-protocol; | |||
*/ | description | |||
"IGMP Proxy protocol."; | ||||
} | ||||
identity igmp-proxy { | identity mld-proxy { | |||
base rt:control-plane-protocol; | base rt:control-plane-protocol; | |||
description | description | |||
"IGMP Proxy protocol"; | "MLD Proxy protocol."; | |||
} | } | |||
identity mld-proxy { | /* | |||
base rt:control-plane-protocol; | * Groupings | |||
description | */ | |||
"MLD Proxy protocol"; | ||||
} | ||||
/* | grouping per-interface-config-attributes { | |||
* Groupings | description | |||
*/ | "'config' attributes as listed under an interface entry."; | |||
leaf enabled { | ||||
type boolean; | ||||
default "true"; | ||||
description | ||||
"Set the value to 'true' to enable the IGMP/MLD Proxy."; | ||||
} | ||||
} // per-interface-config-attributes | ||||
grouping per-interface-config-attributes { | grouping state-group-attributes { | |||
description "Config attributes under interface view"; | description | |||
leaf enabled { | "State group attributes."; | |||
type boolean; | leaf up-time { | |||
default true; | type uint32; | |||
description | units "seconds"; | |||
"Set the value to true to enable IGMP/MLD proxy"; | description | |||
} | "The elapsed time for (S,G) or (*,G)."; | |||
} // per-interface-config-attributes | } | |||
grouping state-group-attributes { | leaf filter-mode { | |||
description | type enumeration { | |||
"State group attributes"; | enum include { | |||
leaf up-time { | description | |||
type uint32; | "In 'include' mode, reception of packets sent | |||
units seconds; | to the specified multicast address is requested | |||
description | only from those IP source addresses listed in the | |||
"The elapsed time for (S,G) or (*,G)."; | 'source' list parameter."; | |||
} | } | |||
leaf filter-mode { | enum exclude { | |||
type enumeration { | description | |||
enum "include" { | "In 'exclude' mode, reception of packets sent | |||
description | to the given multicast address is requested | |||
"In include mode, reception of packets sent | from all IP source addresses except those | |||
to the specified multicast address is requested | listed in the 'source' list parameter."; | |||
only from those IP source addresses listed in the | } | |||
source-list parameter"; | } | |||
} | mandatory true; | |||
enum "exclude" { | description | |||
description | "Filter mode for a multicast group. | |||
"In exclude mode, reception of packets sent | May be either 'include' or 'exclude'."; | |||
to the given multicast address is requested | } | |||
from all IP source addresses except those | } // state-group-attributes | |||
listed in the source-list parameter."; | ||||
} | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Filter mode for a multicast group, | ||||
may be either include or exclude."; | ||||
} | ||||
} // state-group-attributes | ||||
/* augments */ | /* augments */ | |||
augment "/rt:routing/rt:control-plane-protocols"+ | augment "/rt:routing/rt:control-plane-protocols" | |||
"/rt:control-plane-protocol" { | + "/rt:control-plane-protocol" { | |||
when | when "derived-from-or-self(rt:type, " | |||
"derived-from-or-self(rt:type, 'igmp-mld-proxy:igmp-proxy')" { | + "'igmp-mld-proxy:igmp-proxy')" { | |||
description | description | |||
"This augmentation is only valid for IGMP Proxy."; | "This augmentation is only valid for IGMP Proxies."; | |||
} | } | |||
description | description | |||
"IGMP Proxy augmentation to routing control plane protocol | "IGMP Proxy augmentation to routing control plane protocol | |||
configuration and state."; | configuration and state."; | |||
container igmp-proxy { | container igmp-proxy { | |||
if-feature "igmp-proxy"; | if-feature "igmp-proxy"; | |||
presence "IGMP Proxy configuration."; | presence "IGMP Proxy configuration."; | |||
description "IGMP Proxy instance configuration."; | description | |||
container interfaces { | "IGMP Proxy instance configuration."; | |||
description | container interfaces { | |||
"Containing a list of upstream interfaces."; | description | |||
list interface { | "Contains a list of upstream interfaces."; | |||
key "name"; | list interface { | |||
description | key "name"; | |||
"List of upstream interfaces."; | description | |||
leaf name { | "List of upstream interfaces."; | |||
type if:interface-ref; | leaf name { | |||
must "not( current() = /rt:routing"+ | type if:interface-ref; | |||
"/rt:control-plane-protocols/pim-base:pim"+ | must 'not( current() = /rt:routing' | |||
"/pim-base:interfaces/pim-base:interface"+ | + '/rt:control-plane-protocols/pim-base:pim' | |||
"/pim-base:name )" { | + '/pim-base:interfaces/pim-base:interface' | |||
description | + '/pim-base:name )' { | |||
"The upstream interface for IGMP proxy | description | |||
must not be configured to use PIM."; | "The upstream interface for the IGMP Proxy | |||
} | must not be configured to use PIM."; | |||
description "The upstream interface name."; | } | |||
} | description | |||
leaf igmp-version { | "The upstream interface name."; | |||
type uint8 { | } | |||
range "1..3"; | leaf igmp-version { | |||
} | type uint8 { | |||
default 2; | range "1..3"; | |||
description "IGMP version."; | } | |||
} | default "2"; | |||
uses per-interface-config-attributes; | description | |||
leaf sender-source-address { | "IGMP version."; | |||
type inet:ipv4-address-no-zone; | } | |||
description | uses per-interface-config-attributes; | |||
"The sender source address of | leaf sender-source-address { | |||
IGMP membership report message or leave message."; | type inet:ipv4-address-no-zone; | |||
} | description | |||
list group { | "The sender source address of an | |||
key "group-address"; | IGMP membership report message or leave message."; | |||
config false; | } | |||
description | list group { | |||
"Multicast group membership information | key "group-address"; | |||
that joined on the interface."; | config false; | |||
leaf group-address { | description | |||
type rt-types:ipv4-multicast-group-address; | "List of the multicast groups in the membership | |||
description | database built on this upstream interface."; | |||
"Multicast group address."; | leaf group-address { | |||
} | type rt-types:ipv4-multicast-group-address; | |||
uses state-group-attributes; | description | |||
list source { | "Multicast group address."; | |||
key "source-address"; | } | |||
description | uses state-group-attributes; | |||
"List of multicast source information | list source { | |||
of the multicast group."; | key "source-address"; | |||
leaf source-address { | description | |||
type inet:ipv4-address-no-zone; | "Multicast source information | |||
description | for the multicast group."; | |||
"Multicast source address"; | leaf source-address { | |||
} | type inet:ipv4-address-no-zone; | |||
leaf up-time { | description | |||
type uint32; | "Multicast source address."; | |||
units seconds; | } | |||
description | leaf up-time { | |||
"The elapsed time for (S,G) or (*,G)."; | type uint32; | |||
} | units "seconds"; | |||
list downstream-interface { | description | |||
key "name"; | "The elapsed time for (S,G) or (*,G)."; | |||
description "The downstream interfaces list."; | } | |||
leaf name { | list downstream-interface { | |||
type if:interface-ref; | key "name"; | |||
description | description | |||
"Downstream interfaces | "List of downstream interfaces."; | |||
for each upstream-interface"; | leaf name { | |||
} | type if:interface-ref; | |||
} | description | |||
} // list source | "Downstream interfaces | |||
} // list group | for each upstream interface."; | |||
} // interface | } | |||
} // interfaces | } | |||
} | } // list source | |||
} | } // list group | |||
} // interface | ||||
} // interfaces | ||||
} | ||||
} | ||||
augment "/rt:routing/rt:control-plane-protocols"+ | augment "/rt:routing/rt:control-plane-protocols" | |||
"/rt:control-plane-protocol" { | + "/rt:control-plane-protocol" { | |||
when | when "derived-from-or-self(rt:type, " | |||
"derived-from-or-self(rt:type, 'igmp-mld-proxy:mld-proxy')" { | + "'igmp-mld-proxy:mld-proxy')" { | |||
description | description | |||
"This augmentation is only valid for MLD Proxy."; | "This augmentation is only valid for MLD Proxies."; | |||
} | } | |||
description | description | |||
"MLD Proxy augmentation to routing control plane protocol | "MLD Proxy augmentation to routing control plane protocol | |||
configuration and state."; | configuration and state."; | |||
container mld-proxy { | container mld-proxy { | |||
if-feature "mld-proxy"; | if-feature "mld-proxy"; | |||
presence "MLD Proxy configuration."; | presence "MLD Proxy configuration."; | |||
description "MLD Proxy instance configuration."; | description | |||
container interfaces { | "MLD Proxy instance configuration."; | |||
description | container interfaces { | |||
"Containing a list of upstream interfaces."; | description | |||
list interface { | "Contains a list of upstream interfaces."; | |||
key "name"; | list interface { | |||
description | key "name"; | |||
"List of upstream interfaces."; | description | |||
leaf name { | "List of upstream interfaces."; | |||
type if:interface-ref; | leaf name { | |||
must "not( current() = /rt:routing"+ | type if:interface-ref; | |||
"/rt:control-plane-protocols/pim-base:pim"+ | must 'not( current() = /rt:routing' | |||
"/pim-base:interfaces/pim-base:interface"+ | + '/rt:control-plane-protocols/pim-base:pim' | |||
"/pim-base:name )" { | + '/pim-base:interfaces/pim-base:interface' | |||
description | + '/pim-base:name )' { | |||
"The upstream interface for MLD proxy | description | |||
must not be configured to use PIM."; | "The upstream interface for the MLD Proxy | |||
} | must not be configured to use PIM."; | |||
description "The upstream interface name."; | } | |||
} | description | |||
leaf mld-version { | "The upstream interface name."; | |||
type uint8 { | } | |||
range "1..2"; | leaf mld-version { | |||
} | type uint8 { | |||
default 2; | range "1..2"; | |||
description "MLD version."; | } | |||
} | default "2"; | |||
uses per-interface-config-attributes; | description | |||
leaf sender-source-address { | "MLD version."; | |||
type inet:ipv6-address-no-zone; | } | |||
description | uses per-interface-config-attributes; | |||
"The sender source address of | leaf sender-source-address { | |||
MLD membership report message or leave message."; | type inet:ipv6-address-no-zone; | |||
} | description | |||
list group { | "The sender source address of an | |||
key "group-address"; | MLD membership report message or leave message."; | |||
config false; | } | |||
description | list group { | |||
"Multicast group membership information | key "group-address"; | |||
that joined on the interface."; | config false; | |||
leaf group-address { | description | |||
type rt-types:ipv6-multicast-group-address; | "List of the multicast groups in the membership | |||
description | database built on this upstream interface."; | |||
"Multicast group address."; | leaf group-address { | |||
} | type rt-types:ipv6-multicast-group-address; | |||
uses state-group-attributes; | description | |||
list source { | "Multicast group address."; | |||
key "source-address"; | } | |||
description | uses state-group-attributes; | |||
"List of multicast source information | list source { | |||
of the multicast group."; | key "source-address"; | |||
leaf source-address { | description | |||
type inet:ipv6-address-no-zone; | "Multicast source information | |||
description | for the multicast group."; | |||
"Multicast source address"; | leaf source-address { | |||
} | type inet:ipv6-address-no-zone; | |||
leaf up-time { | description | |||
type uint32; | "Multicast source address."; | |||
units seconds; | } | |||
description | leaf up-time { | |||
"The elapsed time for (S,G) or (*,G)."; | type uint32; | |||
} | units "seconds"; | |||
list downstream-interface { | description | |||
key "name"; | "The elapsed time for (S,G) or (*,G)."; | |||
description "The downstream interfaces list."; | } | |||
leaf name { | list downstream-interface { | |||
type if:interface-ref; | key "name"; | |||
description | description | |||
"Downstream interfaces | "List of downstream interfaces."; | |||
for each upstream-interface"; | leaf name { | |||
} | type if:interface-ref; | |||
} | description | |||
} // list source | "Downstream interfaces | |||
} // list group | for each upstream interface."; | |||
} // interface | } | |||
} // interfaces | } | |||
} | } // list source | |||
} | } // list group | |||
} | } // interface | |||
<CODE ENDS> | } // interfaces | |||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
5. Security Considerations | 5. Security Considerations | |||
The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such as | that is designed to be accessed via network management protocols such | |||
NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
secure transport layer, and the mandatory-to-implement secure transport | is the secure transport layer, and the mandatory-to-implement secure | |||
is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
the mandatory-to-implement secure transport is TLS [RFC8446]. | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC8446]. | ||||
The Network Configuration Access Control Model (NACM) [RFC8341] provides | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
the means to restrict access for particular NETCONF or RESTCONF users to | provides the means to restrict access for particular NETCONF or | |||
a preconfigured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., config true, which is the default). | writable/creatable/deletable (i.e., config true, which is the | |||
These data nodes may be considered sensitive or vulnerable in some | default). These data nodes may be considered sensitive or vulnerable | |||
network environments. Write operations (e.g., edit-config) to these data | in some network environments. Write operations (e.g., edit-config) | |||
nodes without proper protection can have a negative effect on network | to these data nodes without proper protection can have a negative | |||
operations. These are the subtrees and data nodes and their | effect on network operations. These are the subtrees and data nodes | |||
sensitivity/vulnerability: | and their sensitivity/vulnerability: | |||
Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | Under /rt:routing/rt:control-plane-protocols/rt:control-plane- | |||
igmp-mld-proxy:igmp-proxy, | protocol:/ igmp-mld-proxy:igmp-proxy: | |||
igmp-mld-proxy:interfaces | igmp-mld-proxy:interfaces | |||
This subtree specifies the interface list for IGMP Proxy. Modifying | This subtree specifies the interface list for an IGMP Proxy. | |||
the configuration may cause IGMP Proxy interface to be deleted or | Modifying the configuration may cause the IGMP Proxy interface to | |||
changed. | be deleted or changed. | |||
igmp-mld-proxy:interfaces/interface | igmp-mld-proxy:interfaces/interface | |||
This subtree specifies the configuration for the IGMP Proxy attributes | This subtree specifies the configuration for the IGMP Proxy | |||
at the interface level. Modifying the configuration may cause IGMP | attributes at the interface level. Modifying the configuration | |||
Proxy to be deleted or changed on a specific interface. | may cause the IGMP Proxy to be deleted or changed on a specific | |||
interface. | ||||
Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | Under /rt:routing/rt:control-plane-protocols/rt:control-plane- | |||
igmp-mld-proxy:mld-proxy, | protocol:/ igmp-mld-proxy:mld-proxy: | |||
igmp-mld-proxy:interfaces | igmp-mld-proxy:interfaces | |||
This subtree specifies the interface list for MLD Proxy. Modifying the | This subtree specifies the interface list for an MLD Proxy. | |||
configuration may cause MLD Proxy interface to be deleted or | Modifying the configuration may cause the MLD Proxy interface to | |||
changed. | be deleted or changed. | |||
igmp-mld-proxy:interfaces/interface | igmp-mld-proxy:interfaces/interface | |||
This subtree specifies the configuration for the MLD Proxy attributes | This subtree specifies the configuration for the MLD Proxy | |||
at the interface level. Modifying the configuration may cause MLD | attributes at the interface level. Modifying the configuration | |||
Proxy to be deleted or changed on a specific interface. | may cause the MLD Proxy to be deleted or changed on a specific | |||
interface. | ||||
Unauthorized access to any data node of these subtrees can adversely | Unauthorized access to any data nodes in these subtrees can adversely | |||
affect the IGMP / MLD Proxy subsystem of both the local device and the | affect the IGMP/MLD Proxy subsystem of both the local device and the | |||
network. This may lead to network malfunctions, delivery of packets to | network. This may lead to network malfunctions, delivery of packets | |||
inappropriate destinations, and other problems. | to inappropriate destinations, and other problems. | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. These are the subtrees and data nodes | notification) to these data nodes. These are the subtrees and data | |||
and their sensitivity/vulnerability: | nodes and their sensitivity/vulnerability: | |||
Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | Under | |||
igmp-mld-proxy:igmp-proxy | /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | |||
igmp-mld-proxy:mld-proxy | ||||
Unauthorized access to any data node of these subtrees can disclose the | igmp-mld-proxy:igmp-proxy | |||
operational state information of IGMP / MLD Proxy on this device. The | igmp-mld-proxy:mld-proxy | |||
group/source information may expose multicast group memberships. | ||||
6. IANA Considerations | Unauthorized access to any data nodes in these subtrees can disclose | |||
operational state information about the IGMP/MLD Proxy on this | ||||
device. Group information or source information may expose multicast | ||||
group memberships. | ||||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | 6. IANA Considerations | |||
actual RFC number (and remove this note). | ||||
6.1. XML Registry | 6.1. IETF XML Registry | |||
This document registers the following namespace URIs in the IETF XML | This document registers the following namespace URIs in the "IETF XML | |||
registry [RFC3688]: | Registry" [RFC3688]: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy | URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
6.2. YANG Module Names Registry | 6.2. YANG Module Names Registry | |||
This document registers the following YANG modules in the YANG Module | This document registers the following YANG module in the "YANG Module | |||
Names registry [RFC7950]: | Names" registry [RFC6020]: | |||
name: ietf-igmp-mld-proxy | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy | ||||
prefix: igmp-mld-proxy | ||||
reference: RFC XXXX | ||||
7. References | Name: ietf-igmp-mld-proxy | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy | ||||
Prefix: igmp-mld-proxy | ||||
Reference: RFC 9398 | ||||
7.1. Normative References | 7. References | |||
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | 7.1. Normative References | |||
Thyagarajan, "Internet Group Management Protocol, Version | ||||
3", RFC 3376, October 2002. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January | [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | |||
2004. | Thyagarajan, "Internet Group Management Protocol, Version | |||
3", RFC 3376, DOI 10.17487/RFC3376, October 2002, | ||||
<https://www.rfc-editor.org/info/rfc3376>. | ||||
[RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | ||||
[RFC4605] B. Fenner, H. He, B. Haberman and H. Sandick, "Internet | [RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | |||
Group Management Protocol (IGMP) / Multicast Listener | Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | |||
Discovery (MLD) - Based Multicast Forwarding ("IGMP/MLD | DOI 10.17487/RFC3810, June 2004, | |||
Proxying")", RFC 4605, August 2006. | <https://www.rfc-editor.org/info/rfc3810>. | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC4605] Fenner, B., He, H., Haberman, B., and H. Sandick, | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | "Internet Group Management Protocol (IGMP) / Multicast | |||
October 2010. | Listener Discovery (MLD)-Based Multicast Forwarding | |||
("IGMP/MLD Proxying")", RFC 4605, DOI 10.17487/RFC4605, | ||||
August 2006, <https://www.rfc-editor.org/info/rfc4605>. | ||||
[RFC6241] R. Enns, Ed., M. Bjorklund, Ed., J. Schoenwaelder, Ed., A. | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
Bierman, Ed., "Network Configuration Protocol (NETCONF)", | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
RFC 6241, June 2011. | DOI 10.17487/RFC6020, October 2010, | |||
<https://www.rfc-editor.org/info/rfc6020>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
Shell (SSH)", RFC 6242, June 2011. | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
July 2013. | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | ||||
[RFC7950] M. Bjorklund, Ed., "The YANG 1.1 Data Modeling Language", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 7950, August 2016. | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | ||||
[RFC8040] A. Bierman, M. Bjorklund, K. Watsen, "RESTCONF Protocol", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 8040, January 2017. | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | ||||
[RFC8294] X. Liu, Y. Qu, A. Lindem, C. Hopps, L. Berger, "Common YANG | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Data Types for the Routing Area", RFC 8294, December 2017. | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | ||||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
Control Model", RFC 8341, March 2018. | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
DOI 10.17487/RFC8294, December 2017, | ||||
<https://www.rfc-editor.org/info/rfc8294>. | ||||
[RFC8342] M. Bjorklund and J. Schoenwaelder, "Network Management | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Datastore Architecture (NMDA)", RFC 8342, March 2018. | Access Control Model", STD 91, RFC 8341, | |||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8343] M. Bjorklund, "A YANG Data Model for Interface Management", | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
RFC 8343, March 2018. | and R. Wilton, "Network Management Datastore Architecture | |||
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8342>. | ||||
[RFC8349] L. Lhotka, A. Lindem, Y. Qu, "A YANG Data Model for Routing | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
Management (NMDA Version)", RFC 8349, March 2018. | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8343>. | ||||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
Version 1.3", RFC 8446, August 2018. | Routing Management (NMDA Version)", RFC 8349, | |||
DOI 10.17487/RFC8349, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8349>. | ||||
[RFC8652] X. Liu, F. Guo, M. Sivakumar, P. McAllister, A. Peter, "A | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
YANG Data Model for the Internet Group Management Protocol | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
(IGMP) and Multicast Listener Discovery (MLD)", RFC 8652, | <https://www.rfc-editor.org/info/rfc8446>. | |||
November 2019. | ||||
[RFC9128] X. Liu, P. McAllister, A. Peter, M. Sivakumar, Y. Liu, F. | [RFC8652] Liu, X., Guo, F., Sivakumar, M., McAllister, P., and A. | |||
Hu, "A YANG Data Model for Protocol Independent Multicast | Peter, "A YANG Data Model for the Internet Group | |||
(PIM)", RFC 9128, May 2018. | Management Protocol (IGMP) and Multicast Listener | |||
Discovery (MLD)", RFC 8652, DOI 10.17487/RFC8652, November | ||||
2019, <https://www.rfc-editor.org/info/rfc8652>. | ||||
7.2. Informative References | [RFC9128] Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, | |||
Y., and F. Hu, "YANG Data Model for Protocol Independent | ||||
Multicast (PIM)", RFC 9128, DOI 10.17487/RFC9128, October | ||||
2022, <https://www.rfc-editor.org/info/rfc9128>. | ||||
[RFC7761] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas, R. Parekh, | 7.2. Informative References | |||
Z. Zhang, L. Zheng, "Protocol Independent Multicast - | ||||
Sparse Mode (PIM-SM): Protocol Specification (Revised)", | ||||
RFC 7761, March 2016. | ||||
[RFC7951] L. Lhotka, "JSON Encoding of Data Modeled with YANG", RFC | [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | |||
7951, August 2016. | Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | |||
Multicast - Sparse Mode (PIM-SM): Protocol Specification | ||||
(Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | ||||
2016, <https://www.rfc-editor.org/info/rfc7761>. | ||||
[RFC8340] M. Bjorklund, and L. Berger, Ed., "YANG Tree Diagrams", RFC | [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | |||
8340, March 2018. | RFC 7951, DOI 10.17487/RFC7951, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7951>. | ||||
[RFC8407] A. Bierman, "Guidelines for Authors and Reviewers of | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
Documents Containing YANG Data Models", RFC 8407, October | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
2018. | <https://www.rfc-editor.org/info/rfc8340>. | |||
Appendix. Data Tree Example | Appendix A. Data Tree Example | |||
This section contains an example for IGMP Proxy in the JSON encoding | This section contains an example for the IGMP Proxy, shown in JSON | |||
[RFC7951], containing both configuration and state data. In the example | encoding [RFC7951] and containing both configuration and state data. | |||
IGMP Proxy is enabled on interface eth1/1. | In the example, the IGMP Proxy is enabled on interface eth1/1. | |||
It is also needed to enable IGMP on eth1/2 and eth1/3. The configuration | The ability to enable IGMP on eth1/2 and eth1/3 is also needed. The | |||
details are omitted here because this document is focused on IGMP/MLD | configuration details are omitted here because this document is | |||
Proxy. | focused on IGMP/MLD Proxies. | |||
+-----------+ | +-----------+ | |||
+ Source + | + Source + | |||
+-----+-----+ | +-----+-----+ | |||
| | | | |||
-----------------+---------------------------- | -----------------+---------------------------- | |||
|eth1/1 | |eth1/1 | |||
+---+----+ | +---+----+ | |||
+ R1 + | + R1 + | |||
+-+----+-+ | +-+----+-+ | |||
eth1/2 | \ eth1/3 | eth1/2 | \ eth1/3 | |||
| \ | | \ | |||
| \ | | \ | |||
| \ | | \ | |||
---------------+---------+------------------- | ---------------+---------+-------------------- | |||
| \ | | \ | |||
| \ | | \ | |||
+--------+--+ +---+--------+ | +---------+--+ +---+--------+ | |||
+ Receiver1 + + Receiver2 + | + Receiver 1 + + Receiver 2 + | |||
+-----------+ +------------+ | +------------+ +------------+ | |||
The configuration data for R1 in the above figure could be as follows: | ||||
{ | The configuration data for R1 in the above figure could be as | |||
"ietf-interfaces:interfaces": { | follows: | |||
"interface": [ | ||||
{ | ||||
"name": "eth1/1", | ||||
"type": "iana-if-type:ipForward", | ||||
"ietf-ip:ipv4": { | ||||
"address": [ | ||||
{ | ||||
"ip": "203.0.113.1", | ||||
"prefix-length": 24 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
] | ||||
}, | ||||
"ietf-routing:routing": { | { | |||
"control-plane-protocols": { | "ietf-interfaces:interfaces": { | |||
"control-plane-protocol": [ | "interface": [ | |||
{ | { | |||
"type": "ietf-igmp-mld-proxy:igmp-proxy", | "name": "eth1/1", | |||
"name": "proxy1", | "type": "iana-if-type:ipForward", | |||
"ietf-igmp-mld-proxy:igmp-proxy": { | "ietf-ip:ipv4": { | |||
"interfaces": { | "address": [ | |||
"interface": [ | { | |||
{ | "ip": "203.0.113.1", | |||
"name": "eth1/1", | "prefix-length": 24 | |||
"igmp-version": 3, | } | |||
"enabled": true | ] | |||
} | } | |||
] | } | |||
} | ] | |||
} | }, | |||
} | "ietf-routing:routing": { | |||
] | "control-plane-protocols": { | |||
} | "control-plane-protocol": [ | |||
} | { | |||
} | "type": "ietf-igmp-mld-proxy:igmp-proxy", | |||
"name": "proxy1", | ||||
"ietf-igmp-mld-proxy:igmp-proxy": { | ||||
"interfaces": { | ||||
"interface": [ | ||||
{ | ||||
"name": "eth1/1", | ||||
"igmp-version": 3, | ||||
"enabled": true | ||||
} | ||||
] | ||||
} | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
} | ||||
The corresponding operational state data for R1 could be as follows: | The corresponding operational state data for R1 could be as follows: | |||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "eth1/1", | "name": "eth1/1", | |||
"type": "iana-if-type:ipForward", | "type": "iana-if-type:ipForward", | |||
"admin-status": "up", | "admin-status": "up", | |||
"oper-status": "up", | "oper-status": "up", | |||
"if-index": 25678136, | "if-index": 25678136, | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2021-05-23T10:34:56-06:00" | "discontinuity-time": "2021-05-23T10:34:56-06:00" | |||
}, | }, | |||
"ietf-ip:ipv4": { | "ietf-ip:ipv4": { | |||
"address": [ | "address": [ | |||
{ | { | |||
"ip": "203.0.113.1", | "ip": "203.0.113.1", | |||
"prefix-length": 24 | "prefix-length": 24 | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
}, | }, | |||
"ietf-routing:routing": { | "ietf-routing:routing": { | |||
"control-plane-protocols": { | "control-plane-protocols": { | |||
"control-plane-protocol": [ | "control-plane-protocol": [ | |||
{ | { | |||
"type": "ietf-igmp-mld-proxy:igmp-proxy", | "type": "ietf-igmp-mld-proxy:igmp-proxy", | |||
"name": "proxy1", | "name": "proxy1", | |||
"ietf-igmp-mld-proxy:igmp-proxy": { | "ietf-igmp-mld-proxy:igmp-proxy": { | |||
"interfaces": { | "interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "eth1/1", | "name": "eth1/1", | |||
"igmp-version": 3, | "igmp-version": 3, | |||
"enabled": true, | "enabled": true, | |||
"group": [ | "group": [ | |||
{ | { | |||
"group-address": "233.252.0.23", | "group-address": "233.252.0.23", | |||
"filter-mode": "include", | "filter-mode": "include", | |||
"source": [ | "source": [ | |||
{ | { | |||
"source-address": "192.0.2.1", | "source-address": "192.0.2.1", | |||
"downstream-interface": [ | "downstream-interface": [ | |||
{ | { | |||
"name": "eth1/2" | "name": "eth1/2" | |||
}, | }, | |||
{ | { | |||
"name": "eth1/3" | "name": "eth1/3" | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
Authors' Addresses | Authors' Addresses | |||
Hongji Zhao | Hongji Zhao | |||
Ericsson (China) Communications Company Ltd. | Ericsson (China) Communications Company Ltd. | |||
Ericsson Tower, No. 5 Lize East Street, | Ericsson Tower, No. 5 Lize East Street | |||
ChaoYANG District Beijing 100102, China | Beijing | |||
100102 | ||||
China | ||||
Email: hongji.zhao@ericsson.com | Email: hongji.zhao@ericsson.com | |||
Xufeng Liu | Xufeng Liu | |||
IBM Corporation | Alef Edge | |||
2300 Dulles Station Blvd. | ||||
Herndon, VA 20171 | ||||
United States of America | United States of America | |||
EMail: Xufeng.liu.ietf@gmail.com | Email: xufeng.liu.ietf@gmail.com | |||
Yisong Liu | Yisong Liu | |||
China Mobile | China Mobile | |||
China | China | |||
Email: liuyisong@chinamobile.com | Email: liuyisong@chinamobile.com | |||
Mani Panchanathan | Mani Panchanathan | |||
Cisco Systems | Cisco Systems, Inc. | |||
India | 3625 Cisco Way | |||
San Jose, CA | ||||
United States of America | ||||
Email: mapancha@cisco.com | Email: mapancha@cisco.com | |||
Mahesh Sivakumar | Mahesh Sivakumar | |||
Juniper Networks | Juniper Networks | |||
1133 Innovation Way | 1133 Innovation Way | |||
Sunnyvale, California | Sunnyvale, CA | |||
USA | United States of America | |||
EMail: sivakumar.mahesh@gmail.com | Email: sivakumar.mahesh@gmail.com | |||
End of changes. 141 change blocks. | ||||
797 lines changed or deleted | 841 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |