rfc9398xml2.original.xml   rfc9398.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC3376 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF <!-- [CS] updated by Chris 01/19/23 -->
C.3376.xml">
<!ENTITY RFC3688 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF <!DOCTYPE rfc [
C.3688.xml"> <!ENTITY nbsp "&#160;">
<!ENTITY RFC3810 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF <!ENTITY zwsp "&#8203;">
C.3810.xml"> <!ENTITY nbhy "&#8209;">
<!ENTITY RFC4605 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF <!ENTITY wj "&#8288;">
C.4605.xml">
<!ENTITY RFC6020 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.6020.xml">
<!ENTITY RFC6241 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.6241.xml">
<!ENTITY RFC6242 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.6242.xml">
<!ENTITY RFC6991 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.6991.xml">
<!ENTITY RFC7950 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.7950.xml">
<!ENTITY RFC8040 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8040.xml">
<!ENTITY RFC8294 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8294.xml">
<!ENTITY RFC8341 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8341.xml">
<!ENTITY RFC8342 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8342.xml">
<!ENTITY RFC8343 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8343.xml">
<!ENTITY RFC8349 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8349.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8446.xml">
<!ENTITY RFC8652 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8652.xml">
<!ENTITY RFC9128 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.9128.xml">
<!ENTITY RFC7761 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.7761.xml">
<!ENTITY RFC7951 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.7951.xml">
<!ENTITY RFC8340 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8340.xml">
<!ENTITY RFC8407 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF
C.8407.xml">
]> ]>
<rfc submissionType="IETF" docName="draft-ietf-pim-igmp-mld-proxy-yang-10" categ
ory="std" ipr="trust200902">
<!-- Generated by id2xml 1.5.0 on 2023-01-18T23:48:39Z -->
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="no"?>
<?rfc text-list-symbols="**o+-"?>
<?rfc toc="yes"?>
<front>
<title>A YANG Data Model for IGMP/MLD Proxy</title>
<author initials="H." surname="Zhao" fullname="Hongji Zhao">
<organization abbrev="Ericsson">Ericsson (China) Communications Company L
td.</organization>
<address><postal>
<street>Ericsson Tower</street>
<street>No. 5 Lize East Street</street>
<city>ChaoYANG District Beijing</city>
<code>100102</code>
<country>China</country>
</postal>
<email>hongji.zhao@ericsson.com</email>
</address>
</author>
<author initials="X." surname="Liu" fullname="Xufeng Liu"> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="
<organization>IBM Corporation</organization> std" consensus="true" docName="draft-ietf-pim-igmp-mld-proxy-yang-10" number="93
<address><postal> 98" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortR
<street>2300 Dulles Station Blvd.</street> efs="true" tocInclude="true" version="3">
<city>Herndon</city>
<region>VA</region>
<code>20171</code>
<country>United States of America</country>
</postal>
<email>Xufeng.liu.ietf@gmail.com</email>
</address>
</author>
<author initials="Y." surname="Liu" fullname="Yisong Liu"> <!-- xml2rfc v2v3 conversion 3.15.3 -->
<organization>China Mobile</organization> <!-- Generated by id2xml 1.5.0 on 2023-01-18T23:48:39Z -->
<address><postal> <front>
<street></street> <title abbrev="IGMP/MLD Proxy YANG Module">A YANG Data Model for Internet Gr
<city></city> oup Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Proxy Devi
<region></region> ces</title>
<code></code>
<country>China</country>
</postal>
<email>liuyisong@chinamobile.com</email>
</address>
</author>
<author initials="M." surname="Panchanathan" fullname="Mani Panchanathan" <seriesInfo name="RFC" value="9398"/>
> <author initials="H." surname="Zhao" fullname="Hongji Zhao">
<organization>Cisco Systems</organization> <organization abbrev="Ericsson">Ericsson (China) Communications Company Lt
<address><postal> d.</organization>
<street></street> <address>
<postal>
<street>Ericsson Tower, No. 5 Lize East Street</street>
<city>Beijing</city>
<code>100102</code>
<country>China</country>
</postal>
<email>hongji.zhao@ericsson.com</email>
</address>
</author>
<author initials="X." surname="Liu" fullname="Xufeng Liu">
<organization>Alef Edge</organization>
<address>
<postal>
<street></street>
<city></city> <city></city>
<region></region> <region></region>
<code></code> <code></code>
<country>India</country> <country>United States of America</country>
</postal> </postal>
<email>mapancha@cisco.com</email> <email>xufeng.liu.ietf@gmail.com</email>
</address> </address>
</author> </author>
<author initials="Y." surname="Liu" fullname="Yisong Liu">
<author initials="M." surname="Sivakumar" fullname="Mahesh Sivakumar"> <organization>China Mobile</organization>
<organization abbrev="Juniper">Juniper Networks</organization> <address>
<address><postal> <postal>
<street>1133 Innovation Way</street> <street/>
<city>Sunnyvale</city> <city/>
<region>California</region> <region/>
<country>USA</country> <code/>
</postal> <country>China</country>
<email>sivakumar.mahesh@gmail.com</email> </postal>
</address> <email>liuyisong@chinamobile.com</email>
</author> </address>
<date year="2023" month="January"/> </author>
<area>rtg</area> <author initials="M." surname="Panchanathan" fullname="Mani Panchanathan">
<workgroup>pim</workgroup> <organization>Cisco Systems, Inc.</organization>
<address>
<!-- [rfced] Please insert any keywords (beyond those that appear in the title) <postal>
for use on https://www.rfc-editor.org/search. --> <street>3625 Cisco Way</street>
<city>San Jose</city>
<region>CA</region>
<code/>
<country>United States of America</country>
</postal>
<email>mapancha@cisco.com</email>
</address>
</author>
<author initials="M." surname="Sivakumar" fullname="Mahesh Sivakumar">
<organization abbrev="Juniper">Juniper Networks</organization>
<address>
<postal>
<street>1133 Innovation Way</street>
<city>Sunnyvale</city>
<region>CA</region>
<country>United States of America</country>
</postal>
<email>sivakumar.mahesh@gmail.com</email>
</address>
</author>
<date year="2023" month="May"/>
<area>rtg</area>
<workgroup>pim</workgroup>
<keyword>example</keyword> <keyword>IGMP Proxy</keyword>
<keyword>MLD Proxy</keyword>
<keyword>YANG</keyword>
<abstract> <abstract>
<t>This document defines a YANG data model that can be used to configure <t>This document defines a YANG data model that can be used to configure
and manage Internet Group Management Protocol (IGMP) or Multicast and manage Internet Group Management Protocol (IGMP) or Multicast
Listener Discovery (MLD) proxy devices. The YANG module in this document Listener Discovery (MLD) Proxy devices. The YANG module in this document
conforms to Network Management Datastore Architecture (NMDA).</t> conforms to the Network Management Datastore Architecture (NMDA).</t>
</abstract> </abstract>
</front> </front>
<middle>
<middle> <section anchor="sect-1" numbered="true" toc="default">
<section title="Introduction" anchor="sect-1"><t> <name>Introduction</name>
This document defines a YANG <xref target="RFC7950"/> data model for the mana <t>
gement of This document defines a YANG data model <xref target="RFC7950" format="defaul
t"/> for the management of
Internet Group Management Protocol (IGMP) or Multicast Listener Discovery Internet Group Management Protocol (IGMP) or Multicast Listener Discovery
(MLD) Proxy <xref target="RFC4605"/> devices. The YANG module in this documen (MLD) Proxy devices <xref target="RFC4605" format="default"/>. The YANG modul
t conforms to e in this document conforms to
the Network Management Datastore Architecture defined in <xref target="RFC834 the Network Management Datastore Architecture as defined in <xref target="RFC
2"/>.</t> 8342" format="default"/>.</t>
<section anchor="sect-1.1" numbered="true" toc="default">
<section title="Terminology" anchor="sect-1.1"><t> <name>Terminology</name>
The terminology for describing YANG data models is found in <xref target="RFC <t>
6020"/> and The terminology for describing YANG data models is found in <xref target="RFC
<xref target="RFC7950"/>, including: 6020" format="default"/> and
<xref target="RFC7950" format="default"/>, including:
<list style="symbols">
<t>augment</t>
<t>data model</t>
<t>data node</t>
<t>identity</t>
<t>module</t>
</list></t>
<t>The following abbreviations are used in this document and defined model:
<list>
<t>IGMP: Internet Group Management Protocol <xref target="RFC3376"/>.</t>
<t>MLD: Multicast Listener Discovery <xref target="RFC3810"/>.</t>
<t>PIM: Protocol Independent Multicast <xref target="RFC7761"/>.</t>
</list></t>
</section>
<section title="Tree Diagrams" anchor="sect-1.2"><t>
Tree diagrams used in this document follow the notation defined in <xref targ
et="RFC8340"/>.</t>
</section> </t>
<ul spacing="normal">
<li>augment</li>
<li>data model</li>
<li>data node</li>
<li>identity</li>
<li>module</li>
</ul>
<t>The following abbreviations are used in this document and in the defi
ned YANG data model:
<section title="Prefixes in Data Node Names" anchor="sect-1.3"><t> </t>
In this document, names of data nodes, and other data model objects are <dl spacing="normal">
often used without a prefix, as long as it is clear from the context in <dt>IGMP:</dt><dd>Internet Group Management Protocol <xref target="RFC
which YANG module each name is defined. Otherwise, names are prefixed using 3376" format="default"/>.</dd>
<dt>MLD:</dt><dd>Multicast Listener Discovery <xref target="RFC3810" f
ormat="default"/>.</dd>
<dt>PIM:</dt><dd>Protocol Independent Multicast <xref target="RFC7761"
format="default"/>.</dd>
</dl>
</section>
<section anchor="sect-1.2" numbered="true" toc="default">
<name>Tree Diagrams</name>
<t>
Tree diagrams used in this document follow the notation defined in <xref targ
et="RFC8340" format="default"/>.</t>
</section>
<section anchor="sect-1.3" numbered="true" toc="default">
<name>Prefixes in Data Node Names</name>
<t>
In this document, names of data nodes and other data model objects are
often used without a prefix, as long as the context clearly indicates
the YANG module in which each name is defined. Otherwise, names are prefixed
using
the standard prefix associated with the corresponding YANG module, as shown the standard prefix associated with the corresponding YANG module, as shown
in Table 1.</t> in <xref target="tab-1"/>.</t>
<table anchor="tab-1">
<!-- Please review id2xml Warning: Unexpected title: expected 'Figure ...', <name>Prefixes and Corresponding YANG Modules</name>
found 'Table 1: Prefixes and Corresponding YANG Modules'. This looks <thead>
like a figure that has been entered as a texttable. The generated XML <tr>
will need adjustment. --> <th>Prefix</th>
<th>YANG Module</th>
<figure title="Prefixes and Corresponding YANG Modules" <th>Reference</th>
anchor="fig1"><artwork><![CDATA[ </tr>
+----------+-----------------------+--------------------------------+ </thead>
| Prefix | YANG module | Reference | <tbody>
+==========+=======================+================================+ <tr>
| inet | ietf-inet-types | [RFC6991] | <td>inet</td>
+----------+-----------------------+--------------------------------+ <td>ietf-inet-types</td>
| if | ietf-interfaces | [RFC8343] | <td><xref target="RFC6991"/></td>
+----------+-----------------------+--------------------------------+ </tr>
| rt | ietf-routing | [RFC8349] | <tr>
+----------+-----------------------+--------------------------------+ <td>if</td>
| rt-types | ietf-routing-types | [RFC8294] | <td>ietf-interfaces</td>
+----------+-----------------------+--------------------------------+ <td><xref target="RFC8343"/></td>
| pim-base | ietf-pim-base | [RFC9128] | </tr>
+----------+-----------------------+--------------------------------+ <tr>
]]></artwork> <td>rt</td>
</figure> <td>ietf-routing</td>
</section> <td><xref target="RFC8349"/></td>
</tr>
</section> <tr>
<td>rt-types</td>
<section title="Design of Data Model" anchor="sect-2"><t> <td>ietf-routing-types</td>
The model covers Internet Group Management Protocol (IGMP) / Multicast <td><xref target="RFC8294"/></td>
Listener Discovery (MLD) - Based Multicast Forwarding ("IGMP/MLD Proxying") </tr>
<xref target="RFC4605"/>. The goal of this document is to define a data model <tr>
that <td>pim-base</td>
provides a common user interface to IGMP/MLD Proxy.</t> <td>ietf-pim-base</td>
<td><xref target="RFC9128"/></td>
<section title="Overview" anchor="sect-2.1"><t> </tr>
</tbody>
</table>
</section>
</section>
<section anchor="sect-2" numbered="true" toc="default">
<name>Design of Data Model</name>
<t>
The model covers forwarding based on IGMP and MLD proxying <xref target="RFC4
605" format="default"/>. One goal of this document is to define a data model tha
t
provides a common user interface for IGMP/MLD Proxy devices.</t>
<section anchor="sect-2.1" numbered="true" toc="default">
<name>Overview</name>
<t>
The model defined in this document has all the common building blocks for The model defined in this document has all the common building blocks for
the IGMP/MLD Proxy devices. It can be used to configure IGMP/MLD Proxy. The IGMP/MLD Proxy devices and can be used to configure those devices. The
operational state data and statistics can also be retrieved by it.</t> operational state data and statistics can also be retrieved via this model.</
t>
</section> </section>
<section anchor="sect-2.2" numbered="true" toc="default">
<section title="Optional Features" anchor="sect-2.2"><t> <name>Optional Features</name>
<t>
This model is designed to represent the basic capability subsets of This model is designed to represent the basic capability subsets of
IGMP/MLD Proxy. The main design goals of this document are that the basic IGMP/MLD Proxies. The main design goals of this document are that (1) the bas
capabilities described in the model are supported by any major now-existing ic
implementation, and that the configuration of all implementations meeting capabilities described in the model will be supported by any major
the specifications is easy to express through some combination of the implementations that exist at the time of this writing and (2) the configurat
ion 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.</t> optional features in the model and simple vendor augmentations.</t>
<t>
<t>
This model declares two features representing capabilities that not all This model declares two features representing capabilities that not all
deployed devices support. One feature is igmp-proxy, and the other feature deployed devices support. One feature is called "igmp-proxy", and the other f
is mld-proxy. Either or both features could be implemented, which could eature
is called "mld-proxy". Either or both features could be implemented; this wou
ld
provide more choices for vendors.</t> provide more choices for vendors.</t>
</section>
</section> <section anchor="sect-2.3" numbered="true" toc="default">
<name>Position of Address Family in Hierarchy</name>
<section title="Position of Address Family in Hierarchy" anchor="sect-2.3 <t>
"><t> IGMP Proxies only support IPv4, while MLD Proxies only support IPv6. The data
IGMP Proxy only supports IPv4, while MLD Proxy only supports IPv6. The data
model defined in this document can be used for both IPv4 and IPv6 address model defined in this document can be used for both IPv4 and IPv6 address
families.</t> families.</t>
<t>
This document defines IGMP Proxies and MLD Proxies in separate schema branche
s
in the structure. The benefits of this technique are as follows:
<t> </t>
This document defines IGMP Proxy and MLD Proxy as separate schema branches <ul spacing="normal">
in the structure. The benefits are: <li>The model can support IGMP Proxies (IPv4), MLD Proxies (IPv6), or
both,
<list style="symbols">
<t>The model can support IGMP Proxy (IPv4), MLD Proxy (IPv6), or both
optionally and independently. Such flexibility cannot be achieved cleanly optionally and independently. Such flexibility cannot be achieved cleanly
with a combined branch.</t> with a combined branch.</li>
<li>The structure is consistent with other YANG data models such as th
<t>The structure is consistent with other YANG data models such as <xref e model defined in <xref target="RFC8652" format="default"/>, which uses separat
target="RFC8652"/>, which uses separate branches for IPv4 and IPv6.</t> e branches for IPv4 and IPv6.</li>
<li>Having separate branches for IGMP Proxies and MLD Proxies allows m
<t>Having separate branches for IGMP Proxy and MLD Proxy allows minor inor
differences in their behavior to be modelled more simply and cleanly. The differences in their behavior to be modeled more simply and cleanly. The
two branches can better support different features and node types.</t> two branches can better support different features and node types.</li>
</ul>
</list></t> </section>
</section>
</section> <section anchor="sect-3" numbered="true" toc="default">
<name>Module Structure</name>
</section> <t>This model augments the core routing data model specified in <xref targ
et="RFC8349"/>.</t>
<section title="Module Structure" anchor="sect-3"><t>This model augments <sourcecode name="" type="yangtree"><![CDATA[
the core routing data model specified in [RFC8349].</t>
<figure><artwork><![CDATA[
+--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
]]></artwork> ]]></sourcecode>
</figure> <t>
<t> The "igmp-proxy" container instantiates an IGMP Proxy. The "mld-proxy"
The "igmp-proxy" container instantiates IGMP Proxy. The "mld-proxy" container instantiates an MLD Proxy.</t>
container instantiates MLD Proxy.</t> <section anchor="sect-3.1" numbered="true" toc="default">
<name>IGMP Proxy Configuration and Operational State</name>
<section title="IGMP Proxy Configuration and Operational State" anchor="s <t>
ect-3.1"><t>
The YANG module augments The YANG module augments
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol to add the /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol to add the
igmp-proxy container.</t> igmp-proxy container.</t>
<t>
<t> All attributes related to IGMP Proxies are defined in the igmp-proxy
All the IGMP Proxy related attributes are defined in the igmp-proxy
container. The read-write attributes represent configurable data. The container. The read-write attributes represent configurable data. The
read-only attributes represent state data.</t> read-only attributes represent state data.</t>
<t>
<t> The igmp-version parameter represents the IGMP protocol version; the default
The igmp-version represents the version of IGMP protocol, and the default value is 2. If the value of the "enabled" parameter is "true", it means that
value is 2. If the value of enabled is true, it means IGMP Proxy is the IGMP Proxy is
enabled.</t> enabled.</t>
<t>
<t> The interface list under igmp-proxy contains upstream interfaces for an IGMP
The interface list under igmp-proxy contains upstream interfaces for IGMP Proxy. A constraint is provided to make sure that the upstream interface for
proxy. There is also a constraint to make sure the upstream interface for the IGMP Proxy is not configured to use PIM.</t>
IGMP proxy is not configured to use PIM.</t> <t>
To configure a downstream interface for an IGMP Proxy, the ability to enable
<t> IGMP on that interface is needed. This is defined in
To configure a downstream interface for IGMP proxy, it is needed to enable "<xref target="RFC8652" format="title"/>" <xref target="RFC8652" format="defa
IGMP on that interface. This is defined in the YANG Data Model for Internet ult"/>.</t>
Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) <sourcecode name="" type="yangtree"><![CDATA[
<xref target="RFC8652"/>.</t>
<figure><artwork><![CDATA[
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
]]></artwork> ]]></sourcecode>
</figure> </section>
</section> <section anchor="sect-3.2" numbered="true" toc="default">
<name>MLD Proxy Configuration and Operational State</name>
<section title="MLD Proxy Configuration and Operational State" anchor="se <t>
ct-3.2"><t>
The YANG module augments The YANG module augments
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol to add the /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol to add the
mld-proxy container.</t> mld-proxy container.</t>
<t>
<t> All attributes related to MLD Proxies are defined in the mld-proxy
All the MLD Proxy related attributes are defined in the mld-proxy
container. The read-write attributes represent configurable data. The container. The read-write attributes represent configurable data. The
read-only attributes represent state data.</t> read-only attributes represent state data.</t>
<t>
<t> The mld-version parameter represents the MLD protocol version; the default va
The mld-version represents the version of MLD protocol, and default value lue
is 2. If the value of enabled is true, it means MLD Proxy is enabled.</t> is 2. If the value of the "enabled" parameter is "true", it means that the ML
D Proxy is enabled.</t>
<t> <t>
The interface list under mld-proxy contains upstream interfaces for MLD The interface list under mld-proxy contains upstream interfaces for an MLD
proxy. There is also a constraint to make sure the upstream interface for Proxy. A constraint is provided to make sure that the upstream interface for
MLD proxy is not configured to use PIM.</t> the MLD Proxy is not configured to use PIM.</t>
<t>
<t> To configure a downstream interface for an MLD Proxy, enable MLD on that
To configure a downstream interface for MLD proxy, enable MLD on that interface. This is defined in "<xref target="RFC8652" format="title"/>" <xref
interface. This is defined in the YANG Data Model for Internet Group target="RFC8652" format="default"/>.</t>
Management Protocol (IGMP) and Multicast Listener Discovery (MLD) <sourcecode name="" type="yangtree"><![CDATA[
<xref target="RFC8652"/>.</t>
<figure><artwork><![CDATA[
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
]]></artwork> ]]></sourcecode>
</figure> </section>
</section> </section>
<section anchor="sect-4" numbered="true" toc="default">
</section> <name>IGMP/MLD Proxy YANG Module</name>
<t>
<section title="IGMP/MLD Proxy YANG Module" anchor="sect-4"><t> This module references <xref target="RFC4605" format="default"/>, <xref targe
This module references <xref target="RFC4605"/>, <xref target="RFC6991"/>, <x t="RFC6991" format="default"/>, <xref target="RFC8294" format="default"/>, <xref
ref target="RFC8294"/>, <xref target="RFC8343"/>, target="RFC8343" format="default"/>,
<xref target="RFC8349"/> and <xref target="RFC9128"/>.</t> <xref target="RFC8349" format="default"/>, and <xref target="RFC9128" form
at="default"/>.</t>
<figure><artwork><![CDATA[ <sourcecode name="ietf-igmp-mld-proxy@2023-04-25.yang" type="yang" markers
<CODE BEGINS> file ietf-igmp-mld-proxy@2022-12-07.yang ="true"><![CDATA[
module ietf-igmp-mld-proxy { module ietf-igmp-mld-proxy {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy"; namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy";
// replace with IANA namespace when assigned
prefix igmp-mld-proxy; prefix igmp-mld-proxy;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-routing { import ietf-routing {
prefix rt; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-routing-types { import ietf-routing-types {
prefix rt-types; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-pim-base { import ietf-pim-base {
prefix pim-base; prefix pim-base;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent Multicast "RFC 9128: YANG Data Model for Protocol Independent Multicast
(PIM)"; (PIM)";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org>
contact Editors: Hongji Zhao
"WG Web: <https://datatracker.ietf.org/wg/pim/about/> <mailto:hongji.zhao@ericsson.com>
WG List: <mailto:pim@ietf.org>
Editors: Hongji Zhao Xufeng Liu
<mailto:hongji.zhao@ericsson.com> <mailto:xufeng.liu.ietf@gmail.com>
Xufeng Liu Yisong Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:liuyisong@chinamobile.com>
Yisong Liu Mani Panchanathan
<mailto:liuyisong@chinamobile.com> <mailto:mapancha@cisco.com>
Mani Panchanathan Mahesh Sivakumar
<mailto:mapancha@cisco.com> <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.
Mahesh Sivakumar Copyright (c) 2023 IETF Trust and the persons identified as
<mailto:sivakumar.mahesh@gmail.com> authors of the code. All rights reserved.
"; Redistribution and use in source and binary forms, with or
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).
description This version of this YANG module is part of RFC 9398; see the
"The module defines a collection of YANG definitions common for RFC itself for full legal notices.";
all Internet Group Management Protocol (IGMP) and Multicast
Listener Discovery (MLD) Proxy devices.
Copyright (c) 2022 IETF Trust and the persons identified as revision 2023-04-25 {
authors of the code. All rights reserved. description
"Initial revision.";
reference
"RFC 9398: A YANG Data Model for Internet Group Management
Protocol (IGMP) and Multicast Listener Discovery (MLD)
Proxy Devices";
}
Redistribution and use in source and binary forms, with or /*
without modification, is permitted pursuant to, and subject to * Features
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 feature igmp-proxy {
RFC itself for full legal notices."; 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')";
}
revision 2022-12-07 { feature mld-proxy {
description description
"Initial revision."; "Support for the MLD Proxy protocol.";
reference reference
"RFC XXXX: A YANG Data Model for IGMP and MLD Proxy"; "RFC 4605: Internet Group Management Protocol (IGMP) /
} Multicast Listener Discovery (MLD)-Based Multicast Forwarding
('IGMP/MLD Proxying')";
}
/* /*
* Features * Identities
*/ */
feature igmp-proxy { identity igmp-proxy {
description base rt:control-plane-protocol;
"Support IGMP Proxy protocol."; description
reference "IGMP Proxy protocol.";
"RFC 4605"; }
}
feature mld-proxy { identity mld-proxy {
description base rt:control-plane-protocol;
"Support MLD Proxy protocol."; description
reference "MLD Proxy protocol.";
"RFC 4605"; }
}
/* /*
* Identities * Groupings
*/ */
identity igmp-proxy { grouping per-interface-config-attributes {
base rt:control-plane-protocol; description
description "'config' attributes as listed under an interface entry.";
"IGMP Proxy protocol"; leaf enabled {
} type boolean;
default "true";
description
"Set the value to 'true' to enable the IGMP/MLD Proxy.";
}
} // per-interface-config-attributes
identity mld-proxy { grouping state-group-attributes {
base rt:control-plane-protocol; description
description "State group attributes.";
"MLD Proxy protocol"; leaf up-time {
} type uint32;
units "seconds";
description
"The elapsed time for (S,G) or (*,G).";
}
leaf filter-mode {
type enumeration {
enum include {
description
"In 'include' mode, reception of packets sent
to the specified multicast address is requested
only from those IP source addresses listed in the
'source' list parameter.";
}
enum exclude {
description
"In 'exclude' mode, reception of packets sent
to the given multicast address is requested
from all IP source addresses except those
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 */
* Groupings
*/
grouping per-interface-config-attributes { augment "/rt:routing/rt:control-plane-protocols"
description "Config attributes under interface view"; + "/rt:control-plane-protocol" {
leaf enabled { when "derived-from-or-self(rt:type, "
type boolean; + "'igmp-mld-proxy:igmp-proxy')" {
default true; description
description "This augmentation is only valid for IGMP Proxies.";
"Set the value to true to enable IGMP/MLD proxy"; }
}
} // per-interface-config-attributes
grouping state-group-attributes {
description
"State group attributes";
leaf up-time {
type uint32;
units seconds;
description description
"The elapsed time for (S,G) or (*,G)."; "IGMP Proxy augmentation to routing control plane protocol
} configuration and state.";
leaf filter-mode { container igmp-proxy {
type enumeration { if-feature "igmp-proxy";
enum "include" { presence "IGMP Proxy configuration.";
description description
"In include mode, reception of packets sent "IGMP Proxy instance configuration.";
to the specified multicast address is requested container interfaces {
only from those IP source addresses listed in the
source-list parameter";
}
enum "exclude" {
description description
"In exclude mode, reception of packets sent "Contains a list of upstream interfaces.";
to the given multicast address is requested list interface {
from all IP source addresses except those key "name";
listed in the source-list parameter."; description
} "List of upstream interfaces.";
leaf name {
type if:interface-ref;
must 'not( current() = /rt:routing'
+ '/rt:control-plane-protocols/pim-base:pim'
+ '/pim-base:interfaces/pim-base:interface'
+ '/pim-base:name )' {
description
"The upstream interface for the IGMP Proxy
must not be configured to use PIM.";
}
description
"The upstream interface name.";
}
leaf igmp-version {
type uint8 {
range "1..3";
}
default "2";
description
"IGMP version.";
}
uses per-interface-config-attributes;
leaf sender-source-address {
type inet:ipv4-address-no-zone;
description
"The sender source address of an
IGMP membership report message or leave message.";
}
list group {
key "group-address";
config false;
description
"List of the multicast groups in the membership
database built on this upstream interface.";
leaf group-address {
type rt-types:ipv4-multicast-group-address;
description
"Multicast group address.";
}
uses state-group-attributes;
list source {
key "source-address";
description
"Multicast source information
for the multicast group.";
leaf source-address {
type inet:ipv4-address-no-zone;
description
"Multicast source address.";
}
leaf up-time {
type uint32;
units "seconds";
description
"The elapsed time for (S,G) or (*,G).";
}
list downstream-interface {
key "name";
description
"List of downstream interfaces.";
leaf name {
type if:interface-ref;
description
"Downstream interfaces
for each upstream interface.";
}
}
} // list source
} // list group
} // interface
} // interfaces
} }
mandatory true;
description
"Filter mode for a multicast group,
may be either include or exclude.";
} }
} // state-group-attributes
/* 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:mld-proxy')" {
description description
"This augmentation is only valid for IGMP Proxy."; "This augmentation is only valid for MLD Proxies.";
} }
description description
"IGMP Proxy augmentation to routing control plane protocol "MLD Proxy augmentation to routing control plane protocol
configuration and state."; configuration and state.";
container igmp-proxy { container mld-proxy {
if-feature "igmp-proxy"; if-feature "mld-proxy";
presence "IGMP Proxy configuration."; presence "MLD Proxy configuration.";
description "IGMP 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 IGMP 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 igmp-version { "The upstream interface name.";
type uint8 { }
range "1..3"; leaf mld-version {
} type uint8 {
default 2; range "1..2";
description "IGMP version."; }
} default "2";
uses per-interface-config-attributes; description
leaf sender-source-address { "MLD 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: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: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: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:ipv4-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
}
}
augment "/rt:routing/rt:control-plane-protocols"+
"/rt:control-plane-protocol" {
when
"derived-from-or-self(rt:type, 'igmp-mld-proxy:mld-proxy')" {
description
"This augmentation is only valid for MLD Proxy.";
}
description
"MLD Proxy augmentation to routing control plane protocol
configuration and state.";
container mld-proxy {
if-feature "mld-proxy";
presence "MLD Proxy configuration.";
description "MLD Proxy instance configuration.";
container interfaces {
description
"Containing a list of upstream interfaces.";
list interface {
key "name";
description
"List of upstream interfaces.";
leaf name {
type if:interface-ref;
must "not( current() = /rt:routing"+
"/rt:control-plane-protocols/pim-base:pim"+
"/pim-base:interfaces/pim-base:interface"+
"/pim-base:name )" {
description
"The upstream interface for MLD proxy
must not be configured to use PIM.";
}
description "The upstream interface name.";
}
leaf mld-version {
type uint8 {
range "1..2";
}
default 2;
description "MLD version.";
}
uses per-interface-config-attributes;
leaf sender-source-address {
type inet:ipv6-address-no-zone;
description
"The sender source address of
MLD membership report message or leave message.";
}
list group {
key "group-address";
config false;
description
"Multicast group membership information
that joined on the interface.";
leaf group-address {
type rt-types:ipv6-multicast-group-address;
description
"Multicast group address.";
}
uses state-group-attributes;
list source {
key "source-address";
description
"List of multicast source information
of the multicast group.";
leaf source-address {
type inet:ipv6-address-no-zone;
description
"Multicast source address";
}
leaf up-time {
type uint32;
units seconds;
description
"The elapsed time for (S,G) or (*,G).";
}
list downstream-interface {
key "name";
description "The downstream interfaces list.";
leaf name {
type if:interface-ref;
description
"Downstream interfaces
for each upstream-interface";
} }
} }
} // list source } // list source
} // list group } // list group
} // interface } // interface
} // interfaces } // interfaces
} }
} }
} }
<CODE ENDS> ]]></sourcecode>
]]></artwork> </section>
</figure> <section anchor="sect-5" numbered="true" toc="default">
</section> <name>Security Considerations</name>
<t>The YANG module specified in this document defines a schema for data
<section title="Security Considerations" anchor="sect-5"><t> that is designed to be accessed via network management protocols such
The YANG module specified in this document defines a schema for data as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
that is designed to be accessed via network management protocols such The lowest NETCONF layer is the secure transport layer, and the
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The mandatory-to-implement secure transport is Secure Shell (SSH)
lowest NETCONF layer <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the
is the secure transport layer, and the mandatory-to-implement secure mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>
transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/
layer >
is HTTPS, and the mandatory-to-implement secure transport is TLS provides the means to restrict access for particular NETCONF or RESTCONF users
<xref target="RFC8446"/>.</t> to a preconfigured subset of all available NETCONF or RESTCONF protocol
operations and content.</t>
<t> <t>There are a number of data nodes defined in this YANG module that are
The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/ writable/creatable/deletable (i.e., config true, which is the default). These
> data nodes may be considered sensitive or vulnerable in some network
provides the means to restrict access for particular NETCONF or environments. Write operations (e.g., edit-config) to these data nodes without
RESTCONF users to a preconfigured subset of all available NETCONF or proper protection can have a negative effect on network operations. These are
RESTCONF protocol operations and content.</t> the subtrees and data nodes and their sensitivity/vulnerability:</t>
<t>Under
<t>
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).
These data nodes may be considered sensitive or vulnerable in some
network environments. Write operations (e.g., edit-config) to these
data nodes without proper protection can have a negative effect on
network operations. These are the subtrees and data nodes and their
sensitivity/vulnerability:</t>
<t>Under
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/
igmp-mld-proxy:igmp-proxy,</t> igmp-mld-proxy:igmp-proxy:</t>
<dl newline="true">
<t>igmp-mld-proxy:interfaces <dt>igmp-mld-proxy:interfaces</dt>
<list> <dd>This subtree specifies the interface list for an IGMP Proxy. Modifyi
<t>This subtree specifies the interface list for IGMP Proxy. Modifying ng
the configuration may cause IGMP Proxy interface to be deleted or the configuration may cause the IGMP Proxy interface to be deleted or
changed.</t> changed.</dd>
</list></t> <dt>igmp-mld-proxy:interfaces/interface</dt>
<dd>This subtree specifies the configuration for the IGMP Proxy
<t>igmp-mld-proxy:interfaces/interface
<list>
<t>This subtree specifies the configuration for the IGMP Proxy
attributes at the interface level. Modifying the configuration may attributes at the interface level. Modifying the configuration may
cause IGMP Proxy to be deleted or changed on a specific interface.</t> cause the IGMP Proxy to be deleted or changed on a specific interface.</dd
</list></t> >
</dl>
<t>Under <t>Under
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/
igmp-mld-proxy:mld-proxy,</t> igmp-mld-proxy:mld-proxy:</t>
<dl newline="true">
<t>igmp-mld-proxy:interfaces <dt>igmp-mld-proxy:interfaces</dt>
<list> <dd>This subtree specifies the interface list for an MLD Proxy. Modifyin
<t>This subtree specifies the interface list for MLD Proxy. Modifying g
the configuration may cause MLD Proxy interface to be deleted or the configuration may cause the MLD Proxy interface to be deleted or
changed.</t> changed.</dd>
</list></t> <dt>igmp-mld-proxy:interfaces/interface</dt>
<dd>This subtree specifies the configuration for the MLD Proxy
<t>igmp-mld-proxy:interfaces/interface
<list>
<t>This subtree specifies the configuration for the MLD Proxy
attributes at the interface level. Modifying the configuration may attributes at the interface level. Modifying the configuration may
cause MLD Proxy to be deleted or changed on a specific cause the MLD Proxy to be deleted or changed on a specific
interface.</t> interface.</dd>
</list></t> </dl>
<t>
<t> Unauthorized access to any data nodes in these subtrees can adversely
Unauthorized access to any data node of 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 to
inappropriate destinations, and other problems.</t> inappropriate destinations, and other problems.</t>
<t>Some of the readable data nodes in this YANG module may be considered
<t> sensitive or vulnerable in some network environments. It is thus important to
Some of the readable data nodes in this YANG module may be considered control read access (e.g., via get, get-config, or notification) to these data
sensitive or vulnerable in some network environments. It is thus nodes. These are the subtrees and data nodes and their
important to control read access (e.g., via get, get-config, or sensitivity/vulnerability:</t>
notification) to these data nodes. These are the subtrees and data <artwork name="" type="" align="left" alt=""><![CDATA[
nodes and their sensitivity/vulnerability:</t>
<figure><artwork><![CDATA[
Under Under
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/
igmp-mld-proxy:igmp-proxy igmp-mld-proxy:igmp-proxy
igmp-mld-proxy:mld-proxy igmp-mld-proxy:mld-proxy
]]></artwork> ]]></artwork>
</figure> <t>
<t> Unauthorized access to any data nodes in these subtrees can disclose
Unauthorized access to any data node of these subtrees can disclose the operational state information about the IGMP/MLD Proxy on this device.
operational state information of IGMP / MLD Proxy on this device. The Group information or source information may expose multicast group membership
group/source information may expose multicast group memberships.</t> s.</t>
</section>
</section> <section anchor="sect-6" numbered="true" toc="default">
<name>IANA Considerations</name>
<section title="IANA Considerations" anchor="sect-6"><t> <section anchor="sect-6.1" numbered="true" toc="default">
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the <name>IETF XML Registry</name>
actual RFC number (and remove this note).</t> <t>
This document registers the following namespace URIs in the "IETF XML
<section title="XML Registry" anchor="sect-6.1"><t> Registry" <xref target="RFC3688" format="default"/>:</t>
This document registers the following namespace URIs in the IETF XML <dl spacing="compact">
registry <xref target="RFC3688"/>:</t> <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy</dd>
<dt>Registrant Contact:</dt><dd>The IESG.</dd>
<figure><artwork><![CDATA[ <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd>
URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy </dl>
Registrant Contact: The IESG. </section>
XML: N/A, the requested URI is an XML namespace. <section anchor="sect-6.2" numbered="true" toc="default">
]]></artwork> <name>YANG Module Names Registry</name>
</figure> <t>This document registers the following YANG module in the "YANG Module
</section> Names" registry <xref target="RFC6020"/>:</t>
<dl spacing="compact">
<section title="YANG Module Names Registry" anchor="sect-6.2"> <dt>Name:</dt><dd>ietf-igmp-mld-proxy</dd>
<t>This document registers the following YANG modules in the YANG Module <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy</dd>
Names registry [RFC7950]:</t> <dt>Prefix:</dt><dd>igmp-mld-proxy</dd>
<dt>Reference:</dt><dd>RFC 9398</dd>
<figure><artwork><![CDATA[ </dl>
name: ietf-igmp-mld-proxy </section>
namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy </section>
prefix: igmp-mld-proxy </middle>
reference: RFC XXXX <back>
]]></artwork> <references>
</figure> <name>References</name>
</section> <references>
<name>Normative References</name>
</section> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
376.xml"/>
</middle> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
688.xml"/>
<back> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
<references title="Normative References"> 810.xml"/>
&RFC3376; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4
&RFC3688; 605.xml"/>
&RFC3810; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
&RFC4605; 020.xml"/>
&RFC6020; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
&RFC6241; 241.xml"/>
&RFC6242; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
&RFC6991; 242.xml"/>
&RFC7950; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
&RFC8040; 991.xml"/>
&RFC8294; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
&RFC8341; 950.xml"/>
&RFC8342; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
&RFC8343; 040.xml"/>
&RFC8349; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
&RFC8446; 294.xml"/>
&RFC8652; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
&RFC9128; 341.xml"/>
</references> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<references title="Informative References"> 342.xml"/>
&RFC7761; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
&RFC7951; 343.xml"/>
&RFC8340; <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
&RFC8407; 349.xml"/>
</references> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<section title="Data Tree Example" anchor="sect-appendix"><t> 446.xml"/>
This section contains an example for IGMP Proxy in the JSON encoding <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<xref target="RFC7951"/>, containing both configuration and state data. In th 652.xml"/>
e example <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
128.xml"/>
</references>
<references>
<name>Informative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
761.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
951.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
340.xml"/>
</references>
</references>
<section anchor="sect-appendix" numbered="true" toc="default">
<name>Data Tree Example</name>
<t>
This section contains an example for the IGMP Proxy, shown in JSON encoding
<xref target="RFC7951" format="default"/> and containing both configuration a
nd state data. In the example, the
IGMP Proxy is enabled on interface eth1/1.</t> IGMP Proxy is enabled on interface eth1/1.</t>
<t>
<t> The ability to enable IGMP on eth1/2 and eth1/3 is also needed. The configura
It is also needed to enable IGMP on eth1/2 and eth1/3. The configuration tion
details are omitted here because this document is focused on IGMP/MLD details are omitted here because this document is focused on IGMP/MLD
Proxy.</t> Proxies.</t>
<artwork name="" type="" align="left" alt=""><![CDATA[
<figure><artwork><![CDATA[
+-----------+ +-----------+
+ Source + + Source +
+-----+-----+ +-----+-----+
| |
-----------------+---------------------------- -----------------+----------------------------
|eth1/1 |eth1/1
+---+----+ +---+----+
+ R1 + + R1 +
+-+----+-+ +-+----+-+
eth1/2 | \ eth1/3 eth1/2 | \ eth1/3
| \ | \
| \ | \
| \ | \
---------------+---------+--------------------
| \ | \
| \ | \
+--------+--+ +---+--------+ +---------+--+ +---+--------+
+ Receiver1 + + Receiver2 + + Receiver 1 + + Receiver 2 +
+-----------+ +------------+ +------------+ +------------+
]]></artwork> ]]></artwork>
</figure> <t>The configuration data for R1 in the above figure could be as follows:<
/t>
<t>The configuration data for R1 in the above figure could be as follows:</t> <sourcecode name="" type="json"><![CDATA[
<figure><artwork><![CDATA[
{ {
"ietf-interfaces:interfaces": { "ietf-interfaces:interfaces": {
"interface": [ "interface": [
{ {
"name": "eth1/1", "name": "eth1/1",
"type": "iana-if-type:ipForward", "type": "iana-if-type:ipForward",
"ietf-ip:ipv4": { "ietf-ip:ipv4": {
"address": [ "address": [
{ {
"ip": "203.0.113.1", "ip": "203.0.113.1",
skipping to change at line 946 skipping to change at line 901
"enabled": true "enabled": true
} }
] ]
} }
} }
} }
] ]
} }
} }
} }
]]></artwork> ]]></sourcecode>
</figure> <t>The corresponding operational state data for R1 could be as follows:</t
>
<t>The corresponding operational state data for R1 could be as follows:</t> <sourcecode name="" type="json"><![CDATA[
<figure><artwork><![CDATA[
{ {
"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": {
skipping to change at line 1016 skipping to change at line 968
] ]
} }
] ]
} }
} }
} }
] ]
} }
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </section>
</section> </back>
</rfc>
</back>
</rfc>
 End of changes. 74 change blocks. 
816 lines changed or deleted 800 lines changed or added

This html diff was produced by rfcdiff 1.48.