rfc9127xml2.original.xml | rfc9127.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
<?rfc toc="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc tocompact="no"?> | ||||
<?rfc tocdepth="6"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
<?rfc symrefs="yes"?> | docName="draft-ietf-bfd-yang-17" number="9127" ipr="trust200902" | |||
<?rfc sortrefs="yes"?> | obsoletes="" updates="" submissionType="IETF" category="std" | |||
<rfc category="std" docName="draft-ietf-bfd-yang-17" ipr="trust200902"> | consensus="true" xml:lang="en" tocInclude="true" tocDepth="6" | |||
symRefs="true" sortRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.47.0 --> | ||||
<front> | <front> | |||
<title abbrev="BFD YANG">YANG Data Model for Bidirectional Forwarding | <title abbrev="BFD YANG">YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)</title> | Detection (BFD)</title> | |||
<seriesInfo name="RFC" value="9127"/> | ||||
<author fullname="Reshad Rahman" initials="R." role="editor" | <author fullname="Reshad Rahman" initials="R." role="editor" surname="Rahman | |||
surname="Rahman"> | "> | |||
<organization>Cisco Systems</organization> | <organization></organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country>Canada</country> | <country>Canada</country> | |||
</postal> | </postal> | |||
<email>reshad@yahoo.com</email> | ||||
<email>rrahman@cisco.com</email> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Lianshu Zheng" initials="L." role="editor" surname="Zheng" | ||||
<author fullname="Lianshu Zheng" initials="L." role="editor" | > | |||
surname="Zheng"> | ||||
<organization>Huawei Technologies</organization> | <organization>Huawei Technologies</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>veronique_cheng@hotmail.com</email> | ||||
<email>vero.zheng@huawei.com</email> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Mahesh Jethanandani" initials="M." role="editor" surname=" | ||||
<author fullname="Mahesh Jethanandani" initials="M." role="editor" | Jethanandani"> | |||
surname="Jethanandani"> | ||||
<organization>Xoriant Corporation</organization> | <organization>Xoriant Corporation</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1248 Reamwood Ave</street> | <street>1248 Reamwood Ave</street> | |||
<city>Sunnyvale</city> | <city>Sunnyvale</city> | |||
<region>California</region> | <region>California</region> | |||
<code>94089</code> | <code>94089</code> | |||
<country>United States of America</country> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>mjethanandani@gmail.com</email> | <email>mjethanandani@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Santosh Pallagatti" initials="S." surname="Pallagatti"> | <author fullname="Santosh Pallagatti" initials="S." surname="Pallagatti"> | |||
<organization>Rtbrick</organization> | <organization>VMware</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<email>santosh.pallagatti@gmail.com</email> | <email>santosh.pallagatti@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Greg Mirsky" initials="G." surname="Mirsky"> | <author fullname="Greg Mirsky" initials="G." surname="Mirsky"> | |||
<organization>ZTE Corporation</organization> | <organization>Ericsson</organization> | |||
<address> | <address> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<email>gregimirsky@gmail.com</email> | <email>gregimirsky@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="October" year="2021"/> | ||||
<date day="1" month="August" year="2018"/> | <keyword>Liveliness check</keyword> | |||
<keyword>BGP</keyword> | ||||
<keyword>OSPF</keyword> | ||||
<keyword>IS-IS</keyword> | ||||
<keyword>TCP-AO</keyword> | ||||
<keyword>MD5</keyword> | ||||
<abstract> | <abstract> | |||
<t>This document defines a YANG data model that can be used to configure | <t>This document defines a YANG data model that can be used to configure | |||
and manage Bidirectional Forwarding Detection (BFD).</t> | and manage Bidirectional Forwarding Detection (BFD).</t> | |||
<t>The YANG modules in this document conform to the Network Management | <t>The YANG modules in this document conform to the Network Management | |||
Datastore Architecture (NMDA).</t> | Datastore Architecture (NMDA) (RFC 8342).</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t>This document defines a YANG data model that can be used to configure | <t>This document defines a YANG data model that can be used to configure | |||
and manage Bidirectional Forwarding Detection <xref | and manage Bidirectional Forwarding Detection (BFD) <xref target="RFC5880" | |||
target="RFC5880">(BFD) </xref>. BFD is a network protocol which is used | format="default"></xref>. BFD is a network protocol that is used | |||
for liveness detection of arbitrary paths between systems. Some examples | for liveness detection of arbitrary paths between systems. Some examples | |||
of different types of paths over which we have BFD:</t> | of different types of paths over which we have BFD are as follows:</t> | |||
<t>1) Two systems directly connected via IP. This is known as BFD over | ||||
single-hop IP, a.k.a. <xref target="RFC5881">BFD for IPv4 and IPv6 | ||||
</xref></t> | ||||
<t>2) Two systems connected via multiple hops as described in <xref | ||||
target="RFC5883">BFD for Multiple Hops.</xref></t> | ||||
<t>3) Two systems connected via MPLS Label Switched Paths (LSPs) as | ||||
described in <xref target="RFC5884">BFD for MPLS LSP </xref></t> | ||||
<t>4) Two systems connected via a Link Aggregation Group (LAG) interface | ||||
as described in <xref target="RFC7130">BFD on LAG Interfaces </xref></t> | ||||
<t>5) Two systems connected via pseudowires (PWs), this is known as | ||||
Virtual Circuit Connectivity Verification (VCCV) as described in <xref | ||||
target="RFC5885">BFD for PW VCCV </xref>. This is not addressed in this | ||||
document.</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>Two systems directly connected via IP. This is known as BFD over | ||||
single-hop IP, a.k.a. <xref target="RFC5881" format="default">BFD for | ||||
IPv4 and IPv6</xref>.</li> | ||||
<li>Two systems connected via multiple hops as described in <xref | ||||
target="RFC5883" format="default">"Bidirectional Forwarding Detection | ||||
(BFD) for Multihop Paths"</xref>.</li> | ||||
<li>Two systems connected via MPLS Label Switched Paths (LSPs) as | ||||
described in <xref target="RFC5884" format="default">"Bidirectional | ||||
Forwarding Detection (BFD) for MPLS Label Switched Paths (LSPs)"</xref>.</ | ||||
li> | ||||
<li>Two systems connected via a Link Aggregation Group (LAG) interface | ||||
as described in <xref target="RFC7130" format="default">"Bidirectional | ||||
Forwarding Detection (BFD) on Link Aggregation Group (LAG) Interfaces"</xr | ||||
ef>.</li> | ||||
<li>Two systems connected via pseudowires (PWs). This is known as | ||||
Virtual Circuit Connectivity Verification (VCCV), as described in <xref | ||||
target="RFC5885" format="default">"Bidirectional | ||||
Forwarding Detection (BFD) for the Pseudowire Virtual | ||||
Circuit Connectivity Verification (VCCV)"</xref>. This scenario is not | ||||
addressed in this document.</li> | ||||
</ol> | ||||
<t>BFD typically does not operate on its own. Various control protocols, | <t>BFD typically does not operate on its own. Various control protocols, | |||
also known as BFD clients, use the services provided by BFD for their | also known as BFD clients, use the services provided by BFD for their | |||
own operation as described in <xref target="RFC5882">Generic Application | own operation, as described in <xref target="RFC5882" | |||
of BFD </xref>. The obvious candidates which use BFD are those which do | format="default">"Generic Application of Bidirectional Forwarding | |||
not have "hellos" to detect failures, e.g. static routes, and routing | Detection (BFD)"</xref>. The obvious | |||
protocols whose "hellos" do not support sub-second failure detection, | candidates that use BFD are those that do not have "hellos" to detect | |||
e.g. OSPF and IS-IS.</t> | failures, e.g., static routes, and routing protocols whose "hellos" do | |||
not support sub-second failure detection, e.g., OSPF and IS-IS.</t> | ||||
<t>The YANG modules in this document conform to the <xref | <t>The YANG modules in this document conform to the <xref | |||
target="RFC8342">Network Management Datastore Architecture (NMDA)</xref>. | target="RFC8342" format="default">Network Management Datastore | |||
This means that the data models do not have | Architecture (NMDA)</xref>. This means that the data models do not have | |||
separate top-level or sibling containers for configuration and | separate top-level or sibling containers for configuration data and | |||
operational state data.</t> | operational state data.</t> | |||
<section title="Requirements Language"> | <section numbered="true" toc="default"> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name>Tree Diagrams</name> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | <t>This document uses the graphical representation of data models, as de | |||
document are to be interpreted as described in BCP 14 <xref | fined in | |||
target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they | <xref target="RFC8340" format="default"/>.</t> | |||
appear in all capitals, as shown here.</t> | ||||
</section> | ||||
<section title="Tree Diagrams"> | ||||
<t>This document uses the graphical representation of data models defin | ||||
ed in | ||||
<xref target="RFC8340"/>.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="DESIGN-DATA" numbered="true" toc="default"> | ||||
<section anchor="DESIGN-DATA" title="Design of the Data Model"> | <name>Design of the Data Model</name> | |||
<t>Since BFD is used for liveliness detection of various forwarding | <t>Since BFD is used for liveness detection of various forwarding | |||
paths, there is no uniform key to identify a BFD session, and so the BFD | paths, there is no uniform key to identify a BFD session, and so the BFD | |||
data model is split in multiple YANG modules where each module | data model is split into multiple YANG modules where each module | |||
corresponds to one type of forwarding path. For example, BFD for IP | corresponds to one type of forwarding path. For example, BFD for IP | |||
single-hop is in one YANG module and BFD for MPLS-TE is in another YANG | single-hop is in one YANG module, and BFD for MPLS is in another YANG | |||
module. The main difference between these modules is how a BFD session | module. The main difference between these modules is how a BFD session | |||
is uniquely identified, i.e the key for the list containing the BFD | is uniquely identified, i.e., the key for the list containing the BFD | |||
sessions for that forwarding path. To avoid duplication of BFD | sessions for that forwarding path. To avoid duplication of BFD | |||
definitions, we have common types and groupings which are used by all | definitions, we have common types and groupings that are used by all | |||
the modules.</t> | the modules.</t> | |||
<t>A new control-plane protocol, "bfdv1", is defined, and a "bfd" containe | ||||
<t>A new control-plane protocol "bfdv1" is defined and a "bfd" container | r | |||
is created under control-plane-protocol as specified in <xref | is created under "control-plane-protocol" as specified in <xref | |||
target="RFC8349">"A YANG Data Model for Routing | target="RFC8349" format="default">"A YANG Data Model for Routing | |||
Management (NMDA Version)"</xref>. This new "bfd" container is augmented | Management (NMDA Version)"</xref>. This new "bfd" container is augmented | |||
by all the YANG modules for their respective specific information:<list | by the following YANG modules for their respective specific information: | |||
style="numbers"> | </t> | |||
<t>ietf-bfd-ip-sh.yang augments | <ol spacing="normal" type="1"> | |||
"/routing/control-plane-protocols/control-plane-protocol/bfd/" with | <li>The "ietf-bfd-ip-sh" module (<xref target="bfd-ip-single-hop-module" | |||
the "ip-sh" container for BFD sessions over IP single-hop.</t> | />) augments | |||
<t>ietf-bfd-ip-mh.yang augments | ||||
"/routing/control-plane-protocols/control-plane-protocol/bfd/" with | "/routing/control-plane-protocols/control-plane-protocol/bfd/" with | |||
the "ip-mh" container for BFD sessions over IP multi-hop.</t> | the "ip-sh" container for BFD sessions over IP single-hop.</li> | |||
<li>The "ietf-bfd-ip-mh" module (<xref target="bfd-ip-multihop-module"/> | ||||
<t>ietf-bfd-lag.yang augments | ) augments | |||
"/routing/control-plane-protocols/control-plane-protocol/bfd/" with | "/routing/control-plane-protocols/control-plane-protocol/bfd/" with | |||
the "lag" container for BFD sessions over LAG.</t> | the "ip-mh" container for BFD sessions over IP multihop.</li> | |||
<li>The "ietf-bfd-lag" module (<xref target="bfd-over-lag-module"/>) aug | ||||
<t>ietf-bfd-mpls.yang augments | ments | |||
"/routing/control-plane-protocols/control-plane-protocol/bfd/" with | "/routing/control-plane-protocols/control-plane-protocol/bfd/" with | |||
the "mpls" container for BFD over MPLS LSPs.</t> | the "lag" container for BFD sessions over a LAG.</li> | |||
<li>The "ietf-bfd-mpls" module (<xref target="bfd-over-mpls-module"/>) a | ||||
<t>ietf-bfd-mpls-te.yang augments | ugments | |||
"/routing/control-plane-protocols/control-plane-protocol/bfd/" with | "/routing/control-plane-protocols/control-plane-protocol/bfd/" with | |||
the "mpls-te" container for BFD over MPLS-TE.</t> | the "mpls" container for BFD-over-MPLS LSPs.</li> | |||
</list></t> | </ol> | |||
<t>BFD can operate in the following contexts:</t> | ||||
<t>BFD can operate in the following contexts: <list style="numbers"> | <ol spacing="normal" type="1"> | |||
<t>At the network device level</t> | <li>At the network device level.</li> | |||
<li>In logical network elements (LNEs) as described in <xref | ||||
<t>In Logical Network Elements as described in <xref | target="RFC8530" format="default">"YANG Model for Logical Network Elemen | |||
target="I-D.ietf-rtgwg-lne-model">YANG Logical Network | ts"</xref>.</li> | |||
Element</xref></t> | <li>In network instances as described in <xref | |||
target="RFC8529" format="default">"YANG Data Model for Network Instances | ||||
<t>In Network Instances as described in <xref | "</xref>.</li> | |||
target="I-D.ietf-rtgwg-ni-model">YANG Logical Network | </ol> | |||
Element</xref></t> | <t> When used at the network device level, the BFD YANG data model is | |||
</list> When used at the network device level, the BFD YANG model is | used "as is". When the BFD YANG data model is used in an LNE or network | |||
used "as-is". When the BFD YANG model is used in a Logical Network | instance, the BFD YANG data model augments | |||
Element or in a Network Instance, then the BFD YANG model augments | the mounted routing model for the LNE or network instance.</t> | |||
the mounted routing model for the Logical Network Element or the | <section anchor="CFG-MODEL" numbered="true" toc="default"> | |||
Network Instance.</t> | <name>Design of the Configuration Model</name> | |||
<section anchor="CFG-MODEL" title="Design of Configuration Model"> | ||||
<t>The configuration model consists mainly of the parameters specified | <t>The configuration model consists mainly of the parameters specified | |||
in <xref target="RFC5880">BFD</xref>. Some examples are desired | in <xref target="RFC5880" format="default">BFD</xref> -- for example, de | |||
minimum transmit interval, required minimum receive interval, | sired | |||
detection multiplier, etc</t> | minimum transmit interval, required minimum receive interval, and | |||
detection multiplier.</t> | ||||
<t>BFD clients are applications that use BFD for fast detection of | <t>BFD clients are applications that use BFD for fast detection of | |||
failures. Some implementations have BFD session configuration under | failures. Some implementations have BFD session configuration under | |||
the BFD clients. For example, BFD session configuration under routing | the BFD clients -- for example, BFD session configuration under routing | |||
applications such as OSPF, IS-IS, BGP etc. Other implementations have | applications such as OSPF, IS-IS, or BGP. Other implementations have | |||
BFD session configuration centralized under BFD, i.e. outside the | BFD session configuration centralized under BFD, i.e., outside the | |||
multiple BFD clients.</t> | multiple BFD clients.</t> | |||
<t>The main BFD parameters of interest to a BFD client are those | ||||
<t>The BFD parameters of interest to a BFD client are mainly the | related to the | |||
multiplier and interval(s) since those parameters impact the | multiplier and interval(s), since those parameters impact the | |||
convergence time of the BFD clients when a failure occurs. Other | convergence time of the BFD clients when a failure occurs. Other | |||
parameters such as BFD authentication are not specific to the | parameters, such as BFD authentication, are not specific to the | |||
requirements of the BFD client. Ideally all configuration should be | requirements of the BFD client. Configuration of BFD for all | |||
centralized under BFD. However, this is a problem for clients of BFD | clients should be centralized. However, this is a problem for BFD client | |||
which auto-discover their peers. For example, IGPs do not have the | s | |||
peer address configured, instead the IGP is enabled on an interface | that auto-discover their peers. For example, IGPs do not have the | |||
and the IGP peers are auto-discovered. So for an operator to configure | peer address configured; instead, the IGP is enabled on an interface, | |||
and the IGP peers are auto-discovered. So, for an operator to configure | ||||
BFD to an IGP peer, the operator would first have to determine the | BFD to an IGP peer, the operator would first have to determine the | |||
peer addresses. And when a new peer is discovered, BFD configuration | peer addresses. And when a new peer is discovered, BFD configuration | |||
would need to be added. To avoid this issue, we define grouping | would need to be added. To avoid this issue, we define the grouping | |||
client-cfg-parms in <xref target="BFD-TYPES"/> for BFD clients to | "client-cfg-parms" in <xref target="BFD-TYPES" format="default"/> for BF | |||
configure BFD: this allows BFD clients such as the IGPs to have | D clients to | |||
configure BFD: this allows BFD clients, such as the IGPs, to have | ||||
configuration (multiplier and intervals) for the BFD sessions they | configuration (multiplier and intervals) for the BFD sessions they | |||
need. For example, when a new IGP peer is discovered, the IGP would | need. For example, when a new IGP peer is discovered, the IGP would | |||
create a BFD session to the newly discovered peer and similarly when | create a BFD session to the newly discovered peer; similarly, when | |||
an IGP peer goes away, the IGP would remove the BFD session to that | an IGP peer goes away, the IGP would remove the BFD session to that | |||
peer. The mechanism how the BFD sessions are created and removed by | peer. The mechanism for how the BFD sessions are created and removed by | |||
the BFD clients is outside the scope of this document, but typically | the BFD clients is outside the scope of this document, but | |||
this would be done by use of an API implemented by the BFD module on | this would typically be done by using an API implemented by the BFD modu | |||
the system. For BFD clients which create BFD sessions via their own | le on | |||
the system. In the case of BFD clients that create BFD sessions via thei | ||||
r own | ||||
configuration, authentication parameters (if required) are still | configuration, authentication parameters (if required) are still | |||
specified in BFD.</t> | specified in BFD.</t> | |||
<section anchor="BFD-COMMON-CFG" numbered="true" toc="default"> | ||||
<section anchor="BFD-COMMON-CFG" | <name>Common BFD Configuration Parameters</name> | |||
title="Common BFD configuration parameters"> | <t>The basic BFD configuration parameters are as follows:</t> | |||
<t>The basic BFD configuration parameters are: <list hangIndent="8" | <dl newline="true" spacing="normal"> | |||
style="hanging"> | <dt>local-multiplier</dt> | |||
<t hangText="local-multiplier"><vspace/>This is the detection | <dd>This is the detection time multiplier as defined in <xref | |||
time multiplier as defined in <xref | target="RFC5880" format="default">BFD</xref>.</dd> | |||
target="RFC5880">BFD</xref>.</t> | <dt>desired-min-tx-interval</dt> | |||
<dd>This is the Desired Min TX Interval as defined in <xref | ||||
<t hangText="desired-min-tx-interval"><vspace/>This is the | target="RFC5880" format="default">BFD</xref>.</dd> | |||
Desired Min TX Interval as defined in <xref | <dt>required-min-rx-interval</dt> | |||
target="RFC5880">BFD</xref>.</t> | <dd>This is the Required Min RX Interval as defined in <xref | |||
target="RFC5880" format="default">BFD</xref>.</dd> | ||||
<t hangText="required-min-rx-interval"><vspace/>This is the | </dl> | |||
Required Min RX Interval as defined in <xref | <t>Although <xref target="RFC5880" format="default">BFD</xref> | |||
target="RFC5880">BFD</xref>.</t> | allows for different values for transmit and receive intervals, some | |||
</list>Although <xref target="RFC5880">BFD</xref> allows for | implementations allow users to specify just one interval that is | |||
different values for transmit and receive intervals, some | used for both transmit and receive intervals, or separate values for | |||
implementations allow users to specify just one interval which is | transmit and receive intervals. The BFD YANG data model supports this: | |||
used for both transmit and receive intervals or separate values for | ||||
transmit and receive intervals. The BFD YANG model supports this: | ||||
there is a choice between "min-interval", used for both transmit and | there is a choice between "min-interval", used for both transmit and | |||
receive intervals, and "desired-min-tx-interval" and | receive intervals, and "desired-min-tx-interval" and | |||
"required-min-rx-interval". This is supported via a grouping which | "required-min-rx-interval". This is supported via the | |||
"base-cfg-parms" grouping (<xref target="BFD-TYPES"/>), which | ||||
is used by the YANG modules for the various forwarding paths.</t> | is used by the YANG modules for the various forwarding paths.</t> | |||
<t>For BFD authentication, we have the following:</t> | ||||
<t>For BFD authentication we have: <list hangIndent="8" | <dl newline="true" spacing="normal"> | |||
style="hanging"> | <dt>key-chain</dt> | |||
<t hangText="key-chain"><vspace/>This is a reference to | <dd>This is a reference to "key-chain" as defined in <xref | |||
key-chain defined in <xref target="RFC8177">YANG Data Model for | target="RFC8177" format="default">"YANG Data Model for Key | |||
Key Chains </xref>. The keys, cryptographic algorithms, key | Chains"</xref>. The keys, cryptographic algorithms, key lifetime, | |||
lifetime etc are all defined in the key-chain model.</t> | etc. are all defined in the "key-chain" model.</dd> | |||
<dt>meticulous</dt> | ||||
<t hangText="meticulous"><vspace/>This enables meticulous mode | <dd>This enables a meticulous mode as per <xref target="RFC5880" | |||
as per <xref target="RFC5880">BFD </xref>.</t> | format="default">BFD </xref>.</dd> | |||
</list></t> | </dl> | |||
</section> | </section> | |||
<section anchor="IP-SH-CFG" numbered="true" toc="default"> | ||||
<section anchor="IP-SH-CFG" title="Single-hop IP"> | <name>Single-Hop IP</name> | |||
<t>For single-hop IP, there is an augment of the "bfd" data node in | <t>For single-hop IP, there is an augment of the "bfd" data node, as | |||
<xref target="DESIGN-DATA"/>. The "ip-sh" node contains a list of IP | described in | |||
single-hop sessions where each session is uniquely identified by the | <xref target="DESIGN-DATA" format="default"/>. The "ip-sh" node | |||
interface and destination address pair. For the configuration | contains a list of IP single-hop sessions where each session is | |||
parameters we use what is defined in <xref | uniquely identified by the interface and destination address | |||
target="BFD-COMMON-CFG"/>. The "ip-sh" node also contains a list of | pair. We use the configuration parameters defined in | |||
interfaces, this is used to specify authentication parameters for | <xref target="BFD-COMMON-CFG" format="default"/>. The "ip-sh" node | |||
BFD sessions which are created by BFD clients, see <xref | also contains a list of interfaces and is used to specify | |||
target="CFG-MODEL"/>.</t> | authentication parameters for BFD sessions that are created by BFD | |||
clients. See <xref target="CFG-MODEL" format="default"/>.</t> | ||||
<t><xref target="RFC5880"/> and <xref target="RFC5881"/> do not | <t><xref target="RFC5880" format="default"/> and <xref | |||
specify whether echo function is continuous or on demand. Therefore | target="RFC5881" format="default"/> do not specify whether | |||
the mechanism used to start and stop echo function is implementation | the Echo function operates continuously or on demand. Therefore, the m | |||
specific and should be done by augmentation: <list> | echanism used to | |||
<t>1) Configuration. This is suitable for continuous echo | start and stop the Echo function is implementation specific and should | |||
function. An example is provided in <xref | be done by augmentation:</t> | |||
target="ECHO-CONFIG"/>.</t> | <ol spacing="normal" type="1"> | |||
<li>Configuration. This is suitable for an Echo function that | ||||
<t>2) RPC. This is suitable for on-demand echo function.</t> | operates continuously. An example is provided in <xref target="ECHO- | |||
</list></t> | CONFIG" | |||
format="default"/>.</li> | ||||
<li>RPC. This is suitable for an Echo function that operates | ||||
on demand.</li> | ||||
</ol> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Multihop IP"> | <name>Multihop IP</name> | |||
<t>For multihop IP, there is an augment of the "bfd" data node in | <t>For multihop IP, there is an augment of the "bfd" data node, as des | |||
<xref target="DESIGN-DATA"/>.</t> | cribed in | |||
<xref target="DESIGN-DATA" format="default"/>.</t> | ||||
<t>Because of multiple paths, there could be multiple multihop IP | <t>Because of multiple paths, there could be multiple multihop IP | |||
sessions between a source and a destination address. We identify | sessions between a source and a destination address. We identify | |||
this as a "session-group". The key for each "session-group" consists | this set of sessions as a "session-group". The key for each "session-g | |||
of: <list hangIndent="8" style="hanging"> | roup" consists | |||
<t hangText="source address"><vspace/>Address belonging to the | of the following:</t> | |||
local system as per <xref target="RFC5883">BFD for Multiple Hops | <dl newline="true" spacing="normal"> | |||
</xref></t> | <dt>Source address</dt> | |||
<dd>Address belonging to the local system as per <xref | ||||
<t hangText="destination address"><vspace/>Address belonging to | target="RFC5883" format="default">"Bidirectional Forwarding | |||
the remote system as per <xref target="RFC5883">BFD for Multiple | Detection (BFD) for Multihop Paths"</xref>.</dd> | |||
Hops </xref></t> | <dt>Destination address</dt> | |||
</list></t> | <dd>Address belonging to the remote system as per <xref | |||
target="RFC5883" format="default"></xref>.</dd> | ||||
<t>For the configuration parameters we use what is defined in <xref | </dl> | |||
target="BFD-COMMON-CFG"/></t> | <t>We use the configuration parameters defined in <xref | |||
target="BFD-COMMON-CFG" format="default"/>.</t> | ||||
<t>Here are some extra parameters: <list hangIndent="8" | <t>This document also provides the following parameters:</t> | |||
style="hanging"> | <dl newline="true" spacing="normal"> | |||
<t hangText="tx-ttl"><vspace/>TTL of outgoing BFD control | <dt>tx-ttl</dt> | |||
packets.</t> | <dd>TTL of outgoing BFD control packets.</dd> | |||
<dt>rx-ttl</dt> | ||||
<t hangText="rx-ttl"><vspace/>Minimum TTL of incoming BFD | <dd>Minimum TTL of incoming BFD control packets.</dd> | |||
control packets.</t> | </dl> | |||
</list></t> | ||||
</section> | ||||
<section anchor="BFD-MPLS-TE-CFG" | ||||
title="MPLS Traffic Engineering Tunnels"> | ||||
<t>For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel | ||||
since the desired failure detection parameters are a property of the | ||||
MPLS-TE tunnel. This is achieved by augmenting the MPLS-TE data | ||||
model in <xref target="I-D.ietf-teas-yang-te">YANG Data Model for TE | ||||
Topologies </xref>. For BFD parameters which are specific to the TE | ||||
application, e.g. whether to tear down the tunnel in the event of a | ||||
BFD session failure, these parameters will be defined in the YANG | ||||
model of the MPLS-TE application.</t> | ||||
<t>On top of the usual BFD parameters, we have the following per | ||||
MPLS-TE tunnel: <list hangIndent="8" style="hanging"> | ||||
<t hangText="encap"><vspace/>Encapsulation for the BFD packets: | ||||
choice between IP, G-ACh and IP with G-ACh as per <xref | ||||
target="RFC5586">MPLS Generic Associated Channel </xref></t> | ||||
</list></t> | ||||
<t>For general MPLS-TE data, "mpls-te" data node is added under the | ||||
"bfd" node in <xref target="DESIGN-DATA"/>. Since some MPLS-TE | ||||
tunnels are uni-directional there is no MPLS-TE configuration for | ||||
these tunnels on the egress node (note that this does not apply to | ||||
bi-directional MPLS-TP tunnels). The BFD parameters for the egress | ||||
node are added under "mpls-te".</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="MPLS Label Switched Paths"> | <name>MPLS Label Switched Paths</name> | |||
<t>Here we address MPLS LSPs whose FEC is an IP address. The "bfd" | <t>Here, we address MPLS LSPs whose | |||
node in <xref target="DESIGN-DATA"/> is augmented with "mpls" which | Forwarding Equivalence Class (FEC) <xref target="RFC3031"/> is an IP | |||
contains a list of sessions uniquely identified by an IP prefix. | address. The "bfd" | |||
Because of multiple paths, there could be multiple MPLS sessions to | node (<xref target="DESIGN-DATA" format="default"/>) is augmented | |||
an MPLS FEC. We identify this as a "session-group".</t> | with "mpls", which contains a list of sessions uniquely identified by | |||
an IP prefix. Because of multiple paths, there could be multiple | ||||
<t>Since these LSPs are uni-directional there is no LSP | MPLS sessions to an MPLS FEC. We identify this set of sessions as a | |||
"session-group".</t> | ||||
<t>Since these LSPs are unidirectional, there is no LSP | ||||
configuration on the egress node.</t> | configuration on the egress node.</t> | |||
<t>The BFD parameters for the egress node are added under | <t>The BFD parameters for the egress node are added under | |||
"mpls".</t> | "mpls".</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Link Aggregation Groups"> | <name>Link Aggregation Groups</name> | |||
<t>Per <xref target="RFC7130">BFD on LAG Interfaces </xref>, | <t>Per <xref target="RFC7130" format="default">"Bidirectional | |||
configuring BFD on LAG consists of having micro-BFD sessions on each | Forwarding Detection (BFD) on Link Aggregation Group (LAG) | |||
LAG member link. Since the BFD parameters are an attribute of the | Interfaces"</xref>, configuring BFD on a LAG consists of having micro- | |||
LAG, they should be under the LAG. However there is no LAG YANG | BFD | |||
model which we can augment. So a "lag" data node is added to the | sessions on each LAG member link. Since the BFD parameters are an | |||
"bfd" node in <xref target="DESIGN-DATA"/>, the configuration is | attribute of the LAG, they should be under the LAG. However, there is | |||
per-LAG: we have a list of LAGs. The destination IP address of the | no LAG YANG data model that we can augment. So, a "lag" data node is | |||
micro-BFD sessions is configured per-LAG and per address-family | added to the "bfd" node; see <xref target="DESIGN-DATA" | |||
(IPv4 and IPv6)</t> | format="default"/>. The configuration is per LAG: we have a list of | |||
LAGs. The destination IP address of the micro-BFD sessions is | ||||
configured per LAG and per address family (IPv4 and IPv6).</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Design of Operational State Model"> | <name>Design of the Operational State Model</name> | |||
<t>The operational state model contains both the overall statistics of | <t>The operational state model contains both the overall statistics for | |||
BFD sessions running on the device and the per session operational | the BFD sessions running on the device and the per-session operational | |||
information.</t> | information.</t> | |||
<t>The overall statistics for the BFD sessions consist of the number of | ||||
BFD | ||||
sessions, the number of BFD sessions that are up, etc. This information | ||||
is available | ||||
globally (i.e., for all BFD sessions) under the "bfd" node | ||||
(<xref target="DESIGN-DATA" format="default"/>) and also per type of | ||||
forwarding path.</t> | ||||
<t>For each BFD session, three main categories of operational state | ||||
data are shown.</t> | ||||
<t>The overall statistics of BFD sessions consist of number of BFD | <ol spacing="normal" type="1"> | |||
sessions, number of BFD sessions up etc. This information is available | <li>The first category includes fundamental information regarding a BFD s | |||
globally (i.e. for all BFD sessions) under the "bfd" node in <xref | ession, such as | |||
target="DESIGN-DATA"/> and also per type of forwarding path.</t> | the local discriminator, the remote discriminator, and the ability to | |||
support Demand mode.</li> | ||||
<t>For each BFD session, mainly three categories of operational state | <li>The | |||
data are shown. The fundamental information of a BFD session such as | second category includes BFD "session-running" information, e.g., the | |||
the local discriminator, remote discriminator and the capability of | ||||
supporting demand detect mode are shown in the first category. The | ||||
second category includes a BFD session running information, e.g. the | ||||
remote BFD state and the diagnostic code received. Another example is | remote BFD state and the diagnostic code received. Another example is | |||
the actual transmit interval between the control packets, which may be | the actual transmit interval between the control packets, which may be | |||
different from the desired minimum transmit interval configured, is | different from the configured desired minimum transmit | |||
shown in this category. Similar examples are actual received interval | interval. Similar examples include the actual receive interval | |||
between the control packets and the actual transmit interval between | between the control packets and the actual transmit interval between | |||
the echo packets. The third category contains the detailed statistics | the Echo packets.</li> | |||
of the session, e.g. when the session transitioned up/down and how | <li> The third category contains the detailed statistics | |||
long it has been in that state.</t> | for the session, e.g., when the session transitioned up/down and how | |||
long it has been in that state.</li> | ||||
</ol> | ||||
<t>For some path types, there may be more than 1 session on the | <t>For some path types, there may be more than one session on the | |||
virtual path to the destination. For example, with IP multihop and | virtual path to the destination. For example, with IP multihop and | |||
MPLS LSPs, there could be multiple BFD sessions from the source to the | MPLS LSPs, there could be multiple BFD sessions from the source to the | |||
same destination to test the various paths (ECMP) to the destination. | same destination to test the various paths (ECMP) to the destination. | |||
This is represented by having multiple "sessions" under each | This is represented by having multiple "sessions" under each | |||
"session-group".</t> | "session-group".</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Notifications"> | <name>Notifications</name> | |||
<t>This YANG model defines notifications to inform end-users of | <t>This YANG data model defines notifications to inform end users of | |||
important events detected during the protocol operation. Pair of local | important events detected during the protocol operation. The | |||
and remote discriminator identifies a BFD session on local system. | local discriminator identifies the corresponding BFD session on the | |||
Notifications also give more important details about BFD sessions; | local system, and the remote discriminator identifies the BFD session | |||
e.g. new state, time in previous state, network-instance and the | on the remote system. | |||
Notifications also give more important details about BFD sessions, | ||||
e.g., new state, time in previous state, network instance, and the | ||||
reason that the BFD session state changed. The notifications are | reason that the BFD session state changed. The notifications are | |||
defined for each type of forwarding path but use groupings for common | defined for each type of forwarding path but use groupings for common | |||
information.</t> | information.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="RPC Operations"> | <name>RPC Operations</name> | |||
<t>None.</t> | <t>None.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="BFD top level hierarchy"> | <name>BFD Top-Level Hierarchy</name> | |||
<t>At the "bfd" node under control-plane-protocol, there is no | <t>At the "bfd" node under "control-plane-protocol", there is no | |||
configuration data, only operational state data. The operational state | configuration data -- only operational state data. The operational state | |||
data consist of overall BFD session statistics, i.e. for BFD on all | data consists of overall BFD session statistics, i.e., for BFD on all | |||
types of forwarding paths.</t> | types of forwarding paths.</t> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: ietf-bfd | module: ietf-bfd | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
+--rw bfd | +--rw bfd | |||
+--ro summary | +--ro summary | |||
+--ro number-of-sessions? yang:gauge32 | +--ro number-of-sessions? yang:gauge32 | |||
+--ro number-of-sessions-up? yang:gauge32 | +--ro number-of-sessions-up? yang:gauge32 | |||
+--ro number-of-sessions-down? yang:gauge32 | +--ro number-of-sessions-down? yang:gauge32 | |||
+--ro number-of-sessions-admin-down? yang:gauge32 | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="BFD IP single-hop hierarchy"> | <name>BFD IP Single-Hop Hierarchy</name> | |||
<t>An "ip-sh" node is added under "bfd" node in | <t>An "ip-sh" node is added under the "bfd" node in | |||
control-plane-protocol. The configuration and operational state data | "control-plane-protocol". The configuration data and operational state d | |||
for each BFD IP single-hop session is under this "ip-sh" node.</t> | ata | |||
for each BFD IP single-hop session are under this "ip-sh" node.</t> | ||||
<figure align="left"> | <sourcecode type="yangtree"><![CDATA[ | |||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: ietf-bfd-ip-sh | module: ietf-bfd-ip-sh | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/bfd:bfd: | /rt:control-plane-protocol/bfd:bfd: | |||
+--rw ip-sh | +--rw ip-sh | |||
+--ro summary | +--ro summary | |||
| +--ro number-of-sessions? yang:gauge32 | | +--ro number-of-sessions? yang:gauge32 | |||
| +--ro number-of-sessions-up? yang:gauge32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| +--ro number-of-sessions-down? yang:gauge32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| +--ro number-of-sessions-admin-down? yang:gauge32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
+--rw sessions | +--rw sessions | |||
skipping to change at line 520 ¶ | skipping to change at line 429 ¶ | |||
| +--rw (interval-config-type)? | | +--rw (interval-config-type)? | |||
| | +--:(tx-rx-intervals) | | | +--:(tx-rx-intervals) | |||
| | | +--rw desired-min-tx-interval? uint32 | | | | +--rw desired-min-tx-interval? uint32 | |||
| | | +--rw required-min-rx-interval? uint32 | | | | +--rw required-min-rx-interval? uint32 | |||
| | +--:(single-interval) {single-minimum-interval}? | | | +--:(single-interval) {single-minimum-interval}? | |||
| | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| +--rw demand-enabled? boolean | | +--rw demand-enabled? boolean | |||
| | {demand-mode}? | | | {demand-mode}? | |||
| +--rw admin-down? boolean | | +--rw admin-down? boolean | |||
| +--rw authentication! {authentication}? | | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref | |||
| | +--rw meticulous? boolean | | | +--rw meticulous? boolean | |||
| +--ro path-type? identityref | | +--ro path-type? identityref | |||
| +--ro ip-encapsulation? boolean | | +--ro ip-encapsulation? boolean | |||
| +--ro local-discriminator? discriminator | | +--ro local-discriminator? discriminator | |||
| +--ro remote-discriminator? discriminator | | +--ro remote-discriminator? discriminator | |||
| +--ro remote-multiplier? multiplier | | +--ro remote-multiplier? multiplier | |||
| +--ro demand-capability? boolean | | +--ro demand-capability? boolean | |||
| | {demand-mode}? | | | {demand-mode}? | |||
| +--ro source-port? inet:port-number | | +--ro source-port? inet:port-number | |||
| +--ro dest-port? inet:port-number | | +--ro dest-port? inet:port-number | |||
skipping to change at line 564 ¶ | skipping to change at line 473 ¶ | |||
| | yang:date-and-time | | | yang:date-and-time | |||
| +--ro down-count? yang:counter32 | | +--ro down-count? yang:counter32 | |||
| +--ro admin-down-count? yang:counter32 | | +--ro admin-down-count? yang:counter32 | |||
| +--ro receive-packet-count? yang:counter64 | | +--ro receive-packet-count? yang:counter64 | |||
| +--ro send-packet-count? yang:counter64 | | +--ro send-packet-count? yang:counter64 | |||
| +--ro receive-invalid-packet-count? yang:counter64 | | +--ro receive-invalid-packet-count? yang:counter64 | |||
| +--ro send-failed-packet-count? yang:counter64 | | +--ro send-failed-packet-count? yang:counter64 | |||
+--rw interfaces* [interface] | +--rw interfaces* [interface] | |||
+--rw interface if:interface-ref | +--rw interface if:interface-ref | |||
+--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
+--rw key-chain? kc:key-chain-ref | +--rw key-chain? key-chain:key-chain-ref | |||
+--rw meticulous? boolean | +--rw meticulous? boolean | |||
notifications: | notifications: | |||
+---n singlehop-notification | +---n singlehop-notification | |||
+--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
+--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
+--ro new-state? state | +--ro new-state? state | |||
+--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
+--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
+--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
+--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
+--ro session-index? uint32 | +--ro session-index? uint32 | |||
+--ro path-type? identityref | +--ro path-type? identityref | |||
+--ro interface? if:interface-ref | +--ro interface? if:interface-ref | |||
+--ro echo-enabled? boolean | +--ro echo-enabled? boolean | |||
]]></sourcecode> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="BFD IP multihop hierarchy"> | <name>BFD IP Multihop Hierarchy</name> | |||
<t>An "ip-mh" node is added under the "bfd" node in | <t>An "ip-mh" node is added under the "bfd" node in | |||
cntrol-plane-protocol. The configuration and operational state data | "control-plane-protocol". The configuration data and operational state d | |||
for each BFD IP multihop session is under this "ip-mh" node. In the | ata | |||
operational state model we support multiple BFD multihop sessions per | for each BFD IP multihop session are under this "ip-mh" node. In the | |||
remote address (ECMP), the local discriminator is used as key.</t> | operational state model, we support multiple BFD multihop sessions per | |||
remote address (ECMP); the local discriminator is used as the key.</t> | ||||
<figure align="left"> | <sourcecode type="yangtree"><![CDATA[ | |||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: ietf-bfd-ip-mh | module: ietf-bfd-ip-mh | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/bfd:bfd: | /rt:control-plane-protocol/bfd:bfd: | |||
+--rw ip-mh | +--rw ip-mh | |||
+--ro summary | +--ro summary | |||
| +--ro number-of-sessions? yang:gauge32 | | +--ro number-of-sessions? yang:gauge32 | |||
| +--ro number-of-sessions-up? yang:gauge32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| +--ro number-of-sessions-down? yang:gauge32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| +--ro number-of-sessions-admin-down? yang:gauge32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
+--rw session-groups | +--rw session-groups | |||
skipping to change at line 621 ¶ | skipping to change at line 523 ¶ | |||
+--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| +--:(single-interval) {single-minimum-interval}? | | +--:(single-interval) {single-minimum-interval}? | |||
| +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
+--rw demand-enabled? boolean | +--rw demand-enabled? boolean | |||
| {demand-mode}? | | {demand-mode}? | |||
+--rw admin-down? boolean | +--rw admin-down? boolean | |||
+--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? key-chain:key-chain-ref | |||
| +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
+--rw tx-ttl? bfd-types:hops | +--rw tx-ttl? bfd-types:hops | |||
+--rw rx-ttl bfd-types:hops | +--rw rx-ttl bfd-types:hops | |||
+--ro sessions* [] | +--ro sessions* [] | |||
+--ro path-type? identityref | +--ro path-type? identityref | |||
+--ro ip-encapsulation? boolean | +--ro ip-encapsulation? boolean | |||
+--ro local-discriminator? discriminator | +--ro local-discriminator? discriminator | |||
+--ro remote-discriminator? discriminator | +--ro remote-discriminator? discriminator | |||
+--ro remote-multiplier? multiplier | +--ro remote-multiplier? multiplier | |||
+--ro demand-capability? boolean {demand-mode}? | +--ro demand-capability? boolean {demand-mode}? | |||
skipping to change at line 682 ¶ | skipping to change at line 584 ¶ | |||
+---n multihop-notification | +---n multihop-notification | |||
+--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
+--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
+--ro new-state? state | +--ro new-state? state | |||
+--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
+--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
+--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
+--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
+--ro session-index? uint32 | +--ro session-index? uint32 | |||
+--ro path-type? identityref | +--ro path-type? identityref | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="BFD over LAG hierarchy"> | <name>BFD-over-LAG Hierarchy</name> | |||
<t>A "lag" node is added under the "bfd" node in | <t>A "lag" node is added under the "bfd" node in | |||
control-plane-protocol. The configuration and operational state data | "control-plane-protocol". The configuration data and operational state d | |||
for each BFD LAG session is under this "lag" node.</t> | ata | |||
for each BFD LAG session are under this "lag" node.</t> | ||||
<figure align="left"> | <sourcecode type="yangtree"><![CDATA[ | |||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: ietf-bfd-lag | module: ietf-bfd-lag | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/bfd:bfd: | /rt:control-plane-protocol/bfd:bfd: | |||
+--rw lag | +--rw lag | |||
+--rw micro-bfd-ipv4-session-statistics | +--rw micro-bfd-ipv4-session-statistics | |||
| +--ro summary | | +--ro summary | |||
| +--ro number-of-sessions? yang:gauge32 | | +--ro number-of-sessions? yang:gauge32 | |||
| +--ro number-of-sessions-up? yang:gauge32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| +--ro number-of-sessions-down? yang:gauge32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| +--ro number-of-sessions-admin-down? yang:gauge32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
skipping to change at line 730 ¶ | skipping to change at line 626 ¶ | |||
+--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| +--:(single-interval) {single-minimum-interval}? | | +--:(single-interval) {single-minimum-interval}? | |||
| +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
+--rw demand-enabled? boolean | +--rw demand-enabled? boolean | |||
| {demand-mode}? | | {demand-mode}? | |||
+--rw admin-down? boolean | +--rw admin-down? boolean | |||
+--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? key-chain:key-chain-ref | |||
| +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
+--rw use-ipv4? boolean | +--rw use-ipv4? boolean | |||
+--rw use-ipv6? boolean | +--rw use-ipv6? boolean | |||
+--ro member-links* [member-link] | +--ro member-links* [member-link] | |||
+--ro member-link if:interface-ref | +--ro member-link if:interface-ref | |||
+--ro micro-bfd-ipv4 | +--ro micro-bfd-ipv4 | |||
| +--ro path-type? identityref | | +--ro path-type? identityref | |||
| +--ro ip-encapsulation? boolean | | +--ro ip-encapsulation? boolean | |||
| +--ro local-discriminator? discriminator | | +--ro local-discriminator? discriminator | |||
| +--ro remote-discriminator? discriminator | | +--ro remote-discriminator? discriminator | |||
skipping to change at line 844 ¶ | skipping to change at line 740 ¶ | |||
+--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
+--ro new-state? state | +--ro new-state? state | |||
+--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
+--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
+--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
+--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
+--ro session-index? uint32 | +--ro session-index? uint32 | |||
+--ro path-type? identityref | +--ro path-type? identityref | |||
+--ro lag-name? if:interface-ref | +--ro lag-name? if:interface-ref | |||
+--ro member-link? if:interface-ref | +--ro member-link? if:interface-ref | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="BFD over MPLS LSPs hierarchy"> | <name>BFD-over-MPLS-LSPs Hierarchy</name> | |||
<t>An "mpls" node is added under the "bfd" node in | <t>An "mpls" node is added under the "bfd" node in | |||
control-plane-protocol. The configuration is per MPLS FEC under this | "control-plane-protocol". The configuration is per MPLS FEC under this | |||
"mpls" node. In the operational state model we support multiple BFD | "mpls" node. In the operational state model, we support multiple BFD | |||
sessions per MPLS FEC (ECMP), the local discriminator is used as key. | sessions per MPLS FEC (ECMP); the local discriminator is used as the key | |||
The "mpls" node can be used in a network device (top-level), or | . | |||
mounted in an LNE or in a network instance.</t> | The "mpls" node can be used in a network device (top level) or can be | |||
mounted in an LNE or network instance.</t> | ||||
<figure align="left"> | <sourcecode type="yangtree"><![CDATA[ | |||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: ietf-bfd-mpls | module: ietf-bfd-mpls | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/bfd:bfd: | /rt:control-plane-protocol/bfd:bfd: | |||
+--rw mpls | +--rw mpls | |||
+--ro summary | +--ro summary | |||
| +--ro number-of-sessions? yang:gauge32 | | +--ro number-of-sessions? yang:gauge32 | |||
| +--ro number-of-sessions-up? yang:gauge32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| +--ro number-of-sessions-down? yang:gauge32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| +--ro number-of-sessions-admin-down? yang:gauge32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
+--rw egress | +--rw egress | |||
| +--rw enable? boolean | | +--rw enabled? boolean | |||
| +--rw local-multiplier? multiplier | | +--rw local-multiplier? multiplier | |||
| +--rw (interval-config-type)? | | +--rw (interval-config-type)? | |||
| | +--:(tx-rx-intervals) | | | +--:(tx-rx-intervals) | |||
| | | +--rw desired-min-tx-interval? uint32 | | | | +--rw desired-min-tx-interval? uint32 | |||
| | | +--rw required-min-rx-interval? uint32 | | | | +--rw required-min-rx-interval? uint32 | |||
| | +--:(single-interval) {single-minimum-interval}? | | | +--:(single-interval) {single-minimum-interval}? | |||
| | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| +--rw authentication! {authentication}? | | +--rw authentication! {authentication}? | |||
| +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? key-chain:key-chain-ref | |||
| +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
+--rw session-groups | +--rw session-groups | |||
+--rw session-group* [mpls-fec] | +--rw session-group* [mpls-fec] | |||
+--rw mpls-fec inet:ip-prefix | +--rw mpls-fec inet:ip-prefix | |||
+--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier | |||
+--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| +--:(single-interval) {single-minimum-interval}? | | +--:(single-interval) {single-minimum-interval}? | |||
| +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
+--rw demand-enabled? boolean | +--rw demand-enabled? boolean | |||
| {demand-mode}? | | {demand-mode}? | |||
+--rw admin-down? boolean | +--rw admin-down? boolean | |||
+--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? key-chain:key-chain-ref | |||
| +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
+--ro sessions* [] | +--ro sessions* [] | |||
+--ro path-type? identityref | +--ro path-type? identityref | |||
+--ro ip-encapsulation? boolean | +--ro ip-encapsulation? boolean | |||
+--ro local-discriminator? discriminator | +--ro local-discriminator? discriminator | |||
+--ro remote-discriminator? discriminator | +--ro remote-discriminator? discriminator | |||
+--ro remote-multiplier? multiplier | +--ro remote-multiplier? multiplier | |||
+--ro demand-capability? boolean {demand-mode}? | +--ro demand-capability? boolean {demand-mode}? | |||
+--ro source-port? inet:port-number | +--ro source-port? inet:port-number | |||
+--ro dest-port? inet:port-number | +--ro dest-port? inet:port-number | |||
skipping to change at line 957 ¶ | skipping to change at line 847 ¶ | |||
+--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
+--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
+--ro new-state? state | +--ro new-state? state | |||
+--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
+--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
+--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
+--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
+--ro session-index? uint32 | +--ro session-index? uint32 | |||
+--ro path-type? identityref | +--ro path-type? identityref | |||
+--ro mpls-dest-address? inet:ip-address | +--ro mpls-dest-address? inet:ip-address | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | ||||
<section title="BFD over MPLS-TE hierarchy"> | ||||
<t><xref target="I-D.ietf-teas-yang-te">YANG Data Model for TE | ||||
Topologies </xref> is augmented. BFD is configured per MPLS-TE tunnel, | ||||
and BFD session operational state data is provided per MPLS-TE | ||||
LSP.</t> | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: ietf-bfd-mpls-te | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/bfd:bfd: | ||||
+--rw mpls-te | ||||
+--rw egress | ||||
| +--rw enable? boolean | ||||
| +--rw local-multiplier? multiplier | ||||
| +--rw (interval-config-type)? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval? uint32 | ||||
| | | +--rw required-min-rx-interval? uint32 | ||||
| | +--:(single-interval) {single-minimum-interval}? | ||||
| | +--rw min-interval? uint32 | ||||
| +--rw authentication! {authentication}? | ||||
| +--rw key-chain? kc:key-chain-ref | ||||
| +--rw meticulous? boolean | ||||
+--ro summary | ||||
+--ro number-of-sessions? yang:gauge32 | ||||
+--ro number-of-sessions-up? yang:gauge32 | ||||
+--ro number-of-sessions-down? yang:gauge32 | ||||
+--ro number-of-sessions-admin-down? yang:gauge32 | ||||
augment /te:te/te:tunnels/te:tunnel: | ||||
+--rw local-multiplier? multiplier | ||||
+--rw (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--rw desired-min-tx-interval? uint32 | ||||
| | +--rw required-min-rx-interval? uint32 | ||||
| +--:(single-interval) {single-minimum-interval}? | ||||
| +--rw min-interval? uint32 | ||||
+--rw demand-enabled? boolean {demand-mode}? | ||||
+--rw admin-down? boolean | ||||
+--rw authentication! {authentication}? | ||||
| +--rw key-chain? kc:key-chain-ref | ||||
| +--rw meticulous? boolean | ||||
+--rw encap? identityref | ||||
augment /te:te/te:lsps-state/te:lsp: | ||||
+--ro path-type? identityref | ||||
+--ro ip-encapsulation? boolean | ||||
+--ro local-discriminator? discriminator | ||||
+--ro remote-discriminator? discriminator | ||||
+--ro remote-multiplier? multiplier | ||||
+--ro demand-capability? boolean {demand-mode}? | ||||
+--ro source-port? inet:port-number | ||||
+--ro dest-port? inet:port-number | ||||
+--ro session-running | ||||
| +--ro session-index? uint32 | ||||
| +--ro local-state? state | ||||
| +--ro remote-state? state | ||||
| +--ro local-diagnostic? iana-bfd-types:diagnostic | ||||
| +--ro remote-diagnostic? iana-bfd-types:diagnostic | ||||
| +--ro remote-authenticated? boolean | ||||
| +--ro remote-authentication-type? iana-bfd-types:auth-type | ||||
| | {authentication}? | ||||
| +--ro detection-mode? enumeration | ||||
| +--ro negotiated-tx-interval? uint32 | ||||
| +--ro negotiated-rx-interval? uint32 | ||||
| +--ro detection-time? uint32 | ||||
| +--ro echo-tx-interval-in-use? uint32 {echo-mode}? | ||||
+--ro session-statistics | ||||
| +--ro create-time? yang:date-and-time | ||||
| +--ro last-down-time? yang:date-and-time | ||||
| +--ro last-up-time? yang:date-and-time | ||||
| +--ro down-count? yang:counter32 | ||||
| +--ro admin-down-count? yang:counter32 | ||||
| +--ro receive-packet-count? yang:counter64 | ||||
| +--ro send-packet-count? yang:counter64 | ||||
| +--ro receive-invalid-packet-count? yang:counter64 | ||||
| +--ro send-failed-packet-count? yang:counter64 | ||||
+--ro mpls-dest-address? inet:ip-address | ||||
notifications: | ||||
+---n mpls-te-notification | ||||
+--ro local-discr? discriminator | ||||
+--ro remote-discr? discriminator | ||||
+--ro new-state? state | ||||
+--ro state-change-reason? iana-bfd-types:diagnostic | ||||
+--ro time-of-last-state-change? yang:date-and-time | ||||
+--ro dest-addr? inet:ip-address | ||||
+--ro source-addr? inet:ip-address | ||||
+--ro session-index? uint32 | ||||
+--ro path-type? identityref | ||||
+--ro mpls-dest-address? inet:ip-address | ||||
+--ro tunnel-name? string | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Interaction with other YANG modules"> | <name>Interaction with Other YANG Modules</name> | |||
<t><xref target="I-D.ietf-lime-yang-connectionless-oam">Generic YANG | <t><xref target="RFC8532" | |||
Data Model for Connectionless OAM protocols </xref> describes how the | format="default">"Generic YANG Data Model for the Management | |||
LIME connectionless OAM model could be extended to support BFD.</t> | of Operations, Administration, and Maintenance (OAM) Protocols That | |||
Use Connectionless Communications"</xref> describes how the | ||||
Layer-Independent OAM Management in the Multi-Layer Environment (LIME) | ||||
connectionless OAM model could be extended to support BFD.</t> | ||||
<t>Also, the operation of the BFD data model depends on configuration | <t>Also, the operation of the BFD data model depends on configuration | |||
parameters that are defined in other YANG modules.</t> | parameters that are defined in other YANG modules.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Module ietf-interfaces"> | <name>"ietf-interfaces" Module</name> | |||
<t>The following boolean configuration is defined in <xref | <t>The following boolean configuration is defined in <xref | |||
target="RFC8343">A YANG Data Model for Interface | target="RFC8343" format="default">"A YANG Data Model for Interface Man | |||
Management </xref>: <list hangIndent="8" style="hanging"> | agement"</xref>:</t> | |||
<t hangText="/if:interfaces/if:interface/if:enabled"><vspace/>If | <dl newline="true" spacing="normal"> | |||
this configuration is set to "false", no BFD packets can be | <dt>/if:interfaces/if:interface/if:enabled</dt> | |||
transmitted or received on that interface.</t> | <dd>If this configuration is set to "false", no BFD packets can be | |||
</list></t> | transmitted or received on that interface.</dd> | |||
</dl> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Module ietf-ip"> | <name>"ietf-ip" Module</name> | |||
<t>The following boolean configuration is defined in <xref | <t>The following boolean configuration is defined in <xref | |||
target="RFC8344">A YANG Data Model for IP | target="RFC8344" format="default">"A YANG Data Model for IP Management | |||
Management </xref>: <list hangIndent="8" style="hanging"> | "</xref>:</t> | |||
<t | <dl newline="true" spacing="normal"> | |||
hangText="/if:interfaces/if:interface/ip:ipv4/ip:enabled"><vspace/ | <dt>/if:interfaces/if:interface/ip:ipv4/ip:enabled</dt> | |||
>If | <dd>If this configuration is set to "false", no BFD IPv4 packets | |||
this configuration is set to "false", no BFD IPv4 packets can be | can be transmitted or received on that interface.</dd> | |||
transmitted or received on that interface.</t> | <dt>/if:interfaces/if:interface/ip:ipv4/ip:forwarding</dt> | |||
<dd>If this configuration is set to "false", no BFD IPv4 packets | ||||
<t | can be transmitted or received on that interface.</dd> | |||
hangText="/if:interfaces/if:interface/ip:ipv4/ip:forwarding"><vspa | <dt>/if:interfaces/if:interface/ip:ipv6/ip:enabled</dt> | |||
ce/>If | <dd>If this configuration is set to "false", no BFD IPv6 packets | |||
this configuration is set to "false", no BFD IPv4 packets can be | can be transmitted or received on that interface.</dd> | |||
transmitted or received on that interface.</t> | <dt>/if:interfaces/if:interface/ip:ipv6/ip:forwarding</dt> | |||
<dd>If this configuration is set to "false", no BFD IPv6 packets | ||||
<t | can be transmitted or received on that interface.</dd> | |||
hangText="/if:interfaces/if:interface/ip:ipv6/ip:enabled"><vspace/ | </dl> | |||
>If | ||||
this configuration is set to "false", no BFD IPv6 packets can be | ||||
transmitted or received on that interface.</t> | ||||
<t | ||||
hangText="/if:interfaces/if:interface/ip:ipv6/ip:forwarding"><vspa | ||||
ce/>If | ||||
this configuration is set to "false", no BFD IPv6 packets can be | ||||
transmitted or received on that interface.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Module ietf-mpls"> | <name>"ietf-mpls" Module</name> | |||
<t>The following boolean configuration is defined in <xref | <t>The following boolean configuration is defined in <xref | |||
target="I-D.ietf-mpls-base-yang">A YANG Data Model for MPLS Base | target="RFC8960" format="default">"A YANG Data Model for MPLS Base"</x | |||
</xref>: <list hangIndent="8" style="hanging"> | ref>:</t> | |||
<t | <dl newline="true" spacing="normal"> | |||
hangText="/rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:en | <dt>/rt:routing/mpls:mpls/mpls:interfaces/mpls:interface/mpls:mpls&nb | |||
abled"><vspace/>If | hy;enabled</dt> | |||
this configuration is set to "false", no BFD MPLS packets can be | <dd>If this configuration is set to "false", no BFD MPLS packets | |||
transmitted or received on that interface.</t> | can be transmitted or received on that interface.</dd> | |||
</list></t> | </dl> | |||
</section> | ||||
<section title="Module ietf-te"> | ||||
<t>The following configuration is defined in the "ietf-te" YANG | ||||
module <xref target="I-D.ietf-teas-yang-te">YANG Data Model for TE | ||||
Topology </xref>: <list hangIndent="8" style="hanging"> | ||||
<t | ||||
hangText="/ietf-te:te/ietf-te:tunnels/ietf-te:tunnel/ietf-te:confi | ||||
g/ietf-te:admin-status"><vspace/>If | ||||
this configuration is not set to "state-up", no BFD MPLS packets | ||||
can be transmitted or received on that tunnel.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section title="IANA BFD YANG Module"> | <section numbered="true" toc="default"> | |||
<figure align="left"> | <name>IANA BFD YANG Module</name> | |||
<preamble/> | ||||
<artwork align="left"><![CDATA[<CODE BEGINS> file "iana-bfd-types@2018 | <t>This YANG module imports definitions from <xref target="RFC5880"/>. | |||
-08-01.yang" | It | |||
references <xref target="RFC5880"/> and <xref target="RFC6428"/>.</t> | ||||
<sourcecode name="iana-bfd-types@2021-09-03.yang" type="yang" markers="t rue"><![CDATA[ | ||||
module iana-bfd-types { | module iana-bfd-types { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | |||
prefix iana-bfd-types; | ||||
prefix "iana-bfd-types"; | organization | |||
"IANA"; | ||||
organization "IANA"; | ||||
contact | contact | |||
" Internet Assigned Numbers Authority | "Internet Assigned Numbers Authority | |||
Postal: ICANN | ||||
12025 Waterfront Drive, Suite 300 | ||||
Los Angeles, CA 90094-2536 | ||||
United States of America | ||||
Tel: +1 310 823 9358 | ||||
<mailto:iana@iana.org>"; | ||||
Postal: ICANN | ||||
12025 Waterfront Drive, Suite 300 | ||||
Los Angeles, CA 90094-2536 | ||||
United States of America | ||||
Tel: +1 310 301 5800 | ||||
<mailto:iana@iana.org>"; | ||||
description | description | |||
"This module defines YANG data types for IANA-registered | "This module defines YANG data types for IANA-registered | |||
BFD parameters. | BFD parameters. | |||
This YANG module is maintained by IANA and reflects the | This YANG module is maintained by IANA and reflects the | |||
'BFD Diagnostic Codes' and 'BFD Authentication Types' registries. | 'BFD Diagnostic Codes' and 'BFD Authentication Types' | |||
registries. | ||||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
// RFC Ed.: replace XXXX with actual RFC number and remove | ||||
// this note | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: IANA BFD YANG Data Types."; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
/* | /* | |||
* Type Definitions | * Type definitions | |||
*/ | */ | |||
typedef diagnostic { | typedef diagnostic { | |||
type enumeration { | type enumeration { | |||
enum none { | enum none { | |||
value 0; | value 0; | |||
description "None"; | description | |||
"No Diagnostic."; | ||||
} | } | |||
enum control-expiry { | enum control-expiry { | |||
value 1; | value 1; | |||
description "Control timer expiry"; | description | |||
"Control Detection Time Expired."; | ||||
} | } | |||
enum echo-failed { | enum echo-failed { | |||
value 2; | value 2; | |||
description "Echo failure"; | description | |||
"Echo Function Failed."; | ||||
} | } | |||
enum neighbor-down { | enum neighbor-down { | |||
value 3; | value 3; | |||
description "Neighbor down"; | description | |||
"Neighbor Signaled Session Down."; | ||||
} | } | |||
enum forwarding-reset { | enum forwarding-reset { | |||
value 4; | value 4; | |||
description "Forwarding reset"; | description | |||
"Forwarding Plane Reset."; | ||||
} | } | |||
enum path-down { | enum path-down { | |||
value 5; | value 5; | |||
description "Path down"; | description | |||
"Path Down."; | ||||
} | } | |||
enum concatenated-path-down { | enum concatenated-path-down { | |||
value 6; | value 6; | |||
description "Concatenated path down"; | description | |||
"Concatenated Path Down."; | ||||
} | } | |||
enum admin-down { | enum admin-down { | |||
value 7; | value 7; | |||
description "Admin down"; | description | |||
"Administratively Down."; | ||||
} | } | |||
enum reverse-concatenated-path-down { | enum reverse-concatenated-path-down { | |||
value 8; | value 8; | |||
description "Reverse concatenated path down"; | description | |||
"Reverse Concatenated Path Down."; | ||||
} | } | |||
enum mis-connectivity-defect { | enum mis-connectivity-defect { | |||
value 9; | value 9; | |||
description "Mis-connectivity defect as specified in RFC6428"; | description | |||
"Mis-connectivity defect."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD) | ||||
RFC 6428: Proactive Connectivity Verification, Continuity | ||||
Check, and Remote Defect Indication for the MPLS Transport | ||||
Profile"; | ||||
} | } | |||
} | } | |||
description | description | |||
"BFD diagnostic as defined in RFC 5880, values are maintained in | "BFD diagnostic codes as defined in RFC 5880. Values are | |||
the 'BFD Diagnostic Codes' IANA registry. Range is 0 to 31."; | maintained in the 'BFD Diagnostic Codes' IANA registry. | |||
Range is 0 to 31."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)"; | ||||
} | } | |||
typedef auth-type { | typedef auth-type { | |||
type enumeration { | type enumeration { | |||
enum reserved { | enum reserved { | |||
value 0; | value 0; | |||
description "Reserved"; | description | |||
"Reserved."; | ||||
} | } | |||
enum simple-password { | enum simple-password { | |||
value 1; | value 1; | |||
description "Simple password"; | description | |||
"Simple Password."; | ||||
} | } | |||
enum keyed-md5 { | enum keyed-md5 { | |||
value 2; | value 2; | |||
description "Keyed MD5"; | description | |||
"Keyed MD5."; | ||||
} | } | |||
enum meticulous-keyed-md5 { | enum meticulous-keyed-md5 { | |||
value 3; | value 3; | |||
description "Meticulous keyed MD5"; | description | |||
"Meticulous Keyed MD5."; | ||||
} | } | |||
enum keyed-sha1 { | enum keyed-sha1 { | |||
value 4; | value 4; | |||
description "Keyed SHA1"; | description | |||
"Keyed SHA1."; | ||||
} | } | |||
enum meticulous-keyed-sha1 { | enum meticulous-keyed-sha1 { | |||
value 5; | value 5; | |||
description "Meticulous keyed SHA1"; | description | |||
"Meticulous Keyed SHA1."; | ||||
} | } | |||
} | } | |||
description | description | |||
"BFD authentication type as defined in RFC 5880, values are | "BFD authentication type as defined in RFC 5880. Values are | |||
maintained in the 'BFD Authentication Types' IANA registry. | maintained in the 'BFD Authentication Types' IANA registry. | |||
Range is 0 to 255."; | Range is 0 to 255."; | |||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)"; | ||||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section anchor="BFD-TYPES" numbered="true" toc="default"> | ||||
<name>BFD Types YANG Module</name> | ||||
<t>This YANG module imports typedefs from <xref target="RFC6991" | ||||
format="default"/> and <xref target="RFC8177" format="default"/>. | ||||
It also imports definitions from | ||||
<xref target="RFC5880"/>, <xref target="RFC5881"/>, | ||||
<xref target="RFC5883"/>, <xref target="RFC5884"/>, and | ||||
<xref target="RFC7130"/>, as well as the | ||||
"control-plane-protocol" identity from | ||||
<xref target="RFC8349"/>. | ||||
<section anchor="BFD-TYPES" title="BFD types YANG Module"> | </t> | |||
<t>This YANG module imports typedefs from <xref target="RFC6991"/>, <xr | <sourcecode name="ietf-bfd-types@2021-09-03.yang" type="yang" markers="t | |||
ef target="RFC8177"/> and | rue"><![CDATA[ | |||
the "control-plane-protocol" identity from <xref | ||||
target="RFC8349"/>.</t> | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd-types@2019-11-19.yang" | ||||
module ietf-bfd-types { | module ietf-bfd-types { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | |||
prefix bfd-types; | ||||
prefix "bfd-types"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import iana-bfd-types { | import iana-bfd-types { | |||
prefix "iana-bfd-types"; | prefix iana-bfd-types; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
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-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-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA Version)"; | |||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "kc"; | prefix key-chain; | |||
reference "RFC 8177: YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng (vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains a collection of BFD specific YANG data type | "This module contains a collection of BFD-specific YANG data type | |||
definitions, as per RFC 5880, and also groupings which are common | definitions, as per RFC 5880, and also groupings that are common | |||
to other BFD YANG modules. | to other BFD YANG modules. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD) | ||||
RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2019-11-19 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: YANG Data Model for BFD"; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
/* | /* | |||
* Feature definitions | * Feature definitions | |||
*/ | */ | |||
feature single-minimum-interval { | feature single-minimum-interval { | |||
description | description | |||
"This feature indicates that the server supports configuration | "This feature indicates that the server supports configuration | |||
of one minimum interval value which is used for both transmit and | of one minimum interval value that is used for both transmit | |||
receive minimum intervals."; | and receive minimum intervals."; | |||
} | } | |||
feature authentication { | feature authentication { | |||
description | description | |||
"This feature indicates that the server supports BFD | "This feature indicates that the server supports BFD | |||
authentication."; | authentication."; | |||
reference | reference | |||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | "RFC 5880: Bidirectional Forwarding Detection (BFD), | |||
section 6.7."; | Section 6.7"; | |||
} | } | |||
feature demand-mode { | feature demand-mode { | |||
description | description | |||
"This feature indicates that the server supports BFD demand | "This feature indicates that the server supports BFD Demand | |||
mode."; | mode."; | |||
reference | reference | |||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | "RFC 5880: Bidirectional Forwarding Detection (BFD), | |||
section 6.6."; | Section 6.6"; | |||
} | } | |||
feature echo-mode { | feature echo-mode { | |||
description | description | |||
"This feature indicates that the server supports BFD echo | "This feature indicates that the server supports BFD Echo | |||
mode."; | mode."; | |||
reference | reference | |||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | "RFC 5880: Bidirectional Forwarding Detection (BFD), | |||
section 6.4."; | Section 6.4"; | |||
} | } | |||
/* | /* | |||
* Identity definitions | * Identity definitions | |||
*/ | */ | |||
identity bfdv1 { | identity bfdv1 { | |||
base "rt:control-plane-protocol"; | base rt:control-plane-protocol; | |||
description "BFD protocol version 1."; | description | |||
"BFD protocol version 1."; | ||||
reference | reference | |||
"RFC 5880: Bidirectional Forwarding Detection (BFD)."; | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
} | } | |||
identity path-type { | identity path-type { | |||
description | description | |||
"Base identity for BFD path type. The path type indicates | "Base identity for the BFD path type. The path type indicates | |||
the type of path on which BFD is running."; | the type of path on which BFD is running."; | |||
} | } | |||
identity path-ip-sh { | identity path-ip-sh { | |||
base path-type; | base path-type; | |||
description "BFD on IP single hop."; | description | |||
"BFD on IP single-hop."; | ||||
reference | reference | |||
"RFC 5881: Bidirectional Forwarding Detection (BFD) | "RFC 5881: Bidirectional Forwarding Detection (BFD) | |||
for IPv4 and IPv6 (Single Hop)."; | for IPv4 and IPv6 (Single Hop)"; | |||
} | } | |||
identity path-ip-mh { | identity path-ip-mh { | |||
base path-type; | base path-type; | |||
description "BFD on IP multihop paths."; | description | |||
"BFD on IP multihop paths."; | ||||
reference | reference | |||
"RFC 5883: Bidirectional Forwarding Detection (BFD) for | "RFC 5883: Bidirectional Forwarding Detection (BFD) for | |||
Multihop Paths."; | Multihop Paths"; | |||
} | } | |||
identity path-mpls-te { | identity path-mpls-te { | |||
base path-type; | base path-type; | |||
description | description | |||
"BFD on MPLS Traffic Engineering."; | "BFD on MPLS Traffic Engineering."; | |||
reference | reference | |||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | "RFC 5884: Bidirectional Forwarding Detection (BFD) | |||
for MPLS Label Switched Paths (LSPs)."; | for MPLS Label Switched Paths (LSPs)"; | |||
} | } | |||
identity path-mpls-lsp { | identity path-mpls-lsp { | |||
base path-type; | base path-type; | |||
description | description | |||
"BFD on MPLS Label Switched Path."; | "BFD on an MPLS Label Switched Path."; | |||
reference | reference | |||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | "RFC 5884: Bidirectional Forwarding Detection (BFD) | |||
for MPLS Label Switched Paths (LSPs)."; | for MPLS Label Switched Paths (LSPs)"; | |||
} | } | |||
identity path-lag { | identity path-lag { | |||
base path-type; | base path-type; | |||
description | description | |||
"Micro-BFD on LAG member links."; | "Micro-BFD on LAG member links."; | |||
reference | reference | |||
"RFC 7130: Bidirectional Forwarding Detection (BFD) on | "RFC 7130: Bidirectional Forwarding Detection (BFD) on | |||
Link Aggregation Group (LAG) Interfaces."; | Link Aggregation Group (LAG) Interfaces"; | |||
} | } | |||
identity encap-type { | identity encap-type { | |||
description | description | |||
"Base identity for BFD encapsulation type."; | "Base identity for BFD encapsulation type."; | |||
} | } | |||
identity encap-ip { | identity encap-ip { | |||
base encap-type; | base encap-type; | |||
description "BFD with IP encapsulation."; | description | |||
"BFD with IP encapsulation."; | ||||
} | } | |||
/* | /* | |||
* Type Definitions | * Type definitions | |||
*/ | */ | |||
typedef discriminator { | typedef discriminator { | |||
type uint32; | type uint32; | |||
description "BFD discriminator as described in RFC 5880."; | description | |||
"BFD Discriminator as described in RFC 5880."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)"; | ||||
} | } | |||
typedef state { | typedef state { | |||
type enumeration { | type enumeration { | |||
enum adminDown { | enum adminDown { | |||
value 0; | value 0; | |||
description "admindown"; | description | |||
"'adminDown' state."; | ||||
} | } | |||
enum down { | enum down { | |||
value 1; | value 1; | |||
description "down"; | description | |||
"'Down' state."; | ||||
} | } | |||
enum init { | enum init { | |||
value 2; | value 2; | |||
description "init"; | description | |||
"'Init' state."; | ||||
} | } | |||
enum up { | enum up { | |||
value 3; | value 3; | |||
description "up"; | description | |||
"'Up' state."; | ||||
} | } | |||
} | } | |||
description "BFD state as defined in RFC 5880."; | description | |||
"BFD states as defined in RFC 5880."; | ||||
} | } | |||
typedef multiplier { | typedef multiplier { | |||
type uint8 { | type uint8 { | |||
range 1..255; | range "1..255"; | |||
} | } | |||
description "BFD multiplier as described in RFC 5880."; | description | |||
"BFD multiplier as described in RFC 5880."; | ||||
} | } | |||
typedef hops { | typedef hops { | |||
type uint8 { | type uint8 { | |||
range 1..255; | range "1..255"; | |||
} | } | |||
description | description | |||
"This corresponds to Time To Live for IPv4 and corresponds to hop | "This corresponds to Time To Live for IPv4 and corresponds to | |||
limit for IPv6."; | the hop limit for IPv6."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping auth-parms { | grouping auth-parms { | |||
description | description | |||
"Grouping for BFD authentication parameters | "Grouping for BFD authentication parameters | |||
(see section 6.7 of RFC 5880)."; | (see Section 6.7 of RFC 5880)."; | |||
container authentication { | container authentication { | |||
if-feature authentication; | if-feature "authentication"; | |||
presence | presence "Enables BFD authentication (see Section 6.7 | |||
"Enables BFD authentication (see section 6.7 of RFC 5880)."; | of RFC 5880)."; | |||
description "Parameters for BFD authentication."; | description | |||
"Parameters for BFD authentication."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | ||||
Section 6.7"; | ||||
leaf key-chain { | leaf key-chain { | |||
type kc:key-chain-ref; | type key-chain:key-chain-ref; | |||
description "Name of the key-chain as per RFC 8177."; | description | |||
"Name of the 'key-chain' as per RFC 8177."; | ||||
} | } | |||
leaf meticulous { | leaf meticulous { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables meticulous mode as described in section 6.7 " + | "Enables a meticulous mode as per Section 6.7 of | |||
"of RFC 5880."; | RFC 5880."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping base-cfg-parms { | grouping base-cfg-parms { | |||
description "BFD grouping for base config parameters."; | description | |||
"BFD grouping for base configuration parameters."; | ||||
leaf local-multiplier { | leaf local-multiplier { | |||
type multiplier; | type multiplier; | |||
default 3; | default "3"; | |||
description "Multiplier transmitted by local system."; | description | |||
"Multiplier transmitted by the local system."; | ||||
} | } | |||
choice interval-config-type { | choice interval-config-type { | |||
default tx-rx-intervals; | default "tx-rx-intervals"; | |||
description | description | |||
"Two interval values or one value used for both transmit and | "Two interval values or one value used for both transmit and | |||
receive."; | receive."; | |||
case tx-rx-intervals { | case tx-rx-intervals { | |||
leaf desired-min-tx-interval { | leaf desired-min-tx-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
default 1000000; | default "1000000"; | |||
description | description | |||
"Desired minimum transmit interval of control packets."; | "Desired minimum transmit interval of control packets."; | |||
} | } | |||
leaf required-min-rx-interval { | leaf required-min-rx-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
default 1000000; | default "1000000"; | |||
description | description | |||
"Required minimum receive interval of control packets."; | "Required minimum receive interval of control packets."; | |||
} | } | |||
} | } | |||
case single-interval { | case single-interval { | |||
if-feature single-minimum-interval; | if-feature "single-minimum-interval"; | |||
leaf min-interval { | leaf min-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
default 1000000; | default "1000000"; | |||
description | description | |||
"Desired minimum transmit interval and required " + | "Desired minimum transmit interval and required | |||
"minimum receive interval of control packets."; | minimum receive interval of control packets."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping client-cfg-parms { | grouping client-cfg-parms { | |||
description | description | |||
"BFD grouping for configuration parameters | "BFD grouping for configuration parameters | |||
used by clients of BFD, e.g. IGP or MPLS."; | used by BFD clients, e.g., IGP or MPLS."; | |||
leaf enabled { | ||||
leaf enable { | ||||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Indicates whether the BFD is enabled."; | "Indicates whether BFD is enabled."; | |||
} | } | |||
uses base-cfg-parms; | uses base-cfg-parms; | |||
} | } | |||
grouping common-cfg-parms { | grouping common-cfg-parms { | |||
description | description | |||
"BFD grouping for common configuration parameters."; | "BFD grouping for common configuration parameters."; | |||
uses base-cfg-parms; | uses base-cfg-parms; | |||
leaf demand-enabled { | leaf demand-enabled { | |||
if-feature demand-mode; | if-feature "demand-mode"; | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"To enable demand mode."; | "To enable Demand mode."; | |||
} | } | |||
leaf admin-down { | leaf admin-down { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Is the BFD session administratively down."; | "Indicates whether the BFD session is administratively | |||
down."; | ||||
} | } | |||
uses auth-parms; | uses auth-parms; | |||
} | } | |||
grouping all-session { | grouping all-session { | |||
description "BFD session operational information"; | description | |||
"BFD session operational information."; | ||||
leaf path-type { | leaf path-type { | |||
type identityref { | type identityref { | |||
base path-type; | base path-type; | |||
} | } | |||
config "false"; | config false; | |||
description | description | |||
"BFD path type, this indicates the path type that BFD is | "BFD path type. This indicates the path type that BFD is | |||
running on."; | running on."; | |||
} | } | |||
leaf ip-encapsulation { | leaf ip-encapsulation { | |||
type boolean; | type boolean; | |||
config "false"; | config false; | |||
description "Whether BFD encapsulation uses IP."; | description | |||
"Indicates whether BFD encapsulation uses IP."; | ||||
} | } | |||
leaf local-discriminator { | leaf local-discriminator { | |||
type discriminator; | type discriminator; | |||
config "false"; | config false; | |||
description "Local discriminator."; | description | |||
"Local discriminator."; | ||||
} | } | |||
leaf remote-discriminator { | leaf remote-discriminator { | |||
type discriminator; | type discriminator; | |||
config "false"; | config false; | |||
description "Remote discriminator."; | description | |||
"Remote discriminator."; | ||||
} | } | |||
leaf remote-multiplier { | leaf remote-multiplier { | |||
type multiplier; | type multiplier; | |||
config "false"; | config false; | |||
description "Remote multiplier."; | description | |||
"Remote multiplier."; | ||||
} | } | |||
leaf demand-capability { | leaf demand-capability { | |||
if-feature demand-mode; | if-feature "demand-mode"; | |||
type boolean; | type boolean; | |||
config "false"; | config false; | |||
description "Local demand mode capability."; | description | |||
"Local Demand mode capability."; | ||||
} | } | |||
leaf source-port { | leaf source-port { | |||
when "../ip-encapsulation = 'true'" { | when "../ip-encapsulation = 'true'" { | |||
description | description | |||
"Source port valid only when IP encapsulation is used."; | "Source port valid only when IP encapsulation is used."; | |||
} | } | |||
type inet:port-number; | type inet:port-number; | |||
config "false"; | config false; | |||
description "Source UDP port"; | description | |||
"Source UDP port."; | ||||
} | } | |||
leaf dest-port { | leaf dest-port { | |||
when "../ip-encapsulation = 'true'" { | when "../ip-encapsulation = 'true'" { | |||
description | description | |||
"Destination port valid only when IP encapsulation is used."; | "Destination port valid only when IP encapsulation | |||
is used."; | ||||
} | } | |||
type inet:port-number; | type inet:port-number; | |||
config "false"; | config false; | |||
description "Destination UDP port."; | description | |||
"Destination UDP port."; | ||||
} | } | |||
container session-running { | container session-running { | |||
config "false"; | config false; | |||
description "BFD session running information."; | description | |||
"BFD 'session-running' information."; | ||||
leaf session-index { | leaf session-index { | |||
type uint32; | type uint32; | |||
description | description | |||
"An index used to uniquely identify BFD sessions."; | "An index used to uniquely identify BFD sessions."; | |||
} | } | |||
leaf local-state { | leaf local-state { | |||
type state; | type state; | |||
description "Local state."; | description | |||
"Local state."; | ||||
} | } | |||
leaf remote-state { | leaf remote-state { | |||
type state; | type state; | |||
description "Remote state."; | description | |||
"Remote state."; | ||||
} | } | |||
leaf local-diagnostic { | leaf local-diagnostic { | |||
type iana-bfd-types:diagnostic; | type iana-bfd-types:diagnostic; | |||
description "Local diagnostic."; | description | |||
"Local diagnostic."; | ||||
} | } | |||
leaf remote-diagnostic { | leaf remote-diagnostic { | |||
type iana-bfd-types:diagnostic; | type iana-bfd-types:diagnostic; | |||
description "Remote diagnostic."; | description | |||
"Remote diagnostic."; | ||||
} | } | |||
leaf remote-authenticated { | leaf remote-authenticated { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates whether incoming BFD control packets are | "Indicates whether incoming BFD control packets are | |||
authenticated."; | authenticated."; | |||
} | } | |||
leaf remote-authentication-type { | leaf remote-authentication-type { | |||
when "../remote-authenticated = 'true'" { | when "../remote-authenticated = 'true'" { | |||
description | description | |||
"Only valid when incoming BFD control packets are | "Only valid when incoming BFD control packets are | |||
authenticated."; | authenticated."; | |||
} | } | |||
if-feature authentication; | if-feature "authentication"; | |||
type iana-bfd-types:auth-type; | type iana-bfd-types:auth-type; | |||
description | description | |||
"Authentication type of incoming BFD control packets."; | "Authentication type of incoming BFD control packets."; | |||
} | } | |||
leaf detection-mode { | leaf detection-mode { | |||
type enumeration { | type enumeration { | |||
enum async-with-echo { | enum async-with-echo { | |||
value "1"; | value 1; | |||
description "Async with echo."; | description | |||
"Async with echo."; | ||||
} | } | |||
enum async-without-echo { | enum async-without-echo { | |||
value "2"; | value 2; | |||
description "Async without echo."; | description | |||
"Async without echo."; | ||||
} | } | |||
enum demand-with-echo { | enum demand-with-echo { | |||
value "3"; | value 3; | |||
description "Demand with echo."; | description | |||
"Demand with echo."; | ||||
} | } | |||
enum demand-without-echo { | enum demand-without-echo { | |||
value "4"; | value 4; | |||
description "Demand without echo."; | description | |||
"Demand without echo."; | ||||
} | } | |||
} | } | |||
description "Detection mode."; | description | |||
"Detection mode."; | ||||
} | } | |||
leaf negotiated-tx-interval { | leaf negotiated-tx-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
description "Negotiated transmit interval."; | description | |||
"Negotiated transmit interval."; | ||||
} | } | |||
leaf negotiated-rx-interval { | leaf negotiated-rx-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
description "Negotiated receive interval."; | description | |||
"Negotiated receive interval."; | ||||
} | } | |||
leaf detection-time { | leaf detection-time { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
description "Detection time."; | description | |||
"Detection time."; | ||||
} | } | |||
leaf echo-tx-interval-in-use { | leaf echo-tx-interval-in-use { | |||
when "../../path-type = 'bfd-types:path-ip-sh'" { | when "../../path-type = 'bfd-types:path-ip-sh'" { | |||
description | description | |||
"Echo is supported for IP single-hop only."; | "Echo is supported for IP single-hop only."; | |||
} | } | |||
if-feature echo-mode; | if-feature "echo-mode"; | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
description "Echo transmit interval in use."; | description | |||
"Echo transmit interval in use."; | ||||
} | } | |||
} | } | |||
container session-statistics { | container session-statistics { | |||
config "false"; | config false; | |||
description "BFD per-session statistics."; | description | |||
"BFD per-session statistics."; | ||||
leaf create-time { | leaf create-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Time and date when this session was created."; | "Time and date when this session was created."; | |||
} | } | |||
leaf last-down-time { | leaf last-down-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Time and date of last time this session went down."; | "Time and date of the last time this session went down."; | |||
} | } | |||
leaf last-up-time { | leaf last-up-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Time and date of last time this session went up."; | "Time and date of the last time this session went up."; | |||
} | } | |||
leaf down-count { | leaf down-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this session has transitioned in the | "The number of times this session has transitioned to the | |||
down state."; | 'down' state."; | |||
} | } | |||
leaf admin-down-count { | leaf admin-down-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this session has transitioned in the | "The number of times this session has transitioned to the | |||
admin-down state."; | 'admin-down' state."; | |||
} | } | |||
leaf receive-packet-count { | leaf receive-packet-count { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Count of received packets in this session. This includes | "Count of received packets in this session. This includes | |||
valid and invalid received packets."; | valid and invalid received packets."; | |||
} | } | |||
leaf send-packet-count { | leaf send-packet-count { | |||
type yang:counter64; | type yang:counter64; | |||
description "Count of sent packets in this session."; | description | |||
"Count of sent packets in this session."; | ||||
} | } | |||
leaf receive-invalid-packet-count { | leaf receive-invalid-packet-count { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Count of invalid received packets in this session."; | "Count of invalid received packets in this session."; | |||
} | } | |||
leaf send-failed-packet-count { | leaf send-failed-packet-count { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Count of packets which failed to be sent in this session."; | "Count of packets that failed to be sent in this session."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping session-statistics-summary { | grouping session-statistics-summary { | |||
description "Grouping for session statistics summary."; | description | |||
"Grouping for session statistics summary."; | ||||
container summary { | container summary { | |||
config false; | config false; | |||
description "BFD session statistics summary."; | description | |||
"BFD session statistics summary."; | ||||
leaf number-of-sessions { | leaf number-of-sessions { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "Number of BFD sessions."; | description | |||
"Number of BFD sessions."; | ||||
} | } | |||
leaf number-of-sessions-up { | leaf number-of-sessions-up { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Number of BFD sessions currently in up state (as defined | "Number of BFD sessions currently in the 'Up' state | |||
in RFC 5880)."; | (as defined in RFC 5880)."; | |||
} | } | |||
leaf number-of-sessions-down { | leaf number-of-sessions-down { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Number of BFD sessions currently in down or init state | "Number of BFD sessions currently in the 'Down' or 'Init' | |||
but not admin-down (as defined in RFC 5880)."; | state but not 'adminDown' (as defined in RFC 5880)."; | |||
} | } | |||
leaf number-of-sessions-admin-down { | leaf number-of-sessions-admin-down { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Number of BFD sessions currently in admin-down state (as | "Number of BFD sessions currently in the 'adminDown' state | |||
defined in RFC 5880)."; | (as defined in RFC 5880)."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping notification-parms { | grouping notification-parms { | |||
description | description | |||
"This group describes common parameters that will be sent " + | "This group describes common parameters that will be sent | |||
"as part of BFD notification."; | as part of BFD notifications."; | |||
leaf local-discr { | leaf local-discr { | |||
type discriminator; | type discriminator; | |||
description "BFD local discriminator."; | description | |||
"BFD local discriminator."; | ||||
} | } | |||
leaf remote-discr { | leaf remote-discr { | |||
type discriminator; | type discriminator; | |||
description "BFD remote discriminator."; | description | |||
"BFD remote discriminator."; | ||||
} | } | |||
leaf new-state { | leaf new-state { | |||
type state; | type state; | |||
description "Current BFD state."; | description | |||
"Current BFD state."; | ||||
} | } | |||
leaf state-change-reason { | leaf state-change-reason { | |||
type iana-bfd-types:diagnostic; | type iana-bfd-types:diagnostic; | |||
description "BFD state change reason."; | description | |||
"Reason for the BFD state change."; | ||||
} | } | |||
leaf time-of-last-state-change { | leaf time-of-last-state-change { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Calendar time of previous state change."; | "Calendar time of the most recent previous state change."; | |||
} | } | |||
leaf dest-addr { | leaf dest-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "BFD peer address."; | description | |||
"BFD peer address."; | ||||
} | } | |||
leaf source-addr { | leaf source-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "BFD local address."; | description | |||
"BFD local address."; | ||||
} | } | |||
leaf session-index { | leaf session-index { | |||
type uint32; | type uint32; | |||
description "An index used to uniquely identify BFD sessions."; | description | |||
"An index used to uniquely identify BFD sessions."; | ||||
} | } | |||
leaf path-type { | leaf path-type { | |||
type identityref { | type identityref { | |||
base path-type; | base path-type; | |||
} | } | |||
description "BFD path type."; | description | |||
"BFD path type."; | ||||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="BFD top-level YANG Module"> | <name>BFD Top-Level YANG Module</name> | |||
<t>This YANG module imports and augments | <t>This YANG module imports and augments | |||
"/routing/control-plane-protocols/control-plane-protocol" from <xref | "/routing/control-plane-protocols/control-plane-protocol" from <xref | |||
target="RFC8349"/>.</t> | target="RFC8349" format="default"/>. It also references | |||
<xref target="RFC5880"/>.</t> | ||||
<figure align="left"> | <sourcecode name="ietf-bfd@2021-09-03.yang" type="yang" markers="true">< | |||
<preamble/> | ![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd@2018-08-01.yang" | ||||
module ietf-bfd { | module ietf-bfd { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; | |||
prefix bfd; | ||||
prefix "bfd"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA Version)"; | |||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng (vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains the YANG definition for BFD parameters as | "This module contains the YANG definition for BFD parameters as | |||
per RFC 5880. | per RFC 5880. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD) | ||||
RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: YANG Data Model for BFD"; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
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, 'bfd-types:bfdv1')" { | when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { | |||
description | description | |||
"This augmentation is only valid for a control-plane protocol | "This augmentation is only valid for a control-plane protocol | |||
instance of BFD (type 'bfdv1')."; | instance of BFD (type 'bfdv1')."; | |||
} | } | |||
description "BFD augmentation."; | description | |||
"BFD augmentation."; | ||||
container bfd { | container bfd { | |||
description "BFD top level container."; | description | |||
"BFD top-level container."; | ||||
uses bfd-types:session-statistics-summary; | uses bfd-types:session-statistics-summary; | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section anchor="bfd-ip-single-hop-module" numbered="true" toc="default"> | ||||
<section title="BFD IP single-hop YANG Module"> | <name>BFD IP Single-Hop YANG Module</name> | |||
<t>This YANG module imports "interface-ref" from <xref | <t>This YANG module imports "interface-ref" from <xref | |||
target="RFC8343"/>, typedefs from <xref | target="RFC8343" format="default"/> and typedefs from <xref | |||
target="RFC6991"/> and augments | target="RFC6991" format="default"/>. It also imports and augments | |||
"/routing/control-plane-protocols/control-plane-protocol" from <xref | "/routing/control-plane-protocols/control-plane-protocol" from <xref | |||
target="RFC8349"/>.</t> | target="RFC8349" format="default"/>, and it references | |||
<xref target="RFC5881"/>.</t> | ||||
<figure align="left"> | <sourcecode name="ietf-bfd-ip-sh@2021-09-03.yang" type="yang" markers="t | |||
<preamble/> | rue"><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd-ip-sh@2018-08-01.yang" | ||||
module ietf-bfd-ip-sh { | module ietf-bfd-ip-sh { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | |||
prefix bfd-ip-sh; | ||||
prefix "bfd-ip-sh"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-bfd { | import ietf-bfd { | |||
prefix "bfd"; | prefix bfd; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ietf-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 | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA Version)"; | |||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng (vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains the YANG definition for BFD IP single-hop | "This module contains the YANG definition for BFD IP single-hop | |||
as per RFC 5881. | as per RFC 5881. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 5881: Bidirectional Forwarding Detection (BFD) | ||||
for IPv4 and IPv6 (Single Hop) | ||||
RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: A YANG data model for BFD IP single-hop"; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
/* | /* | |||
* Augments | * Augments | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
description "BFD augmentation for IP single-hop"; | description | |||
"BFD augmentation for IP single-hop."; | ||||
container ip-sh { | container ip-sh { | |||
description "BFD IP single-hop top level container"; | description | |||
"BFD IP single-hop top-level container."; | ||||
uses bfd-types:session-statistics-summary; | uses bfd-types:session-statistics-summary; | |||
container sessions { | container sessions { | |||
description | description | |||
"BFD IP single-hop sessions."; | "BFD IP single-hop sessions."; | |||
list session { | list session { | |||
key "interface dest-addr"; | key "interface dest-addr"; | |||
description "List of IP single-hop sessions."; | description | |||
"List of IP single-hop sessions."; | ||||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface on which the BFD session is running."; | "Interface on which the BFD session is running."; | |||
} | } | |||
leaf dest-addr { | leaf dest-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "IP address of the peer."; | description | |||
"IP address of the peer."; | ||||
} | } | |||
leaf source-addr { | leaf source-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Local IP address."; | description | |||
"Local IP address."; | ||||
} | } | |||
uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
uses bfd-types:all-session; | uses bfd-types:all-session; | |||
} | } | |||
} | } | |||
list interfaces { | list interfaces { | |||
key "interface"; | key "interface"; | |||
description "List of interfaces."; | description | |||
"List of interfaces."; | ||||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"BFD information for this interface."; | "BFD information for this interface."; | |||
} | } | |||
uses bfd-types:auth-parms; | uses bfd-types:auth-parms; | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification singlehop-notification { | notification singlehop-notification { | |||
description | description | |||
"Notification for BFD single-hop session state change. An " + | "Notification for BFD single-hop session state change. An | |||
"implementation may rate-limit notifications, e.g. when a " + | implementation may rate-limit notifications, e.g., when a | |||
"session is continuously changing state."; | session is continuously changing state."; | |||
uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "Interface to which this BFD session belongs to."; | description | |||
"Interface to which this BFD session belongs."; | ||||
} | } | |||
leaf echo-enabled { | leaf echo-enabled { | |||
type boolean; | type boolean; | |||
description "Was echo enabled for BFD."; | description | |||
"Indicates whether Echo was enabled for BFD."; | ||||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section anchor="bfd-ip-multihop-module" numbered="true" toc="default"> | ||||
<section title="BFD IP multihop YANG Module"> | <name>BFD IP Multihop YANG Module</name> | |||
<t>This YANG module imports typedefs from <xref | <t>This YANG module imports typedefs from | |||
target="RFC6991"/> and augments | <xref target="RFC6991" format="default"/>. It also imports and augments | |||
"/routing/control-plane-protocols/control-plane-protocol" from <xref | "/routing/control-plane-protocols/control-plane-protocol" from <xref | |||
target="RFC8349"/>.</t> | target="RFC8349" format="default"/>, and it references | |||
<xref target="RFC5883"/>.</t> | ||||
<figure align="left"> | <sourcecode name="ietf-bfd-ip-mh@2021-09-03.yang" type="yang" markers="t | |||
<preamble/> | rue"><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd-ip-mh@2018-08-01.yang" | ||||
module ietf-bfd-ip-mh { | module ietf-bfd-ip-mh { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | |||
prefix bfd-ip-mh; | ||||
prefix "bfd-ip-mh"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-bfd { | import ietf-bfd { | |||
prefix "bfd"; | prefix bfd; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
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 | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA Version)"; | |||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng (vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains the YANG definition for BFD IP multi-hop | "This module contains the YANG definition for BFD IP multihop | |||
as per RFC 5883. | as per RFC 5883. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 5883: Bidirectional Forwarding Detection (BFD) for | ||||
Multihop Paths | ||||
RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: A YANG data model for BFD IP multihop."; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
/* | /* | |||
* Augments | * Augments | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
description "BFD augmentation for IP multihop."; | description | |||
"BFD augmentation for IP multihop."; | ||||
container ip-mh { | container ip-mh { | |||
description "BFD IP multihop top level container."; | description | |||
"BFD IP multihop top-level container."; | ||||
uses bfd-types:session-statistics-summary; | uses bfd-types:session-statistics-summary; | |||
container session-groups { | container session-groups { | |||
description | description | |||
"BFD IP multi-hop session groups."; | "BFD IP multihop session groups."; | |||
list session-group { | list session-group { | |||
key "source-addr dest-addr"; | key "source-addr dest-addr"; | |||
description | description | |||
"Group of BFD IP multi-hop sessions (for ECMP). A " + | "Group of BFD IP multihop sessions (for ECMP). A | |||
"group of sessions is between 1 source and 1 " + | group of sessions is between one source and one | |||
"destination, each session has a different field " + | destination. Each session has a different field | |||
"in UDP/IP hdr for ECMP."; | in the UDP/IP header for ECMP."; | |||
leaf source-addr { | leaf source-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Local IP address."; | "Local IP address."; | |||
} | } | |||
leaf dest-addr { | leaf dest-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"IP address of the peer."; | "IP address of the peer."; | |||
} | } | |||
skipping to change at line 2268 ¶ | skipping to change at line 2108 ¶ | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Local IP address."; | "Local IP address."; | |||
} | } | |||
leaf dest-addr { | leaf dest-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"IP address of the peer."; | "IP address of the peer."; | |||
} | } | |||
uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
leaf tx-ttl { | leaf tx-ttl { | |||
type bfd-types:hops; | type bfd-types:hops; | |||
default 255; | default "255"; | |||
description "Hop count of outgoing BFD control packets."; | description | |||
"Hop count of outgoing BFD control packets."; | ||||
} | } | |||
leaf rx-ttl { | leaf rx-ttl { | |||
type bfd-types:hops; | type bfd-types:hops; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Minimum allowed hop count value for incoming BFD control | "Minimum allowed hop count value for incoming BFD | |||
packets. Control packets whose hop count is lower than | control packets. Control packets whose hop count is | |||
this value are dropped."; | lower than this value are dropped."; | |||
} | } | |||
list sessions { | list sessions { | |||
config false; | config false; | |||
description | description | |||
"The multiple BFD sessions between a source and a " + | "The multiple BFD sessions between a source and a | |||
"destination."; | destination."; | |||
uses bfd-types:all-session; | uses bfd-types:all-session; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
skipping to change at line 2297 ¶ | skipping to change at line 2137 ¶ | |||
uses bfd-types:all-session; | uses bfd-types:all-session; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification multihop-notification { | notification multihop-notification { | |||
description | description | |||
"Notification for BFD multi-hop session state change. An " + | "Notification for BFD multihop session state change. An | |||
"implementation may rate-limit notifications, e.g. when a " + | implementation may rate-limit notifications, e.g., when a | |||
"session is continuously changing state."; | session is continuously changing state."; | |||
uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section anchor="bfd-over-lag-module" numbered="true" toc="default"> | ||||
<section title="BFD over LAG YANG Module"> | <name>BFD-over-LAG YANG Module</name> | |||
<t>This YANG module imports "interface-ref" from <xref | <t>This YANG module imports "interface-ref" from <xref | |||
target="RFC8343"/>, typedefs from <xref | target="RFC8343" format="default"/> and typedefs from <xref | |||
target="RFC6991"/> and augments | target="RFC6991" format="default"/>. It also imports and augments | |||
"/routing/control-plane-protocols/control-plane-protocol" from <xref | "/routing/control-plane-protocols/control-plane-protocol" from <xref | |||
target="RFC8349"/>.</t> | target="RFC8349" format="default"/>. Additionally, it references | |||
<xref target="RFC7130"/>.</t> | ||||
<figure align="left"> | <sourcecode name="ietf-bfd-lag@2021-09-03.yang" type="yang" markers="tru | |||
<preamble/> | e"><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd-lag@2018-08-01.yang" | ||||
module ietf-bfd-lag { | module ietf-bfd-lag { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | |||
prefix bfd-lag; | ||||
prefix "bfd-lag"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-bfd { | import ietf-bfd { | |||
prefix "bfd"; | prefix bfd; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ietf-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 | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA Version)"; | |||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains the YANG definition for BFD over LAG | "This module contains the YANG definition for BFD-over-LAG | |||
interfaces as per RFC7130. | interfaces as per RFC 7130. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 7130: Bidirectional Forwarding Detection (BFD) on | ||||
Link Aggregation Group (LAG) Interfaces | ||||
RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: A YANG data model for BFD over LAG"; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
/* | /* | |||
* Augments | * Augments | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
description "BFD augmentation for LAG"; | description | |||
"BFD augmentation for a LAG."; | ||||
container lag { | container lag { | |||
description "BFD over LAG top level container"; | description | |||
"BFD-over-LAG top-level container."; | ||||
container micro-bfd-ipv4-session-statistics { | container micro-bfd-ipv4-session-statistics { | |||
description "Micro-BFD IPv4 session counters."; | description | |||
"Micro-BFD IPv4 session counters."; | ||||
uses bfd-types:session-statistics-summary; | uses bfd-types:session-statistics-summary; | |||
} | } | |||
container micro-bfd-ipv6-session-statistics { | container micro-bfd-ipv6-session-statistics { | |||
description "Micro-BFD IPv6 session counters."; | description | |||
"Micro-BFD IPv6 session counters."; | ||||
uses bfd-types:session-statistics-summary; | uses bfd-types:session-statistics-summary; | |||
} | } | |||
container sessions { | container sessions { | |||
description | description | |||
"BFD over LAG sessions"; | "BFD-over-LAG sessions."; | |||
list session { | list session { | |||
key "lag-name"; | key "lag-name"; | |||
description "List of BFD over LAG sessions."; | description | |||
"List of BFD-over-LAG sessions."; | ||||
leaf lag-name { | leaf lag-name { | |||
type if:interface-ref ; | type if:interface-ref; | |||
description "Name of the LAG"; | description | |||
"Name of the LAG."; | ||||
} | } | |||
leaf ipv4-dest-addr { | leaf ipv4-dest-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address of the peer, for IPv4 micro-BFD."; | "IPv4 address of the peer, for IPv4 micro-BFD."; | |||
} | } | |||
leaf ipv6-dest-addr { | leaf ipv6-dest-addr { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IPv6 address of the peer, for IPv6 micro-BFD."; | "IPv6 address of the peer, for IPv6 micro-BFD."; | |||
skipping to change at line 2437 ¶ | skipping to change at line 2279 ¶ | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address of the peer, for IPv4 micro-BFD."; | "IPv4 address of the peer, for IPv4 micro-BFD."; | |||
} | } | |||
leaf ipv6-dest-addr { | leaf ipv6-dest-addr { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IPv6 address of the peer, for IPv6 micro-BFD."; | "IPv6 address of the peer, for IPv6 micro-BFD."; | |||
} | } | |||
uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
leaf use-ipv4 { | leaf use-ipv4 { | |||
type boolean; | type boolean; | |||
description "Using IPv4 micro-BFD."; | description | |||
"Using IPv4 micro-BFD."; | ||||
} | } | |||
leaf use-ipv6 { | leaf use-ipv6 { | |||
type boolean; | type boolean; | |||
description "Using IPv6 micro-BFD."; | description | |||
"Using IPv6 micro-BFD."; | ||||
} | } | |||
list member-links { | list member-links { | |||
key "member-link"; | key "member-link"; | |||
config false; | config false; | |||
description | description | |||
"Micro-BFD over LAG. This represents one member link."; | "Micro-BFD over a LAG. This represents one | |||
member link."; | ||||
leaf member-link { | leaf member-link { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Member link on which micro-BFD is running."; | "Member link on which micro-BFD is running."; | |||
} | } | |||
container micro-bfd-ipv4 { | container micro-bfd-ipv4 { | |||
when "../../use-ipv4 = 'true'" { | when "../../use-ipv4 = 'true'" { | |||
description "Needed only if IPv4 is used."; | description | |||
"Needed only if IPv4 is used."; | ||||
} | } | |||
description | description | |||
"Micro-BFD IPv4 session state on member link."; | "Micro-BFD IPv4 session state on a member link."; | |||
uses bfd-types:all-session; | uses bfd-types:all-session; | |||
} | } | |||
container micro-bfd-ipv6 { | container micro-bfd-ipv6 { | |||
when "../../use-ipv6 = 'true'" { | when "../../use-ipv6 = 'true'" { | |||
description "Needed only if IPv6 is used."; | description | |||
"Needed only if IPv6 is used."; | ||||
} | } | |||
description | description | |||
"Micro-BFD IPv6 session state on member link."; | "Micro-BFD IPv6 session state on a member link."; | |||
uses bfd-types:all-session; | uses bfd-types:all-session; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
skipping to change at line 2483 ¶ | skipping to change at line 2327 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification lag-notification { | notification lag-notification { | |||
description | description | |||
"Notification for BFD over LAG session state change. " + | "Notification for BFD-over-LAG session state change. | |||
"An implementation may rate-limit notifications, e.g. when a " + | An implementation may rate-limit notifications, e.g., when a | |||
"session is continuously changing state."; | session is continuously changing state."; | |||
uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
leaf lag-name { | leaf lag-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "LAG interface name."; | description | |||
"LAG interface name."; | ||||
} | } | |||
leaf member-link { | leaf member-link { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "Member link on which BFD is running."; | description | |||
"Member link on which BFD is running."; | ||||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section anchor="bfd-over-mpls-module" numbered="true" toc="default"> | ||||
<section title="BFD over MPLS YANG Module"> | <name>BFD-over-MPLS YANG Module</name> | |||
<t>This YANG module imports typedefs from <xref | <t>This YANG module imports typedefs from <xref target="RFC6991" | |||
target="RFC6991"/> and augments | format="default"/>. It also imports and augments | |||
"/routing/control-plane-protocols/control-plane-protocol" from <xref | "/routing/control-plane-protocols/control-plane-protocol" from <xref | |||
target="RFC8349"/>.</t> | target="RFC8349" format="default"/>. | |||
Additionally, it references <xref target="RFC5586"/> and | ||||
<figure align="left"> | <xref target="RFC5884"/>.</t> | |||
<preamble/> | <sourcecode name="ietf-bfd-mpls@2021-09-03.yang" type="yang" markers="tr | |||
ue"><![CDATA[ | ||||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd-mpls@2018-08-01.yang" | ||||
module ietf-bfd-mpls { | module ietf-bfd-mpls { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | |||
prefix bfd-mpls; | ||||
prefix "bfd-mpls"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
import ietf-bfd { | import ietf-bfd { | |||
prefix "bfd"; | prefix bfd; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
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 | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA Version)"; | |||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng (vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains the YANG definition for BFD parameters for | "This module contains the YANG definition for BFD parameters for | |||
MPLS LSPs as per RFC 5884. | MPLS LSPs as per RFC 5884. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
reference | ||||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | ||||
for MPLS Label Switched Paths (LSPs) | ||||
RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
/* | /* | |||
* Identity definitions | * Identity definitions | |||
*/ | */ | |||
identity encap-gach { | identity encap-gach { | |||
base bfd-types:encap-type; | base bfd-types:encap-type; | |||
description | description | |||
"BFD with G-ACh encapsulation as per RFC 5586."; | "BFD with G-ACh encapsulation as per RFC 5586."; | |||
reference | ||||
"RFC 5586: MPLS Generic Associated Channel"; | ||||
} | } | |||
identity encap-ip-gach { | identity encap-ip-gach { | |||
base bfd-types:encap-type; | base bfd-types:encap-type; | |||
description | description | |||
"BFD with IP and G-ACh encapsulation as per RFC 5586."; | "BFD with IP and G-ACh encapsulation as per RFC 5586."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping encap-cfg { | ||||
description "Configuration for BFD encapsulation"; | ||||
grouping encap-cfg { | ||||
description | ||||
"Configuration for BFD encapsulation."; | ||||
leaf encap { | leaf encap { | |||
type identityref { | type identityref { | |||
base bfd-types:encap-type; | base bfd-types:encap-type; | |||
} | } | |||
default bfd-types:encap-ip; | default "bfd-types:encap-ip"; | |||
description "BFD encapsulation"; | description | |||
"BFD encapsulation."; | ||||
} | } | |||
} | } | |||
grouping mpls-dest-address { | grouping mpls-dest-address { | |||
description "Destination address as per RFC 5884."; | description | |||
"Destination address as per RFC 5884."; | ||||
reference | ||||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | ||||
for MPLS Label Switched Paths (LSPs)"; | ||||
leaf mpls-dest-address { | leaf mpls-dest-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
config "false"; | config false; | |||
description | description | |||
"Destination address as per RFC 5884. | "Destination address as per RFC 5884. | |||
Needed if IP encapsulation is used."; | Needed if IP encapsulation is used."; | |||
} | } | |||
} | } | |||
/* | /* | |||
* Augments | * Augments | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
description "BFD augmentation for MPLS."; | description | |||
"BFD augmentation for MPLS."; | ||||
container mpls { | container mpls { | |||
description "BFD MPLS top level container."; | description | |||
"BFD MPLS top-level container."; | ||||
uses bfd-types:session-statistics-summary; | uses bfd-types:session-statistics-summary; | |||
container egress { | container egress { | |||
description "Egress configuration."; | description | |||
"Egress configuration."; | ||||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
uses bfd-types:auth-parms; | uses bfd-types:auth-parms; | |||
} | } | |||
container session-groups { | container session-groups { | |||
description | description | |||
"BFD over MPLS session groups."; | "BFD-over-MPLS session groups."; | |||
list session-group { | list session-group { | |||
key "mpls-fec"; | key "mpls-fec"; | |||
description | description | |||
"Group of BFD MPLS sessions (for ECMP). A group of " + | "Group of BFD MPLS sessions (for ECMP). A group of | |||
"sessions is for 1 FEC, each session has a different " + | sessions is for one FEC. Each session has a different | |||
"field in UDP/IP hdr for ECMP."; | field in the UDP/IP header for ECMP."; | |||
leaf mpls-fec { | leaf mpls-fec { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "MPLS FEC."; | description | |||
"MPLS FEC."; | ||||
} | } | |||
uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
list sessions { | list sessions { | |||
config false; | config false; | |||
description | description | |||
"The BFD sessions for an MPLS FEC. Local " + | "The BFD sessions for an MPLS FEC. The local | |||
"discriminator is unique for each session in the " + | discriminator is unique for each session in the | |||
"group."; | group."; | |||
uses bfd-types:all-session; | uses bfd-types:all-session; | |||
uses bfd-mpls:mpls-dest-address; | uses bfd-mpls:mpls-dest-address; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
skipping to change at line 2682 ¶ | skipping to change at line 2530 ¶ | |||
uses bfd-mpls:mpls-dest-address; | uses bfd-mpls:mpls-dest-address; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification mpls-notification { | notification mpls-notification { | |||
description | description | |||
"Notification for BFD over MPLS FEC session state change. " + | "Notification for BFD-over-MPLS FEC session state change. | |||
"An implementation may rate-limit notifications, e.g. when a " + | An implementation may rate-limit notifications, e.g., when a | |||
"session is continuously changing state."; | session is continuously changing state."; | |||
uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
leaf mpls-dest-address { | leaf mpls-dest-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Destination address as per RFC 5884. | "Destination address as per RFC 5884. | |||
Needed if IP encapsulation is used."; | Needed if IP encapsulation is used."; | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section title="BFD over MPLS-TE YANG Module"> | ||||
<t>This YANG module imports and augments "/te/tunnels/tunnel" from | ||||
<xref target="I-D.ietf-teas-yang-te"/>.</t> | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
<CODE BEGINS> file "ietf-bfd-mpls-te@2018-08-01.yang" | ||||
module ietf-bfd-mpls-te { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; | ||||
prefix "bfd-mpls-te"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import ietf-bfd-types { | ||||
prefix "bfd-types"; | ||||
reference "RFC XXXX: YANG Data Model for BFD"; | ||||
} | ||||
import ietf-bfd { | ||||
prefix "bfd"; | ||||
reference "RFC XXXX: YANG Data Model for BFD"; | ||||
} | ||||
import ietf-bfd-mpls { | ||||
prefix "bfd-mpls"; | ||||
reference "RFC XXXX: YANG Data Model for BFD"; | ||||
} | ||||
import ietf-te { | ||||
prefix "te"; | ||||
// RFC Ed.: replace YYYY with actual RFC number of | ||||
// draft-ietf-teas-yang-te and remove this note. | ||||
reference | ||||
"RFC YYYY: A YANG Data Model for Traffic Engineering Tunnels and | ||||
Interfaces"; | ||||
} | ||||
import ietf-routing { | ||||
prefix "rt"; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA version)"; | ||||
} | ||||
organization "IETF BFD Working Group"; | ||||
contact | ||||
"WG Web: <http://tools.ietf.org/wg/bfd> | ||||
WG List: <rtg-bfd@ietf.org> | ||||
Editors: Reshad Rahman (rrahman@cisco.com), | ||||
Lianshu Zheng (vero.zheng@huawei.com), | ||||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
description | ||||
"This module contains the YANG definition for BFD parameters for | ||||
MPLS Traffic Engineering as per RFC 5884. | ||||
Copyright (c) 2018 IETF Trust and the persons | ||||
identified as authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see | ||||
the RFC itself for full legal notices."; | ||||
reference "RFC XXXX"; | ||||
revision 2018-08-01 { | ||||
description "Initial revision."; | ||||
reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; | ||||
} | ||||
/* | ||||
* Augments | ||||
*/ | ||||
augment "/rt:routing/rt:control-plane-protocols/" | ||||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description "BFD augmentation for MPLS-TE."; | ||||
container mpls-te { | ||||
description "BFD MPLS-TE top level container."; | ||||
container egress { | ||||
description "Egress configuration."; | ||||
uses bfd-types:client-cfg-parms; | ||||
uses bfd-types:auth-parms; | ||||
} | ||||
uses bfd-types:session-statistics-summary; | ||||
} | ||||
} | ||||
augment "/te:te/te:tunnels/te:tunnel" { | ||||
description "BFD configuration on MPLS-TE tunnel."; | ||||
uses bfd-types:common-cfg-parms; | ||||
uses bfd-mpls:encap-cfg; | ||||
} | ||||
augment "/te:te/te:lsps-state/te:lsp" { | ||||
when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { | ||||
description "BFD information not needed at transit points."; | ||||
} | ||||
description "BFD state information on MPLS-TE LSP."; | ||||
uses bfd-types:all-session; | ||||
uses bfd-mpls:mpls-dest-address; | ||||
} | ||||
/* | ||||
* Notifications | ||||
*/ | ||||
notification mpls-te-notification { | ||||
description | ||||
"Notification for BFD over MPLS-TE session state change. " + | ||||
"An implementation may rate-limit notifications, e.g. when a " + | ||||
"session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | ||||
uses bfd-mpls:mpls-dest-address; | ||||
leaf tunnel-name { | ||||
type string; | ||||
description "MPLS-TE tunnel on which BFD was running."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Data Model examples"> | <name>Data Model Examples</name> | |||
<t>This section presents some simple and illustrative examples on how to | <t>This section presents some simple and illustrative examples of how to | |||
configure BFD.</t> | configure BFD.</t> | |||
<t>The examples are represented in XML <xref target="W3C.REC-xml-20081126" | ||||
<section title="IP single-hop"> | />.</t> | |||
<section numbered="true" toc="default"> | ||||
<name>IP Single-Hop</name> | ||||
<t>The following is an example configuration for a BFD IP single-hop | <t>The following is an example configuration for a BFD IP single-hop | |||
session. The desired transmit interval and the required receive | session. The desired transmit interval and the required receive | |||
interval are both set to 10ms.</t> | interval are both set to 10 ms.</t> | |||
<sourcecode type="xml"><![CDATA[ | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
<interface> | <interface> | |||
<name>eth0</name> | <name>eth0</name> | |||
<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | |||
ianaift:ethernetCsmacd | ianaift:ethernetCsmacd | |||
</type> | </type> | |||
</interface> | </interface> | |||
</interfaces> | </interfaces> | |||
skipping to change at line 2893 ¶ | skipping to change at line 2583 ¶ | |||
"urn:ietf:params:xml:ns:yang:ietf-bfd-types"> | "urn:ietf:params:xml:ns:yang:ietf-bfd-types"> | |||
bfd-types:bfdv1 | bfd-types:bfdv1 | |||
</type> | </type> | |||
<name>name:BFD</name> | <name>name:BFD</name> | |||
<bfd xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd"> | <bfd xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd"> | |||
<ip-sh xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> | <ip-sh xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> | |||
<sessions> | <sessions> | |||
<session> | <session> | |||
<interface>eth0</interface> | <interface>eth0</interface> | |||
<dest-addr>2001:db8:0:113::101</dest-addr> | <dest-addr>2001:db8:0:113::101</dest-addr> | |||
<desired-min-tx-interval>10000</desired-min-tx-interval> | <desired-min-tx-interval> | |||
10000 | ||||
</desired-min-tx-interval> | ||||
<required-min-rx-interval> | <required-min-rx-interval> | |||
10000 | 10000 | |||
</required-min-rx-interval> | </required-min-rx-interval> | |||
</session> | </session> | |||
</sessions> | </sessions> | |||
</ip-sh> | </ip-sh> | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
]]></sourcecode> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="IP multihop"> | <name>IP Multihop</name> | |||
<t>The following is an example configuration for a BFD IP multihop | <t>The following is an example configuration for a BFD IP multihop | |||
session group. The desired transmit interval and the required receive | session group. The desired transmit interval and the required receive | |||
interval are both set to 150ms.</t> | interval are both set to 150 ms.</t> | |||
<sourcecode type="xml"><![CDATA[ | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
<control-plane-protocols> | <control-plane-protocols> | |||
<control-plane-protocol> | <control-plane-protocol> | |||
<type xmlns:bfd-types= | <type xmlns:bfd-types= | |||
"urn:ietf:params:xml:ns:yang:ietf-bfd-types"> | "urn:ietf:params:xml:ns:yang:ietf-bfd-types"> | |||
bfd-types:bfdv1 | bfd-types:bfdv1 | |||
</type> | </type> | |||
<name>name:BFD</name> | <name>name:BFD</name> | |||
skipping to change at line 2950 ¶ | skipping to change at line 2636 ¶ | |||
</required-min-rx-interval> | </required-min-rx-interval> | |||
<rx-ttl>240</rx-ttl> | <rx-ttl>240</rx-ttl> | |||
</session-group> | </session-group> | |||
</session-groups> | </session-groups> | |||
</ip-mh> | </ip-mh> | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="LAG"> | <name>LAG</name> | |||
<t>The following is an example of BFD configuration for a LAG session. | <t>The following is an example of BFD configuration for a LAG session. | |||
In this case, an interface named "Bundle-Ether1" of interface type | In this case, an interface named "Bundle-Ether1" of interface type | |||
"ieee802eadLag" has a desired transmit and required receive interval | "ieee8023adLag" has a desired transmit interval and required receive int | |||
set to 10ms. </t> | erval | |||
set to 10 ms.</t> | ||||
<t><figure> | <sourcecode type="xml"><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
<interface> | <interface> | |||
<name>Bundle-Ether1</name> | <name>Bundle-Ether1</name> | |||
<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | |||
ianaift:ieee8023adLag | ianaift:ieee8023adLag | |||
</type> | </type> | |||
</interface> | </interface> | |||
</interfaces> | </interfaces> | |||
skipping to change at line 3001 ¶ | skipping to change at line 2684 ¶ | |||
</required-min-rx-interval> | </required-min-rx-interval> | |||
<use-ipv6>true</use-ipv6> | <use-ipv6>true</use-ipv6> | |||
</session> | </session> | |||
</sessions> | </sessions> | |||
</lag> | </lag> | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
]]></sourcecode> | ||||
]]></artwork> | ||||
</figure></t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="MPLS"> | <name>MPLS</name> | |||
<t>The following is an example of BFD configured for an MPLS LSP. In | <t>The following is an example of BFD configured for an MPLS LSP. In | |||
this case, the desired transmit and required receive interval set to | this case, the desired transmit interval and required receive interval | |||
250ms.</t> | are both set to 250 ms.</t> | |||
<sourcecode type="xml"><![CDATA[ | ||||
<t><figure> | ||||
<artwork align="left"><![CDATA[ | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
<control-plane-protocols> | <control-plane-protocols> | |||
<control-plane-protocol> | <control-plane-protocol> | |||
<type xmlns:bfd-types= | <type xmlns:bfd-types= | |||
"urn:ietf:params:xml:ns:yang:ietf-bfd-types"> | "urn:ietf:params:xml:ns:yang:ietf-bfd-types"> | |||
bfd-types:bfdv1 | bfd-types:bfdv1 | |||
</type> | </type> | |||
<name>name:BFD</name> | <name>name:BFD</name> | |||
skipping to change at line 3042 ¶ | skipping to change at line 2721 ¶ | |||
250000 | 250000 | |||
</required-min-rx-interval> | </required-min-rx-interval> | |||
</session-group> | </session-group> | |||
</session-groups> | </session-groups> | |||
</mpls> | </mpls> | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
]]></sourcecode> | ||||
]]></artwork> | ||||
</figure></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>The YANG module specified in this document defines a schema for data | <!-- Begin YANG security DNE paragraphs 1 and 2 (fixed per boilerplate) --> | |||
that is designed to be accessed via network management protocols such as | <t>The YANG modules specified in this document define a schema for data | |||
NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | that is designed to be accessed via network management protocols such | |||
The lowest NETCONF layer is the secure transport layer, and the | as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | |||
mandatory-to-implement secure transport is Secure Shell (SSH) <xref | The lowest NETCONF layer is the secure transport layer, and the | |||
target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | mandatory-to-implement secure transport is Secure Shell (SSH) | |||
mandatory-to-implement secure transport is TLS <xref | <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | |||
target="RFC5246"/>.</t> | mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t> | |||
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8 | ||||
<t>The NETCONF access control model <xref target="RFC6536"/> provides | 341"/> | |||
the means to restrict access for particular NETCONF or RESTCONF users to | provides the means to restrict access for particular NETCONF or RESTCONF users | |||
a preconfigured subset of all available NETCONF or RESTCONF protocol | to a preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content.</t> | operations and content.</t> | |||
<!-- End YANG security DNE text (paragraphs 1 and 2) --> | ||||
<t>There are a number of data nodes defined in this YANG module that are | <!-- Begin YANG security DNE paragraph 3 (OK) --> | |||
writable/creatable/deletable (i.e., config true, which is the default). | <t>There are a number of data nodes defined in these YANG modules that are | |||
These data nodes may be considered sensitive or vulnerable in some | writable/creatable/deletable (i.e., config true, which is the default). These | |||
network environments. Write operations (e.g., edit-config) to these data | data nodes may be considered sensitive or vulnerable in some network | |||
nodes without proper protection can have a negative effect on network | environments. Write operations (e.g., edit-config) to these data nodes without | |||
operations. These are the subtrees and data nodes and their | proper protection can have a negative effect on network operations. These are | |||
sensitivity/vulnerability:</t> | the subtrees and data nodes and their sensitivity/vulnerability from a write acc | |||
ess perspective:</t> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/sessi | <!-- End YANG security DNE paragraph 3 --> | |||
ons: | <dl newline="true" spacing="normal"> | |||
the list specifies the IP single-hop BFD sessions.</t> | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/sess | |||
ions:</dt> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/sessi | <dd><t>This list specifies the IP single-hop BFD sessions.</t> | |||
ons: | <t>Data nodes "local-multiplier", "desired-min-tx-interval", | |||
data nodes local-multiplier, desired-min-tx-interval, | "required-min-rx-interval", and "min-interval" all impact the | |||
required-min-rx-interval and min-interval all impact the | BFD IP single-hop session. The "source-addr" and "dest-addr" data nodes ca | |||
BFD IP single-hop session. The source-addr and dest-addr data nodes can be | n be used to | |||
used to | send BFD packets to unwitting recipients. <xref target="RFC5880" | |||
send BFD packets to unwitting recipients, <xref target="RFC5880"/> describ | format="default"/> describes how BFD mitigates such | |||
es how | threats. Authentication data nodes "key-chain" and "meticulous" impact the | |||
BFD mitigates against such threats. Authentication data nodes key-chain an | security of the BFD IP single-hop session.</t></dd> | |||
d meticulous | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/sess | |||
impact the security of the BFD IP single-hop session.</t> | ion-group:</dt> | |||
<dd><t>This list specifies the IP multihop BFD session groups.</t> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/sessi | <t>Data nodes "local-multiplier", "desired-min-tx-interval", | |||
on-group: | "required-min-rx-interval", and "min-interval" all impact the | |||
the list specifies the IP multi-hop BFD session groups.</t> | BFD IP multihop session. The "source-addr" and "dest-addr" data nodes can | |||
be used to | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/sessi | send BFD packets to unwitting recipients. <xref target="RFC5880" | |||
on-group: | format="default"/> describes how BFD mitigates such | |||
data nodes local-multiplier, desired-min-tx-interval, | threats. Authentication data nodes "key-chain" and "meticulous" impact the | |||
required-min-rx-interval and min-interval all impact the | security of the BFD IP multihop session.</t></dd> | |||
BFD IP multi-hop session. The source-addr and dest-addr data nodes can be | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/sessio | |||
used to | ns:</dt> | |||
send BFD packets to unwitting recipients, <xref target="RFC5880"/> describ | <dd><t>This list specifies the BFD sessions over a LAG.</t> | |||
es how | <t>Data nodes "local-multiplier", "desired-min-tx-interval", | |||
BFD mitigates against such threats. Authentication data nodes key-chain an | "required-min-rx-interval", and "min-interval" all impact the BFD-over-LAG | |||
d meticulous | session. The "ipv4-dest-addr" and "ipv6-dest-addr" data nodes can be used | |||
impact the security of the BFD IP multi-hop session.</t> | to | |||
send BFD packets to unwitting recipients. <xref target="RFC5880" | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/session | format="default"/> describes how BFD mitigates such | |||
s: | threats. Authentication data nodes "key-chain" and "meticulous" impact the | |||
the list specifies the BFD sessions over LAG.</t> | security of the BFD-over-LAG session.</t></dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/sessi | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/session | on-group:</dt> | |||
s: | <dd><t>This list specifies the session groups for BFD over MPLS.</t> | |||
data nodes local-multiplier, desired-min-tx-interval, | <t>Data nodes "local-multiplier", "desired-min-tx-interval", | |||
required-min-rx-interval and min-interval all impact the | "required-min-rx-interval", and "min-interval" all impact the | |||
BFD over LAG session. The ipv4-dest-addr and ipv6-dest-addr data nodes can | BFD-over-MPLS-LSPs session. Authentication data nodes "key-chain" and "met | |||
be used to | iculous" impact | |||
send BFD packets to unwitting recipients, <xref target="RFC5880"/> describ | the security of the BFD-over-MPLS-LSPs session.</t></dd> | |||
es how | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/egres | |||
BFD mitigates against such threats. Authentication data nodes key-chain an | s:</dt> | |||
d meticulous | <dd>Data nodes "local-multiplier", "desired-min-tx-interval", | |||
impact the security of the BFD over LAG session.</t> | "required-min-rx-interval", and "min-interval" all impact the | |||
BFD-over-MPLS-LSPs sessions for which this device is an MPLS LSP egress | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/sessio | node. Authentication data nodes "key-chain" and "meticulous" impact the | |||
n-group: | security of the BFD-over-MPLS-LSPs sessions for which this device is an | |||
the list specifies the session groups for BFD over MPLS.</t> | MPLS LSP egress node.</dd> | |||
</dl> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/sessio | <t>The YANG modules have writable data nodes that can be used for the | |||
n-group: | creation of BFD sessions and the modification of BFD session parameters. T | |||
data nodes local-multiplier, desired-min-tx-interval, | he | |||
required-min-rx-interval, and min-interval all impact the | system should "police" the creation of BFD sessions to prevent new session | |||
BFD over MPLS LSPs session. Authentication data nodes key-chain and meticu | s | |||
lous | from causing existing BFD sessions to fail. In the case of BFD session | |||
impact the security of the BFD over MPLS LSPs session.</t> | modification, the BFD protocol has mechanisms in place that allow for | |||
in-service modification.</t> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/egress | ||||
: | ||||
data nodes local-multiplier, desired-min-tx-interval, | ||||
required-min-rx-interval and min-interval all impact the | ||||
BFD over MPLS LSPs sessions for which this device is an MPLS LSP egress | ||||
node. Authentication data nodes key-chain and meticulous | ||||
impact the security of the BFD over MPLS LSPs sessions for which this devi | ||||
ce is | ||||
an MPLS LSP egress node</t> | ||||
<t>/te/tunnels/tunnel: data nodes local-multiplier, | ||||
desired-min-tx-interval, required-min-rx-interval and min-interval | ||||
all impact the BFD session over the MPLS-TE tunnel. Authentication | ||||
data nodes key-chain and meticulous impact the security of the BFD session | ||||
over | ||||
the MPLS-TE tunnel.</t> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/egr | ||||
ess: | ||||
data nodes local-multiplier, desired-min-tx-interval, | ||||
required-min-rx-interval and min-interval all impact the | ||||
BFD over MPLS-TE sessions for which this device is an MPLS-TE egress | ||||
node. Authentication data nodes key-chain and meticulous impact the securi | ||||
ty of the | ||||
BFD over MPLS-TE sessions for which this device is an MPLS-TE egress | ||||
node.</t> | ||||
<t/> | ||||
<t>The YANG module has writeable data nodes which can be used for | ||||
creation of BFD sessions and modification of BFD session parameters. The | ||||
system should "police" creation of BFD sessions to prevent new sessions | ||||
from causing existing BFD sessions to fail. For BFD session | ||||
modification, the BFD protocol has mechanisms in place which allow for | ||||
in service modification.</t> | ||||
<t>When BFD clients are used to modify BFD configuration (as described | <t>When BFD clients are used to modify BFD configuration (as described | |||
in <xref target="CFG-MODEL"/>), the BFD clients need to be included in an | in <xref target="CFG-MODEL" format="default"/>), the BFD clients need to | |||
analysis of the security properties of the BFD-using system (e.g., when | be included in an analysis of the security properties of the system that | |||
considering the authentication and authorization of control actions). | uses BFD (e.g., when considering the authentication and authorization of | |||
In many cases, BFD is not the most vulnerable portion of such a composite | control actions). In many cases, BFD is not the most vulnerable portion | |||
system, since BFD is limited to generating well-defined traffic at a fixed | of such a composite system, since BFD is limited to generating | |||
rate on a given path; in the case of an IGP as BFD client, attacking the | well-defined traffic at a fixed rate on a given path; in the case of an | |||
IGP could cause more broad-scale disruption than (de)configuring a BFD | IGP acting as a BFD client, attacking the IGP could cause more broad-scale | |||
session could cause.</t> | disruption than would (de)configuring a BFD session.</t> | |||
<!-- Begin YANG security DNE paragraph 4 (OK) --> | ||||
<t>Some of the readable data nodes in this YANG module may be considered | <t>Some of the readable data nodes in these YANG modules may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. These are the subtrees and data nodes | notification) to these data nodes. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability:</t> | and their sensitivity/vulnerability from a read access perspective:</t> | |||
<!-- End YANG security DNE paragraph 4 --> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/summa | <dl newline="true" spacing="normal"> | |||
ry: | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/summ | |||
access to this information discloses the number of BFD IP single-hop | ary:</dt> | |||
sessions which are up, down and admin-down. The counters include BFD | <dd>Access to this information discloses the number of BFD IP single-hop | |||
sessions for which the user does not have read-access.</t> | sessions that are in the "up", "down", or "admin-down" state. The counters | |||
include BFD | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/sessi | sessions for which the user does not have read access.</dd> | |||
ons/session/: | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/sess | |||
access to data nodes local-discriminator and remote-discriminator | ions/session/:</dt> | |||
<dd>Access to data nodes "local-discriminator" and "remote-discriminator" | ||||
(combined with the data nodes in the authentication container) provides th e | (combined with the data nodes in the authentication container) provides th e | |||
ability to spoof BFD IP single-hop packets.</t> | ability to spoof BFD IP single-hop packets.</dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/summ | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/summa | ary:</dt> | |||
ry: | <dd>Access to this information discloses the number of BFD IP multihop | |||
access to this information discloses the number of BFD IP multi-hop | sessions that are in the "up", "down", or "admin-down" state. The counters | |||
sessions which are up, down and admin-down. The counters include BFD | include BFD | |||
sessions for which the user does not have read-access.</t> | sessions for which the user does not have read access.</dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/sess | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/sessi | ion-groups/session-group/sessions:</dt> | |||
on-groups/session-group/sessions: | <dd>Access to data nodes "local-discriminator" and "remote-discriminator" | |||
access to data nodes local-discriminator and remote-discriminator | (combined with the data nodes in the session group's authentication contai | |||
(combined with the data nodes in the session-group's authentication contai | ner) provides the | |||
ner) provides the | ability to spoof BFD IP multihop packets.</dd> | |||
ability to spoof BFD IP multi-hop packets.</t> | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/micro- | |||
bfd-ipv4-session-statistics/summary:</dt> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/micro-b | <dd>Access to this information discloses the number of micro-BFD IPv4 LAG | |||
fd-ipv4-session-statistics/summary: | sessions that are in the "up", "down", or "admin-down" state. The counters | |||
access to this information discloses the number of micro BFD IPv4 LAG | include BFD | |||
sessions which are up, down and admin-down. The counters include BFD | sessions for which the user does not have read access.</dd> | |||
sessions for which the user does not have read-access.</t> | <dt>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/sessio | |||
ns/session/member-links/member-link/micro-bfd-ipv4:</dt> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/session | <dd>Access to data nodes "local-discriminator" and "remote-discriminator" | |||
s/session/member-links/member-link/micro-bfd-ipv4: | ||||
access to data nodes local-discriminator and remote-discriminator | ||||
(combined with the data nodes in the session's authentication container) p rovides the | (combined with the data nodes in the session's authentication container) p rovides the | |||
ability to spoof BFD IPv4 LAG packets.</t> | ability to spoof BFD IPv4 LAG packets.</dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/micro- | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/micro-b | bfd-ipv6-session-statistics/summary:</dt> | |||
fd-ipv6-session-statistics/summary: | <dd>Access to this information discloses the number of micro-BFD IPv6 LAG | |||
access to this information discloses the number of micro BFD IPv6 LAG | sessions that are in the "up", "down", or "admin-down" state. The counters | |||
sessions which are up, down and admin-down. The counters include BFD | include BFD | |||
sessions for which the user does not have read-access.</t> | sessions for which the user does not have read access.</dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/sessio | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/lag/session | ns/session/member-links/member-link/micro-bfd-ipv6:</dt> | |||
s/session/member-links/member-link/micro-bfd-ipv6: | <dd>Access to data nodes "local-discriminator" and "remote-discriminator" | |||
access to data nodes local-discriminator and remote-discriminator | ||||
(combined with the data nodes in the session's authentication container) p rovides the | (combined with the data nodes in the session's authentication container) p rovides the | |||
ability to spoof BFD IPv6 LAG packets.</t> | ability to spoof BFD IPv6 LAG packets.</dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/summa | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/summar | ry:</dt> | |||
y: | <dd>Access to this information discloses the number of BFD sessions over | |||
access to this information discloses the number of BFD sessions over | MPLS LSPs that are in the "up", "down", or "admin-down" state. The counter | |||
MPLS LSPs which are up, down and admin-down. The counters include BFD | s include BFD | |||
sessions for which the user does not have read-access.</t> | sessions for which the user does not have read access.</dd> | |||
<dt>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/sessi | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/sessio | on-groups/session-group/sessions:</dt> | |||
n-groups/session-group/sessions: | <dd>Access to data nodes "local-discriminator" and "remote-discriminator" | |||
access to data nodes local-discriminator and remote-discriminator | (combined with the data nodes in the session group's authentication contai | |||
(combined with the data nodes in the session-group's authentication contai | ner) provides the | |||
ner) provides the | ability to spoof BFD-over-MPLS-LSPs packets.</dd> | |||
ability to spoof BFD over MPLS LSPs packets.</t> | </dl> | |||
<t>This document does not define any RPC operations.</t> | ||||
<t>/routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/sum | ||||
mary: | ||||
access to this information discloses the number of BFD sessions over | ||||
MPLS-TE which are up, down and admin-down. The counters include BFD | ||||
sessions for which the user does not have read-access.</t> | ||||
<t>/te/lsps-state/lsp: access to data nodes local-discriminator and remote | ||||
-discriminator | ||||
(combined with the data nodes in the tunnel's authentication container) pr | ||||
ovides the | ||||
ability to spoof BFD over MPLS-TE packets.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>IANA has registered the following namespace URIs in the "IETF XML | ||||
Registry" <xref target="RFC3688" format="default"/>:</t> | ||||
<section title="IANA Considerations"> | <dl newline="false" spacing="compact"> | |||
<t>This document registers the following namespace URIs in the IETF XML | <dt>URI:</dt> | |||
registry <xref target="RFC3688"/>:</t> | <dd>urn:ietf:params:xml:ns:yang:iana-bfd-types</dd> | |||
<dt>Registrant Contact:</dt> | ||||
<t/> | <dd>The IESG.</dd> | |||
<dt>XML:</dt> | ||||
<t>--------------------------------------------------------------------</t | <dd>N/A; the requested URI is an XML namespace.</dd> | |||
> | </dl> | |||
<t>URI: urn:ietf:params:xml:ns:yang:iana-bfd-types</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-bfd-types</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t/> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-bfd</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t/> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t/> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mh</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t/> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t/> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t>URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls</t> | ||||
<t>Registrant Contact: The IESG.</t> | ||||
<t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<t/> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>URI:</dt> | |||
<dd>urn:ietf:params:xml:ns:yang:ietf-bfd-types</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>URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te</t> | <dl newline="false" spacing="compact"> | |||
<dt>URI:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-bfd</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>Registrant Contact: The IESG.</t> | <dl newline="false" spacing="compact"> | |||
<dt>URI:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh</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>XML: N/A, the requested URI is an XML namespace.</t> | <dl newline="false" spacing="compact"> | |||
<dt>URI:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh</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>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>URI:</dt> | |||
<dd>urn:ietf:params:xml:ns:yang:ietf-bfd-lag</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>This document registers the following YANG modules in the YANG Module N | <dl newline="false" spacing="compact"> | |||
ames | <dt>URI:</dt> | |||
registry <xref target="RFC6020"/>:</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd-mpls</dd> | |||
<t>RFC Editor: Replace RFC XXXX with actual RFC number and remove this not | <dt>Registrant Contact:</dt> | |||
e.</t> | <dd>The IESG.</dd> | |||
<dt>XML:</dt> | ||||
<dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <t>IANA has registered the following YANG modules in the "YANG Module Name | |||
> | s" | |||
<t>Name: iana-bfd-types</t> | registry <xref target="RFC6020" format="default"/>:</t> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:iana-bfd-types</t> | <dl newline="false" spacing="compact"> | |||
<t>Prefix: iana-bfd-types</t> | <dt>Name:</dt> | |||
<t>Reference: RFC XXXX</t> | <dd>iana-bfd-types</dd> | |||
<t>--------------------------------------------------------------------</t | <dt>Namespace:</dt> | |||
> | <dd>urn:ietf:params:xml:ns:yang:iana-bfd-types</dd> | |||
<dt>Prefix:</dt> | ||||
<dd>iana-bfd-types</dd> | ||||
<dt>Reference:</dt> | ||||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>Name:</dt> | |||
<t>Name: ietf-bfd-types</t> | <dd>ietf-bfd-types</dd> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-types</t> | <dt>Namespace:</dt> | |||
<t>Prefix: bfd-types</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd-types</dd> | |||
<t>Reference: RFC XXXX</t> | <dt>Prefix:</dt> | |||
<t>--------------------------------------------------------------------</t | <dd>bfd-types</dd> | |||
> | <dt>Reference:</dt> | |||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>Name:</dt> | |||
<t>Name: ietf-bfd</t> | <dd>ietf-bfd</dd> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd</t> | <dt>Namespace:</dt> | |||
<t>Prefix: bfd</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd</dd> | |||
<t>Reference: RFC XXXX</t> | <dt>Prefix:</dt> | |||
<t>--------------------------------------------------------------------</t | <dd>bfd</dd> | |||
> | <dt>Reference:</dt> | |||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>Name:</dt> | |||
<t>Name: ietf-bfd-ip-sh</t> | <dd>ietf-bfd-ip-sh</dd> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh</t> | <dt>Namespace:</dt> | |||
<t>Prefix: bfd-ip-sh</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh</dd> | |||
<t>Reference: RFC XXXX</t> | <dt>Prefix:</dt> | |||
<t>--------------------------------------------------------------------</t | <dd>bfd-ip-sh</dd> | |||
> | <dt>Reference:</dt> | |||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>Name:</dt> | |||
<t>Name: ietf-bfd-ip-mh</t> | <dd>ietf-bfd-ip-mh</dd> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh</t> | <dt>Namespace:</dt> | |||
<t>Prefix: bfd-ip-mh</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh</dd> | |||
<t>Reference: RFC XXXX</t> | <dt>Prefix:</dt> | |||
<t>--------------------------------------------------------------------</t | <dd>bfd-ip-mh</dd> | |||
> | <dt>Reference:</dt> | |||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>Name:</dt> | |||
<t>Name: ietf-bfd-lag</t> | <dd>ietf-bfd-lag</dd> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-lag</t> | <dt>Namespace:</dt> | |||
<t>Prefix: bfd-lag</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd-lag</dd> | |||
<t>Reference: RFC XXXX</t> | <dt>Prefix:</dt> | |||
<t>--------------------------------------------------------------------</t | <dd>bfd-lag</dd> | |||
> | <dt>Reference:</dt> | |||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <dl newline="false" spacing="compact"> | |||
> | <dt>Name:</dt> | |||
<t>Name: ietf-bfd-mpls</t> | <dd>ietf-bfd-mpls</dd> | |||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls</t> | <dt>Namespace:</dt> | |||
<t>Prefix: bfd-mpls</t> | <dd>urn:ietf:params:xml:ns:yang:ietf-bfd-mpls</dd> | |||
<t>Reference: RFC XXXX</t> | <dt>Prefix:</dt> | |||
<t>--------------------------------------------------------------------</t | <dd>bfd-mpls</dd> | |||
> | <dt>Reference:</dt> | |||
<dd>RFC 9127</dd> | ||||
</dl> | ||||
<t>--------------------------------------------------------------------</t | <section numbered="true" toc="default"> | |||
> | <name>IANA-Maintained "iana-bfd-types" Module</name> | |||
<t>Name: ietf-bfd-mpls-te</t> | ||||
<t>Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te</t> | ||||
<t>Prefix: bfd-mpls-te</t> | ||||
<t>Reference: RFC XXXX</t> | ||||
<t>--------------------------------------------------------------------</t | ||||
> | ||||
<section title="IANA-Maintained iana-bfd-types module"> | ||||
<t>This document defines the initial version of the IANA-maintained | <t>This document defines the initial version of the IANA-maintained | |||
iana-bfd-types YANG module.</t> | "iana-bfd-types" YANG module.</t> | |||
<t>The "iana-bfd-types" YANG module mirrors the "BFD Diagnostic Codes" | ||||
<t>The iana-bfd-types YANG module mirrors the "BFD | and "BFD Authentication Types" registries at | |||
Diagnostic Codes" registry and "BFD Authentication Types" registry at | <eref target="https://www.iana.org/assignments/bfd-parameters/" brackets | |||
https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml. | ="angle"/>. Whenever | |||
Whenever that registry changes, IANA must update the iana-bfd-types YANG | these registries change, IANA must update the "iana-bfd-types" YANG | |||
module.</t> | module.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section title="Acknowledgements"> | ||||
<t>We would also like to thank Nobo Akiya and Jeff Haas for their | ||||
encouragement on this work. We would also like to thank Rakesh Gandhi | ||||
and Tarek Saad for their help on the MPLS-TE model. We would also like | ||||
to thank Acee Lindem for his guidance.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
<?rfc include="reference.RFC.2119"?> | <name>References</name> | |||
<references> | ||||
<?rfc include="reference.RFC.3688"?> | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5246'?> | FC.3688.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5880'?> | FC.5880.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5881'?> | FC.5881.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5882'?> | FC.5882.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5883'?> | FC.5883.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5884'?> | FC.5884.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5885'?> | FC.5885.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.5586'?> | FC.5586.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.6020'?> | FC.6020.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.6241'?> | FC.6241.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.6242'?> | FC.6242.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.6536'?> | FC.6991.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.6991'?> | FC.7130.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.7130'?> | FC.8040.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.8040'?> | FC.8177.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include="reference.RFC.8174"?> | FC.8340.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include="reference.RFC.8177"?> | FC.8341.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include="reference.RFC.8340"?> | FC.8343.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include="reference.RFC.8343"?> | FC.8344.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include="reference.RFC.8344"?> | FC.8349.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include="reference.RFC.8349"?> | FC.8446.xml"/> | |||
<?rfc include="reference.I-D.ietf-mpls-base-yang"?> | ||||
<?rfc include="reference.I-D.ietf-teas-yang-te"?> | <!-- draft-ietf-mpls-base-yang (RFC 8960) --> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8960.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3031. | ||||
xml"/> | ||||
</references> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6428. xml"/> | |||
<references title="Informative References"> | <!-- draft-ietf-rtgwg-ni-model (RFC 8529) --> | |||
<?rfc include="reference.I-D.ietf-rtgwg-ni-model"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8529. | |||
xml"/> | ||||
<?rfc include="reference.I-D.ietf-rtgwg-lne-model"?> | <!-- draft-ietf-rtgwg-lne-model (RFC 8530) --> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8530. | ||||
xml"/> | ||||
<?rfc include="reference.I-D.ietf-lime-yang-connectionless-oam"?> | <!-- draft-ietf-lime-yang-connectionless-oam (RFC 8532) --> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8532. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8342.xml"/> | ||||
<?rfc include="reference.RFC.8342"?> | <reference anchor='W3C.REC-xml-20081126' | |||
target='https://www.w3.org/TR/2008/REC-xml-20081126'> | ||||
<front> | ||||
<title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title> | ||||
<author initials='T.' surname='Bray' fullname='Tim Bray'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='J.' surname='Paoli' fullname='Jean Paoli'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='M.' surname='Sperberg-McQueen' fullname='Michael Sperberg | ||||
-McQueen'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='E.' surname='Maler' fullname='Eve Maler'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='F.' surname='Yergeau' fullname='Francois Yergeau'> | ||||
<organization /> | ||||
</author> | ||||
<date month='November' year='2008' /> | ||||
</front> | ||||
<refcontent>World Wide Web Consortium Recommendation REC-xml-20081126</refc | ||||
ontent> | ||||
</reference> | ||||
</references> | ||||
</references> | </references> | |||
<section anchor="ECHO-CONFIG" numbered="true" toc="default"> | ||||
<section anchor="ECHO-CONFIG" title="Echo function configuration example"> | <name>Echo Function Configuration Example</name> | |||
<t>As mentioned in <xref target="IP-SH-CFG"/>, the mechanism to start | <t>As mentioned in <xref target="IP-SH-CFG" format="default"/>, the mechan | |||
and stop the echo function, as defined in <xref target="RFC5880"/> and | ism to start | |||
<xref target="RFC5881"/>, is implementation specific. In this section we | and stop the Echo function, as defined in <xref target="RFC5880" | |||
provide an example of how the echo function can be implemented via | format="default"/> and discussed in | |||
<xref target="RFC5881" format="default"/>, is implementation specific. In | ||||
this appendix, we | ||||
provide an example of how the Echo function can be implemented via | ||||
configuration.</t> | configuration.</t> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
<figure align="left"> | ||||
<preamble/> | ||||
<artwork align="left"><![CDATA[ | ||||
module: example-bfd-echo | module: example-bfd-echo | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh | /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh | |||
/bfd-ip-sh:sessions: | /bfd-ip-sh:sessions: | |||
+--rw echo {bfd-types:echo-mode}? | +--rw echo {bfd-types:echo-mode}? | |||
+--rw desired-min-echo-tx-interval? uint32 | +--rw desired-min-echo-tx-interval? uint32 | |||
+--rw required-min-echo-rx-interval? uint32 | +--rw required-min-echo-rx-interval? uint32 | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | <section numbered="true" toc="default"> | |||
<name>Example YANG Module for BFD Echo Function Configuration</name> | ||||
<section title="Example YANG module for BFD echo function configuration"> | <t>This appendix provides an example YANG module for | |||
<figure align="left"> | configuration of the BFD Echo function. It imports and augments | |||
<preamble/> | "/routing/control-plane-protocols/control-plane-protocol" from | |||
<xref target="RFC8349"/>, and it references <xref target="RFC5880"/>. | ||||
<artwork align="left"><![CDATA[ | </t> | |||
<sourcecode type="yang"><![CDATA[ | ||||
module example-bfd-echo { | module example-bfd-echo { | |||
namespace "tag:example.com,2018:example-bfd-echo"; | namespace "tag:example.com,2021:example-bfd-echo"; | |||
prefix example-bfd-echo; | ||||
prefix "example-bfd-echo"; | ||||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
} | } | |||
import ietf-bfd { | import ietf-bfd { | |||
prefix "bfd"; | prefix bfd; | |||
} | } | |||
import ietf-bfd-ip-sh { | import ietf-bfd-ip-sh { | |||
prefix "bfd-ip-sh"; | prefix bfd-ip-sh; | |||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
} | } | |||
organization "IETF BFD Working Group"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
WG List: <rtg-bfd@ietf.org> | WG List: <mailto:rtg-bfd@ietf.org> | |||
Editors: Reshad Rahman (rrahman@cisco.com), | Editor: Reshad Rahman | |||
Lianshu Zheng (vero.zheng@huawei.com), | <mailto:reshad@yahoo.com> | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
Editor: Lianshu Zheng | ||||
<mailto:veronique_cheng@hotmail.com> | ||||
Editor: Mahesh Jethanandani | ||||
<mailto:mjethanandani@gmail.com>"; | ||||
description | description | |||
"This module contains an example YANG augmentation for configuration | "This module contains an example YANG augmentation for | |||
of BFD echo function. | configuration of the BFD Echo function. | |||
Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2021 IETF Trust and the persons identified as | |||
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 License | the license terms contained in, the Simplified BSD License set | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9127; see the | |||
the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-08-01 { | revision 2021-09-03 { | |||
description "Initial revision."; | description | |||
"Initial revision."; | ||||
reference | reference | |||
"RFC XXXX: A YANG data model example augmentation for BFD echo | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
function"; | Detection (BFD)"; | |||
} | } | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
// note | ||||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping echo-cfg-parms { | grouping echo-cfg-parms { | |||
description "BFD grouping for echo config parameters"; | description | |||
"BFD grouping for Echo configuration parameters."; | ||||
leaf desired-min-echo-tx-interval { | leaf desired-min-echo-tx-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
default 0; | default "0"; | |||
description | description | |||
"This is the minimum interval that the local system would like | "This is the minimum interval that the local system would | |||
to use when transmitting BFD echo packets. If 0, the echo | like to use when transmitting BFD Echo packets. If 0, | |||
function as defined in BFD [RFC5880] is disabled."; | the Echo function as defined in BFD (RFC 5880) is | |||
disabled."; | ||||
} | } | |||
leaf required-min-echo-rx-interval { | leaf required-min-echo-rx-interval { | |||
type uint32; | type uint32; | |||
units microseconds; | units "microseconds"; | |||
default 0; | default "0"; | |||
description | description | |||
"This is the Required Min Echo RX Interval as defined in BFD | "This is the Required Min Echo RX Interval as defined in BFD | |||
[RFC5880]."; | (RFC 5880)."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" | + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" | |||
+ "bfd-ip-sh:sessions" { | + "bfd-ip-sh:sessions" { | |||
description "Augmentation for BFD echo function."; | description | |||
"Augmentation for the BFD Echo function."; | ||||
container echo { | container echo { | |||
if-feature bfd-types:echo-mode; | if-feature "bfd-types:echo-mode"; | |||
description | ||||
description "BFD echo function container"; | "BFD Echo function container."; | |||
uses echo-cfg-parms; | uses echo-cfg-parms; | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="false" toc="default"> | ||||
<section title="Change log"> | <name>Acknowledgments</name> | |||
<t>RFC Editor: Remove this section upon publication as an RFC.</t> | <t>We would like to thank <contact fullname="Nobo Akiya"/> and | |||
<contact fullname="Jeff Haas"/> for their encouragement on this work. | ||||
<section title="Changes between versions -16 and -17"> | We would also like to thank <contact fullname="Tom Petch"/> for his | |||
<t><list style="symbols"> | comments on the document. We would also like to thank | |||
<t>Addressed IESG comments.</t> | <contact fullname="Acee Lindem"/> for his guidance. Thanks also to | |||
</list></t> | <contact fullname="Jürgen Schönwälder"/>, who was instrumental in improvin | |||
</section> | g the YANG | |||
modules.</t> | ||||
<section title="Changes between versions -15 and -16"> | ||||
<t><list style="symbols"> | ||||
<t>Added list of modules for YANG module registry.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -14 and -15"> | ||||
<t><list style="symbols"> | ||||
<t>Added missing ietf-bfd-types in XML registry.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -13 and -14"> | ||||
<t><list style="symbols"> | ||||
<t>Addressed missing/incorrect references in import statements.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -12 and -13"> | ||||
<t><list style="symbols"> | ||||
<t>Updated references for drafts which became RFCs recently.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -11 and -12"> | ||||
<t><list style="symbols"> | ||||
<t>Addressed comments from YANG Doctor review of rev11.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -10 and -11"> | ||||
<t><list style="symbols"> | ||||
<t>Added 2 examples.</t> | ||||
<t>Added a container around some lists.</t> | ||||
<t>Fixed some indentation nits.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -09 and -10"> | ||||
<t><list style="symbols"> | ||||
<t>Addressed comments from YANG Doctor review.</t> | ||||
<t>Addressed comments from WGLC.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -08 and -09"> | ||||
<t><list style="symbols"> | ||||
<t>Mostly cosmetic changes to abide by | ||||
draft-ietf-netmod-rfc6087bis.</t> | ||||
<t>Specified yang-version 1.1.</t> | ||||
<t>Added data model examples.</t> | ||||
<t>Some minor changes.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -07 and -08"> | ||||
<t><list style="symbols"> | ||||
<t>Timer intervals in client-cfg-parms are not mandatory | ||||
anymore.</t> | ||||
<t>Added list of interfaces under "ip-sh" node for authentication | ||||
parameters.</t> | ||||
<t>Renamed replay-protection to meticulous.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -06 and -07"> | ||||
<t><list style="symbols"> | ||||
<t>New ietf-bfd-types module.</t> | ||||
<t>Grouping for BFD clients to have BFD multiplier and interval | ||||
values.</t> | ||||
<t>Change in ietf-bfd-mpls-te since MPLS-TE model changed.</t> | ||||
<t>Removed bfd- prefix from many names.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -05 and -06"> | ||||
<t><list style="symbols"> | ||||
<t>Adhere to NMDA-guidelines.</t> | ||||
<t>Echo function config moved to appendix as example.</t> | ||||
<t>Added IANA YANG modules.</t> | ||||
<t>Addressed various comments.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -04 and -05"> | ||||
<t><list style="symbols"> | ||||
<t>"bfd" node in augment of control-plane-protocol.</t> | ||||
<t>Removed augment of network-instance. Replaced by | ||||
schema-mount.</t> | ||||
<t>Added information on interaction with other YANG modules.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -03 and -04"> | ||||
<t><list style="symbols"> | ||||
<t>Updated author information.</t> | ||||
<t>Fixed YANG compile error in ietf-bfd-lag.yang which was due to | ||||
incorrect when statement.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -02 and -03"> | ||||
<t><list style="symbols"> | ||||
<t>Fixed YANG compilation warning due to incorrect revision date | ||||
in ietf-bfd-ip-sh module.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -01 and -02"> | ||||
<t><list style="symbols"> | ||||
<t>Replace routing-instance with network-instance from <xref | ||||
target="I-D.ietf-rtgwg-ni-model">YANG Network Instances</xref></t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Changes between versions -00 and -01"> | ||||
<t><list style="symbols"> | ||||
<t>Remove BFD configuration parameters from BFD clients, all BFD | ||||
configuration parameters in BFD</t> | ||||
<t>YANG module split in multiple YANG modules (one per type of | ||||
forwarding path)</t> | ||||
<t>For BFD over MPLS-TE we augment MPLS-TE model</t> | ||||
<t>For BFD authentication we now use <xref target="RFC8177">YANG | ||||
Data Model for Key Chains</xref></t> | ||||
</list></t> | ||||
</section> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 569 change blocks. | ||||
2113 lines changed or deleted | 1612 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/ |