rfc8916xml2.original.xml | rfc8916.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="iso-8859-1" ?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!--<!DOCTYPE rfc SYSTEM "rfc4748.dtd"> --> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' [ | ||||
<!ENTITY rfc2629 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.2629.xml'> | ||||
<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.2119.xml'> | ||||
<!ENTITY rfc5925 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.5925.xml'> | ||||
<!ENTITY rfc3618 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.3618.xml'> | ||||
<!ENTITY rfc8407 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8407.xml'> | ||||
<!ENTITY rfc8342 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8342.xml'> | ||||
<!ENTITY rfc6991 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.6991.xml'> | ||||
<!ENTITY rfc8343 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8343.xml'> | ||||
<!ENTITY rfc8344 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8344.xml'> | ||||
<!ENTITY rfc8177 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8177.xml'> | ||||
<!ENTITY rfc6241 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.6241.xml'> | ||||
<!ENTITY rfc8040 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8040.xml'> | ||||
<!ENTITY rfc6242 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.6242.xml'> | ||||
<!ENTITY rfc8446 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8446.xml'> | ||||
<!ENTITY rfc8341 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8341.xml'> | ||||
<!ENTITY rfc6020 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.6020.xml'> | ||||
<!ENTITY rfc3688 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.3688.xml'> | ||||
<!ENTITY rfc7951 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/r | ||||
eference.RFC.7951.xml'> | ||||
<!ENTITY rfc7950 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.7950.xml'> | ||||
<!ENTITY rfc8174 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8174.xml'> | ||||
<!ENTITY rfc8294 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8294.xml'> | ||||
<!ENTITY rfc8340 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8340.xml'> | ||||
<!ENTITY rfc8349 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8349.xml'> | ||||
<!ENTITY rfc8519 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8519.xml'> | ||||
<!ENTITY rfc8639 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8639.xml'> | ||||
<!ENTITY rfc8641 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.8641.xml'> | ||||
<!ENTITY rfc4271 PUBLIC '' 'http://xml.resource.org/public/rfc/bi | ||||
bxml/reference.RFC.4271.xml'> | ||||
<!ENTITY rfc7761 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.7761.xml'> | ||||
<!ENTITY I-D.ietf-pim-yang PUBLIC '' 'http://xml.resource.org/public/rfc/bib | ||||
xml3/reference.I-D.ietf-pim-yang.xml'> | ||||
]> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
<?rfc symrefs="yes"?> | docName="draft-ietf-pim-msdp-yang-18" number="8916" ipr="trust200902" | |||
<?rfc sortrefs="yes"?> | obsoletes="" updates="" submissionType="IETF" consensus="true" | |||
<?rfc disable-output-escaping="yes"?> | xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" | |||
version="3"> | ||||
<rfc category="std" docName="draft-ietf-pim-msdp-yang-18" | <!-- xml2rfc v2v3 conversion 2.45.3 --> | |||
ipr="trust200902"> | ||||
<!-- ***** FRONT MATTER ***** --> | ||||
<front> | <front> | |||
<title abbrev="MSDP YANG Model">A YANG Data Model for Multicast Source Disco very Protocol (MSDP)</title> | <title abbrev="MSDP YANG Data Model">A YANG Data Model for the Multicast Sou rce Discovery Protocol (MSDP)</title> | |||
<seriesInfo name="RFC" value="8916"/> | ||||
<author fullname="Xufeng Liu" initials="X" surname="Liu"> | <author fullname="Xufeng Liu" initials="X" surname="Liu"> | |||
<organization>Volta Networks</organization> | <organization>Volta Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<city></city> | <city/> | |||
<code></code> | <code/> | |||
<country></country> | <country/> | |||
</postal> | </postal> | |||
<email>xufeng.liu.ietf@gmail.com</email> | <email>xufeng.liu.ietf@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Zheng Zhang" initials="Z" role="editor" surname="Zhang"> | ||||
<author fullname="Zheng Zhang" initials="Z" role="editor" surname="Zhang" | ||||
> | ||||
<organization>ZTE Corporation</organization> | <organization>ZTE Corporation</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>No. 50 Software Ave, Yuhuatai Distinct</street> | <street>No. 50 Software Avenue, Yuhuatai District</street> | |||
<city>Nanjing</city> | <city>Nanjing</city> | |||
<region/> | ||||
<region></region> | <code/> | |||
<code></code> | ||||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>zhang.zheng@zte.com.cn</email> | ||||
<email>zzhang_ietf@hotmail.com</email> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Anish Peter" initials="A" surname="Peter"> | ||||
<author fullname="Anish Peter" initials="A" surname="Peter"> | <organization>Individual Contributor</organization> | |||
<organization>Individual contributor</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<city/> | ||||
<city></city> | <region/> | |||
<code/> | ||||
<region></region> | <country/> | |||
<code></code> | ||||
<country></country> | ||||
</postal> | </postal> | |||
<email>anish.ietf@gmail.com</email> | <email>anish.ietf@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Mahesh Sivakumar" initials="M" surname="Sivakumar"> | ||||
<author fullname="Mahesh Sivakumar" initials="M" surname="Sivakumar"> | <organization>Juniper Networks</organization> | |||
<organization>Juniper networks</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1133 Innovation Way</street> | <street>1133 Innovation Way</street> | |||
<city>Sunnyvale</city> | ||||
<city>Sunnyvale, CALIFORNIA 94089</city> | <region>CA</region> | |||
<code>94089</code> | ||||
<region></region> | <country>United States of America</country> | |||
<code></code> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>sivakumar.mahesh@gmail.com</email> | <email>sivakumar.mahesh@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Feng Guo" initials="F" surname="Guo"> | ||||
<author fullname="Feng Guo" initials="F" surname="Guo"> | ||||
<organization>Huawei Technologies</organization> | <organization>Huawei Technologies</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Huawei Bld., No.156 Beiqing Rd.</street> | <street>Huawei Bldg., No. 156 Beiqing Rd.</street> | |||
<city>Beijing</city> | ||||
<city>Beijing 100095</city> | <region/> | |||
<code>100095</code> | ||||
<region></region> | ||||
<code></code> | ||||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>guofeng@huawei.com</email> | <email>guofeng@huawei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Pete McAllister" initials="P" surname="McAllister"> | <author fullname="Pete McAllister" initials="P" surname="McAllister"> | |||
<organization>Metaswitch Networks</organization> | <organization>Metaswitch Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>100 Church Street</street> | <street>100 Church Street</street> | |||
<city>Enfield</city> | ||||
<city>Enfield EN2 6BQ</city> | ||||
<region></region> | <region></region> | |||
<code>EN2 6BQ</code> | ||||
<code></code> | <country>United Kingdom</country> | |||
<country>UK</country> | ||||
</postal> | </postal> | |||
<email>pete.mcallister@metaswitch.com</email> | <email>pete.mcallister@metaswitch.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="October" year="2020"/> | ||||
<date year="2020"/> | <keyword>MSDP</keyword> | |||
<area>Routing</area> | <keyword>YANG</keyword> | |||
<workgroup>PIM WG</workgroup> | ||||
<keyword>MSDP, YANG</keyword> | ||||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document defines a YANG data model for the configuration and | This document defines a YANG data model for the configuration and | |||
management of Multicast Source Discovery Protocol (MSDP) Protocol. | management of Multicast Source Discovery Protocol (MSDP) protocol | |||
</t> | operations. | |||
</t> | ||||
</abstract> | </abstract> | |||
</front> | </front> | |||
<!-- ***** MIDDLE MATTER ***** --> | ||||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<t><xref target="RFC3618"/> introduces the protocol definition of MSDP. | <name>Introduction</name> | |||
<t><xref target="RFC3618" format="default"/> introduces the protocol | ||||
definition of the Multicast Source Discovery Protocol (MSDP). | ||||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage the MSDP protocol. The operational state data and | and manage MSDP protocol operations. The operational state data and | |||
statistics can also be retrieved by this model. | statistics can also be retrieved by this model. | |||
</t> | </t> | |||
<t> | <t> | |||
This model is designed to be used along with other multicast | This model is designed to be used along with other multicast | |||
YANG models such as PIM <xref target="I-D.ietf-pim-yang"/>, which are not | YANG data models such as PIM <xref target="PIM-YANG" format="default"/>, | |||
covered in this document. | which are not covered in this document. | |||
</t> | </t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t>The terminology for describing YANG data models is found in | <t>The terminology for describing YANG data models is found in | |||
<xref target="RFC6020"/> and <xref target="RFC7950"/>, including:</t> | <xref target="RFC6020" format="default"/> and <xref target="RFC7950" for | |||
<t> | mat="default"/>, including:</t> | |||
<list style="symbols"> | <ul spacing="normal"> | |||
<t>action</t> | <li>action</li> | |||
<t>augment</t> | <li>augment</li> | |||
<t>container</t> | <li>choice</li> | |||
<t>choice</t> | <li>container</li> | |||
<t>data model</t> | <li>data model</li> | |||
<t>data node</t> | <li>data node</li> | |||
<t>grouping</t> | <li>grouping</li> | |||
<t>identity</t> | <li>identity</li> | |||
<t>leaf</t> | <li>leaf</li> | |||
<t>list</t> | <li>list</li> | |||
<t>module</t> | <li>module</li> | |||
<t>uses</t> | <li>uses</li> | |||
</list> | </ul> | |||
</t> | <t>The following abbreviations are used in this document and the defined | |||
<t>The following abbreviations are used in this document and the defined | ||||
model:</t> | model:</t> | |||
<t>MSDP: Multicast Source Discovery Protocol <xref target="RFC3618"/>.</t | <t>MSDP: Multicast Source Discovery Protocol <xref target="RFC3618" form | |||
> | at="default"/></t> | |||
<t>RP: Rendezvous Point <xref target="RFC7761"/></t> | <t>RP: Rendezvous Point <xref target="RFC7761" format="default"/></t> | |||
<t>RPF: Reverse Path Forwarding <xref target="RFC7761"/></t> | <t>RPF: Reverse Path Forwarding <xref target="RFC7761" format="default"/ | |||
<t>SA: Source-Active <xref target="RFC3618"/>.</t> | ></t> | |||
</section> | <t>SA: Source-Active <xref target="RFC3618" format="default"/></t> | |||
</section> | ||||
<section title="Conventions Used in This Document"> | <section numbered="true" toc="default"> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name>Conventions Used in This Document</name> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"OPTIONAL" in this document are to be interpreted as described in | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>SHOULD NOT</bcp14>", | |||
</section> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | ||||
<section title="Tree Diagrams"> | are to be interpreted as described in BCP 14 | |||
<t>Tree diagrams used in this document follow the notation defined in | <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | |||
<xref target="RFC8340"/>.</t> | when, they appear in all capitals, as shown here.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Prefixes in Data Node Names"> | <name>Tree Diagrams</name> | |||
<t>In this document, names of data nodes, actions, and other data model | <t>Tree diagrams used in this document follow the notation defined in | |||
<xref target="RFC8340" format="default"/>.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Prefixes in Data Node Names</name> | ||||
<t>In this document, names of data nodes, actions, and other data model | ||||
objects are often used without a prefix, as long as it is clear from | objects are often used without a prefix, as long as it is clear from | |||
the context in which YANG module each name is defined. Otherwise, | the context in which YANG module each name is defined. Otherwise, | |||
names are prefixed using the standard prefix associated with the | names are prefixed using the standard prefix associated with the | |||
corresponding YANG module, as shown in Table 1.</t> | corresponding YANG module, as shown in <xref target="TABLE_1"/>.</t> | |||
<table anchor="TABLE_1" align="center"> | ||||
<texttable anchor="TABLE_1" title=""> | <thead> | |||
<tr> | ||||
<ttcol align="left">Prefix</ttcol> | <th align="left">Prefix</th> | |||
<ttcol align="left">YANG module</ttcol> | <th align="left">YANG module</th> | |||
<ttcol align="left">Reference</ttcol> | <th align="left">Reference</th> | |||
</tr> | ||||
<c>yang</c> | </thead> | |||
<c>ietf-yang-types</c> | <tbody> | |||
<c><xref target="RFC6991"/></c> | <tr> | |||
<td align="left">yang</td> | ||||
<c>inet</c> | <td align="left">ietf-yang-types</td> | |||
<c>ietf-inet-types</c> | <td align="left"> | |||
<c><xref target="RFC6991"/></c> | <xref target="RFC6991" format="default"/></td> | |||
</tr> | ||||
<c>rt</c> | <tr> | |||
<c>ietf-routing</c> | <td align="left">inet</td> | |||
<c><xref target="RFC8349"/></c> | <td align="left">ietf-inet-types</td> | |||
<td align="left"> | ||||
<c>if</c> | <xref target="RFC6991" format="default"/></td> | |||
<c>ietf-interfaces</c> | </tr> | |||
<c><xref target="RFC8343"/></c> | <tr> | |||
<td align="left">rt</td> | ||||
<c>ip</c> | <td align="left">ietf-routing</td> | |||
<c>ietf-ip</c> | <td align="left"> | |||
<c><xref target="RFC8344"/></c> | <xref target="RFC8349" format="default"/></td> | |||
</tr> | ||||
<c>key-chain</c> | <tr> | |||
<c>ietf-key-chain</c> | <td align="left">if</td> | |||
<c><xref target="RFC8177"/></c> | <td align="left">ietf-interfaces</td> | |||
<td align="left"> | ||||
<c>rt-types</c> | <xref target="RFC8343" format="default"/></td> | |||
<c>ietf-routing-types</c> | </tr> | |||
<c><xref target="RFC8294"/></c> | <tr> | |||
<td align="left">ip</td> | ||||
<c>acl</c> | <td align="left">ietf-ip</td> | |||
<c>ietf-access-control-list</c> | <td align="left"> | |||
<c><xref target="RFC8519"/></c> | <xref target="RFC8344" format="default"/></td> | |||
</texttable> | </tr> | |||
<tr> | ||||
</section> | <td align="left">key-chain</td> | |||
</section> | <td align="left">ietf-key-chain</td> | |||
<td align="left"> | ||||
<section title="Design of the Data Model"> | <xref target="RFC8177" format="default"/></td> | |||
<section title="Scope of Model"> | </tr> | |||
<t>The model covers MSDP <xref target="RFC3618"/>.</t> | <tr> | |||
<td align="left">rt-types</td> | ||||
<t>This model can be used to configure and manage the | <td align="left">ietf-routing-types</td> | |||
MSDP protocol. The operational state data and statistics | <td align="left"> | |||
<xref target="RFC8294" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">acl</td> | ||||
<td align="left">ietf-access-control-list</td> | ||||
<td align="left"> | ||||
<xref target="RFC8519" format="default"/></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Design of the Data Model</name> | ||||
<section numbered="true" toc="default"> | ||||
<name>Scope of Model</name> | ||||
<t>The model covers MSDP <xref target="RFC3618" format="default"/>.</t> | ||||
<t>This model can be used to configure and manage MSDP protocol operatio | ||||
ns. The operational state data and statistics | ||||
can be retrieved by this model. Even though no protocol-specific | can be retrieved by this model. Even though no protocol-specific | |||
notifications are defined in this model, the subscription and push | notifications are defined in this model, the subscription and push | |||
mechanism defined in <xref target="RFC8639"/> | mechanisms, as defined in <xref target="RFC8639" format="default"/> | |||
and <xref target="RFC8641"/> can be implemented by | and <xref target="RFC8641" format="default"/>, can be implemented by | |||
the user to subscribe to notifications on the data nodes in this | the user to subscribe to notifications on the data nodes in this | |||
model.</t> | model.</t> | |||
<t>The model contains all the basic configuration parameters to operate | ||||
<t>The model contains all the basic configuration parameters to operate | ||||
the protocol. Depending on the implementation choices, | the protocol. Depending on the implementation choices, | |||
some systems may not allow some of the advanced parameters to be | some systems may not allow some of the advanced parameters to be | |||
configurable. The occasionally implemented parameters are modeled as | configurable. The occasionally implemented parameters are modeled as | |||
optional features in this model. | optional features in this model. | |||
This model can be extended, and it has been structured in a way that | This model can be extended, and it has been structured in a way that | |||
such extensions can be conveniently made.</t> | such extensions can be conveniently made.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Specification"> | <name>Specification</name> | |||
<t> | <t> | |||
The configuration data nodes cover global | The configuration data nodes cover global | |||
configuration attributes and per peer configuration | configuration attributes and per-peer configuration | |||
attributes. The state data nodes include global, per peer, | attributes. The state data nodes include global, per-peer, | |||
and source-active information. The container "msdp" is the | and SA information. The container "msdp" is the | |||
top level container in this data model. The presence of | top-level container in this data model. The presence of | |||
this container is expected to enable MSDP protocol functionality. | this container is expected to enable MSDP protocol functionality. | |||
No notification is defined in this model.</t> | No notification is defined in this model.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Module Structure"> | <name>Module Structure</name> | |||
<t> | <t> | |||
This model imports and augments the ietf-routing YANG model | This model imports and augments the "ietf-routing" YANG data model | |||
defined in <xref target="RFC8349"/>. Both configuration | defined in <xref target="RFC8349" format="default"/>. Both configuration | |||
data nodes and state data nodes of <xref target="RFC8349"/> | data nodes and state data nodes as mentioned in <xref target="RFC8349" fo | |||
rmat="default"/> | ||||
are augmented. | are augmented. | |||
</t> | </t> | |||
<t>The YANG data model defined in this document conforms to the Network | ||||
<t>The YANG data model defined in this document conforms to the Network | Management Datastore Architecture (NMDA) <xref target="RFC8342" format="defau | |||
Management Datastore Architecture (NMDA) <xref target="RFC8342"/>. | lt"/>. | |||
The operational state data is combined with the associated configuration | The operational state data is combined with the associated configuration | |||
data in the same hierarchy <xref target="RFC8407"/>.</t> | data in the same hierarchy <xref target="RFC8407" format="default"/>.</t> | |||
<figure align="center"> | <sourcecode type="yangtree"><![CDATA[ | |||
<artwork align="center"><![CDATA[ | ||||
module: ietf-msdp | module: ietf-msdp | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
+--rw msdp | +--rw msdp | |||
+--rw global | +--rw global | |||
| +--rw tcp-connection-source? if:interface-ref | | +--rw tcp-connection-source? if:interface-ref | |||
| +--rw default-peer* [peer-addr prefix-policy] | | +--rw default-peer* [peer-addr prefix-policy] | |||
{filter-policy}? | {filter-policy}? | |||
| | +--rw peer-addr -> ../../../peers/peer/address | | | +--rw peer-addr -> ../../../peers/peer/address | |||
| | +--rw prefix-policy -> /acl:acls/acl/name | | | +--rw prefix-policy -> /acl:acls/acl/name | |||
skipping to change at line 348 ¶ | skipping to change at line 297 ¶ | |||
| | +--rw out? -> /acl:acls/acl/name | | | +--rw out? -> /acl:acls/acl/name | |||
| +--rw sa-limit? uint32 | | +--rw sa-limit? uint32 | |||
| +--rw ttl-threshold? uint8 | | +--rw ttl-threshold? uint8 | |||
+--rw peers | +--rw peers | |||
| +--rw peer* [address] | | +--rw peer* [address] | |||
| +--rw address inet:ipv4-address | | +--rw address inet:ipv4-address | |||
| +---x clear-peer | | +---x clear-peer | |||
| +--rw authentication {peer-authentication}? | | +--rw authentication {peer-authentication}? | |||
| | +--rw (authentication-type)? | | | +--rw (authentication-type)? | |||
| | +--:(key-chain) | | | +--:(key-chain) | |||
| | | +--rw key-chain? key-chain:key-chain-ref | | | | +--rw key-chain? | |||
key-chain:key-chain-ref | ||||
| | +--:(password) | | | +--:(password) | |||
| | +--rw key? string | | | +--rw key? string | |||
| | +--rw crypto-algorithm? identityref | | | +--rw crypto-algorithm? identityref | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw tcp-connection-source? if:interface-ref | | +--rw tcp-connection-source? if:interface-ref | |||
| +--rw description? string | | +--rw description? string | |||
| +--rw mesh-group? string | | +--rw mesh-group? string | |||
| +--rw peer-as? inet:as-number | | +--rw peer-as? inet:as-number | |||
{peer-as-verification}? | {peer-as-verification}? | |||
| +--rw sa-filter | | +--rw sa-filter | |||
skipping to change at line 420 ¶ | skipping to change at line 370 ¶ | |||
| +--ro peer-learned-from? inet:ipv4-address | | +--ro peer-learned-from? inet:ipv4-address | |||
| +--ro rpf-peer? inet:ipv4-address | | +--ro rpf-peer? inet:ipv4-address | |||
+---x clear | +---x clear | |||
+---w input | +---w input | |||
+---w entry! | +---w entry! | |||
| +---w group | | +---w group | |||
rt-types:ipv4-multicast-group-address | rt-types:ipv4-multicast-group-address | |||
| +---w source-addr? | | +---w source-addr? | |||
rt-types:ipv4-multicast-source-address | rt-types:ipv4-multicast-source-address | |||
+---w peer-address? inet:ipv4-address | +---w peer-address? inet:ipv4-address | |||
+---w peer-as? inet:as-number | +---w peer-as? inet:as-number]]></sourcecode> | |||
]]></artwork> | <section numbered="true" toc="default"> | |||
<postamble></postamble> | <name>MSDP Configuration</name> | |||
</figure> | <t> | |||
<section title="MSDP Configuration"> | ||||
<t> | ||||
MSDP operation requires configuration information that is distributed | MSDP operation requires configuration information that is distributed | |||
amongst several peers. Several peers may | amongst several peers. Several peers may | |||
be configured in a mesh-group. The Source-Active information may be filtered | be configured in a mesh-group. The SA information may be filtered | |||
by peers.</t> | by peers.</t> | |||
<t>The configuration modeling branch is composed of MSDP global and | <t>The configuration modeling branch is composed of MSDP global and | |||
peer configurations. | peer configurations. | |||
The two parts are the most important parts of MSDP.</t> | These two parts are the most important parts of MSDP.</t> | |||
<t>Besides the fundamental features of MSDP protocol, several optional featur | <t>Besides the fundamental features of MSDP, several optional features | |||
es | are included in the model. These features help the control of MSDP. | |||
are included in the model. These features help the control of MSDP protocol. | ||||
The peer features and SA features make the deployment and control easier. The | The peer features and SA features make the deployment and control easier. The | |||
connection parameters can be used to control the TCP connection because MSDP | connection parameters can be used to control the TCP connection because MSDP | |||
protocol is based on TCP. The authentication features make the protocol more | is based on TCP. The authentication features make the protocol more | |||
secure. The filter features selectively allow operators to prevent SA informa tion | secure. The filter features selectively allow operators to prevent SA informa tion | |||
from being forwarded to peers.</t> | from being forwarded to peers.</t> | |||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>MSDP States</name> | ||||
<t>MSDP states are composed of the MSDP global state, the MSDP peer stat | ||||
e, statistics | ||||
information, and SA cache information. The statistics information and SA | ||||
cache | ||||
information help the operator retrieve data regarding the protocol's con | ||||
dition.</t> | ||||
<t>YANG actions are defined to clear the connection of one specific MSDP | ||||
peer, | ||||
clear the connections of all MSDP peers, or clear some or all of the SA cach | ||||
es.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>MSDP YANG Data Model</name> | ||||
<t>This module references <xref target="RFC3618" format="default"/>, <xref | ||||
target="RFC4271" format="default"/>, | ||||
<xref target="RFC5925" format="default"/>, <xref target="RFC6991" format="defa | ||||
ult"/>, <xref target="RFC7761" format="default"/>, | ||||
<xref target="RFC8177" format="default"/>, <xref target="RFC8294" format | ||||
="default"/>, <xref target="RFC8343" format="default"/>, | ||||
<xref target="RFC8344" format="default"/>, <xref target="RFC8349" | ||||
format="default"/>, and <xref target="RFC8519" format="default"/>.</t> | ||||
<section title="MSDP State"> | <sourcecode name="ietf-msdp@2020-09-15.yang" type="yang" markers="true"><! | |||
<t>MSDP states are composed of MSDP global state, MSDP peer state, statistic | [CDATA[ | |||
s | ||||
information and SA cache information. The statistics information and SA c | ||||
ache | ||||
information helps the operator to retrieve the protocol condition.</t> | ||||
<t>YANG actions are defined to clear the connection of one specific MSDP pee | ||||
r, | ||||
clear the connections of all MSDP peers, or clear some or all the SA caches. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="MSDP YANG Model"> | ||||
<t>This module references <xref target="RFC3618"/>, <xref target="RFC4271 | ||||
"/>, | ||||
<xref target="RFC5925"/>, <xref target="RFC6991"/>, <xref target="RFC7761"/>, | ||||
<xref target="RFC8177"/>, <xref target="RFC8294"/>, <xref target="RFC8343 | ||||
"/>, | ||||
<xref target="RFC8344"/>, <xref target="RFC8349"/>, <xref target="RFC8519"/>. | ||||
</t> | ||||
<figure align="center"> | ||||
<artwork align="center"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-msdp@2020-04-15.yang" | ||||
module ietf-msdp { | module ietf-msdp { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-msdp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-msdp"; | |||
prefix msdp; | prefix msdp; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix "yang"; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
reference "RFC 8349: A YANG Data Model for Routing Management | reference | |||
(NMDA Version)"; | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix "if"; | |||
reference "RFC 8343: A YANG Data Model for Interface Management"; | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | } | |||
import ietf-ip { | import ietf-ip { | |||
prefix "ip"; | prefix "ip"; | |||
reference "RFC 8344: A YANG Data Model for IP Management"; | reference | |||
"RFC 8344: A YANG Data Model for IP Management"; | ||||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix "key-chain"; | |||
reference "RFC 8177: YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix "rt-types"; | |||
reference "RFC 8294: Common YANG Data Types for the Routing | reference | |||
Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import ietf-access-control-list { | import ietf-access-control-list { | |||
prefix acl; | prefix acl; | |||
reference | reference | |||
"RFC 8519: YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control Lists | |||
(ACLs)"; | (ACLs)"; | |||
} | } | |||
organization | organization | |||
"IETF PIM (Protocols for IP Multicast) Working Group"; | "IETF Protocols for IP Multicast (pim) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <https://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Zheng Zhang | Editor: Zheng Zhang | |||
<mailto:zzhang_ietf@hotmail.com> | <mailto:zhang.zheng@zte.com.cn> | |||
Editor: Anish Peter | Editor: Anish Peter | |||
<mailto:anish.ietf@gmail.com> | <mailto:anish.ietf@gmail.com> | |||
Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
Editor: Feng Guo | Editor: Feng Guo | |||
<mailto:guofeng@huawei.com> | <mailto:guofeng@huawei.com> | |||
Editor: Pete McAllister | Editor: Pete McAllister | |||
<mailto:pete.mcallister@metaswitch.com>"; | <mailto:pete.mcallister@metaswitch.com>"; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove | ||||
// this note | ||||
description | description | |||
"The module defines the YANG model definitions for | "This module defines the YANG data model definitions for the | |||
Multicast Source Discovery Protocol (MSDP). | Multicast Source Discovery Protocol (MSDP). | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
Copyright (c) 2020 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject to | |||
to the license terms contained in, the Simplified BSD | the license terms contained in, the Simplified BSD License set | |||
License set forth in Section 4.c of the IETF Trust's Legal | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Provisions Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 8916; see the | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC | RFC itself for full legal notices."; | |||
itself for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | ||||
'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | ||||
'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | ||||
are to be interpreted as described in BCP 14 (RFC 2119) | ||||
(RFC 8174) when, and only when, they appear in all | ||||
capitals, as shown here."; | ||||
revision 2020-04-15 { | revision 2020-09-15 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for MSDP."; | "RFC 8916: A YANG Data Model for the Multicast Source | |||
Discovery Protocol (MSDP)"; | ||||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature filter-policy { | feature filter-policy { | |||
description | description | |||
"Support policy configuration of peer/message filtering."; | "Support policy configuration of peer/message filtering."; | |||
reference | reference | |||
"RFC 8519: YANG Data Model for Network Access Control | "RFC 8519: YANG Data Model for Network Access Control | |||
Lists (ACLs)"; | Lists (ACLs)"; | |||
} | } | |||
feature peer-as-verification { | feature peer-as-verification { | |||
description | description | |||
"Support configuration of peer AS number."; | "Support configuration of a peer's Autonomous System Number | |||
(ASN)."; | ||||
reference | reference | |||
"RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | |||
} | } | |||
feature peer-authentication { | feature peer-authentication { | |||
description | description | |||
"Support configuration of peer authentication."; | "Support configuration of peer authentication."; | |||
reference | reference | |||
"RFC 8177: YANG Data Model for Key Chains."; | "RFC 8177: YANG Data Model for Key Chains"; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity msdp { | identity msdp { | |||
base rt:control-plane-protocol; | base rt:control-plane-protocol; | |||
description "Identity for the Multicast Source Discovery | description | |||
Protocol (MSDP)."; | "Identity for the Multicast Source Discovery Protocol (MSDP)."; | |||
reference | reference | |||
"RFC 3618: Multicast Source Discovery Protocol (MSDP)"; | "RFC 3618: Multicast Source Discovery Protocol (MSDP)"; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping authentication-container { | grouping authentication-container { | |||
description | description | |||
"Authentication attributes."; | "Authentication attributes."; | |||
skipping to change at line 628 ¶ | skipping to change at line 576 ¶ | |||
if-feature peer-authentication; | if-feature peer-authentication; | |||
description | description | |||
"A container defining authentication attributes."; | "A container defining authentication attributes."; | |||
choice authentication-type { | choice authentication-type { | |||
case key-chain { | case key-chain { | |||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"Reference to a key-chain."; | "Reference to a key-chain."; | |||
reference | reference | |||
"RFC 8177: YANG Data Model for Key Chains."; | "RFC 8177: YANG Data Model for Key Chains"; | |||
} | } | |||
} | } | |||
case password { | case password { | |||
leaf key { | leaf key { | |||
type string; | type string; | |||
description | description | |||
"This leaf specifies the authentication key."; | "This leaf specifies the authentication key."; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
must "derived-from-or-self(., 'key-chain:md5')" { | must "derived-from-or-self(., 'key-chain:md5')" { | |||
error-message | error-message | |||
"Only the md5 algorithm can be used for MSDP."; | "Only the md5 algorithm can be used for MSDP."; | |||
description "Check for crypto-algorithm."; | description | |||
"Check for crypto-algorithm."; | ||||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key. | "Cryptographic algorithm associated with a key. | |||
Only the md5 algorithm can be used for MSDP. | Only the md5 algorithm can be used for MSDP. | |||
When 'md5' is specified, MSDP control messages | When 'md5' is specified, MSDP control messages | |||
are secured by TCP MD5 signatures as described | are secured by TCP MD5 signatures as described | |||
in RFC 3618 and RFC 5925. Both peers of a | in RFCs 3618 and 5925. Both peers of a | |||
connection SHOULD be configured to the same | connection SHOULD be configured to the same | |||
algorithm for the connection to be established. | algorithm for the connection to be established. | |||
When this leaf is not configured, unauthenticated | When this leaf is not configured, unauthenticated | |||
TCP is used."; | TCP is used."; | |||
reference | reference | |||
"RFC 8177: YANG Data Model for Key Chains. | "RFC 3618: Multicast Source Discovery Protocol (MSDP) | |||
RFC 5925: The TCP Authentication Option."; | RFC 5925: The TCP Authentication Option | |||
RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
} | } | |||
description | description | |||
"Choice of authentication."; | "Choice of authentication."; | |||
} | } | |||
} | } | |||
} // authentication-container | } // authentication-container | |||
grouping tcp-connect-source { | grouping tcp-connect-source { | |||
description | description | |||
"Attribute to configure peer TCP connection source."; | "Attribute to configure a peer TCP connection source."; | |||
leaf tcp-connection-source { | leaf tcp-connection-source { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "/if:interfaces/if:interface[if:name = current()]/" | must "/if:interfaces/if:interface[if:name = current()]/" | |||
+ "ip:ipv4/ip:enabled != 'false'" { | + "ip:ipv4/ip:enabled != 'false'" { | |||
error-message "The interface must have IPv4 enabled."; | error-message | |||
"The interface must have IPv4 enabled."; | ||||
description | description | |||
"The interface must have IPv4 enabled."; | "The interface must have IPv4 enabled."; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
description | description | |||
"The interface is to be the source for the TCP | "The interface is to be the source for the TCP | |||
connection. It is a reference to an entry in the global | connection. It is a reference to an entry in the global | |||
interface list."; | interface list."; | |||
} | } | |||
} // tcp-connect-source | } // tcp-connect-source | |||
grouping global-config-attributes { | grouping global-config-attributes { | |||
description "Global MSDP configuration."; | description | |||
"Global MSDP configuration."; | ||||
uses tcp-connect-source; | uses tcp-connect-source; | |||
list default-peer { | list default-peer { | |||
if-feature filter-policy; | if-feature filter-policy; | |||
key "peer-addr prefix-policy"; | key "peer-addr prefix-policy"; | |||
description | description | |||
"The default peer accepts all MSDP SA messages. | "The default peer accepts all MSDP Source-Active (SA) | |||
A default peer is needed in topologies where MSDP peers | messages. A default peer is needed in topologies where | |||
do not coexist with BGP peers. The reverse path | MSDP peers do not coexist with BGP peers. The Reverse Path | |||
forwarding (RPF) check on SA messages will fail, and no | Forwarding (RPF) check on SA messages will fail, and no | |||
SA messages will be accepted. In these cases, you can | SA messages will be accepted. In these cases, you can | |||
configure the peer as a default peer and bypass RPF checks."; | configure the peer as a default peer and bypass | |||
RPF checks."; | ||||
leaf peer-addr { | leaf peer-addr { | |||
type leafref { | type leafref { | |||
path "../../../peers/peer/address"; | path "../../../peers/peer/address"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Reference to a peer that is in the peer list."; | "Reference to a peer that is in the peer list."; | |||
} | } | |||
leaf prefix-policy { | leaf prefix-policy { | |||
type leafref { | type leafref { | |||
path "/acl:acls/acl:acl/acl:name"; | path "/acl:acls/acl:acl/acl:name"; | |||
} | } | |||
description | description | |||
"If specified, only those SA entries whose RP is | "If specified, only those SA entries whose Rendezvous | |||
permitted in the prefix list are allowed; | Point (RP) is permitted in the prefix list are allowed; | |||
if not specified, all SA messages from the default | if not specified, all SA messages from the default | |||
peer are accepted."; | peer are accepted."; | |||
reference | reference | |||
"RFC 8519: YANG Data Model for Network Access Control | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised) | ||||
RFC 8519: YANG Data Model for Network Access Control | ||||
Lists (ACLs)"; | Lists (ACLs)"; | |||
} | } | |||
} // default-peer | } // default-peer | |||
container originating-rp { | container originating-rp { | |||
description | description | |||
"The container of Originating RP."; | "The container of the originating RP."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "/if:interfaces/if:interface[if:name = current()]/" | must "/if:interfaces/if:interface[if:name = current()]/" | |||
+ "ip:ipv4/ip:enabled != 'false'" { | + "ip:ipv4/ip:enabled != 'false'" { | |||
error-message "The interface must have IPv4 enabled."; | error-message | |||
"The interface must have IPv4 enabled."; | ||||
description | description | |||
"The interface must have IPv4 enabled."; | "The interface must have IPv4 enabled."; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
description | description | |||
"Reference to an entry in the global interface | "Reference to an entry in the global interface list. | |||
list. | The IP address of the interface used in the RP field of | |||
IP address of the interface used in the RP field of | an SA message entry. When anycast RPs are used, all RPs | |||
an SA message entry. When Anycast RPs are used, all | use the same IP address. This parameter can be used to | |||
RPs use the same IP address. This parameter can be | define a unique IP address for the RP of each MSDP peer. | |||
used to define a unique IP address for the RP of each | ||||
MSDP peer. | ||||
By default, the software uses the RP address of the | By default, the software uses the RP address of the | |||
local system."; | local system."; | |||
} | } | |||
} // originating-rp | } // originating-rp | |||
uses sa-filter-container; | uses sa-filter-container; | |||
leaf sa-limit { | leaf sa-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"A limit on the number of SA entries accepted. | "A limit on the number of SA entries accepted. | |||
By default, there is no limit."; | If not configured or the value is 0, there is no limit."; | |||
} | } | |||
uses ttl-threshold; | uses ttl-threshold; | |||
} // global-config-attributes | } // global-config-attributes | |||
grouping peer-config-attributes { | grouping peer-config-attributes { | |||
description "Per peer configuration for MSDP."; | description | |||
"Per-peer configuration for MSDP."; | ||||
uses authentication-container; | uses authentication-container; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if peer is enabled; | "'true' if the peer is enabled; | |||
'false' if peer is disabled."; | 'false' if the peer is disabled."; | |||
} | } | |||
uses tcp-connect-source; | uses tcp-connect-source; | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"The peer description."; | "The peer description."; | |||
} | } | |||
leaf mesh-group { | leaf mesh-group { | |||
type string; | type string; | |||
description | description | |||
"The name of mesh-group which this peer belongs to."; | "The name of the mesh-group to which this peer belongs."; | |||
reference | reference | |||
"RFC 3618: Multicast Source Discovery Protocol (MSDP), | "RFC 3618: Multicast Source Discovery Protocol (MSDP), | |||
section 10.2."; | Section 10.2"; | |||
} | } | |||
leaf peer-as { | leaf peer-as { | |||
if-feature peer-as-verification; | if-feature peer-as-verification; | |||
type inet:as-number; | type inet:as-number; | |||
description | description | |||
"Peer's autonomous system number (ASN). Using peer-as to | "The peer's ASN. Using peer-as to perform the verification | |||
do verification can provide more controlled ability. | can provide more controlled ability. The value can be | |||
The value can be compared with the BGP peer AS. If they | compared with the BGP peer's ASN. If they are different, | |||
are different, the SA comes from this peer may be rejected. | the SA information that comes from this peer may be | |||
If the AS number is the same as the local AS, then the | rejected. If the ASN is the same as the local ASN, then | |||
peer is within the same domain; otherwise, this peer is | the peer is within the same domain; otherwise, this peer | |||
external to the domain. Like the definition and usage | is external to the domain. This is comparable to the | |||
in BGP."; | definition and usage in BGP; see RFC 4271."; | |||
reference | reference | |||
"RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | |||
} | } | |||
uses sa-filter-container; | uses sa-filter-container; | |||
leaf sa-limit { | leaf sa-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"A limit on the number of SA entries accepted from this | "A limit on the number of SA entries accepted from this | |||
peer. By default, there is no limit."; | peer. | |||
If not configured or the value is 0, there is no limit."; | ||||
} | } | |||
container timer { | container timer { | |||
description "Timer attributes."; | description | |||
"Timer attributes."; | ||||
reference | reference | |||
"RFC 3618: Multicast Source Discovery Protocol (MSDP), | "RFC 3618: Multicast Source Discovery Protocol (MSDP), | |||
section 5."; | Section 5"; | |||
leaf connect-retry-interval { | leaf connect-retry-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
default 30; | default 30; | |||
description "Peer timer for connect-retry. | description | |||
By default, MSDP peers wait 30 seconds after | "The peer timer for connect-retry. By default, MSDP peers | |||
session is reset."; | wait 30 seconds after the session is reset."; | |||
} | } | |||
leaf holdtime-interval { | leaf holdtime-interval { | |||
type uint16 { | type uint16 { | |||
range "3..65535"; | range "3..65535"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 75; | default 75; | |||
description "The SA hold down period of this MSDP peer."; | description | |||
"The SA hold-down period of this MSDP peer."; | ||||
} | } | |||
leaf keepalive-interval { | leaf keepalive-interval { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
units seconds; | units seconds; | |||
must '. < ../holdtime-interval' { | must '. < ../holdtime-interval' { | |||
error-message | error-message | |||
"The keepalive interval must be smaller than the | "The keepalive interval must be smaller than the " | |||
hold time interval"; | + "hold-time interval."; | |||
} | } | |||
default 60; | default 60; | |||
description "The keepalive timer of this MSDP peer."; | description | |||
"The keepalive timer of this MSDP peer."; | ||||
} | } | |||
} // timer | } // timer | |||
uses ttl-threshold; | uses ttl-threshold; | |||
} // peer-config-attributes | } // peer-config-attributes | |||
grouping peer-state-attributes { | grouping peer-state-attributes { | |||
description "Per peer state attributes for MSDP."; | description | |||
"Per-peer state attributes for MSDP."; | ||||
leaf session-state { | leaf session-state { | |||
type enumeration { | type enumeration { | |||
enum disabled { | enum disabled { | |||
description "Disabled."; | description | |||
"Disabled."; | ||||
} | } | |||
enum inactive { | enum inactive { | |||
description "Inactive."; | description | |||
"Inactive."; | ||||
} | } | |||
enum listen { | enum listen { | |||
description "Listen."; | description | |||
"Listen."; | ||||
} | } | |||
enum connecting { | enum connecting { | |||
description "Connecting."; | description | |||
"Connecting."; | ||||
} | } | |||
enum established { | enum established { | |||
description "Established."; | description | |||
"Established."; | ||||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Peer session state."; | "The peer's session state."; | |||
reference | reference | |||
"RFC 3618: Multicast Source Discovery Protocol (MSDP), | "RFC 3618: Multicast Source Discovery Protocol (MSDP), | |||
section 11."; | Section 11"; | |||
} | } | |||
leaf elapsed-time { | leaf elapsed-time { | |||
type yang:gauge32; | type yang:gauge32; | |||
units seconds; | units seconds; | |||
config false; | config false; | |||
description "Elapsed time for being in a state."; | description | |||
"Elapsed time for being in a state."; | ||||
} | } | |||
leaf connect-retry-expire { | leaf connect-retry-expire { | |||
type uint32; | type uint32; | |||
units seconds; | units seconds; | |||
config false; | config false; | |||
description "Connect retry expire time of peer connection."; | description | |||
"Connect retry expire time of a peer connection."; | ||||
} | } | |||
leaf hold-expire { | leaf hold-expire { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
config false; | config false; | |||
description "Hold expire time of peer connection."; | description | |||
"Hold expire time of a peer connection."; | ||||
} | } | |||
leaf is-default-peer { | leaf is-default-peer { | |||
type boolean; | type boolean; | |||
config false; | config false; | |||
description "'true' if this peer is one of the default peer."; | description | |||
"'true' if this peer is one of the default peers."; | ||||
} | } | |||
leaf keepalive-expire { | leaf keepalive-expire { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
config false; | config false; | |||
description "Keepalive expire time of this peer."; | description | |||
"Keepalive expire time of this peer."; | ||||
} | } | |||
leaf reset-count { | leaf reset-count { | |||
type yang:zero-based-counter32; | type yang:zero-based-counter32; | |||
config false; | config false; | |||
description "The reset count of this peer."; | description | |||
"The reset count of this peer."; | ||||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description | description | |||
"A container defining statistics attributes."; | "A container defining statistics attributes."; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one | "The time on the most recent occasion at which any one | |||
or more of the statistic counters suffered a | or more of the statistics counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local | since the last re-initialization of the local | |||
management subsystem, then this node contains the time | management subsystem, then this node contains the time | |||
the local management subsystem re-initialized itself."; | the local management subsystem re-initialized itself."; | |||
} | } | |||
container error { | container error { | |||
description | description | |||
"A grouping defining error statistics attributes."; | "A grouping defining error statistics attributes."; | |||
leaf rpf-failure { | leaf rpf-failure { | |||
type uint32; | type uint32; | |||
description "Number of RPF failures."; | description | |||
"The number of RPF failures."; | ||||
} | } | |||
} | } | |||
container queue { | container queue { | |||
description | description | |||
"A container includes queue statistics attributes."; | "A container that includes queue statistics attributes."; | |||
leaf size-in { | leaf size-in { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of messages received from the peer | "The number of messages received from the peer | |||
currently queued."; | currently queued."; | |||
} | } | |||
leaf size-out { | leaf size-out { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of messages queued to be sent to the peer."; | "The number of messages queued to be sent to the peer."; | |||
} | } | |||
} | } | |||
container received { | container received { | |||
description "Received message counters."; | description | |||
"Received message counters."; | ||||
uses statistics-sent-received; | uses statistics-sent-received; | |||
} | } | |||
container sent { | container sent { | |||
description "Sent message counters."; | description | |||
"Sent message counters."; | ||||
uses statistics-sent-received; | uses statistics-sent-received; | |||
} | } | |||
} // statistics | } // statistics | |||
} // peer-state-attributes | } // peer-state-attributes | |||
grouping sa-filter-container { | grouping sa-filter-container { | |||
description "A container defining SA filters."; | description | |||
"A container defining SA filters."; | ||||
container sa-filter { | container sa-filter { | |||
description | description | |||
"Specifies an access control list (ACL) to filter source | "Specifies an Access Control List (ACL) to filter SA messages | |||
active (SA) messages coming in to or going out of the | coming into or going out of the peer."; | |||
peer."; | ||||
leaf in { | leaf in { | |||
type leafref { | type leafref { | |||
path "/acl:acls/acl:acl/acl:name"; | path "/acl:acls/acl:acl/acl:name"; | |||
} | } | |||
description | description | |||
"Filters incoming SA messages only. | "Filters incoming SA messages only. | |||
The value is the name to uniquely identify a | The value is the name to uniquely identify a | |||
policy that contains one or more rules used to | policy that contains one or more rules used to | |||
accept or reject MSDP SA messages. | accept or reject MSDP SA messages. | |||
If the policy is not specified, all MSDP SA messages are | If the policy is not specified, all MSDP SA messages are | |||
skipping to change at line 1005 ¶ | skipping to change at line 979 ¶ | |||
If the policy is not specified, all MSDP SA messages are | If the policy is not specified, all MSDP SA messages are | |||
sent."; | sent."; | |||
reference | reference | |||
"RFC 8519: YANG Data Model for Network Access Control | "RFC 8519: YANG Data Model for Network Access Control | |||
Lists (ACLs)"; | Lists (ACLs)"; | |||
} | } | |||
} // sa-filter | } // sa-filter | |||
} // sa-filter-container | } // sa-filter-container | |||
grouping ttl-threshold { | grouping ttl-threshold { | |||
description "Attribute to configure TTL threshold."; | description | |||
"Attribute to configure the TTL threshold."; | ||||
leaf ttl-threshold { | leaf ttl-threshold { | |||
type uint8 { | type uint8 { | |||
range 1..255; | range 1..255; | |||
} | } | |||
description "Maximum number of hops data packets can | description | |||
traverse before being dropped."; | "The maximum number of hops data packets can traverse | |||
before being dropped."; | ||||
} | } | |||
} // ttl-threshold | } // ttl-threshold | |||
grouping statistics-sent-received { | grouping statistics-sent-received { | |||
description | description | |||
"A grouping defining sent and received statistics attributes."; | "A grouping defining sent and received statistics attributes."; | |||
leaf keepalive { | leaf keepalive { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of keepalive messages."; | "The number of keepalive messages."; | |||
skipping to change at line 1054 ¶ | skipping to change at line 1030 ¶ | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of total messages."; | "The number of total messages."; | |||
} | } | |||
} // statistics-sent-received | } // statistics-sent-received | |||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "derived-from-or-self(rt:type, 'msdp:msdp')" { | when "derived-from-or-self(rt:type, 'msdp:msdp')" { | |||
description | description | |||
"This augmentation is only valid for a routing protocol | "This augmentation is only valid for a routing protocol | |||
instance of MSDP."; | instance of MSDP."; | |||
} | } | |||
description | description | |||
"MSDP augmentation to routing control-plane protocol | "MSDP augmentation to routing control-plane protocol | |||
configuration and state."; | configuration and state."; | |||
container msdp { | container msdp { | |||
description | description | |||
"MSDP configuration and operational state data."; | "MSDP configuration and operational state data."; | |||
container global { | container global { | |||
description | description | |||
"Global attributes."; | "Global attributes."; | |||
uses global-config-attributes; | uses global-config-attributes; | |||
} | } | |||
container peers { | container peers { | |||
description | description | |||
"Containing a list of peers."; | "Contains a list of peers."; | |||
list peer { | list peer { | |||
key "address"; | key "address"; | |||
description | description | |||
"List of MSDP peers."; | "A list of MSDP peers."; | |||
leaf address { | leaf address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address of the peer"; | "The address of the peer."; | |||
} | } | |||
action clear-peer { | action clear-peer { | |||
description | description | |||
"Clears the TCP connection to the peer."; | "Clears the TCP connection to the peer."; | |||
} | } | |||
uses peer-config-attributes; | uses peer-config-attributes; | |||
uses peer-state-attributes; | uses peer-state-attributes; | |||
} | } | |||
} | } | |||
action clear-all-peers { | action clear-all-peers { | |||
description | description | |||
"'All peers' TCP connection are cleared."; | "All peers' TCP connections are cleared."; | |||
} | } | |||
container sa-cache { | container sa-cache { | |||
config false; | config false; | |||
description | description | |||
"The SA cache information."; | "The SA cache information."; | |||
list entry { | list entry { | |||
key "group source-addr"; | key "group source-addr"; | |||
description "A list of SA cache entries."; | description | |||
"A list of SA cache entries."; | ||||
leaf group { | leaf group { | |||
type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
description "The group address of this SA cache."; | description | |||
"The group address of this SA cache."; | ||||
} | } | |||
leaf source-addr { | leaf source-addr { | |||
type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
description "Source IPv4 address."; | description | |||
"Source IPv4 address."; | ||||
} | } | |||
list origin-rp { | list origin-rp { | |||
key "rp-address"; | key "rp-address"; | |||
description "Origin RP information."; | description | |||
"Information regarding the originating RP."; | ||||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The RP address. IP address used in the RP field | "The RP address. This is the IP address used in the | |||
of an SA message entry."; | RP field of an SA message entry."; | |||
} | } | |||
leaf is-local-rp { | leaf is-local-rp { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the RP is local; | "'true' if the RP is local; | |||
'false' if The RP is not local."; | 'false' if the RP is not local."; | |||
} | } | |||
leaf sa-adv-expire { | leaf sa-adv-expire { | |||
type uint32; | type uint32; | |||
units seconds; | units seconds; | |||
description | description | |||
"The remaining time duration before expiration | "The remaining time duration before expiration | |||
of the periodic SA advertisement timer on a | of the periodic SA advertisement timer on a | |||
local RP."; | local RP."; | |||
} | } | |||
} | } | |||
container state-attributes { | container state-attributes { | |||
description "SA cache state attributes for MSDP."; | description | |||
"SA cache state attributes for MSDP."; | ||||
leaf up-time { | leaf up-time { | |||
type yang:gauge32; | type yang:gauge32; | |||
units seconds; | units seconds; | |||
description | description | |||
"Indicates the duration time when this SA entry is | "Indicates the duration time when this SA entry is | |||
created in the cache. MSDP is a periodic protocol, | created in the cache. MSDP is a periodic protocol; | |||
the value can be used to check the state of | the value can be used to check the state of the | |||
SA cache."; | SA cache."; | |||
} | } | |||
leaf expire { | leaf expire { | |||
type yang:gauge32; | type yang:gauge32; | |||
units seconds; | units seconds; | |||
description | description | |||
"Indicates the duration time when this SA entry in | "Indicates the duration time when this SA entry in | |||
the cache times out. MSDP is a periodic protocol, | the cache times out. MSDP is a periodic protocol; | |||
the value can be used to check the state of | the value can be used to check the state of the | |||
SA cache."; | SA cache."; | |||
} | } | |||
leaf holddown-interval { | leaf holddown-interval { | |||
type uint32; | type uint32; | |||
units seconds; | units seconds; | |||
description | description | |||
"Hold-down timer value for SA forwarding."; | "Hold-down timer value for SA forwarding."; | |||
reference | reference | |||
"RFC 3618: Multicast Source Discovery Protocol | "RFC 3618: Multicast Source Discovery Protocol | |||
(MSDP), section 5.3."; | (MSDP), Section 5.3"; | |||
} | } | |||
leaf peer-learned-from { | leaf peer-learned-from { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address of the peer that we learned this | "The address of the peer from which we learned this | |||
SA from."; | SA information."; | |||
} | } | |||
leaf rpf-peer { | leaf rpf-peer { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address is the SA's originating RP."; | "The address is the SA's originating RP."; | |||
} | } | |||
} // state-attributes | } // state-attributes | |||
} // entry | } // entry | |||
action clear { | action clear { | |||
description | description | |||
"Clears MSDP source active (SA) cache entries."; | "Clears MSDP SA cache entries."; | |||
input { | input { | |||
container entry { | container entry { | |||
presence "If a particular entry is cleared."; | presence "If a particular entry is cleared."; | |||
description | description | |||
"The SA cache (S,G) or (*,G) entry to be cleared. If | "The SA cache (S,G) or (*,G) entry to be cleared. | |||
this is not provided, all entries are cleared."; | If this is not provided, all entries are cleared."; | |||
leaf group { | leaf group { | |||
type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
mandatory true; | mandatory true; | |||
description "The group address"; | description | |||
"The group address."; | ||||
} | } | |||
leaf source-addr { | leaf source-addr { | |||
type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
description | description | |||
"Address of multicast source to be cleared. If this | "The address of the multicast source to be cleared. | |||
is not provided then all entries related to the | If this is not provided, then all entries related | |||
given group are cleared."; | to the given group are cleared."; | |||
} | } | |||
} | } | |||
leaf peer-address { | leaf peer-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Peer IP address from which MSDP SA cache entries have | "The peer IP address from which MSDP SA cache entries | |||
been learned. If this is not provided, entries learned | have been learned. If this is not provided, entries | |||
from all peers are cleared."; | learned from all peers are cleared."; | |||
} | } | |||
leaf peer-as { | leaf peer-as { | |||
type inet:as-number; | type inet:as-number; | |||
description | description | |||
"ASN from which MSDP SA cache entries have been learned. | "The ASN from which MSDP SA cache entries have been | |||
If this is not provided, entries learned from all AS's | learned. If this is not provided, entries learned | |||
are cleared."; | from all ASes are cleared."; | |||
} | } | |||
} | } | |||
} // clear | } // clear | |||
} // sa-cache | } // sa-cache | |||
} // msdp | } // msdp | |||
} // augment | } // augment | |||
} | }]]></sourcecode> | |||
<CODE ENDS> | ||||
]]></artwork> | ||||
<postamble></postamble> | ||||
</figure> | ||||
</section> | ||||
<section title="Security Considerations"> | </section> | |||
<t>The YANG module specified in this document defines a schema for data | <section numbered="true" toc="default"> | |||
<name>Security Considerations</name> | ||||
<t>The YANG module specified in this document defines a schema for data | ||||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref target ="RFC8040" format="default"/>. | |||
The lowest NETCONF layer is the secure transport layer, and the | The lowest NETCONF layer is the secure transport layer, and the | |||
mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="R FC6242"/>. | mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="R FC6242" format="default"/>. | |||
The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure | The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure | |||
transport is TLS <xref target="RFC8446"/>.</t> | transport is TLS <xref target="RFC8446" format="default"/>.</t> | |||
<t>The Network Configuration Access Control Model (NACM) <xref | ||||
<t>The NETCONF access control model <xref target="RFC8341"/> provides | target="RFC8341"/> provides the means to restrict access for particular | |||
the means to | NETCONF or RESTCONF users to a preconfigured subset of all available | |||
restrict access for particular NETCONF or RESTCONF users to a | NETCONF or RESTCONF protocol operations and content.</t> | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | <t>There are a number of data nodes defined in this YANG module that are | |||
operations and content.</t> | ||||
<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 | writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability:</t> | and their sensitivity/vulnerability:</t> | |||
<t>Under /rt:routing/rt:control-plane-protocols/msdp:</t> | ||||
<t>Under /rt:routing/rt:control-plane-protocols/msdp,</t> | <t indent="3">msdp:global</t> | |||
<t>msdp:global | ||||
<list style="simblos"> | ||||
<t>This subtree specifies the configuration for the MSDP attributes | ||||
at the global level. Modifying the configuration can cause MSDP default | ||||
peers to be deleted or the connection to be rebuilt, and unexpected fil | ||||
tering of the SA.</t> | ||||
</list> | ||||
</t> | ||||
<t>msdp:peers | <t indent="6">This subtree specifies the configuration for the MSDP attributes | |||
<list style="simblos"> | at the global level. Modifying the configuration can cause MSDP | |||
<t>This subtree specifies the configuration for the MSDP attributes | default peers to be deleted or the connection to be rebuilt and can | |||
also cause unexpected filtering of the SA.</t> | ||||
<t indent="3">msdp:peers</t> | ||||
<t indent="6">This subtree specifies the configuration for the MSDP attributes | ||||
at the peer level. Modifying the configuration will allow | at the peer level. Modifying the configuration will allow | |||
unexpected MSDP peer establishment and | unexpected MSDP peer establishment and | |||
unexpected SA information learning and advertisement.</t> | unexpected SA information learning and advertisement.</t> | |||
<t>The key field writability should be controlled strictly. | ||||
The key misoperation will break the existing MSDP connection, | <t indent="6">The writability of the "key" field should be strictly controlled. | |||
Misoperation of the key will break the existing MSDP connection, | ||||
and the associated SA caches will also be deleted.</t> | and the associated SA caches will also be deleted.</t> | |||
</list> | ||||
</t> | ||||
<t>Some of the readable data nodes in this YANG module may be considered | <t>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 is msdp subtree and key data | notification) to these data nodes. These are the subtrees and data | |||
node and their sensitivity/vulnerability:</t> | nodes and their sensitivity/vulnerability:</t> | |||
<t>/rt:routing/rt:control-plane-protocols/msdp,</t> | <t>/rt:routing/rt:control-plane-protocols/msdp:</t> | |||
<t>Unauthorized access to any data node of the above subtree can | ||||
disclose the operational state information of MSDP on this | ||||
device. For example, the peer information disclosure may lead to a forged | ||||
connection attack, the ACL nodes' uncorrected modification may lead to the fi | ||||
lter errors. | ||||
</t> | ||||
<t>The "key" | <t indent="3">Unauthorized access to any data node of the above subtree can | |||
field is also a sensitive readable configuration. Unauthorized | disclose the operational state information of MSDP on this device. For | |||
reading may lead to the password leaking. Modification | example, disclosure of the peer information may lead to a forged connection | |||
will allow the unexpected rebuilding of connected peers.</t> | attack, and uncorrected modification of the ACL nodes may lead to filter | |||
<t>Authentication configuration is supported via the | errors.</t> | |||
specification of key-chains <xref target="RFC8177"/> or the direct specificat | ||||
ion of | <t indent="3">The "key" field is also a sensitive readable configuration. | |||
key and authentication algorithm. Hence, authentication | Unauthorized reading of this field may lead to leaking of the password. | |||
Modification will allow the unexpected rebuilding of connected peers.</t> | ||||
<t>Authentication configuration is supported via the | ||||
specification of key-chains <xref target="RFC8177" format="default"/> or | ||||
the direct specification of the | ||||
key and the authentication algorithm. Hence, authentication | ||||
configuration in the | configuration in the | |||
"authentication" container inherits the security considerations of | "authentication" container inherits the security considerations discussed in | |||
<xref target="RFC8177"/>. This includes the considerations with respect to t | <xref target="RFC8177" format="default"/>. This includes the considerations | |||
he | with respect to the | |||
local storage and handling of authentication keys.</t> | local storage and handling of authentication keys.</t> | |||
<t>Some of the RPC operations in this YANG module may be considered | <t>Some of the RPC operations 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 access to these operations. These are the | important to control access to these operations. These are the | |||
operations and their sensitivity/vulnerability: | operations and their sensitivity/vulnerability: | |||
</t> | </t> | |||
<t>/rt:routing/rt:control-plane-protocols/msdp:clear-peer,</t> | ||||
<t>/rt:routing/rt:control-plane-protocols/msdp:clear-sa-cache,</t> | ||||
<t>Unauthorized access to any of the above action operations can lead to | ||||
the MSDP peers connection rebuilding or delete SA records on this device. | ||||
</t> | ||||
</section> | ||||
<section title="IANA Considerations"> | ||||
<t>RFC Ed.: Please replace all occurrences of 'XXXX' with the | ||||
actual RFC number (and remove this note).</t> | ||||
<t> The IANA is requested to assign one new URI from the IETF XML | ||||
registry <xref target="RFC3688"/>. Authors are suggesting the following URI: | ||||
</t> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-msdp</t> | ||||
<t>Registrant Contact: The IESG</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace</t> | ||||
<t>This document also requests one new YANG module name in the YANG | ||||
Module Names registry <xref target="RFC6020"/> with the following suggestion: | ||||
</t> | ||||
<t>name: ietf-msdp</t> | <t>/rt:routing/rt:control-plane-protocols/msdp:clear-peer</t> | |||
<t>namespace: urn:ietf:params:xml:ns:yang:ietf-msdp</t> | <t>/rt:routing/rt:control-plane-protocols/msdp:clear-sa-cache</t> | |||
<t>prefix: msdp</t> | ||||
<t>reference: RFC XXXX</t> | ||||
</section> | ||||
<section title="Contributors"> | <t indent="3">Unauthorized access to either of the above action | |||
<t>The authors would like to thank Yisong Liu (liuyisong@huawei.com), | operations can lead to rebuilding of the MSDP peers' connections or | |||
Benchong Xu (xu.benchong@zte.com.cn), | deletion of SA records on this device. | |||
Tanmoy Kundu (tanmoy.kundu@alcatel-lucent.com) for their valuable | </t> | |||
contributions.</t> | ||||
</section> | ||||
<section title="Acknowledgement"> | </section> | |||
<t>The authors would like to thank Stig Venaas, Jake Holland for their va | ||||
luable | ||||
comments and suggestions.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>IANA has registered the following URI in the "ns" subregistry within | ||||
the "IETF XML Registry" <xref target="RFC3688" format="default"/>:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-msdp</dd> | ||||
<dt>Registrant Contact:</dt><dd>The IESG.</dd> | ||||
<dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
<t>IANA has registered the following YANG module in the "YANG Module | ||||
Names" subregistry <xref target="RFC6020" format="default"/> within the | ||||
"YANG Parameters" registry:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Name:</dt><dd>ietf-msdp</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-msdp</dd> | ||||
<dt>Prefix:</dt><dd>msdp</dd> | ||||
<dt>Reference:</dt><dd>RFC 8916</dd> | ||||
</dl> | ||||
</section> | ||||
</middle> | </middle> | |||
<!-- *****BACK MATTER ***** --> | ||||
<back> | <back> | |||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3618. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4271. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5925. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6020. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6241. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6242. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6991. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7950. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7951. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8040. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8177. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8294. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8340. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8341. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8342. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8343. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8344. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8349. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8519. | ||||
xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3688. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7761. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8407. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8639. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8641. | ||||
xml"/> | ||||
<references title='Normative References'> | <!-- draft-ietf-pim-yang (MISSREF) (Needs to be "long way"; | |||
&rfc2119; | fangwei hu (lc in XML) needs to be init-capped --> | |||
&rfc3618; | <reference anchor="PIM-YANG" target="https://tools.ietf.org/html/draft-i | |||
&rfc4271; | etf-pim-yang-17"> | |||
&rfc5925; | <front> | |||
&rfc6020; | <title>A YANG Data Model for Protocol Independent Multicast (PIM)</t | |||
&rfc6241; | itle> | |||
&rfc6242; | <author initials="X" surname="Liu" fullname="Xufeng Liu"> | |||
&rfc6991; | <organization/> | |||
&rfc7950; | </author> | |||
&rfc7951; | <author initials="P" surname="McAllister" fullname="Pete McAllister" | |||
&rfc8040; | > | |||
&rfc8174; | <organization/> | |||
&rfc8177; | </author> | |||
&rfc8294; | <author initials="A" surname="Peter" fullname="Anish Peter"> | |||
&rfc8340; | <organization/> | |||
&rfc8341; | </author> | |||
&rfc8342; | <author initials="M" surname="Sivakumar" fullname="Mahesh Sivakumar" | |||
&rfc8343; | > | |||
&rfc8344; | <organization/> | |||
&rfc8349; | </author> | |||
&rfc8446; | <author initials="Y" surname="Liu" fullname="Yisong Liu"> | |||
&rfc8519; | <organization/> | |||
</references> | </author> | |||
<author initials="F" surname="Hu" fullname="Fangwei Hu"> | ||||
<references title='Informative References'> | <organization/> | |||
&rfc3688; | </author> | |||
&rfc7761; | <date month="May" day="19" year="2018"/> | |||
&rfc8407; | </front> | |||
&rfc8639; | <seriesInfo name="Internet-Draft" value="draft-ietf-pim-yang-17"/> | |||
&rfc8641; | </reference> | |||
&I-D.ietf-pim-yang; | </references> | |||
</references> | </references> | |||
<section anchor="data-tree-example" numbered="true" toc="default"> | ||||
<section title="Data Tree Example"> | <name>Data Tree Example</name> | |||
<t>This section contains an example of an instance data tree in JSON | <t>This appendix contains an example of an instance data tree in JSON | |||
encoding <xref target="RFC7951"/>, containing configuration data.</t> | encoding <xref target="RFC7951" format="default"/>, containing configuration | |||
data.</t> | ||||
<section title="The global and peer configuration example"> | <section numbered="true" toc="default"> | |||
<figure align="center"> | <name>The Global and Peer Configuration Example</name> | |||
<artwork align="center"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "eth1", | "name": "eth1", | |||
"description": "An interface with MSDP enabled.", | "description": "An interface with MSDP enabled.", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"ietf-ip:ipv4": { | "ietf-ip:ipv4": { | |||
"forwarding": true, | "forwarding": true, | |||
"address": [ | "address": [ | |||
skipping to change at line 1452 ¶ | skipping to change at line 1442 ¶ | |||
"peer-addr": "198.51.100.8", | "peer-addr": "198.51.100.8", | |||
"prefix-policy": "msdp-default-peer-policy" | "prefix-policy": "msdp-default-peer-policy" | |||
} | } | |||
], | ], | |||
"originating-rp": { | "originating-rp": { | |||
"interface": "eth1" | "interface": "eth1" | |||
}, | }, | |||
"sa-limit": 0, | "sa-limit": 0, | |||
"ttl-threshold": 1 | "ttl-threshold": 1 | |||
}, | }, | |||
"peers":{ | "peers": { | |||
"peer":[ | "peer": [ | |||
{ | { | |||
"address": "198.51.100.8", | "address": "198.51.100.8", | |||
"enabled": true, | "enabled": true, | |||
"tcp-connection-source": "eth1", | "tcp-connection-source": "eth1", | |||
"description": "x", | "description": "x", | |||
"mesh-group": "x", | "mesh-group": "x", | |||
"peer-as": 100, | "peer-as": 100, | |||
"sa-limit": 0, | "sa-limit": 0, | |||
"timer":{ | "timer": { | |||
"connect-retry-interval": 0, | "connect-retry-interval": 0, | |||
"holdtime-interval": 3, | "holdtime-interval": 3, | |||
"keepalive-interval": 1 | "keepalive-interval": 1 | |||
}, | }, | |||
"ttl-threshold": 1 | "ttl-threshold": 1 | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | }]]></sourcecode> | |||
]]></artwork> | </section> | |||
<postamble></postamble> | <section numbered="true" toc="default"> | |||
</figure> | <name>The State Example</name> | |||
</section> | <sourcecode type="json"><![CDATA[ | |||
<section title="The state example"> | ||||
<figure align="center"> | ||||
<artwork align="center"><![CDATA[ | ||||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "eth1", | "name": "eth1", | |||
"description": "An interface with MSDP enabled.", | "description": "An interface with MSDP enabled.", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"phys-address": "00:00:5e:00:53:01", | "phys-address": "00:00:5e:00:53:01", | |||
"oper-status": "up", | "oper-status": "up", | |||
"statistics": { | "statistics": { | |||
skipping to change at line 1536 ¶ | skipping to change at line 1522 ¶ | |||
} | } | |||
] | ] | |||
}, | }, | |||
"ietf-routing:routing": { | "ietf-routing:routing": { | |||
"router-id": "203.0.113.1", | "router-id": "203.0.113.1", | |||
"control-plane-protocols": { | "control-plane-protocols": { | |||
"control-plane-protocol": [ | "control-plane-protocol": [ | |||
{ | { | |||
"type": "ietf-msdp:msdp", | "type": "ietf-msdp:msdp", | |||
"name": "msdp-1", | "name": "msdp-1", | |||
"ietf-msdp:msdp":{ | "ietf-msdp:msdp": { | |||
"global":{ | "global": { | |||
"tcp-connection-source": "eth1", | "tcp-connection-source": "eth1", | |||
"default-peer": [ | "default-peer": [ | |||
{ | { | |||
"peer-addr": "198.51.100.8", | "peer-addr": "198.51.100.8", | |||
"prefix-policy": "msdp-default-peer-policy" | "prefix-policy": "msdp-default-peer-policy" | |||
} | } | |||
], | ], | |||
"originating-rp": { | "originating-rp": { | |||
"interface": "eth1" | "interface": "eth1" | |||
}, | }, | |||
"sa-limit": 0, | "sa-limit": 0, | |||
"ttl-threshold": 1 | "ttl-threshold": 1 | |||
}, | }, | |||
"peers":{ | "peers": { | |||
"peer":[ | "peer": [ | |||
{ | { | |||
"address": "198.51.100.8", | "address": "198.51.100.8", | |||
"enabled": true, | "enabled": true, | |||
"tcp-connection-source": "eth1", | "tcp-connection-source": "eth1", | |||
"description": "x", | "description": "x", | |||
"mesh-group": "x", | "mesh-group": "x", | |||
"peer-as": 100, | "peer-as": 100, | |||
"sa-limit": 0, | "sa-limit": 0, | |||
"timer":{ | "timer": { | |||
"connect-retry-interval": 0, | "connect-retry-interval": 0, | |||
"holdtime-interval": 3, | "holdtime-interval": 3, | |||
"keepalive-interval": 1 | "keepalive-interval": 1 | |||
}, | }, | |||
"ttl-threshold": 1, | "ttl-threshold": 1, | |||
"session-state": "established", | "session-state": "established", | |||
"elapsed-time": 5, | "elapsed-time": 5, | |||
"is-default-peer": true, | "is-default-peer": true, | |||
"keepalive-expire": 1, | "keepalive-expire": 1, | |||
"reset-count": 1, | "reset-count": 1, | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2020-02-22T12:22:33+02:00" | "discontinuity-time": "2020-02-22T12:22:33+02:00" | |||
} | } | |||
} | } | |||
] | ] | |||
}, | }, | |||
"sa-cache": { | "sa-cache": { | |||
"entry": [ | "entry": [ | |||
{ | { | |||
"group": "233.252.0.23", | "group": "233.252.0.23", | |||
"source-addr": "198.51.100.8", | "source-addr": "192.0.2.50", | |||
"origin-rp": [ | "origin-rp": [ | |||
{ | { | |||
"rp-address": "203.0.113.10", | "rp-address": "203.0.113.10", | |||
"is-local-rp": false, | "is-local-rp": false, | |||
"sa-adv-expire": 150 | "sa-adv-expire": 50 | |||
} | } | |||
], | ], | |||
"state-attributes": { | "state-attributes": { | |||
"up-time": 20, | "up-time": 1000, | |||
"expire": 120, | "expire": 120, | |||
"holddown-interval": 150, | "holddown-interval": 150, | |||
"peer-learned-from": "203.0.113.10", | "peer-learned-from": "198.51.100.8", | |||
"rpf-peer": "203.0.113.10" | "rpf-peer": "198.51.100.8" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | }]]></sourcecode> | |||
]]></artwork> | </section> | |||
<postamble></postamble> | <section numbered="true" toc="default"> | |||
</figure> | <name>The Actions Example</name> | |||
</section> | <t>This example shows the input data (in JSON) for executing an "sa&nbhy | |||
;cache clear" | ||||
<section title="The actions example"> | action to clear the cache of all entries that match the group address of 233.2 | |||
<t>This example shows the input data (in JSON) for executing an "sa-cache clea | 52.0.23.</t> | |||
r" | <sourcecode type="json"><![CDATA[ | |||
action to clear the cache of all entries which match the group address of 233. | ||||
252.0.23.</t> | ||||
<figure align="center"> | ||||
<artwork align="left"><![CDATA[ | ||||
{ | { | |||
"ietf-msdp:sa-cache":{ | "ietf-msdp:sa-cache": { | |||
"input":{ | "input": { | |||
"entry":{ | "entry": { | |||
"group":"233.252.0.23" | "group": "233.252.0.23" | |||
} | } | |||
} | } | |||
} | } | |||
} | }]]></sourcecode> | |||
]]></artwork> | </section> | |||
<postamble></postamble> | </section> | |||
</figure> | <section numbered="false" toc="default"> | |||
</section> | <name>Acknowledgements</name> | |||
<t>The authors would like to thank <contact fullname="Stig Venaas"/> and | ||||
</section> | <contact fullname="Jake Holland"/> for their valuable comments and | |||
suggestions.</t> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<t>The authors would like to thank the following people | ||||
for their valuable contributions.</t> | ||||
</back> | <contact fullname="Yisong Liu"> | |||
<organization></organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<email>liuyisong@chinamobile.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Benchong Xu"> | ||||
<organization></organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<country></country> | ||||
</postal> | ||||
<email>xu.benchong@zte.com.cn</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Tanmoy Kundu"> | ||||
<organization></organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<country></country> | ||||
</postal> | ||||
<email>tanmoy.kundu@alcatel-lucent.com</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 184 change blocks. | ||||
659 lines changed or deleted | 687 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |