| 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. | ||||