rfc9127.original | rfc9127.txt | |||
---|---|---|---|---|
Network Working Group R. Rahman, Ed. | Internet Engineering Task Force (IETF) R. Rahman, Ed. | |||
Internet-Draft Cisco Systems | Request for Comments: 9127 | |||
Intended status: Standards Track L. Zheng, Ed. | Category: Standards Track L. Zheng, Ed. | |||
Expires: February 2, 2019 Huawei Technologies | ISSN: 2070-1721 Huawei Technologies | |||
M. Jethanandani, Ed. | M. Jethanandani, Ed. | |||
Xoriant Corporation | Xoriant Corporation | |||
S. Pallagatti | S. Pallagatti | |||
Rtbrick | VMware | |||
G. Mirsky | G. Mirsky | |||
ZTE Corporation | Ericsson | |||
August 1, 2018 | October 2021 | |||
YANG Data Model for Bidirectional Forwarding Detection (BFD) | YANG Data Model for Bidirectional Forwarding Detection (BFD) | |||
draft-ietf-bfd-yang-17 | ||||
Abstract | Abstract | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage Bidirectional Forwarding Detection (BFD). | and manage Bidirectional Forwarding Detection (BFD). | |||
The YANG modules in this document conform to the Network Management | The YANG modules in this document conform to the Network Management | |||
Datastore Architecture (NMDA). | Datastore Architecture (NMDA) (RFC 8342). | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on February 2, 2019. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9127. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 1.1. Tree Diagrams | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Design of the Data Model | |||
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 | 2.1. Design of the Configuration Model | |||
2.1. Design of Configuration Model . . . . . . . . . . . . . . 5 | 2.1.1. Common BFD Configuration Parameters | |||
2.1.1. Common BFD configuration parameters . . . . . . . . . 6 | 2.1.2. Single-Hop IP | |||
2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 7 | 2.1.3. Multihop IP | |||
2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 | 2.1.4. MPLS Label Switched Paths | |||
2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 8 | 2.1.5. Link Aggregation Groups | |||
2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 9 | 2.2. Design of the Operational State Model | |||
2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 9 | 2.3. Notifications | |||
2.2. Design of Operational State Model . . . . . . . . . . . . 9 | 2.4. RPC Operations | |||
2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 10 | 2.5. BFD Top-Level Hierarchy | |||
2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 10 | 2.6. BFD IP Single-Hop Hierarchy | |||
2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 10 | 2.7. BFD IP Multihop Hierarchy | |||
2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 10 | 2.8. BFD-over-LAG Hierarchy | |||
2.7. BFD IP multihop hierarchy . . . . . . . . . . . . . . . . 12 | 2.9. BFD-over-MPLS-LSPs Hierarchy | |||
2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 14 | 2.10. Interaction with Other YANG Modules | |||
2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 18 | 2.10.1. "ietf-interfaces" Module | |||
2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 20 | 2.10.2. "ietf-ip" Module | |||
2.11. Interaction with other YANG modules . . . . . . . . . . . 22 | 2.10.3. "ietf-mpls" Module | |||
2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 22 | 2.11. IANA BFD YANG Module | |||
2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 22 | 2.12. BFD Types YANG Module | |||
2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 23 | 2.13. BFD Top-Level YANG Module | |||
2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 23 | 2.14. BFD IP Single-Hop YANG Module | |||
2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 23 | 2.15. BFD IP Multihop YANG Module | |||
2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 26 | 2.16. BFD-over-LAG YANG Module | |||
2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 39 | 2.17. BFD-over-MPLS YANG Module | |||
2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 41 | 3. Data Model Examples | |||
2.16. BFD IP multihop YANG Module . . . . . . . . . . . . . . . 44 | 3.1. IP Single-Hop | |||
2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 47 | 3.2. IP Multihop | |||
2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 51 | 3.3. LAG | |||
2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 55 | 3.4. MPLS | |||
3. Data Model examples . . . . . . . . . . . . . . . . . . . . . 58 | 4. Security Considerations | |||
3.1. IP single-hop . . . . . . . . . . . . . . . . . . . . . . 58 | 5. IANA Considerations | |||
3.2. IP multihop . . . . . . . . . . . . . . . . . . . . . . . 59 | 5.1. IANA-Maintained "iana-bfd-types" Module | |||
3.3. LAG . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 | 6. References | |||
3.4. MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . 61 | 6.1. Normative References | |||
6.2. Informative References | ||||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 62 | Appendix A. Echo Function Configuration Example | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 66 | A.1. Example YANG Module for BFD Echo Function Configuration | |||
5.1. IANA-Maintained iana-bfd-types module . . . . . . . . . . 70 | Acknowledgments | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 70 | Authors' Addresses | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 70 | ||||
7.1. Normative References . . . . . . . . . . . . . . . . . . 70 | ||||
7.2. Informative References . . . . . . . . . . . . . . . . . 73 | ||||
Appendix A. Echo function configuration example . . . . . . . . 73 | ||||
A.1. Example YANG module for BFD echo function configuration . 74 | ||||
Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 76 | ||||
B.1. Changes between versions -16 and -17 . . . . . . . . . . 76 | ||||
B.2. Changes between versions -15 and -16 . . . . . . . . . . 76 | ||||
B.3. Changes between versions -14 and -15 . . . . . . . . . . 76 | ||||
B.4. Changes between versions -13 and -14 . . . . . . . . . . 76 | ||||
B.5. Changes between versions -12 and -13 . . . . . . . . . . 76 | ||||
B.6. Changes between versions -11 and -12 . . . . . . . . . . 76 | ||||
B.7. Changes between versions -10 and -11 . . . . . . . . . . 76 | ||||
B.8. Changes between versions -09 and -10 . . . . . . . . . . 77 | ||||
B.9. Changes between versions -08 and -09 . . . . . . . . . . 77 | ||||
B.10. Changes between versions -07 and -08 . . . . . . . . . . 77 | ||||
B.11. Changes between versions -06 and -07 . . . . . . . . . . 77 | ||||
B.12. Changes between versions -05 and -06 . . . . . . . . . . 77 | ||||
B.13. Changes between versions -04 and -05 . . . . . . . . . . 78 | ||||
B.14. Changes between versions -03 and -04 . . . . . . . . . . 78 | ||||
B.15. Changes between versions -02 and -03 . . . . . . . . . . 78 | ||||
B.16. Changes between versions -01 and -02 . . . . . . . . . . 78 | ||||
B.17. Changes between versions -00 and -01 . . . . . . . . . . 78 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 78 | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD | and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD | |||
is a network protocol which is used for liveness detection of | is a network protocol that is used for liveness detection of | |||
arbitrary paths between systems. Some examples of different types of | arbitrary paths between systems. Some examples of different types of | |||
paths over which we have BFD: | paths over which we have BFD are as follows: | |||
1) Two systems directly connected via IP. This is known as BFD over | 1. Two systems directly connected via IP. This is known as BFD over | |||
single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881] | single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881]. | |||
2) Two systems connected via multiple hops as described in BFD for | 2. Two systems connected via multiple hops as described in | |||
Multiple Hops. [RFC5883] | "Bidirectional Forwarding Detection (BFD) for Multihop Paths" | |||
[RFC5883]. | ||||
3) Two systems connected via MPLS Label Switched Paths (LSPs) as | 3. Two systems connected via MPLS Label Switched Paths (LSPs) as | |||
described in BFD for MPLS LSP [RFC5884] | described in "Bidirectional Forwarding Detection (BFD) for MPLS | |||
Label Switched Paths (LSPs)" [RFC5884]. | ||||
4) Two systems connected via a Link Aggregation Group (LAG) interface | 4. Two systems connected via a Link Aggregation Group (LAG) | |||
as described in BFD on LAG Interfaces [RFC7130] | interface as described in "Bidirectional Forwarding Detection | |||
5) Two systems connected via pseudowires (PWs), this is known as | (BFD) on Link Aggregation Group (LAG) Interfaces" [RFC7130]. | |||
Virtual Circuit Connectivity Verification (VCCV) as described in BFD | ||||
for PW VCCV [RFC5885]. This is not addressed in this document. | 5. Two systems connected via pseudowires (PWs). This is known as | |||
Virtual Circuit Connectivity Verification (VCCV), as described in | ||||
"Bidirectional Forwarding Detection (BFD) for the Pseudowire | ||||
Virtual Circuit Connectivity Verification (VCCV)" [RFC5885]. | ||||
This scenario is not addressed in this document. | ||||
BFD typically does not operate on its own. Various control | BFD typically does not operate on its own. Various control | |||
protocols, also known as BFD clients, use the services provided by | protocols, also known as BFD clients, use the services provided by | |||
BFD for their own operation as described in Generic Application of | BFD for their own operation, as described in "Generic Application of | |||
BFD [RFC5882]. The obvious candidates which use BFD are those which | Bidirectional Forwarding Detection (BFD)" [RFC5882]. The obvious | |||
do not have "hellos" to detect failures, e.g. static routes, and | candidates that use BFD are those that do not have "hellos" to detect | |||
routing protocols whose "hellos" do not support sub-second failure | failures, e.g., static routes, and routing protocols whose "hellos" | |||
detection, e.g. OSPF and IS-IS. | do not support sub-second failure detection, e.g., OSPF and IS-IS. | |||
The YANG modules in this document conform to the Network Management | The YANG modules in this document conform to the Network Management | |||
Datastore Architecture (NMDA) [RFC8342]. This means that the data | Datastore Architecture (NMDA) [RFC8342]. This means that the data | |||
models do not have separate top-level or sibling containers for | models do not have separate top-level or sibling containers for | |||
configuration and operational state data. | configuration data and operational state data. | |||
1.1. Requirements Language | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
document are to be interpreted as described in BCP 14 [RFC2119] | ||||
[RFC8174] when, and only when, they appear in all capitals, as shown | ||||
here. | ||||
1.2. Tree Diagrams | 1.1. Tree Diagrams | |||
This document uses the graphical representation of data models | This document uses the graphical representation of data models, as | |||
defined in [RFC8340]. | defined in [RFC8340]. | |||
2. Design of the Data Model | 2. Design of the Data Model | |||
Since BFD is used for liveliness detection of various forwarding | Since BFD is used for liveness detection of various forwarding paths, | |||
paths, there is no uniform key to identify a BFD session, and so the | there is no uniform key to identify a BFD session, and so the BFD | |||
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 | single-hop is in one YANG module, and BFD for MPLS is in another YANG | |||
YANG module. The main difference between these modules is how a BFD | module. The main difference between these modules is how a BFD | |||
session is uniquely identified, i.e the key for the list containing | session is uniquely identified, i.e., the key for the list containing | |||
the BFD sessions for that forwarding path. To avoid duplication of | the BFD sessions for that forwarding path. To avoid duplication of | |||
BFD definitions, we have common types and groupings which are used by | BFD definitions, we have common types and groupings that are used by | |||
all the modules. | all the modules. | |||
A new control-plane protocol "bfdv1" is defined and a "bfd" container | A new control-plane protocol, "bfdv1", is defined, and a "bfd" | |||
is created under control-plane-protocol as specified in "A YANG Data | container is created under "control-plane-protocol" as specified in | |||
Model for Routing Management (NMDA Version)" [RFC8349]. This new | "A YANG Data Model for Routing Management (NMDA Version)" [RFC8349]. | |||
"bfd" container is augmented by all the YANG modules for their | This new "bfd" container is augmented by the following YANG modules | |||
respective specific information: | for their respective specific information: | |||
1. ietf-bfd-ip-sh.yang augments "/routing/control-plane-protocols/ | ||||
control-plane-protocol/bfd/" with the "ip-sh" container for BFD | ||||
sessions over IP single-hop. | ||||
2. ietf-bfd-ip-mh.yang augments "/routing/control-plane-protocols/ | 1. The "ietf-bfd-ip-sh" module (Section 2.14) augments "/routing/ | |||
control-plane-protocol/bfd/" with the "ip-mh" container for BFD | control-plane-protocols/control-plane-protocol/bfd/" with the | |||
sessions over IP multi-hop. | "ip-sh" container for BFD sessions over IP single-hop. | |||
3. ietf-bfd-lag.yang augments "/routing/control-plane-protocols/ | 2. The "ietf-bfd-ip-mh" module (Section 2.15) augments "/routing/ | |||
control-plane-protocol/bfd/" with the "lag" container for BFD | control-plane-protocols/control-plane-protocol/bfd/" with the | |||
sessions over LAG. | "ip-mh" container for BFD sessions over IP multihop. | |||
4. ietf-bfd-mpls.yang augments "/routing/control-plane-protocols/ | 3. The "ietf-bfd-lag" module (Section 2.16) augments "/routing/ | |||
control-plane-protocol/bfd/" with the "mpls" container for BFD | control-plane-protocols/control-plane-protocol/bfd/" with the | |||
over MPLS LSPs. | "lag" container for BFD sessions over a LAG. | |||
5. ietf-bfd-mpls-te.yang augments "/routing/control-plane-protocols/ | 4. The "ietf-bfd-mpls" module (Section 2.17) augments "/routing/ | |||
control-plane-protocol/bfd/" with the "mpls-te" container for BFD | control-plane-protocols/control-plane-protocol/bfd/" with the | |||
over MPLS-TE. | "mpls" container for BFD-over-MPLS LSPs. | |||
BFD can operate in the following contexts: | BFD can operate in the following contexts: | |||
1. At the network device level | 1. At the network device level. | |||
2. In Logical Network Elements as described in YANG Logical Network | 2. In logical network elements (LNEs) as described in "YANG Model | |||
Element [I-D.ietf-rtgwg-lne-model] | for Logical Network Elements" [RFC8530]. | |||
3. In Network Instances as described in YANG Logical Network Element | 3. In network instances as described in "YANG Data Model for Network | |||
[I-D.ietf-rtgwg-ni-model] | Instances" [RFC8529]. | |||
When used at the network device level, the BFD YANG model is used | When used at the network device level, the BFD YANG data model is | |||
"as-is". When the BFD YANG model is used in a Logical Network | used "as is". When the BFD YANG data model is used in an LNE or | |||
Element or in a Network Instance, then the BFD YANG model augments | network instance, the BFD YANG data model augments the mounted | |||
the mounted routing model for the Logical Network Element or the | routing model for the LNE or network instance. | |||
Network Instance. | ||||
2.1. Design of Configuration Model | 2.1. Design of the Configuration Model | |||
The configuration model consists mainly of the parameters specified | The configuration model consists mainly of the parameters specified | |||
in BFD [RFC5880]. Some examples are desired minimum transmit | in BFD [RFC5880] -- for example, desired minimum transmit interval, | |||
interval, required minimum receive interval, detection multiplier, | required minimum receive interval, and detection multiplier. | |||
etc | ||||
BFD clients are applications that use BFD for fast detection of | 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 | the BFD clients -- for example, BFD session configuration under | |||
routing applications such as OSPF, IS-IS, BGP etc. Other | routing applications such as OSPF, IS-IS, or BGP. Other | |||
implementations have BFD session configuration centralized under BFD, | implementations have BFD session configuration centralized under BFD, | |||
i.e. outside the multiple BFD clients. | i.e., outside the multiple BFD clients. | |||
The BFD parameters of interest to a BFD client are mainly the | The main BFD parameters of interest to a BFD client are those related | |||
multiplier and interval(s) since those parameters impact the | to 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 clients | |||
centralized under BFD. However, this is a problem for clients of BFD | should be centralized. However, this is a problem for BFD clients | |||
which auto-discover their peers. For example, IGPs do not have the | that auto-discover their peers. For example, IGPs do not have the | |||
peer address configured, instead the IGP is enabled on an interface | peer address configured; instead, the IGP is enabled on an interface, | |||
and the IGP peers are auto-discovered. So for an operator to | and the IGP peers are auto-discovered. So, for an operator to | |||
configure BFD to an IGP peer, the operator would first have to | configure BFD to an IGP peer, the operator would first have to | |||
determine the peer addresses. And when a new peer is discovered, BFD | determine the peer addresses. And when a new peer is discovered, BFD | |||
configuration would need to be added. To avoid this issue, we define | configuration would need to be added. To avoid this issue, we define | |||
grouping client-cfg-parms in Section 2.13 for BFD clients to | the grouping "client-cfg-parms" in Section 2.12 for BFD clients to | |||
configure BFD: this allows BFD clients such as the IGPs to have | 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 | |||
an IGP peer goes away, the IGP would remove the BFD session to that | 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 | |||
the BFD clients is outside the scope of this document, but typically | by the BFD clients is outside the scope of this document, but this | |||
this would be done by use of an API implemented by the BFD module on | would typically be done by using an API implemented by the BFD module | |||
the system. For BFD clients which create BFD sessions via their own | on the system. In the case of BFD clients that create BFD sessions | |||
configuration, authentication parameters (if required) are still | via their own configuration, authentication parameters (if required) | |||
specified in BFD. | are still specified in BFD. | |||
2.1.1. Common BFD configuration parameters | 2.1.1. Common BFD Configuration Parameters | |||
The basic BFD configuration parameters are: | The basic BFD configuration parameters are as follows: | |||
local-multiplier | local-multiplier | |||
This is the detection time multiplier as defined in BFD | This is the detection time multiplier as defined in BFD [RFC5880]. | |||
[RFC5880]. | ||||
desired-min-tx-interval | desired-min-tx-interval | |||
This is the Desired Min TX Interval as defined in BFD | This is the Desired Min TX Interval as defined in BFD [RFC5880]. | |||
[RFC5880]. | ||||
required-min-rx-interval | required-min-rx-interval | |||
This is the Required Min RX Interval as defined in BFD | This is the Required Min RX Interval as defined in BFD [RFC5880]. | |||
[RFC5880]. | ||||
Although BFD [RFC5880] allows for different values for transmit and | Although BFD [RFC5880] allows for different values for transmit and | |||
receive intervals, some implementations allow users to specify just | receive intervals, some implementations allow users to specify just | |||
one interval which is used for both transmit and receive intervals or | one interval that is used for both transmit and receive intervals, or | |||
separate values for transmit and receive intervals. The BFD YANG | separate values for transmit and receive intervals. The BFD YANG | |||
model supports this: there is a choice between "min-interval", used | data model supports this: there is a choice between "min-interval", | |||
for both transmit and receive intervals, and "desired-min-tx- | used for both transmit and receive intervals, and "desired-min-tx- | |||
interval" and "required-min-rx-interval". This is supported via a | interval" and "required-min-rx-interval". This is supported via the | |||
grouping which is used by the YANG modules for the various forwarding | "base-cfg-parms" grouping (Section 2.12), which is used by the YANG | |||
paths. | modules for the various forwarding paths. | |||
For BFD authentication we have: | For BFD authentication, we have the following: | |||
key-chain | key-chain | |||
This is a reference to key-chain defined in YANG Data Model | This is a reference to "key-chain" as defined in "YANG Data Model | |||
for Key Chains [RFC8177]. The keys, cryptographic | for Key Chains" [RFC8177]. The keys, cryptographic algorithms, | |||
algorithms, key lifetime etc are all defined in the key-chain | key lifetime, etc. are all defined in the "key-chain" model. | |||
model. | ||||
meticulous | meticulous | |||
This enables meticulous mode as per BFD [RFC5880]. | This enables a meticulous mode as per BFD [RFC5880]. | |||
2.1.2. Single-hop IP | 2.1.2. Single-Hop IP | |||
For single-hop IP, there is an augment of the "bfd" data node in | For single-hop IP, there is an augment of the "bfd" data node, as | |||
Section 2. The "ip-sh" node contains a list of IP single-hop | described in Section 2. The "ip-sh" node contains a list of IP | |||
sessions where each session is uniquely identified by the interface | single-hop sessions where each session is uniquely identified by the | |||
and destination address pair. For the configuration parameters we | interface and destination address pair. We use the configuration | |||
use what is defined in Section 2.1.1. The "ip-sh" node also contains | parameters defined in Section 2.1.1. The "ip-sh" node also contains | |||
a list of interfaces, this is used to specify authentication | a list of interfaces and is used to specify authentication parameters | |||
parameters for BFD sessions which are created by BFD clients, see | for BFD sessions that are created by BFD clients. See Section 2.1. | |||
Section 2.1. | ||||
[RFC5880] and [RFC5881] do not specify whether echo function is | [RFC5880] and [RFC5881] do not specify whether the Echo function | |||
continuous or on demand. Therefore the mechanism used to start and | operates continuously or on demand. Therefore, the mechanism used to | |||
stop echo function is implementation specific and should be done by | start and stop the Echo function is implementation specific and | |||
augmentation: | should be done by augmentation: | |||
1) Configuration. This is suitable for continuous echo function. | 1. Configuration. This is suitable for an Echo function that | |||
An example is provided in Appendix A. | operates continuously. An example is provided in Appendix A. | |||
2) RPC. This is suitable for on-demand echo function. | 2. RPC. This is suitable for an Echo function that operates on | |||
demand. | ||||
2.1.3. Multihop IP | 2.1.3. Multihop IP | |||
For multihop IP, there is an augment of the "bfd" data node in | For multihop IP, there is an augment of the "bfd" data node, as | |||
Section 2. | described in Section 2. | |||
Because of multiple paths, there could be multiple multihop IP | 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 | |||
of: | "session-group" consists of the following: | |||
source address | Source address | |||
Address belonging to the local system as per BFD for Multiple | Address belonging to the local system as per "Bidirectional | |||
Hops [RFC5883] | Forwarding Detection (BFD) for Multihop Paths" [RFC5883]. | |||
destination address | Destination address | |||
Address belonging to the remote system as per BFD for | Address belonging to the remote system as per [RFC5883]. | |||
Multiple Hops [RFC5883] | ||||
For the configuration parameters we use what is defined in | We use the configuration parameters defined in Section 2.1.1. | |||
Section 2.1.1 | ||||
Here are some extra parameters: | This document also provides the following parameters: | |||
tx-ttl | tx-ttl | |||
TTL of outgoing BFD control packets. | TTL of outgoing BFD control packets. | |||
rx-ttl | rx-ttl | |||
Minimum TTL of incoming BFD control packets. | Minimum TTL of incoming BFD control packets. | |||
2.1.4. MPLS Traffic Engineering Tunnels | ||||
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 | ||||
YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te]. 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. | ||||
On top of the usual BFD parameters, we have the following per MPLS-TE | ||||
tunnel: | ||||
encap | ||||
Encapsulation for the BFD packets: choice between IP, G-ACh | ||||
and IP with G-ACh as per MPLS Generic Associated Channel | ||||
[RFC5586] | ||||
For general MPLS-TE data, "mpls-te" data node is added under the | ||||
"bfd" node in Section 2. 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". | ||||
2.1.5. MPLS Label Switched Paths | 2.1.4. MPLS Label Switched Paths | |||
Here we address MPLS LSPs whose FEC is an IP address. The "bfd" node | Here, we address MPLS LSPs whose Forwarding Equivalence Class (FEC) | |||
in Section 2 is augmented with "mpls" which contains a list of | [RFC3031] is an IP address. The "bfd" node (Section 2) is augmented | |||
sessions uniquely identified by an IP prefix. Because of multiple | with "mpls", which contains a list of sessions uniquely identified by | |||
paths, there could be multiple MPLS sessions to an MPLS FEC. We | an IP prefix. Because of multiple paths, there could be multiple | |||
identify this as a "session-group". | MPLS sessions to an MPLS FEC. We identify this set of sessions as a | |||
"session-group". | ||||
Since these LSPs are uni-directional there is no LSP configuration on | Since these LSPs are unidirectional, there is no LSP configuration on | |||
the egress node. | the egress node. | |||
The BFD parameters for the egress node are added under "mpls". | The BFD parameters for the egress node are added under "mpls". | |||
2.1.6. Link Aggregation Groups | 2.1.5. Link Aggregation Groups | |||
Per BFD on LAG Interfaces [RFC7130], configuring BFD on LAG consists | Per "Bidirectional Forwarding Detection (BFD) on Link Aggregation | |||
Group (LAG) Interfaces" [RFC7130], configuring BFD on a LAG consists | ||||
of having micro-BFD sessions on each LAG member link. Since the BFD | of having micro-BFD sessions on each LAG member link. Since the BFD | |||
parameters are an attribute of the LAG, they should be under the LAG. | parameters are an attribute of the LAG, they should be under the LAG. | |||
However there is no LAG YANG model which we can augment. So a "lag" | However, there is no LAG YANG data model that we can augment. So, a | |||
data node is added to the "bfd" node in Section 2, the configuration | "lag" data node is added to the "bfd" node; see Section 2. The | |||
is per-LAG: we have a list of LAGs. The destination IP address of | configuration is per LAG: we have a list of LAGs. The destination IP | |||
the micro-BFD sessions is configured per-LAG and per address-family | address of the micro-BFD sessions is configured per LAG and per | |||
(IPv4 and IPv6) | address family (IPv4 and IPv6). | |||
2.2. Design of Operational State Model | 2.2. Design of the Operational State Model | |||
The operational state model contains both the overall statistics of | 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 | |||
information. | operational information. | |||
The overall statistics of BFD sessions consist of number of BFD | The overall statistics for the BFD sessions consist of the number of | |||
sessions, number of BFD sessions up etc. This information is | BFD sessions, the number of BFD sessions that are up, etc. This | |||
available globally (i.e. for all BFD sessions) under the "bfd" node | information is available globally (i.e., for all BFD sessions) under | |||
in Section 2 and also per type of forwarding path. | the "bfd" node (Section 2) and also per type of forwarding path. | |||
For each BFD session, mainly three categories of operational state | For each BFD session, three main categories of operational state data | |||
data are shown. The fundamental information of a BFD session such as | are shown. | |||
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 the actual transmit interval between the control packets, which | ||||
may be different from the desired minimum transmit interval | ||||
configured, is shown in this category. Similar examples are actual | ||||
received interval between the control packets and the actual transmit | ||||
interval between the echo packets. The third category contains the | ||||
detailed statistics of the session, e.g. when the session | ||||
transitioned up/down and how long it has been in that state. | ||||
For some path types, there may be more than 1 session on the virtual | 1. The first category includes fundamental information regarding a | |||
path to the destination. For example, with IP multihop and MPLS | BFD session, such as the local discriminator, the remote | |||
LSPs, there could be multiple BFD sessions from the source to the | discriminator, and the ability to support Demand mode. | |||
same destination to test the various paths (ECMP) to the destination. | ||||
This is represented by having multiple "sessions" under each | 2. The second category includes BFD "session-running" information, | |||
"session-group". | e.g., the remote BFD state and the diagnostic code received. | |||
Another example is the actual transmit interval between the | ||||
control packets, which may be different from the configured | ||||
desired minimum transmit interval. Similar examples include the | ||||
actual receive interval between the control packets and the | ||||
actual transmit interval between the Echo packets. | ||||
3. The third category contains the detailed statistics for the | ||||
session, e.g., when the session transitioned up/down and how long | ||||
it has been in that state. | ||||
For some path types, there may be more than one session on the | ||||
virtual path to the destination. For example, with IP multihop and | ||||
MPLS LSPs, there could be multiple BFD sessions from the source to | ||||
the same destination to test the various paths (ECMP) to the | ||||
destination. This is represented by having multiple "sessions" under | ||||
each "session-group". | ||||
2.3. Notifications | 2.3. Notifications | |||
This YANG model defines notifications to inform end-users of | This YANG data model defines notifications to inform end users of | |||
important events detected during the protocol operation. Pair of | important events detected during the protocol operation. The local | |||
local and remote discriminator identifies a BFD session on local | discriminator identifies the corresponding BFD session on the local | |||
system. Notifications also give more important details about BFD | system, and the remote discriminator identifies the BFD session on | |||
sessions; e.g. new state, time in previous state, network-instance | the remote system. Notifications also give more important details | |||
and the reason that the BFD session state changed. The notifications | about BFD sessions, e.g., new state, time in previous state, network | |||
are defined for each type of forwarding path but use groupings for | instance, and the reason that the BFD session state changed. The | |||
common information. | notifications are defined for each type of forwarding path but use | |||
groupings for common information. | ||||
2.4. RPC Operations | 2.4. RPC Operations | |||
None. | None. | |||
2.5. BFD top level hierarchy | 2.5. BFD Top-Level Hierarchy | |||
At the "bfd" node under control-plane-protocol, there is no | At the "bfd" node under "control-plane-protocol", there is no | |||
configuration data, only operational state data. The operational | configuration data -- only operational state data. The operational | |||
state data consist of overall BFD session statistics, i.e. for BFD on | state data consists of overall BFD session statistics, i.e., for BFD | |||
all types of forwarding paths. | on all types of forwarding paths. | |||
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 | |||
2.6. BFD IP single-hop hierarchy | 2.6. BFD IP Single-Hop Hierarchy | |||
An "ip-sh" node is added under "bfd" node in control-plane-protocol. | An "ip-sh" node is added under the "bfd" node in "control-plane- | |||
The configuration and operational state data for each BFD IP single- | protocol". The configuration data and operational state data for | |||
hop session is under this "ip-sh" node. | each BFD IP single-hop session are under this "ip-sh" node. | |||
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 | |||
skipping to change at page 11, line 28 ¶ | skipping to change at line 442 ¶ | |||
| +--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 page 12, line 24 ¶ | skipping to change at line 486 ¶ | |||
| | 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 | |||
2.7. BFD IP multihop hierarchy | 2.7. BFD IP Multihop Hierarchy | |||
An "ip-mh" node is added under the "bfd" node in cntrol-plane- | An "ip-mh" node is added under the "bfd" node in "control-plane- | |||
protocol. The configuration and operational state data for each BFD | protocol". The configuration data and operational state data for | |||
IP multihop session is under this "ip-mh" node. In the operational | each BFD IP multihop session are under this "ip-mh" node. In the | |||
state model we support multiple BFD multihop sessions per remote | operational state model, we support multiple BFD multihop sessions | |||
address (ECMP), the local discriminator is used as key. | per remote address (ECMP); the local discriminator is used as the | |||
key. | ||||
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 | |||
skipping to change at page 13, line 27 ¶ | skipping to change at line 536 ¶ | |||
+--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 page 14, line 41 ¶ | skipping to change at line 598 ¶ | |||
+--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 | |||
2.8. BFD over LAG hierarchy | 2.8. BFD-over-LAG Hierarchy | |||
A "lag" node is added under the "bfd" node in control-plane-protocol. | A "lag" node is added under the "bfd" node in "control-plane- | |||
The configuration and operational state data for each BFD LAG session | protocol". The configuration data and operational state data for | |||
is under this "lag" node. | each BFD LAG session are under this "lag" node. | |||
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 | |||
skipping to change at page 15, line 34 ¶ | skipping to change at line 638 ¶ | |||
+--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 page 18, line 5 ¶ | skipping to change at line 753 ¶ | |||
+--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 | |||
2.9. BFD over MPLS LSPs hierarchy | 2.9. BFD-over-MPLS-LSPs Hierarchy | |||
An "mpls" node is added under the "bfd" node in control-plane- | An "mpls" node is added under the "bfd" node in "control-plane- | |||
protocol. The configuration is per MPLS FEC under this "mpls" node. | protocol". The configuration is per MPLS FEC under this "mpls" node. | |||
In the operational state model we support multiple BFD sessions per | In the operational state model, we support multiple BFD sessions per | |||
MPLS FEC (ECMP), the local discriminator is used as key. The "mpls" | MPLS FEC (ECMP); the local discriminator is used as the key. The | |||
node can be used in a network device (top-level), or mounted in an | "mpls" node can be used in a network device (top level) or can be | |||
LNE or in a network instance. | mounted in an LNE or network instance. | |||
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 page 20, line 15 ¶ | skipping to change at line 859 ¶ | |||
+--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 | |||
2.10. BFD over MPLS-TE hierarchy | 2.10. Interaction with Other YANG Modules | |||
YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is | ||||
augmented. BFD is configured per MPLS-TE tunnel, and BFD session | ||||
operational state data is provided per MPLS-TE LSP. | ||||
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 | ||||
2.11. Interaction with other YANG modules | ||||
Generic YANG Data Model for Connectionless OAM protocols | "Generic YANG Data Model for the Management of Operations, | |||
[I-D.ietf-lime-yang-connectionless-oam] describes how the LIME | Administration, and Maintenance (OAM) Protocols That Use | |||
Connectionless Communications" [RFC8532] describes how the Layer- | ||||
Independent OAM Management in the Multi-Layer Environment (LIME) | ||||
connectionless OAM model could be extended to support BFD. | connectionless OAM model could be extended to support BFD. | |||
Also, the operation of the BFD data model depends on configuration | Also, the operation of the BFD data model depends on configuration | |||
parameters that are defined in other YANG modules. | parameters that are defined in other YANG modules. | |||
2.11.1. Module ietf-interfaces | 2.10.1. "ietf-interfaces" Module | |||
The following boolean configuration is defined in A YANG Data Model | The following boolean configuration is defined in "A YANG Data Model | |||
for Interface Management [RFC8343]: | for Interface Management" [RFC8343]: | |||
/if:interfaces/if:interface/if:enabled | /if:interfaces/if:interface/if:enabled | |||
If this configuration is set to "false", no BFD packets can | If this configuration is set to "false", no BFD packets can be | |||
be transmitted or received on that interface. | transmitted or received on that interface. | |||
2.11.2. Module ietf-ip | 2.10.2. "ietf-ip" Module | |||
The following boolean configuration is defined in A YANG Data Model | The following boolean configuration is defined in "A YANG Data Model | |||
for IP Management [RFC8344]: | for IP Management" [RFC8344]: | |||
/if:interfaces/if:interface/ip:ipv4/ip:enabled | /if:interfaces/if:interface/ip:ipv4/ip:enabled | |||
If this configuration is set to "false", no BFD IPv4 packets | If this configuration is set to "false", no BFD IPv4 packets can | |||
can be transmitted or received on that interface. | be transmitted or received on that interface. | |||
/if:interfaces/if:interface/ip:ipv4/ip:forwarding | /if:interfaces/if:interface/ip:ipv4/ip:forwarding | |||
If this configuration is set to "false", no BFD IPv4 packets | If this configuration is set to "false", no BFD IPv4 packets can | |||
can be transmitted or received on that interface. | be transmitted or received on that interface. | |||
/if:interfaces/if:interface/ip:ipv6/ip:enabled | /if:interfaces/if:interface/ip:ipv6/ip:enabled | |||
If this configuration is set to "false", no BFD IPv6 packets | If this configuration is set to "false", no BFD IPv6 packets can | |||
can be transmitted or received on that interface. | be transmitted or received on that interface. | |||
/if:interfaces/if:interface/ip:ipv6/ip:forwarding | /if:interfaces/if:interface/ip:ipv6/ip:forwarding | |||
If this configuration is set to "false", no BFD IPv6 packets | If this configuration is set to "false", no BFD IPv6 packets can | |||
can be transmitted or received on that interface. | be transmitted or received on that interface. | |||
2.11.3. Module ietf-mpls | ||||
The following boolean configuration is defined in A YANG Data Model | ||||
for MPLS Base [I-D.ietf-mpls-base-yang]: | ||||
/rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:enabled | ||||
If this configuration is set to "false", no BFD MPLS packets | ||||
can be transmitted or received on that interface. | ||||
2.11.4. Module ietf-te | ||||
The following configuration is defined in the "ietf-te" YANG module | ||||
YANG Data Model for TE Topology [I-D.ietf-teas-yang-te]: | ||||
/ietf-te:te/ietf-te:tunnels/ietf-te:tunnel/ietf-te:config/ietf- | ||||
te:admin-status | ||||
If this configuration is not set to "state-up", no BFD MPLS | ||||
packets can be transmitted or received on that tunnel. | ||||
2.12. IANA BFD YANG Module | ||||
<CODE BEGINS> file "iana-bfd-types@2018-08-01.yang" | ||||
module iana-bfd-types { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | ||||
prefix "iana-bfd-types"; | ||||
organization "IANA"; | ||||
contact | ||||
" 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>"; | ||||
description | ||||
"This module defines YANG data types for IANA-registered | ||||
BFD parameters. | ||||
This YANG module is maintained by IANA and reflects the | ||||
'BFD Diagnostic Codes' and 'BFD Authentication Types' registries. | ||||
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."; | ||||
// RFC Ed.: replace XXXX with actual RFC number and remove | ||||
// this note | ||||
reference "RFC XXXX"; | ||||
revision 2018-08-01 { | ||||
description "Initial revision."; | ||||
reference "RFC XXXX: IANA BFD YANG Data Types."; | ||||
} | ||||
/* | ||||
* Type Definitions | ||||
*/ | ||||
typedef diagnostic { | ||||
type enumeration { | ||||
enum none { | ||||
value 0; | ||||
description "None"; | ||||
} | ||||
enum control-expiry { | ||||
value 1; | ||||
description "Control timer expiry"; | ||||
} | ||||
enum echo-failed { | ||||
value 2; | ||||
description "Echo failure"; | ||||
} | ||||
enum neighbor-down { | ||||
value 3; | ||||
description "Neighbor down"; | ||||
} | ||||
enum forwarding-reset { | ||||
value 4; | ||||
description "Forwarding reset"; | ||||
} | ||||
enum path-down { | ||||
value 5; | ||||
description "Path down"; | ||||
} | ||||
enum concatenated-path-down { | ||||
value 6; | ||||
description "Concatenated path down"; | ||||
} | ||||
enum admin-down { | ||||
value 7; | ||||
description "Admin down"; | ||||
} | ||||
enum reverse-concatenated-path-down { | ||||
value 8; | ||||
description "Reverse concatenated path down"; | ||||
} | ||||
enum mis-connectivity-defect { | ||||
value 9; | ||||
description "Mis-connectivity defect as specified in RFC6428"; | ||||
} | ||||
} | ||||
description | ||||
"BFD diagnostic as defined in RFC 5880, values are maintained in | ||||
the 'BFD Diagnostic Codes' IANA registry. Range is 0 to 31."; | ||||
} | ||||
typedef auth-type { | ||||
type enumeration { | ||||
enum reserved { | ||||
value 0; | ||||
description "Reserved"; | ||||
} | ||||
enum simple-password { | ||||
value 1; | ||||
description "Simple password"; | ||||
} | ||||
enum keyed-md5 { | ||||
value 2; | ||||
description "Keyed MD5"; | ||||
} | ||||
enum meticulous-keyed-md5 { | ||||
value 3; | ||||
description "Meticulous keyed MD5"; | ||||
} | ||||
enum keyed-sha1 { | ||||
value 4; | ||||
description "Keyed SHA1"; | ||||
} | ||||
enum meticulous-keyed-sha1 { | ||||
value 5; | ||||
description "Meticulous keyed SHA1"; | ||||
} | ||||
} | ||||
description | ||||
"BFD authentication type as defined in RFC 5880, values are | ||||
maintained in the 'BFD Authentication Types' IANA registry. | ||||
Range is 0 to 255."; | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
2.13. BFD types YANG Module | ||||
This YANG module imports typedefs from [RFC6991], [RFC8177] and the | ||||
"control-plane-protocol" identity from [RFC8349]. | ||||
<CODE BEGINS> file "ietf-bfd-types@2018-08-01.yang" | ||||
module ietf-bfd-types { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | ||||
prefix "bfd-types"; | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | ||||
// remove this note | ||||
import iana-bfd-types { | 2.10.3. "ietf-mpls" Module | |||
prefix "iana-bfd-types"; | ||||
reference "RFC XXXX: YANG Data Model for BFD"; | ||||
} | ||||
import ietf-inet-types { | The following boolean configuration is defined in "A YANG Data Model | |||
prefix "inet"; | for MPLS Base" [RFC8960]: | |||
reference "RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-yang-types { | /rt:routing/mpls:mpls/mpls:interfaces/mpls:interface/ | |||
prefix "yang"; | mpls:mpls-enabled | |||
reference "RFC 6991: Common YANG Data Types"; | If this configuration is set to "false", no BFD MPLS packets can | |||
be transmitted or received on that interface. | ||||
} | 2.11. IANA BFD YANG Module | |||
import ietf-routing { | This YANG module imports definitions from [RFC5880]. It references | |||
prefix "rt"; | [RFC5880] and [RFC6428]. | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA version)"; | ||||
} | ||||
import ietf-key-chain { | <CODE BEGINS> file "iana-bfd-types@2021-09-03.yang" | |||
prefix "kc"; | module iana-bfd-types { | |||
reference "RFC 8177: YANG Data Model for Key Chains"; | yang-version 1.1; | |||
} | namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | |||
prefix iana-bfd-types; | ||||
organization "IETF BFD Working Group"; | organization | |||
"IANA"; | ||||
contact | ||||
"Internet Assigned Numbers Authority | ||||
contact | Postal: ICANN | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | 12025 Waterfront Drive, Suite 300 | |||
WG List: <rtg-bfd@ietf.org> | Los Angeles, CA 90094-2536 | |||
United States of America | ||||
Tel: +1 310 301 5800 | ||||
<mailto:iana@iana.org>"; | ||||
description | ||||
"This module defines YANG data types for IANA-registered | ||||
BFD parameters. | ||||
Editors: Reshad Rahman (rrahman@cisco.com), | This YANG module is maintained by IANA and reflects the | |||
Lianshu Zheng (vero.zheng@huawei.com), | 'BFD Diagnostic Codes' and 'BFD Authentication Types' | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | registries. | |||
description | Copyright (c) 2021 IETF Trust and the persons identified as | |||
"This module contains a collection of BFD specific YANG data type | authors of the code. All rights reserved. | |||
definitions, as per RFC 5880, and also groupings which are common | ||||
to other BFD YANG modules. | ||||
Copyright (c) 2018 IETF Trust and the persons | Redistribution and use in source and binary forms, with or | |||
identified as authors of the code. All rights reserved. | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
Redistribution and use in source and binary forms, with or | This version of this YANG module is part of RFC 9127; see the | |||
without modification, is permitted pursuant to, and subject | RFC itself for full legal notices."; | |||
to the license terms contained in, the Simplified BSD License | reference | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
Relating to IETF Documents | Detection (BFD)"; | |||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see | revision 2021-09-03 { | |||
the RFC itself for full legal notices."; | description | |||
"Initial revision."; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
reference "RFC XXXX"; | /* | |||
* Type definitions | ||||
*/ | ||||
revision 2018-08-01 { | typedef diagnostic { | |||
description "Initial revision."; | type enumeration { | |||
reference "RFC XXXX: YANG Data Model for BFD"; | enum none { | |||
} | value 0; | |||
/* | description | |||
* Feature definitions | "No Diagnostic."; | |||
*/ | } | |||
feature single-minimum-interval { | enum control-expiry { | |||
description | value 1; | |||
"This feature indicates that the server supports configuration | description | |||
of one minimum interval value which is used for both transmit and | "Control Detection Time Expired."; | |||
receive minimum intervals."; | } | |||
} | enum echo-failed { | |||
value 2; | ||||
description | ||||
"Echo Function Failed."; | ||||
} | ||||
enum neighbor-down { | ||||
value 3; | ||||
description | ||||
"Neighbor Signaled Session Down."; | ||||
} | ||||
enum forwarding-reset { | ||||
value 4; | ||||
description | ||||
"Forwarding Plane Reset."; | ||||
} | ||||
enum path-down { | ||||
value 5; | ||||
description | ||||
"Path Down."; | ||||
} | ||||
enum concatenated-path-down { | ||||
value 6; | ||||
description | ||||
"Concatenated Path Down."; | ||||
} | ||||
enum admin-down { | ||||
value 7; | ||||
description | ||||
"Administratively Down."; | ||||
} | ||||
enum reverse-concatenated-path-down { | ||||
value 8; | ||||
description | ||||
"Reverse Concatenated Path Down."; | ||||
} | ||||
enum mis-connectivity-defect { | ||||
value 9; | ||||
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 | ||||
"BFD diagnostic codes as defined in RFC 5880. Values are | ||||
maintained in the 'BFD Diagnostic Codes' IANA registry. | ||||
Range is 0 to 31."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)"; | ||||
} | ||||
feature authentication { | typedef auth-type { | |||
description | type enumeration { | |||
"This feature indicates that the server supports BFD | enum reserved { | |||
authentication."; | value 0; | |||
reference | description | |||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | "Reserved."; | |||
section 6.7."; | } | |||
} | enum simple-password { | |||
value 1; | ||||
description | ||||
"Simple Password."; | ||||
} | ||||
enum keyed-md5 { | ||||
value 2; | ||||
description | ||||
"Keyed MD5."; | ||||
} | ||||
enum meticulous-keyed-md5 { | ||||
value 3; | ||||
description | ||||
"Meticulous Keyed MD5."; | ||||
} | ||||
enum keyed-sha1 { | ||||
value 4; | ||||
description | ||||
"Keyed SHA1."; | ||||
} | ||||
enum meticulous-keyed-sha1 { | ||||
value 5; | ||||
description | ||||
"Meticulous Keyed SHA1."; | ||||
} | ||||
} | ||||
description | ||||
"BFD authentication type as defined in RFC 5880. Values are | ||||
maintained in the 'BFD Authentication Types' IANA registry. | ||||
Range is 0 to 255."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)"; | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
feature demand-mode { | 2.12. BFD Types YANG Module | |||
description | ||||
"This feature indicates that the server supports BFD demand | ||||
mode."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | ||||
section 6.6."; | ||||
} | ||||
feature echo-mode { | This YANG module imports typedefs from [RFC6991] and [RFC8177]. It | |||
description | also imports definitions from [RFC5880], [RFC5881], [RFC5883], | |||
"This feature indicates that the server supports BFD echo | [RFC5884], and [RFC7130], as well as the "control-plane-protocol" | |||
mode."; | identity from [RFC8349]. | |||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | ||||
section 6.4."; | ||||
} | ||||
/* | <CODE BEGINS> file "ietf-bfd-types@2021-09-03.yang" | |||
* Identity definitions | module ietf-bfd-types { | |||
*/ | yang-version 1.1; | |||
identity bfdv1 { | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | |||
base "rt:control-plane-protocol"; | prefix bfd-types; | |||
description "BFD protocol version 1."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)."; | ||||
} | ||||
identity path-type { | import iana-bfd-types { | |||
description | prefix iana-bfd-types; | |||
"Base identity for BFD path type. The path type indicates | reference | |||
the type of path on which BFD is running."; | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
} | Detection (BFD)"; | |||
identity path-ip-sh { | } | |||
base path-type; | import ietf-inet-types { | |||
description "BFD on IP single hop."; | prefix inet; | |||
reference | reference | |||
"RFC 5881: Bidirectional Forwarding Detection (BFD) | "RFC 6991: Common YANG Data Types"; | |||
for IPv4 and IPv6 (Single Hop)."; | } | |||
} | import ietf-yang-types { | |||
identity path-ip-mh { | prefix yang; | |||
base path-type; | reference | |||
description "BFD on IP multihop paths."; | "RFC 6991: Common YANG Data Types"; | |||
reference | } | |||
"RFC 5883: Bidirectional Forwarding Detection (BFD) for | import ietf-routing { | |||
Multihop Paths."; | prefix rt; | |||
} | reference | |||
identity path-mpls-te { | "RFC 8349: A YANG Data Model for Routing Management | |||
base path-type; | (NMDA Version)"; | |||
description | } | |||
"BFD on MPLS Traffic Engineering."; | import ietf-key-chain { | |||
reference | prefix key-chain; | |||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | reference | |||
for MPLS Label Switched Paths (LSPs)."; | "RFC 8177: YANG Data Model for Key Chains"; | |||
} | } | |||
identity path-mpls-lsp { | ||||
base path-type; | ||||
description | ||||
"BFD on MPLS Label Switched Path."; | ||||
reference | ||||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | ||||
for MPLS Label Switched Paths (LSPs)."; | ||||
} | ||||
identity path-lag { | ||||
base path-type; | ||||
description | ||||
"Micro-BFD on LAG member links."; | ||||
reference | ||||
"RFC 7130: Bidirectional Forwarding Detection (BFD) on | ||||
Link Aggregation Group (LAG) Interfaces."; | ||||
} | ||||
identity encap-type { | organization | |||
description | "IETF BFD Working Group"; | |||
"Base identity for BFD encapsulation type."; | contact | |||
} | "WG Web: <https://datatracker.ietf.org/wg/bfd/> | |||
identity encap-ip { | WG List: <mailto:rtg-bfd@ietf.org> | |||
base encap-type; | ||||
description "BFD with IP encapsulation."; | ||||
} | ||||
/* | Editor: Reshad Rahman | |||
* Type Definitions | <mailto:reshad@yahoo.com> | |||
*/ | ||||
typedef discriminator { | ||||
type uint32; | ||||
description "BFD discriminator as described in RFC 5880."; | ||||
} | ||||
typedef state { | Editor: Lianshu Zheng | |||
type enumeration { | <mailto:veronique_cheng@hotmail.com> | |||
enum adminDown { | ||||
value 0; | ||||
description "admindown"; | ||||
} | ||||
enum down { | ||||
value 1; | ||||
description "down"; | ||||
} | ||||
enum init { | ||||
value 2; | ||||
description "init"; | ||||
} | ||||
enum up { | ||||
value 3; | ||||
description "up"; | ||||
} | ||||
} | ||||
description "BFD state as defined in RFC 5880."; | ||||
} | ||||
typedef multiplier { | Editor: Mahesh Jethanandani | |||
type uint8 { | <mailto:mjethanandani@gmail.com>"; | |||
range 1..255; | description | |||
} | "This module contains a collection of BFD-specific YANG data type | |||
description "BFD multiplier as described in RFC 5880."; | definitions, as per RFC 5880, and also groupings that are common | |||
} | to other BFD YANG modules. | |||
typedef hops { | Copyright (c) 2021 IETF Trust and the persons identified as | |||
type uint8 { | authors of the code. All rights reserved. | |||
range 1..255; | ||||
} | ||||
description | ||||
"This corresponds to Time To Live for IPv4 and corresponds to hop | ||||
limit for IPv6."; | ||||
} | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
/* | This version of this YANG module is part of RFC 9127; see the | |||
* Groupings | RFC itself for full legal notices."; | |||
*/ | reference | |||
grouping auth-parms { | "RFC 5880: Bidirectional Forwarding Detection (BFD) | |||
description | RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
"Grouping for BFD authentication parameters | Detection (BFD)"; | |||
(see section 6.7 of RFC 5880)."; | ||||
container authentication { | ||||
if-feature authentication; | ||||
presence | ||||
"Enables BFD authentication (see section 6.7 of RFC 5880)."; | ||||
description "Parameters for BFD authentication."; | ||||
leaf key-chain { | revision 2021-09-03 { | |||
type kc:key-chain-ref; | description | |||
description "Name of the key-chain as per RFC 8177."; | "Initial revision."; | |||
} | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
leaf meticulous { | /* | |||
type boolean; | * Feature definitions | |||
description | */ | |||
"Enables meticulous mode as described in section 6.7 " + | ||||
"of RFC 5880."; | ||||
} | ||||
} | ||||
} | ||||
grouping base-cfg-parms { | feature single-minimum-interval { | |||
description "BFD grouping for base config parameters."; | description | |||
leaf local-multiplier { | "This feature indicates that the server supports configuration | |||
type multiplier; | of one minimum interval value that is used for both transmit | |||
default 3; | and receive minimum intervals."; | |||
description "Multiplier transmitted by local system."; | } | |||
} | ||||
choice interval-config-type { | feature authentication { | |||
description | description | |||
"Two interval values or one value used for both transmit and | "This feature indicates that the server supports BFD | |||
receive."; | authentication."; | |||
case tx-rx-intervals { | reference | |||
leaf desired-min-tx-interval { | "RFC 5880: Bidirectional Forwarding Detection (BFD), | |||
type uint32; | Section 6.7"; | |||
units microseconds; | } | |||
default 1000000; | ||||
description | ||||
"Desired minimum transmit interval of control packets."; | ||||
} | feature demand-mode { | |||
description | ||||
"This feature indicates that the server supports BFD Demand | ||||
mode."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | ||||
Section 6.6"; | ||||
} | ||||
leaf required-min-rx-interval { | feature echo-mode { | |||
type uint32; | description | |||
units microseconds; | "This feature indicates that the server supports BFD Echo | |||
default 1000000; | mode."; | |||
description | reference | |||
"Required minimum receive interval of control packets."; | "RFC 5880: Bidirectional Forwarding Detection (BFD), | |||
} | Section 6.4"; | |||
} | } | |||
case single-interval { | ||||
if-feature single-minimum-interval; | ||||
leaf min-interval { | /* | |||
type uint32; | * Identity definitions | |||
units microseconds; | */ | |||
default 1000000; | ||||
description | ||||
"Desired minimum transmit interval and required " + | ||||
"minimum receive interval of control packets."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
grouping client-cfg-parms { | identity bfdv1 { | |||
description | base rt:control-plane-protocol; | |||
"BFD grouping for configuration parameters | description | |||
used by clients of BFD, e.g. IGP or MPLS."; | "BFD protocol version 1."; | |||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD)"; | ||||
} | ||||
leaf enable { | identity path-type { | |||
type boolean; | description | |||
default false; | "Base identity for the BFD path type. The path type indicates | |||
description | the type of path on which BFD is running."; | |||
"Indicates whether the BFD is enabled."; | } | |||
} | ||||
uses base-cfg-parms; | ||||
} | ||||
grouping common-cfg-parms { | identity path-ip-sh { | |||
description | base path-type; | |||
"BFD grouping for common configuration parameters."; | description | |||
"BFD on IP single-hop."; | ||||
reference | ||||
"RFC 5881: Bidirectional Forwarding Detection (BFD) | ||||
for IPv4 and IPv6 (Single Hop)"; | ||||
} | ||||
uses base-cfg-parms; | identity path-ip-mh { | |||
base path-type; | ||||
description | ||||
"BFD on IP multihop paths."; | ||||
reference | ||||
"RFC 5883: Bidirectional Forwarding Detection (BFD) for | ||||
Multihop Paths"; | ||||
} | ||||
leaf demand-enabled { | identity path-mpls-te { | |||
if-feature demand-mode; | base path-type; | |||
type boolean; | description | |||
default false; | "BFD on MPLS Traffic Engineering."; | |||
description | reference | |||
"To enable demand mode."; | "RFC 5884: Bidirectional Forwarding Detection (BFD) | |||
} | for MPLS Label Switched Paths (LSPs)"; | |||
} | ||||
leaf admin-down { | identity path-mpls-lsp { | |||
type boolean; | base path-type; | |||
default false; | description | |||
description | "BFD on an MPLS Label Switched Path."; | |||
"Is the BFD session administratively down."; | reference | |||
} | "RFC 5884: Bidirectional Forwarding Detection (BFD) | |||
uses auth-parms; | for MPLS Label Switched Paths (LSPs)"; | |||
} | } | |||
grouping all-session { | identity path-lag { | |||
description "BFD session operational information"; | base path-type; | |||
leaf path-type { | description | |||
type identityref { | "Micro-BFD on LAG member links."; | |||
base path-type; | reference | |||
} | "RFC 7130: Bidirectional Forwarding Detection (BFD) on | |||
config "false"; | Link Aggregation Group (LAG) Interfaces"; | |||
description | } | |||
"BFD path type, this indicates the path type that BFD is | ||||
running on."; | ||||
} | ||||
leaf ip-encapsulation { | ||||
type boolean; | ||||
config "false"; | ||||
description "Whether BFD encapsulation uses IP."; | ||||
} | ||||
leaf local-discriminator { | ||||
type discriminator; | ||||
config "false"; | ||||
description "Local discriminator."; | ||||
} | ||||
leaf remote-discriminator { | ||||
type discriminator; | ||||
config "false"; | ||||
description "Remote discriminator."; | ||||
} | ||||
leaf remote-multiplier { | ||||
type multiplier; | ||||
config "false"; | ||||
description "Remote multiplier."; | ||||
} | ||||
leaf demand-capability { | ||||
if-feature demand-mode; | ||||
type boolean; | ||||
config "false"; | ||||
description "Local demand mode capability."; | ||||
} | ||||
leaf source-port { | ||||
when "../ip-encapsulation = 'true'" { | ||||
description | ||||
"Source port valid only when IP encapsulation is used."; | ||||
} | ||||
type inet:port-number; | ||||
config "false"; | ||||
description "Source UDP port"; | ||||
} | ||||
leaf dest-port { | ||||
when "../ip-encapsulation = 'true'" { | ||||
description | ||||
"Destination port valid only when IP encapsulation is used."; | ||||
} | ||||
type inet:port-number; | ||||
config "false"; | ||||
description "Destination UDP port."; | ||||
} | ||||
container session-running { | identity encap-type { | |||
config "false"; | description | |||
description "BFD session running information."; | "Base identity for BFD encapsulation type."; | |||
leaf session-index { | } | |||
type uint32; | ||||
description | ||||
"An index used to uniquely identify BFD sessions."; | ||||
} | ||||
leaf local-state { | ||||
type state; | ||||
description "Local state."; | ||||
} | ||||
leaf remote-state { | ||||
type state; | ||||
description "Remote state."; | ||||
} | ||||
leaf local-diagnostic { | ||||
type iana-bfd-types:diagnostic; | ||||
description "Local diagnostic."; | ||||
} | ||||
leaf remote-diagnostic { | ||||
type iana-bfd-types:diagnostic; | ||||
description "Remote diagnostic."; | ||||
} | ||||
leaf remote-authenticated { | ||||
type boolean; | ||||
description | ||||
"Indicates whether incoming BFD control packets are | ||||
authenticated."; | ||||
} | ||||
leaf remote-authentication-type { | ||||
when "../remote-authenticated = 'true'" { | ||||
description | ||||
"Only valid when incoming BFD control packets are | ||||
authenticated."; | ||||
} | ||||
if-feature authentication; | ||||
type iana-bfd-types:auth-type; | ||||
description | ||||
"Authentication type of incoming BFD control packets."; | ||||
} | ||||
leaf detection-mode { | ||||
type enumeration { | ||||
enum async-with-echo { | ||||
value "1"; | ||||
description "Async with echo."; | ||||
} | ||||
enum async-without-echo { | ||||
value "2"; | ||||
description "Async without echo."; | ||||
} | ||||
enum demand-with-echo { | ||||
value "3"; | ||||
description "Demand with echo."; | ||||
} | ||||
enum demand-without-echo { | ||||
value "4"; | ||||
description "Demand without echo."; | ||||
} | ||||
} | ||||
description "Detection mode."; | ||||
} | ||||
leaf negotiated-tx-interval { | ||||
type uint32; | ||||
units microseconds; | ||||
description "Negotiated transmit interval."; | ||||
} | ||||
leaf negotiated-rx-interval { | ||||
type uint32; | ||||
units microseconds; | ||||
description "Negotiated receive interval."; | ||||
} | ||||
leaf detection-time { | ||||
type uint32; | ||||
units microseconds; | ||||
description "Detection time."; | ||||
} | ||||
leaf echo-tx-interval-in-use { | ||||
when "../../path-type = 'bfd-types:path-ip-sh'" { | ||||
description | ||||
"Echo is supported for IP single-hop only."; | ||||
} | ||||
if-feature echo-mode; | ||||
type uint32; | ||||
units microseconds; | ||||
description "Echo transmit interval in use."; | ||||
} | ||||
} | ||||
container session-statistics { | identity encap-ip { | |||
config "false"; | base encap-type; | |||
description "BFD per-session statistics."; | description | |||
"BFD with IP encapsulation."; | ||||
} | ||||
leaf create-time { | /* | |||
type yang:date-and-time; | * Type definitions | |||
description | */ | |||
"Time and date when this session was created."; | ||||
} | ||||
leaf last-down-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"Time and date of last time this session went down."; | ||||
} | ||||
leaf last-up-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"Time and date of last time this session went up."; | ||||
} | ||||
leaf down-count { | ||||
type yang:counter32; | ||||
description | ||||
"The number of times this session has transitioned in the | ||||
down state."; | ||||
} | ||||
leaf admin-down-count { | ||||
type yang:counter32; | ||||
description | ||||
"The number of times this session has transitioned in the | ||||
admin-down state."; | ||||
} | ||||
leaf receive-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of received packets in this session. This includes | ||||
valid and invalid received packets."; | ||||
} | ||||
leaf send-packet-count { | ||||
type yang:counter64; | ||||
description "Count of sent packets in this session."; | ||||
} | ||||
leaf receive-invalid-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of invalid received packets in this session."; | ||||
} | ||||
leaf send-failed-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of packets which failed to be sent in this session."; | ||||
} | ||||
} | ||||
} | ||||
grouping session-statistics-summary { | typedef discriminator { | |||
description "Grouping for session statistics summary."; | type uint32; | |||
container summary { | description | |||
config false; | "BFD Discriminator as described in RFC 5880."; | |||
description "BFD session statistics summary."; | reference | |||
leaf number-of-sessions { | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
type yang:gauge32; | } | |||
description "Number of BFD sessions."; | ||||
} | ||||
leaf number-of-sessions-up { | ||||
type yang:gauge32; | ||||
description | ||||
"Number of BFD sessions currently in up state (as defined | ||||
in RFC 5880)."; | ||||
} | ||||
leaf number-of-sessions-down { | ||||
type yang:gauge32; | ||||
description | ||||
"Number of BFD sessions currently in down or init state | ||||
but not admin-down (as defined in RFC 5880)."; | ||||
} | ||||
leaf number-of-sessions-admin-down { | ||||
type yang:gauge32; | ||||
description | ||||
"Number of BFD sessions currently in admin-down state (as | ||||
defined in RFC 5880)."; | ||||
} | ||||
} | typedef state { | |||
} | type enumeration { | |||
enum adminDown { | ||||
value 0; | ||||
description | ||||
"'adminDown' state."; | ||||
} | ||||
enum down { | ||||
value 1; | ||||
description | ||||
"'Down' state."; | ||||
} | ||||
enum init { | ||||
value 2; | ||||
description | ||||
"'Init' state."; | ||||
} | ||||
enum up { | ||||
value 3; | ||||
description | ||||
"'Up' state."; | ||||
} | ||||
} | ||||
description | ||||
"BFD states as defined in RFC 5880."; | ||||
} | ||||
grouping notification-parms { | typedef multiplier { | |||
description | type uint8 { | |||
"This group describes common parameters that will be sent " + | range "1..255"; | |||
"as part of BFD notification."; | } | |||
description | ||||
"BFD multiplier as described in RFC 5880."; | ||||
} | ||||
leaf local-discr { | typedef hops { | |||
type discriminator; | type uint8 { | |||
description "BFD local discriminator."; | range "1..255"; | |||
} | } | |||
description | ||||
"This corresponds to Time To Live for IPv4 and corresponds to | ||||
the hop limit for IPv6."; | ||||
} | ||||
leaf remote-discr { | /* | |||
type discriminator; | * Groupings | |||
description "BFD remote discriminator."; | */ | |||
} | ||||
leaf new-state { | grouping auth-parms { | |||
type state; | description | |||
description "Current BFD state."; | "Grouping for BFD authentication parameters | |||
} | (see Section 6.7 of RFC 5880)."; | |||
container authentication { | ||||
if-feature "authentication"; | ||||
presence "Enables BFD authentication (see Section 6.7 | ||||
of RFC 5880)."; | ||||
description | ||||
"Parameters for BFD authentication."; | ||||
reference | ||||
"RFC 5880: Bidirectional Forwarding Detection (BFD), | ||||
Section 6.7"; | ||||
leaf key-chain { | ||||
type key-chain:key-chain-ref; | ||||
description | ||||
"Name of the 'key-chain' as per RFC 8177."; | ||||
} | ||||
leaf meticulous { | ||||
type boolean; | ||||
description | ||||
"Enables a meticulous mode as per Section 6.7 of | ||||
RFC 5880."; | ||||
} | ||||
} | ||||
} | ||||
leaf state-change-reason { | grouping base-cfg-parms { | |||
type iana-bfd-types:diagnostic; | description | |||
description "BFD state change reason."; | "BFD grouping for base configuration parameters."; | |||
} | leaf local-multiplier { | |||
type multiplier; | ||||
default "3"; | ||||
description | ||||
"Multiplier transmitted by the local system."; | ||||
} | ||||
choice interval-config-type { | ||||
default "tx-rx-intervals"; | ||||
description | ||||
"Two interval values or one value used for both transmit and | ||||
receive."; | ||||
case tx-rx-intervals { | ||||
leaf desired-min-tx-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
default "1000000"; | ||||
description | ||||
"Desired minimum transmit interval of control packets."; | ||||
} | ||||
leaf required-min-rx-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
default "1000000"; | ||||
description | ||||
"Required minimum receive interval of control packets."; | ||||
} | ||||
} | ||||
case single-interval { | ||||
if-feature "single-minimum-interval"; | ||||
leaf min-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
default "1000000"; | ||||
description | ||||
"Desired minimum transmit interval and required | ||||
minimum receive interval of control packets."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
leaf time-of-last-state-change { | grouping client-cfg-parms { | |||
type yang:date-and-time; | description | |||
description | "BFD grouping for configuration parameters | |||
"Calendar time of previous state change."; | used by BFD clients, e.g., IGP or MPLS."; | |||
} | leaf enabled { | |||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether BFD is enabled."; | ||||
} | ||||
uses base-cfg-parms; | ||||
} | ||||
leaf dest-addr { | grouping common-cfg-parms { | |||
type inet:ip-address; | description | |||
description "BFD peer address."; | "BFD grouping for common configuration parameters."; | |||
} | uses base-cfg-parms; | |||
leaf demand-enabled { | ||||
if-feature "demand-mode"; | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"To enable Demand mode."; | ||||
} | ||||
leaf admin-down { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether the BFD session is administratively | ||||
down."; | ||||
} | ||||
uses auth-parms; | ||||
} | ||||
leaf source-addr { | grouping all-session { | |||
type inet:ip-address; | description | |||
description "BFD local address."; | "BFD session operational information."; | |||
} | leaf path-type { | |||
type identityref { | ||||
base path-type; | ||||
} | ||||
config false; | ||||
description | ||||
"BFD path type. This indicates the path type that BFD is | ||||
running on."; | ||||
} | ||||
leaf ip-encapsulation { | ||||
type boolean; | ||||
config false; | ||||
description | ||||
"Indicates whether BFD encapsulation uses IP."; | ||||
} | ||||
leaf local-discriminator { | ||||
type discriminator; | ||||
config false; | ||||
description | ||||
"Local discriminator."; | ||||
} | ||||
leaf remote-discriminator { | ||||
type discriminator; | ||||
config false; | ||||
description | ||||
"Remote discriminator."; | ||||
} | ||||
leaf remote-multiplier { | ||||
type multiplier; | ||||
config false; | ||||
description | ||||
"Remote multiplier."; | ||||
} | ||||
leaf demand-capability { | ||||
if-feature "demand-mode"; | ||||
type boolean; | ||||
config false; | ||||
description | ||||
"Local Demand mode capability."; | ||||
} | ||||
leaf source-port { | ||||
when "../ip-encapsulation = 'true'" { | ||||
description | ||||
"Source port valid only when IP encapsulation is used."; | ||||
} | ||||
type inet:port-number; | ||||
config false; | ||||
description | ||||
"Source UDP port."; | ||||
} | ||||
leaf dest-port { | ||||
when "../ip-encapsulation = 'true'" { | ||||
description | ||||
"Destination port valid only when IP encapsulation | ||||
is used."; | ||||
} | ||||
type inet:port-number; | ||||
config false; | ||||
description | ||||
"Destination UDP port."; | ||||
} | ||||
container session-running { | ||||
config false; | ||||
description | ||||
"BFD 'session-running' information."; | ||||
leaf session-index { | ||||
type uint32; | ||||
description | ||||
"An index used to uniquely identify BFD sessions."; | ||||
} | ||||
leaf local-state { | ||||
type state; | ||||
description | ||||
"Local state."; | ||||
} | ||||
leaf remote-state { | ||||
type state; | ||||
description | ||||
"Remote state."; | ||||
} | ||||
leaf local-diagnostic { | ||||
type iana-bfd-types:diagnostic; | ||||
description | ||||
"Local diagnostic."; | ||||
} | ||||
leaf remote-diagnostic { | ||||
type iana-bfd-types:diagnostic; | ||||
description | ||||
"Remote diagnostic."; | ||||
} | ||||
leaf remote-authenticated { | ||||
type boolean; | ||||
description | ||||
"Indicates whether incoming BFD control packets are | ||||
authenticated."; | ||||
} | ||||
leaf remote-authentication-type { | ||||
when "../remote-authenticated = 'true'" { | ||||
description | ||||
"Only valid when incoming BFD control packets are | ||||
authenticated."; | ||||
} | ||||
if-feature "authentication"; | ||||
type iana-bfd-types:auth-type; | ||||
description | ||||
"Authentication type of incoming BFD control packets."; | ||||
} | ||||
leaf detection-mode { | ||||
type enumeration { | ||||
enum async-with-echo { | ||||
value 1; | ||||
description | ||||
"Async with echo."; | ||||
} | ||||
enum async-without-echo { | ||||
value 2; | ||||
description | ||||
"Async without echo."; | ||||
} | ||||
enum demand-with-echo { | ||||
value 3; | ||||
description | ||||
"Demand with echo."; | ||||
} | ||||
enum demand-without-echo { | ||||
value 4; | ||||
description | ||||
"Demand without echo."; | ||||
} | ||||
} | ||||
description | ||||
"Detection mode."; | ||||
} | ||||
leaf negotiated-tx-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
description | ||||
"Negotiated transmit interval."; | ||||
} | ||||
leaf negotiated-rx-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
description | ||||
"Negotiated receive interval."; | ||||
} | ||||
leaf detection-time { | ||||
type uint32; | ||||
units "microseconds"; | ||||
description | ||||
"Detection time."; | ||||
} | ||||
leaf echo-tx-interval-in-use { | ||||
when "../../path-type = 'bfd-types:path-ip-sh'" { | ||||
description | ||||
"Echo is supported for IP single-hop only."; | ||||
} | ||||
if-feature "echo-mode"; | ||||
type uint32; | ||||
units "microseconds"; | ||||
description | ||||
"Echo transmit interval in use."; | ||||
} | ||||
} | ||||
container session-statistics { | ||||
config false; | ||||
description | ||||
"BFD per-session statistics."; | ||||
leaf create-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"Time and date when this session was created."; | ||||
} | ||||
leaf last-down-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"Time and date of the last time this session went down."; | ||||
} | ||||
leaf last-up-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"Time and date of the last time this session went up."; | ||||
} | ||||
leaf down-count { | ||||
type yang:counter32; | ||||
description | ||||
"The number of times this session has transitioned to the | ||||
'down' state."; | ||||
} | ||||
leaf admin-down-count { | ||||
type yang:counter32; | ||||
description | ||||
"The number of times this session has transitioned to the | ||||
'admin-down' state."; | ||||
} | ||||
leaf receive-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of received packets in this session. This includes | ||||
valid and invalid received packets."; | ||||
} | ||||
leaf send-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of sent packets in this session."; | ||||
} | ||||
leaf receive-invalid-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of invalid received packets in this session."; | ||||
} | ||||
leaf send-failed-packet-count { | ||||
type yang:counter64; | ||||
description | ||||
"Count of packets that failed to be sent in this session."; | ||||
} | ||||
} | ||||
} | ||||
leaf session-index { | grouping session-statistics-summary { | |||
type uint32; | description | |||
description "An index used to uniquely identify BFD sessions."; | "Grouping for session statistics summary."; | |||
} | container summary { | |||
leaf path-type { | config false; | |||
type identityref { | description | |||
base path-type; | "BFD session statistics summary."; | |||
} | leaf number-of-sessions { | |||
description "BFD path type."; | type yang:gauge32; | |||
} | description | |||
} | "Number of BFD sessions."; | |||
} | } | |||
leaf number-of-sessions-up { | ||||
type yang:gauge32; | ||||
description | ||||
"Number of BFD sessions currently in the 'Up' state | ||||
(as defined in RFC 5880)."; | ||||
} | ||||
leaf number-of-sessions-down { | ||||
type yang:gauge32; | ||||
description | ||||
"Number of BFD sessions currently in the 'Down' or 'Init' | ||||
state but not 'adminDown' (as defined in RFC 5880)."; | ||||
} | ||||
leaf number-of-sessions-admin-down { | ||||
type yang:gauge32; | ||||
description | ||||
"Number of BFD sessions currently in the 'adminDown' state | ||||
(as defined in RFC 5880)."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | grouping notification-parms { | |||
description | ||||
"This group describes common parameters that will be sent | ||||
as part of BFD notifications."; | ||||
leaf local-discr { | ||||
type discriminator; | ||||
description | ||||
"BFD local discriminator."; | ||||
} | ||||
leaf remote-discr { | ||||
type discriminator; | ||||
description | ||||
"BFD remote discriminator."; | ||||
} | ||||
leaf new-state { | ||||
type state; | ||||
description | ||||
"Current BFD state."; | ||||
} | ||||
leaf state-change-reason { | ||||
type iana-bfd-types:diagnostic; | ||||
description | ||||
"Reason for the BFD state change."; | ||||
} | ||||
leaf time-of-last-state-change { | ||||
type yang:date-and-time; | ||||
description | ||||
"Calendar time of the most recent previous state change."; | ||||
} | ||||
leaf dest-addr { | ||||
type inet:ip-address; | ||||
description | ||||
"BFD peer address."; | ||||
} | ||||
leaf source-addr { | ||||
type inet:ip-address; | ||||
description | ||||
"BFD local address."; | ||||
} | ||||
leaf session-index { | ||||
type uint32; | ||||
description | ||||
"An index used to uniquely identify BFD sessions."; | ||||
} | ||||
leaf path-type { | ||||
type identityref { | ||||
base path-type; | ||||
} | ||||
description | ||||
"BFD path type."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
2.14. BFD top-level YANG Module | 2.13. BFD Top-Level YANG Module | |||
This YANG module imports and augments "/routing/control-plane- | This YANG module imports and augments "/routing/control-plane- | |||
protocols/control-plane-protocol" from [RFC8349]. | protocols/control-plane-protocol" from [RFC8349]. It also references | |||
[RFC5880]. | ||||
<CODE BEGINS> file "ietf-bfd@2018-08-01.yang" | ||||
<CODE BEGINS> file "ietf-bfd@2021-09-03.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; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
2.15. BFD IP single-hop YANG Module | 2.14. BFD IP Single-Hop YANG Module | |||
This YANG module imports "interface-ref" from [RFC8343], typedefs | ||||
from [RFC6991] and augments "/routing/control-plane-protocols/ | ||||
control-plane-protocol" from [RFC8349]. | ||||
<CODE BEGINS> file "ietf-bfd-ip-sh@2018-08-01.yang" | This YANG module imports "interface-ref" from [RFC8343] and typedefs | |||
from [RFC6991]. It also imports and augments "/routing/control- | ||||
plane-protocols/control-plane-protocol" from [RFC8349], and it | ||||
references [RFC5881]. | ||||
<CODE BEGINS> file "ietf-bfd-ip-sh@2021-09-03.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."; | ||||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
2.16. BFD IP multihop YANG Module | 2.15. BFD IP Multihop YANG Module | |||
This YANG module imports typedefs from [RFC6991] and augments | ||||
"/routing/control-plane-protocols/control-plane-protocol" from | ||||
[RFC8349]. | ||||
<CODE BEGINS> file "ietf-bfd-ip-mh@2018-08-01.yang" | This YANG module imports typedefs from [RFC6991]. It also imports | |||
and augments "/routing/control-plane-protocols/control-plane- | ||||
protocol" from [RFC8349], and it references [RFC5883]. | ||||
module ietf-bfd-ip-mh { | <CODE BEGINS> file "ietf-bfd-ip-mh@2021-09-03.yang" | |||
module ietf-bfd-ip-mh { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | ||||
prefix bfd-ip-mh; | ||||
yang-version 1.1; | import ietf-bfd-types { | |||
prefix bfd-types; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-bfd { | ||||
prefix bfd; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA Version)"; | ||||
} | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/bfd/> | ||||
WG List: <mailto:rtg-bfd@ietf.org> | ||||
prefix "bfd-ip-mh"; | Editor: Reshad Rahman | |||
<mailto:reshad@yahoo.com> | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | Editor: Lianshu Zheng | |||
// remove this note | <mailto:veronique_cheng@hotmail.com> | |||
import ietf-bfd-types { | Editor: Mahesh Jethanandani | |||
prefix "bfd-types"; | <mailto:mjethanandani@gmail.com>"; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | description | |||
} | "This module contains the YANG definition for BFD IP multihop | |||
as per RFC 5883. | ||||
import ietf-bfd { | Copyright (c) 2021 IETF Trust and the persons identified as | |||
prefix "bfd"; | authors of the code. All rights reserved. | |||
reference "RFC XXXX: YANG Data Model for BFD"; | ||||
} | ||||
import ietf-inet-types { | Redistribution and use in source and binary forms, with or | |||
prefix "inet"; | without modification, is permitted pursuant to, and subject to | |||
reference "RFC 6991: Common YANG Data Types"; | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
import ietf-routing { | This version of this YANG module is part of RFC 9127; see the | |||
prefix "rt"; | RFC itself for full legal notices."; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 5883: Bidirectional Forwarding Detection (BFD) for | |||
(NMDA version)"; | Multihop Paths | |||
} | RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)"; | ||||
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 IP multi-hop | ||||
as per RFC 5883. | ||||
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 { | 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/" | ||||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description "BFD augmentation for IP multihop."; | ||||
container ip-mh { | ||||
description "BFD IP multihop top level container."; | ||||
uses bfd-types:session-statistics-summary; | ||||
container session-groups { | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description | ||||
"BFD augmentation for IP multihop."; | ||||
container ip-mh { | ||||
description | description | |||
"BFD IP multi-hop session groups."; | "BFD IP multihop top-level container."; | |||
list session-group { | uses bfd-types:session-statistics-summary; | |||
key "source-addr dest-addr"; | container session-groups { | |||
description | description | |||
"Group of BFD IP multi-hop sessions (for ECMP). A " + | "BFD IP multihop session groups."; | |||
"group of sessions is between 1 source and 1 " + | list session-group { | |||
"destination, each session has a different field " + | key "source-addr dest-addr"; | |||
"in UDP/IP hdr for ECMP."; | ||||
leaf source-addr { | ||||
type inet:ip-address; | ||||
description | ||||
"Local IP address."; | ||||
} | ||||
leaf dest-addr { | ||||
type inet:ip-address; | ||||
description | ||||
"IP address of the peer."; | ||||
} | ||||
uses bfd-types:common-cfg-parms; | ||||
leaf tx-ttl { | ||||
type bfd-types:hops; | ||||
default 255; | ||||
description "Hop count of outgoing BFD control packets."; | ||||
} | ||||
leaf rx-ttl { | ||||
type bfd-types:hops; | ||||
mandatory true; | ||||
description | ||||
"Minimum allowed hop count value for incoming BFD control | ||||
packets. Control packets whose hop count is lower than | ||||
this value are dropped."; | ||||
} | ||||
list sessions { | ||||
config false; | ||||
description | description | |||
"The multiple BFD sessions between a source and a " + | "Group of BFD IP multihop sessions (for ECMP). A | |||
"destination."; | group of sessions is between one source and one | |||
uses bfd-types:all-session; | destination. Each session has a different field | |||
in the UDP/IP header for ECMP."; | ||||
leaf source-addr { | ||||
type inet:ip-address; | ||||
description | ||||
"Local IP address."; | ||||
} | ||||
leaf dest-addr { | ||||
type inet:ip-address; | ||||
description | ||||
"IP address of the peer."; | ||||
} | ||||
uses bfd-types:common-cfg-parms; | ||||
leaf tx-ttl { | ||||
type bfd-types:hops; | ||||
default "255"; | ||||
description | ||||
"Hop count of outgoing BFD control packets."; | ||||
} | ||||
leaf rx-ttl { | ||||
type bfd-types:hops; | ||||
mandatory true; | ||||
description | ||||
"Minimum allowed hop count value for incoming BFD | ||||
control packets. Control packets whose hop count is | ||||
lower than this value are dropped."; | ||||
} | ||||
list sessions { | ||||
config false; | ||||
description | ||||
"The multiple BFD sessions between a source and a | ||||
destination."; | ||||
uses bfd-types:all-session; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | /* | |||
* Notifications | ||||
/* | */ | |||
* Notifications | ||||
*/ | ||||
notification multihop-notification { | ||||
description | ||||
"Notification for BFD multi-hop session state change. An " + | ||||
"implementation may rate-limit notifications, e.g. when a " + | ||||
"session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | notification multihop-notification { | |||
description | ||||
"Notification for BFD multihop session state change. An | ||||
implementation may rate-limit notifications, e.g., when a | ||||
session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | ||||
} | ||||
} | } | |||
} | <CODE ENDS> | |||
<CODE ENDS> | ||||
2.17. BFD over LAG YANG Module | ||||
This YANG module imports "interface-ref" from [RFC8343], typedefs | ||||
from [RFC6991] and augments "/routing/control-plane-protocols/ | ||||
control-plane-protocol" from [RFC8349]. | ||||
<CODE BEGINS> file "ietf-bfd-lag@2018-08-01.yang" | ||||
module ietf-bfd-lag { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | ||||
prefix "bfd-lag"; | ||||
// 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-interfaces { | ||||
prefix "if"; | ||||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | ||||
import ietf-inet-types { | ||||
prefix "inet"; | ||||
reference "RFC 6991: Common YANG Data Types"; | ||||
} | ||||
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 over LAG | ||||
interfaces as per RFC7130. | ||||
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 LAG"; | ||||
} | ||||
/* | ||||
* Augments | ||||
*/ | ||||
augment "/rt:routing/rt:control-plane-protocols/" | ||||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description "BFD augmentation for LAG"; | ||||
container lag { | ||||
description "BFD over LAG top level container"; | ||||
container micro-bfd-ipv4-session-statistics { | ||||
description "Micro-BFD IPv4 session counters."; | ||||
uses bfd-types:session-statistics-summary; | ||||
} | ||||
container micro-bfd-ipv6-session-statistics { | ||||
description "Micro-BFD IPv6 session counters."; | ||||
uses bfd-types:session-statistics-summary; | ||||
} | ||||
container sessions { | ||||
description | ||||
"BFD over LAG sessions"; | ||||
list session { | ||||
key "lag-name"; | ||||
description "List of BFD over LAG sessions."; | ||||
leaf lag-name { | ||||
type if:interface-ref ; | ||||
description "Name of the LAG"; | ||||
} | ||||
leaf ipv4-dest-addr { | ||||
type inet:ipv4-address; | ||||
description | ||||
"IPv4 address of the peer, for IPv4 micro-BFD."; | ||||
} | ||||
leaf ipv6-dest-addr { | ||||
type inet:ipv6-address; | ||||
description | ||||
"IPv6 address of the peer, for IPv6 micro-BFD."; | ||||
} | ||||
uses bfd-types:common-cfg-parms; | ||||
leaf use-ipv4 { | ||||
type boolean; | ||||
description "Using IPv4 micro-BFD."; | ||||
} | ||||
leaf use-ipv6 { | ||||
type boolean; | ||||
description "Using IPv6 micro-BFD."; | ||||
} | ||||
list member-links { | ||||
key "member-link"; | ||||
config false; | ||||
description | ||||
"Micro-BFD over LAG. This represents one member link."; | ||||
leaf member-link { | ||||
type if:interface-ref; | ||||
description | ||||
"Member link on which micro-BFD is running."; | ||||
} | ||||
container micro-bfd-ipv4 { | ||||
when "../../use-ipv4 = 'true'" { | ||||
description "Needed only if IPv4 is used."; | ||||
} | ||||
description | ||||
"Micro-BFD IPv4 session state on member link."; | ||||
uses bfd-types:all-session; | ||||
} | ||||
container micro-bfd-ipv6 { | ||||
when "../../use-ipv6 = 'true'" { | ||||
description "Needed only if IPv6 is used."; | ||||
} | ||||
description | ||||
"Micro-BFD IPv6 session state on member link."; | ||||
uses bfd-types:all-session; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
/* | ||||
* Notifications | ||||
*/ | ||||
notification lag-notification { | ||||
description | ||||
"Notification for BFD over LAG session state change. " + | ||||
"An implementation may rate-limit notifications, e.g. when a " + | ||||
"session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | ||||
leaf lag-name { | ||||
type if:interface-ref; | ||||
description "LAG interface name."; | ||||
} | ||||
leaf member-link { | ||||
type if:interface-ref; | ||||
description "Member link on which BFD is running."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
2.18. BFD over MPLS YANG Module | ||||
This YANG module imports typedefs from [RFC6991] and augments | ||||
"/routing/control-plane-protocols/control-plane-protocol" from | ||||
[RFC8349]. | ||||
<CODE BEGINS> file "ietf-bfd-mpls@2018-08-01.yang" | ||||
module ietf-bfd-mpls { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | ||||
prefix "bfd-mpls"; | ||||
// 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-inet-types { | ||||
prefix "inet"; | ||||
reference "RFC 6991: Common YANG Data Types"; | ||||
} | ||||
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 LSPs 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 LSPs"; | ||||
} | ||||
/* | ||||
* Identity definitions | ||||
*/ | ||||
identity encap-gach { | ||||
base bfd-types:encap-type; | ||||
description | ||||
"BFD with G-ACh encapsulation as per RFC 5586."; | ||||
} | ||||
identity encap-ip-gach { | ||||
base bfd-types:encap-type; | ||||
description | ||||
"BFD with IP and G-ACh encapsulation as per RFC 5586."; | ||||
} | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping encap-cfg { | ||||
description "Configuration for BFD encapsulation"; | ||||
leaf encap { | ||||
type identityref { | ||||
base bfd-types:encap-type; | ||||
} | ||||
default bfd-types:encap-ip; | ||||
description "BFD encapsulation"; | ||||
} | ||||
} | ||||
grouping mpls-dest-address { | ||||
description "Destination address as per RFC 5884."; | ||||
leaf mpls-dest-address { | ||||
type inet:ip-address; | ||||
config "false"; | ||||
description | ||||
"Destination address as per RFC 5884. | ||||
Needed if IP encapsulation is used."; | ||||
} | ||||
} | ||||
/* | ||||
* Augments | ||||
*/ | ||||
augment "/rt:routing/rt:control-plane-protocols/" | ||||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description "BFD augmentation for MPLS."; | ||||
container mpls { | ||||
description "BFD MPLS top level container."; | ||||
uses bfd-types:session-statistics-summary; | ||||
container egress { | ||||
description "Egress configuration."; | ||||
uses bfd-types:client-cfg-parms; | ||||
uses bfd-types:auth-parms; | ||||
} | ||||
container session-groups { | ||||
description | ||||
"BFD over MPLS session groups."; | ||||
list session-group { | ||||
key "mpls-fec"; | ||||
description | ||||
"Group of BFD MPLS sessions (for ECMP). A group of " + | ||||
"sessions is for 1 FEC, each session has a different " + | ||||
"field in UDP/IP hdr for ECMP."; | ||||
leaf mpls-fec { | ||||
type inet:ip-prefix; | ||||
description "MPLS FEC."; | ||||
} | ||||
uses bfd-types:common-cfg-parms; | ||||
list sessions { | ||||
config false; | ||||
description | ||||
"The BFD sessions for an MPLS FEC. Local " + | ||||
"discriminator is unique for each session in the " + | ||||
"group."; | ||||
uses bfd-types:all-session; | ||||
uses bfd-mpls:mpls-dest-address; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
/* | ||||
* Notifications | ||||
*/ | ||||
notification mpls-notification { | ||||
description | ||||
"Notification for BFD over MPLS FEC session state change. " + | ||||
"An implementation may rate-limit notifications, e.g. when a " + | ||||
"session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | ||||
leaf mpls-dest-address { | ||||
type inet:ip-address; | ||||
description | ||||
"Destination address as per RFC 5884. | ||||
Needed if IP encapsulation is used."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
2.19. BFD over MPLS-TE YANG Module | ||||
This YANG module imports and augments "/te/tunnels/tunnel" from | 2.16. BFD-over-LAG YANG Module | |||
[I-D.ietf-teas-yang-te]. | ||||
<CODE BEGINS> file "ietf-bfd-mpls-te@2018-08-01.yang" | This YANG module imports "interface-ref" from [RFC8343] and typedefs | |||
from [RFC6991]. It also imports and augments "/routing/control- | ||||
plane-protocols/control-plane-protocol" from [RFC8349]. | ||||
Additionally, it references [RFC7130]. | ||||
module ietf-bfd-mpls-te { | <CODE BEGINS> file "ietf-bfd-lag@2021-09-03.yang" | |||
module ietf-bfd-lag { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | ||||
prefix bfd-lag; | ||||
yang-version 1.1; | import ietf-bfd-types { | |||
prefix bfd-types; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-bfd { | ||||
prefix bfd; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-interfaces { | ||||
prefix if; | ||||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA Version)"; | ||||
} | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/bfd/> | ||||
WG List: <mailto:rtg-bfd@ietf.org> | ||||
prefix "bfd-mpls-te"; | Editor: Reshad Rahman | |||
<mailto:reshad@yahoo.com> | ||||
// RFC Ed.: replace occurences of XXXX with actual RFC number and | Editor: Lianshu Zheng | |||
// remove this note | <mailto:veronique_cheng@hotmail.com> | |||
import ietf-bfd-types { | Editor: Mahesh Jethanandani | |||
prefix "bfd-types"; | <mailto:mjethanandani@gmail.com>"; | |||
reference "RFC XXXX: YANG Data Model for BFD"; | description | |||
} | "This module contains the YANG definition for BFD-over-LAG | |||
interfaces as per RFC 7130. | ||||
import ietf-bfd { | Copyright (c) 2021 IETF Trust and the persons identified as | |||
prefix "bfd"; | authors of the code. All rights reserved. | |||
reference "RFC XXXX: YANG Data Model for BFD"; | ||||
} | ||||
import ietf-bfd-mpls { | Redistribution and use in source and binary forms, with or | |||
prefix "bfd-mpls"; | without modification, is permitted pursuant to, and subject to | |||
reference "RFC XXXX: YANG Data Model for BFD"; | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
import ietf-te { | This version of this YANG module is part of RFC 9127; see the | |||
prefix "te"; | RFC itself for full legal notices."; | |||
// RFC Ed.: replace YYYY with actual RFC number of | reference | |||
// draft-ietf-teas-yang-te and remove this note. | "RFC 7130: Bidirectional Forwarding Detection (BFD) on | |||
reference | Link Aggregation Group (LAG) Interfaces | |||
"RFC YYYY: A YANG Data Model for Traffic Engineering Tunnels and | RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
Interfaces"; | Detection (BFD)"; | |||
} | revision 2021-09-03 { | |||
description | ||||
"Initial revision."; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-routing { | /* | |||
prefix "rt"; | * Augments | |||
reference | */ | |||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA version)"; | ||||
} | ||||
organization "IETF BFD Working Group"; | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description | ||||
"BFD augmentation for a LAG."; | ||||
container lag { | ||||
description | ||||
"BFD-over-LAG top-level container."; | ||||
container micro-bfd-ipv4-session-statistics { | ||||
description | ||||
"Micro-BFD IPv4 session counters."; | ||||
uses bfd-types:session-statistics-summary; | ||||
} | ||||
container micro-bfd-ipv6-session-statistics { | ||||
description | ||||
"Micro-BFD IPv6 session counters."; | ||||
uses bfd-types:session-statistics-summary; | ||||
} | ||||
container sessions { | ||||
description | ||||
"BFD-over-LAG sessions."; | ||||
list session { | ||||
key "lag-name"; | ||||
description | ||||
"List of BFD-over-LAG sessions."; | ||||
leaf lag-name { | ||||
type if:interface-ref; | ||||
description | ||||
"Name of the LAG."; | ||||
} | ||||
leaf ipv4-dest-addr { | ||||
type inet:ipv4-address; | ||||
description | ||||
"IPv4 address of the peer, for IPv4 micro-BFD."; | ||||
} | ||||
leaf ipv6-dest-addr { | ||||
type inet:ipv6-address; | ||||
description | ||||
"IPv6 address of the peer, for IPv6 micro-BFD."; | ||||
} | ||||
uses bfd-types:common-cfg-parms; | ||||
leaf use-ipv4 { | ||||
type boolean; | ||||
description | ||||
"Using IPv4 micro-BFD."; | ||||
} | ||||
leaf use-ipv6 { | ||||
type boolean; | ||||
description | ||||
"Using IPv6 micro-BFD."; | ||||
} | ||||
list member-links { | ||||
key "member-link"; | ||||
config false; | ||||
description | ||||
"Micro-BFD over a LAG. This represents one | ||||
member link."; | ||||
leaf member-link { | ||||
type if:interface-ref; | ||||
description | ||||
"Member link on which micro-BFD is running."; | ||||
} | ||||
container micro-bfd-ipv4 { | ||||
when "../../use-ipv4 = 'true'" { | ||||
description | ||||
"Needed only if IPv4 is used."; | ||||
} | ||||
description | ||||
"Micro-BFD IPv4 session state on a member link."; | ||||
uses bfd-types:all-session; | ||||
} | ||||
container micro-bfd-ipv6 { | ||||
when "../../use-ipv6 = 'true'" { | ||||
description | ||||
"Needed only if IPv6 is used."; | ||||
} | ||||
description | ||||
"Micro-BFD IPv6 session state on a member link."; | ||||
uses bfd-types:all-session; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
contact | /* | |||
"WG Web: <http://tools.ietf.org/wg/bfd> | * Notifications | |||
WG List: <rtg-bfd@ietf.org> | */ | |||
Editors: Reshad Rahman (rrahman@cisco.com), | notification lag-notification { | |||
Lianshu Zheng (vero.zheng@huawei.com), | description | |||
Mahesh Jethanandani (mjethanandani@gmail.com)"; | "Notification for BFD-over-LAG session state change. | |||
An implementation may rate-limit notifications, e.g., when a | ||||
session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | ||||
leaf lag-name { | ||||
type if:interface-ref; | ||||
description | ||||
"LAG interface name."; | ||||
} | ||||
leaf member-link { | ||||
type if:interface-ref; | ||||
description | ||||
"Member link on which BFD is running."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
description | 2.17. BFD-over-MPLS YANG Module | |||
"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 | This YANG module imports typedefs from [RFC6991]. It also imports | |||
identified as authors of the code. All rights reserved. | and augments "/routing/control-plane-protocols/control-plane- | |||
protocol" from [RFC8349]. Additionally, it references [RFC5586] and | ||||
[RFC5884]. | ||||
Redistribution and use in source and binary forms, with or | <CODE BEGINS> file "ietf-bfd-mpls@2021-09-03.yang" | |||
without modification, is permitted pursuant to, and subject | module ietf-bfd-mpls { | |||
to the license terms contained in, the Simplified BSD License | yang-version 1.1; | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | |||
Relating to IETF Documents | prefix bfd-mpls; | |||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see | import ietf-bfd-types { | |||
the RFC itself for full legal notices."; | prefix bfd-types; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-bfd { | ||||
prefix bfd; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA Version)"; | ||||
} | ||||
reference "RFC XXXX"; | organization | |||
"IETF BFD Working Group"; | ||||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/bfd/> | ||||
WG List: <mailto:rtg-bfd@ietf.org> | ||||
revision 2018-08-01 { | Editor: Reshad Rahman | |||
description "Initial revision."; | <mailto:reshad@yahoo.com> | |||
reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; | ||||
} | ||||
/* | Editor: Lianshu Zheng | |||
* Augments | <mailto:veronique_cheng@hotmail.com> | |||
*/ | ||||
augment "/rt:routing/rt:control-plane-protocols/" | ||||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description "BFD augmentation for MPLS-TE."; | Editor: Mahesh Jethanandani | |||
container mpls-te { | <mailto:mjethanandani@gmail.com>"; | |||
description "BFD MPLS-TE top level container."; | description | |||
"This module contains the YANG definition for BFD parameters for | ||||
MPLS LSPs as per RFC 5884. | ||||
container egress { | Copyright (c) 2021 IETF Trust and the persons identified as | |||
description "Egress configuration."; | authors of the code. All rights reserved. | |||
uses bfd-types:client-cfg-parms; | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
uses bfd-types:auth-parms; | 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)"; | ||||
uses bfd-types:session-statistics-summary; | revision 2021-09-03 { | |||
} | description | |||
} | "Initial revision."; | |||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
augment "/te:te/te:tunnels/te:tunnel" { | /* | |||
description "BFD configuration on MPLS-TE tunnel."; | * Identity definitions | |||
*/ | ||||
uses bfd-types:common-cfg-parms; | identity encap-gach { | |||
base bfd-types:encap-type; | ||||
description | ||||
"BFD with G-ACh encapsulation as per RFC 5586."; | ||||
reference | ||||
"RFC 5586: MPLS Generic Associated Channel"; | ||||
} | ||||
uses bfd-mpls:encap-cfg; | identity encap-ip-gach { | |||
} | base bfd-types:encap-type; | |||
description | ||||
"BFD with IP and G-ACh encapsulation as per RFC 5586."; | ||||
} | ||||
augment "/te:te/te:lsps-state/te:lsp" { | /* | |||
when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { | * Groupings | |||
description "BFD information not needed at transit points."; | */ | |||
} | ||||
description "BFD state information on MPLS-TE LSP."; | ||||
uses bfd-types:all-session; | grouping encap-cfg { | |||
description | ||||
"Configuration for BFD encapsulation."; | ||||
leaf encap { | ||||
type identityref { | ||||
base bfd-types:encap-type; | ||||
} | ||||
default "bfd-types:encap-ip"; | ||||
description | ||||
"BFD encapsulation."; | ||||
} | ||||
} | ||||
uses bfd-mpls:mpls-dest-address; | grouping mpls-dest-address { | |||
} | description | |||
"Destination address as per RFC 5884."; | ||||
reference | ||||
"RFC 5884: Bidirectional Forwarding Detection (BFD) | ||||
for MPLS Label Switched Paths (LSPs)"; | ||||
leaf mpls-dest-address { | ||||
type inet:ip-address; | ||||
config false; | ||||
description | ||||
"Destination address as per RFC 5884. | ||||
Needed if IP encapsulation is used."; | ||||
} | ||||
} | ||||
/* | /* | |||
* Notifications | * Augments | |||
*/ | */ | |||
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; | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/bfd:bfd" { | ||||
description | ||||
"BFD augmentation for MPLS."; | ||||
container mpls { | ||||
description | ||||
"BFD MPLS top-level container."; | ||||
uses bfd-types:session-statistics-summary; | ||||
container egress { | ||||
description | ||||
"Egress configuration."; | ||||
uses bfd-types:client-cfg-parms; | ||||
uses bfd-types:auth-parms; | ||||
} | ||||
container session-groups { | ||||
description | ||||
"BFD-over-MPLS session groups."; | ||||
list session-group { | ||||
key "mpls-fec"; | ||||
description | ||||
"Group of BFD MPLS sessions (for ECMP). A group of | ||||
sessions is for one FEC. Each session has a different | ||||
field in the UDP/IP header for ECMP."; | ||||
leaf mpls-fec { | ||||
type inet:ip-prefix; | ||||
description | ||||
"MPLS FEC."; | ||||
} | ||||
uses bfd-types:common-cfg-parms; | ||||
list sessions { | ||||
config false; | ||||
description | ||||
"The BFD sessions for an MPLS FEC. The local | ||||
discriminator is unique for each session in the | ||||
group."; | ||||
uses bfd-types:all-session; | ||||
uses bfd-mpls:mpls-dest-address; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
uses bfd-mpls:mpls-dest-address; | /* | |||
leaf tunnel-name { | * Notifications | |||
type string; | */ | |||
description "MPLS-TE tunnel on which BFD was running."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | notification mpls-notification { | |||
description | ||||
"Notification for BFD-over-MPLS FEC session state change. | ||||
An implementation may rate-limit notifications, e.g., when a | ||||
session is continuously changing state."; | ||||
uses bfd-types:notification-parms; | ||||
leaf mpls-dest-address { | ||||
type inet:ip-address; | ||||
description | ||||
"Destination address as per RFC 5884. | ||||
Needed if IP encapsulation is used."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
3. Data Model examples | 3. Data Model Examples | |||
This section presents some simple and illustrative examples on how to | This section presents some simple and illustrative examples of how to | |||
configure BFD. | configure BFD. | |||
3.1. IP single-hop | The examples are represented in XML [W3C.REC-xml-20081126]. | |||
3.1. IP Single-Hop | ||||
The following is an example configuration for a BFD IP single-hop | 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. | interval are both set to 10 ms. | |||
<?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> | |||
<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> | |||
<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> | |||
<required-min-rx-interval> | 10000 | |||
10000 | </desired-min-tx-interval> | |||
</required-min-rx-interval> | <required-min-rx-interval> | |||
</session> | 10000 | |||
</sessions> | </required-min-rx-interval> | |||
</ip-sh> | </session> | |||
</bfd> | </sessions> | |||
</control-plane-protocol> | </ip-sh> | |||
</control-plane-protocols> | </bfd> | |||
</routing> | </control-plane-protocol> | |||
</config> | </control-plane-protocols> | |||
</routing> | ||||
</config> | ||||
3.2. IP multihop | 3.2. IP Multihop | |||
The following is an example configuration for a BFD IP multihop | The following is an example configuration for a BFD IP multihop | |||
session group. The desired transmit interval and the required | session group. The desired transmit interval and the required | |||
receive interval are both set to 150ms. | receive interval are both set to 150 ms. | |||
<?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> | |||
skipping to change at page 60, line 41 ¶ | skipping to change at line 2640 ¶ | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
3.3. LAG | 3.3. LAG | |||
The following is an example of BFD configuration for a LAG session. | 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 | |||
set to 10ms. | interval set to 10 ms. | |||
<?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> | |||
skipping to change at page 61, line 48 ¶ | skipping to change at line 2686 ¶ | |||
</lag> | </lag> | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
3.4. MPLS | 3.4. MPLS | |||
The following is an example of BFD configured for an MPLS LSP. In | 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 | |||
250ms. | interval are both set to 250 ms. | |||
<?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> | |||
skipping to change at page 62, line 37 ¶ | skipping to change at line 2721 ¶ | |||
</session-groups> | </session-groups> | |||
</mpls> | </mpls> | |||
</bfd> | </bfd> | |||
</control-plane-protocol> | </control-plane-protocol> | |||
</control-plane-protocols> | </control-plane-protocols> | |||
</routing> | </routing> | |||
</config> | </config> | |||
4. Security Considerations | 4. Security Considerations | |||
The YANG module specified in this document defines a schema for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | [RFC8446]. | |||
The NETCONF access control model [RFC6536] provides the means to | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
restrict access for particular NETCONF or RESTCONF users to a | provides the means to restrict access for particular NETCONF or | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in these YANG modules that | |||
writable/creatable/deletable (i.e., config true, which is the | are writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability: | and their sensitivity/vulnerability from a write access perspective: | |||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | |||
sessions: the list specifies the IP single-hop BFD sessions. | sessions: | |||
This list specifies the IP single-hop BFD sessions. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | Data nodes "local-multiplier", "desired-min-tx-interval", | |||
sessions: data nodes local-multiplier, desired-min-tx-interval, | "required-min-rx-interval", and "min-interval" all impact the BFD | |||
required-min-rx-interval and min-interval all impact the BFD IP | IP single-hop session. The "source-addr" and "dest-addr" data | |||
single-hop session. The source-addr and dest-addr data nodes can be | nodes can be used to send BFD packets to unwitting recipients. | |||
used to send BFD packets to unwitting recipients, [RFC5880] describes | [RFC5880] describes how BFD mitigates such threats. | |||
how BFD mitigates against such threats. Authentication data nodes | Authentication data nodes "key-chain" and "meticulous" impact the | |||
key-chain and meticulous impact the security of the BFD IP single-hop | security of the BFD IP single-hop session. | |||
session. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | |||
session-group: the list specifies the IP multi-hop BFD session | session-group: | |||
groups. | This list specifies the IP multihop BFD session groups. | |||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | Data nodes "local-multiplier", "desired-min-tx-interval", | |||
session-group: data nodes local-multiplier, desired-min-tx-interval, | "required-min-rx-interval", and "min-interval" all impact the BFD | |||
required-min-rx-interval and min-interval all impact the BFD IP | IP multihop session. The "source-addr" and "dest-addr" data nodes | |||
multi-hop session. The source-addr and dest-addr data nodes can be | can be used to send BFD packets to unwitting recipients. | |||
used to send BFD packets to unwitting recipients, [RFC5880] describes | [RFC5880] describes how BFD mitigates such threats. | |||
how BFD mitigates against such threats. Authentication data nodes | Authentication data nodes "key-chain" and "meticulous" impact the | |||
key-chain and meticulous impact the security of the BFD IP multi-hop | security of the BFD IP multihop session. | |||
session. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | |||
sessions: the list specifies the BFD sessions over LAG. | sessions: | |||
This list specifies the BFD sessions over a LAG. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | Data nodes "local-multiplier", "desired-min-tx-interval", | |||
sessions: data nodes local-multiplier, desired-min-tx-interval, | "required-min-rx-interval", and "min-interval" all impact the BFD- | |||
required-min-rx-interval and min-interval all impact the BFD over LAG | over-LAG session. The "ipv4-dest-addr" and "ipv6-dest-addr" data | |||
session. The ipv4-dest-addr and ipv6-dest-addr data nodes can be | nodes can be used to send BFD packets to unwitting recipients. | |||
used to send BFD packets to unwitting recipients, [RFC5880] describes | [RFC5880] describes how BFD mitigates such threats. | |||
how BFD mitigates against such threats. Authentication data nodes | Authentication data nodes "key-chain" and "meticulous" impact the | |||
key-chain and meticulous impact the security of the BFD over LAG | security of the BFD-over-LAG session. | |||
session. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | |||
session-group: the list specifies the session groups for BFD over | session-group: | |||
MPLS. | This list specifies the session groups for BFD over MPLS. | |||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | Data nodes "local-multiplier", "desired-min-tx-interval", | |||
session-group: data nodes local-multiplier, desired-min-tx-interval, | "required-min-rx-interval", and "min-interval" all impact the BFD- | |||
required-min-rx-interval, and min-interval all impact the BFD over | over-MPLS-LSPs session. Authentication data nodes "key-chain" and | |||
MPLS LSPs session. Authentication data nodes key-chain and | "meticulous" impact the security of the BFD-over-MPLS-LSPs | |||
meticulous impact the security of the BFD over MPLS LSPs session. | session. | |||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | |||
egress: data nodes local-multiplier, desired-min-tx-interval, | egress: | |||
required-min-rx-interval and min-interval all impact the BFD over | Data nodes "local-multiplier", "desired-min-tx-interval", | |||
MPLS LSPs sessions for which this device is an MPLS LSP egress node. | "required-min-rx-interval", and "min-interval" all impact the BFD- | |||
Authentication data nodes key-chain and meticulous impact the | over-MPLS-LSPs sessions for which this device is an MPLS LSP | |||
security of the BFD over MPLS LSPs sessions for which this device is | egress node. Authentication data nodes "key-chain" and | |||
an MPLS LSP egress node | "meticulous" impact the security of the BFD-over-MPLS-LSPs | |||
sessions for which this device is an MPLS LSP egress node. | ||||
/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. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ | ||||
egress: 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 | ||||
security of the BFD over MPLS-TE sessions for which this device is an | ||||
MPLS-TE egress node. | ||||
The YANG module has writeable data nodes which can be used for | The YANG modules have writable data nodes that can be used for the | |||
creation of BFD sessions and modification of BFD session parameters. | creation of BFD sessions and the modification of BFD session | |||
The system should "police" creation of BFD sessions to prevent new | parameters. The system should "police" the creation of BFD sessions | |||
sessions from causing existing BFD sessions to fail. For BFD session | to prevent new sessions from causing existing BFD sessions to fail. | |||
modification, the BFD protocol has mechanisms in place which allow | In the case of BFD session modification, the BFD protocol has | |||
for in service modification. | mechanisms in place that allow for in-service modification. | |||
When BFD clients are used to modify BFD configuration (as described | When BFD clients are used to modify BFD configuration (as described | |||
in Section 2.1), the BFD clients need to be included in an analysis | in Section 2.1), the BFD clients need to be included in an analysis | |||
of the security properties of the BFD-using system (e.g., when | of the security properties of the system that uses BFD (e.g., when | |||
considering the authentication and authorization of control actions). | considering the authentication and authorization of control actions). | |||
In many cases, BFD is not the most vulnerable portion of such a | In many cases, BFD is not the most vulnerable portion of such a | |||
composite system, since BFD is limited to generating well-defined | composite system, since BFD is limited to generating well-defined | |||
traffic at a fixed rate on a given path; in the case of an IGP as BFD | traffic at a fixed rate on a given path; in the case of an IGP acting | |||
client, attacking the IGP could cause more broad-scale disruption | as a BFD client, attacking the IGP could cause more broad-scale | |||
than (de)configuring a BFD session could cause. | disruption than would (de)configuring a BFD session. | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in these YANG modules may be | |||
sensitive or vulnerable in some network environments. It is thus | considered sensitive or vulnerable in some network environments. It | |||
important to control read access (e.g., via get, get-config, or | is thus important to control read access (e.g., via get, get-config, | |||
notification) to these data nodes. These are the subtrees and data | or notification) to these data nodes. These are the subtrees and | |||
nodes and their sensitivity/vulnerability: | data nodes and their sensitivity/vulnerability from a read access | |||
perspective: | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | |||
summary: access to this information discloses the number of BFD IP | summary: | |||
single-hop sessions which are up, down and admin-down. The counters | Access to this information discloses the number of BFD IP single- | |||
include BFD sessions for which the user does not have read-access. | hop sessions that are in the "up", "down", or "admin-down" state. | |||
The counters include BFD sessions for which the user does not have | ||||
read access. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip- | /routing/control-plane-protocols/control-plane-protocol/bfd/ip- | |||
sh/sessions/session/: access to data nodes local-discriminator and | sh/sessions/session/: | |||
remote-discriminator (combined with the data nodes in the | Access to data nodes "local-discriminator" and "remote- | |||
authentication container) provides the ability to spoof BFD IP | discriminator" (combined with the data nodes in the authentication | |||
single-hop packets. | container) provides the ability to spoof BFD IP single-hop | |||
packets. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | |||
summary: access to this information discloses the number of BFD IP | summary: | |||
multi-hop sessions which are up, down and admin-down. The counters | Access to this information discloses the number of BFD IP multihop | |||
include BFD sessions for which the user does not have read-access. | sessions that are in the "up", "down", or "admin-down" state. The | |||
counters include BFD sessions for which the user does not have | ||||
read access. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | |||
session-groups/session-group/sessions: access to data nodes local- | session-groups/session-group/sessions: | |||
discriminator and remote-discriminator (combined with the data nodes | Access to data nodes "local-discriminator" and "remote- | |||
in the session-group's authentication container) provides the ability | discriminator" (combined with the data nodes in the session | |||
to spoof BFD IP multi-hop packets. | group's authentication container) provides the ability to spoof | |||
BFD IP multihop packets. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | |||
micro-bfd-ipv4-session-statistics/summary: access to this information | micro-bfd-ipv4-session-statistics/summary: | |||
discloses the number of micro BFD IPv4 LAG sessions which are up, | Access to this information discloses the number of micro-BFD IPv4 | |||
down and admin-down. The counters include BFD sessions for which the | LAG sessions that are in the "up", "down", or "admin-down" state. | |||
user does not have read-access. | The counters include BFD sessions for which the user does not have | |||
read access. | ||||
/routing/control-plane-protocols/control-plane- | /routing/control-plane-protocols/control-plane- | |||
protocol/bfd/lag/sessions/session/member-links/member-link/micro-bfd- | protocol/bfd/lag/sessions/session/member-links/member-link/micro- | |||
ipv4: access to data nodes local-discriminator and remote- | bfd-ipv4: | |||
discriminator (combined with the data nodes in the session's | Access to data nodes "local-discriminator" and "remote- | |||
authentication container) provides the ability to spoof BFD IPv4 LAG | discriminator" (combined with the data nodes in the session's | |||
packets. | authentication container) provides the ability to spoof BFD IPv4 | |||
LAG packets. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | |||
micro-bfd-ipv6-session-statistics/summary: access to this information | micro-bfd-ipv6-session-statistics/summary: | |||
discloses the number of micro BFD IPv6 LAG sessions which are up, | Access to this information discloses the number of micro-BFD IPv6 | |||
down and admin-down. The counters include BFD sessions for which the | LAG sessions that are in the "up", "down", or "admin-down" state. | |||
user does not have read-access. | The counters include BFD sessions for which the user does not have | |||
read access. | ||||
/routing/control-plane-protocols/control-plane- | /routing/control-plane-protocols/control-plane- | |||
protocol/bfd/lag/sessions/session/member-links/member-link/micro-bfd- | protocol/bfd/lag/sessions/session/member-links/member-link/micro- | |||
ipv6: access to data nodes local-discriminator and remote- | bfd-ipv6: | |||
discriminator (combined with the data nodes in the session's | Access to data nodes "local-discriminator" and "remote- | |||
authentication container) provides the ability to spoof BFD IPv6 LAG | discriminator" (combined with the data nodes in the session's | |||
packets. | authentication container) provides the ability to spoof BFD IPv6 | |||
LAG packets. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | |||
summary: access to this information discloses the number of BFD | summary: | |||
sessions over MPLS LSPs which are up, down and admin-down. The | Access to this information discloses the number of BFD sessions | |||
counters include BFD sessions for which the user does not have read- | over MPLS LSPs that are in the "up", "down", or "admin-down" | |||
access. | state. The counters include BFD sessions for which the user does | |||
not have read access. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | |||
session-groups/session-group/sessions: access to data nodes local- | session-groups/session-group/sessions: | |||
discriminator and remote-discriminator (combined with the data nodes | Access to data nodes "local-discriminator" and "remote- | |||
in the session-group's authentication container) provides the ability | discriminator" (combined with the data nodes in the session | |||
to spoof BFD over MPLS LSPs packets. | group's authentication container) provides the ability to spoof | |||
BFD-over-MPLS-LSPs packets. | ||||
/routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ | ||||
summary: 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. | ||||
/te/lsps-state/lsp: access to data nodes local-discriminator and | This document does not define any RPC operations. | |||
remote-discriminator (combined with the data nodes in the tunnel's | ||||
authentication container) provides the ability to spoof BFD over | ||||
MPLS-TE packets. | ||||
5. IANA Considerations | 5. IANA Considerations | |||
This document registers the following namespace URIs in the IETF XML | IANA has registered the following namespace URIs in the "IETF XML | |||
registry [RFC3688]: | Registry" [RFC3688]: | |||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:iana-bfd-types | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-types | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mh | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
This document registers the following YANG modules in the YANG Module | ||||
Names registry [RFC6020]: | ||||
RFC Editor: Replace RFC XXXX with actual RFC number and remove this | ||||
note. | ||||
-------------------------------------------------------------------- | ||||
Name: iana-bfd-types | ||||
Namespace: urn:ietf:params:xml:ns:yang:iana-bfd-types | ||||
Prefix: iana-bfd-types | ||||
Reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
Name: ietf-bfd-types | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-types | ||||
Prefix: bfd-types | ||||
Reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
Name: ietf-bfd | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd | ||||
Prefix: bfd | ||||
Reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
Name: ietf-bfd-ip-sh | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh | ||||
Prefix: bfd-ip-sh | ||||
Reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
Name: ietf-bfd-ip-mh | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh | ||||
Prefix: bfd-ip-mh | ||||
Reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | ||||
Name: ietf-bfd-lag | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-lag | URI: urn:ietf:params:xml:ns:yang:iana-bfd-types | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
Prefix: bfd-lag | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-types | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
Reference: RFC XXXX | URI: urn:ietf:params:xml:ns:yang:ietf-bfd | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
Name: ietf-bfd-mpls | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | ||||
Prefix: bfd-mpls | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
Reference: RFC XXXX | IANA has registered the following YANG modules in the "YANG Module | |||
Names" registry [RFC6020]: | ||||
-------------------------------------------------------------------- | Name: iana-bfd-types | |||
Namespace: urn:ietf:params:xml:ns:yang:iana-bfd-types | ||||
Prefix: iana-bfd-types | ||||
Reference: RFC 9127 | ||||
-------------------------------------------------------------------- | Name: ietf-bfd-types | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-types | ||||
Prefix: bfd-types | ||||
Reference: RFC 9127 | ||||
Name: ietf-bfd-mpls-te | Name: ietf-bfd | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd | ||||
Prefix: bfd | ||||
Reference: RFC 9127 | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te | Name: ietf-bfd-ip-sh | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh | ||||
Prefix: bfd-ip-sh | ||||
Reference: RFC 9127 | ||||
Prefix: bfd-mpls-te | Name: ietf-bfd-ip-mh | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh | ||||
Prefix: bfd-ip-mh | ||||
Reference: RFC 9127 | ||||
Reference: RFC XXXX | Name: ietf-bfd-lag | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-lag | ||||
Prefix: bfd-lag | ||||
Reference: RFC 9127 | ||||
-------------------------------------------------------------------- | Name: ietf-bfd-mpls | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls | ||||
Prefix: bfd-mpls | ||||
Reference: RFC 9127 | ||||
5.1. IANA-Maintained iana-bfd-types module | 5.1. IANA-Maintained "iana-bfd-types" Module | |||
This document defines the initial version of the IANA-maintained | This document defines the initial version of the IANA-maintained | |||
iana-bfd-types YANG module. | "iana-bfd-types" YANG module. | |||
The iana-bfd-types YANG module mirrors the "BFD Diagnostic Codes" | ||||
registry and "BFD Authentication Types" registry at | ||||
https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml. | ||||
Whenever that registry changes, IANA must update the iana-bfd-types | ||||
YANG module. | ||||
6. Acknowledgements | ||||
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. | ||||
7. References | ||||
7.1. Normative References | ||||
[I-D.ietf-mpls-base-yang] | The "iana-bfd-types" YANG module mirrors the "BFD Diagnostic Codes" | |||
Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A | and "BFD Authentication Types" registries at | |||
YANG Data Model for MPLS Base", draft-ietf-mpls-base- | <https://www.iana.org/assignments/bfd-parameters/>. Whenever these | |||
yang-06 (work in progress), February 2018. | registries change, IANA must update the "iana-bfd-types" YANG module. | |||
[I-D.ietf-teas-yang-te] | 6. References | |||
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | ||||
I. Bryskin, "A YANG Data Model for Traffic Engineering | ||||
Tunnels and Interfaces", draft-ietf-teas-yang-te-16 (work | ||||
in progress), July 2018. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | 6.1. Normative References | |||
Requirement Levels", BCP 14, RFC 2119, | ||||
DOI 10.17487/RFC2119, March 1997, | ||||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
(TLS) Protocol Version 1.2", RFC 5246, | ||||
DOI 10.17487/RFC5246, August 2008, | ||||
<https://www.rfc-editor.org/info/rfc5246>. | ||||
[RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., | [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., | |||
"MPLS Generic Associated Channel", RFC 5586, | "MPLS Generic Associated Channel", RFC 5586, | |||
DOI 10.17487/RFC5586, June 2009, | DOI 10.17487/RFC5586, June 2009, | |||
<https://www.rfc-editor.org/info/rfc5586>. | <https://www.rfc-editor.org/info/rfc5586>. | |||
[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
(BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
[RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
skipping to change at page 72, line 25 ¶ | skipping to change at line 3032 ¶ | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
DOI 10.17487/RFC6536, March 2012, | ||||
<https://www.rfc-editor.org/info/rfc6536>. | ||||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
[RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., | [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., | |||
Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional | Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional | |||
Forwarding Detection (BFD) on Link Aggregation Group (LAG) | Forwarding Detection (BFD) on Link Aggregation Group (LAG) | |||
Interfaces", RFC 7130, DOI 10.17487/RFC7130, February | Interfaces", RFC 7130, DOI 10.17487/RFC7130, February | |||
2014, <https://www.rfc-editor.org/info/rfc7130>. | 2014, <https://www.rfc-editor.org/info/rfc7130>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
Zhang, "YANG Data Model for Key Chains", RFC 8177, | Zhang, "YANG Data Model for Key Chains", RFC 8177, | |||
DOI 10.17487/RFC8177, June 2017, | DOI 10.17487/RFC8177, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8177>. | <https://www.rfc-editor.org/info/rfc8177>. | |||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Access Control Model", STD 91, RFC 8341, | ||||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8343>. | <https://www.rfc-editor.org/info/rfc8343>. | |||
[RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", | [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", | |||
RFC 8344, DOI 10.17487/RFC8344, March 2018, | RFC 8344, DOI 10.17487/RFC8344, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8344>. | <https://www.rfc-editor.org/info/rfc8344>. | |||
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
7.2. Informative References | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8446>. | ||||
[I-D.ietf-lime-yang-connectionless-oam] | [RFC8960] Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A | |||
Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | YANG Data Model for MPLS Base", RFC 8960, | |||
"Generic YANG Data Model for the Management of Operations, | DOI 10.17487/RFC8960, December 2020, | |||
Administration, and Maintenance (OAM) Protocols that use | <https://www.rfc-editor.org/info/rfc8960>. | |||
Connectionless Communications", draft-ietf-lime-yang- | ||||
connectionless-oam-18 (work in progress), November 2017. | ||||
[I-D.ietf-rtgwg-lne-model] | 6.2. Informative References | |||
Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | ||||
Liu, "YANG Model for Logical Network Elements", draft- | ||||
ietf-rtgwg-lne-model-10 (work in progress), March 2018. | ||||
[I-D.ietf-rtgwg-ni-model] | [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol | |||
Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | Label Switching Architecture", RFC 3031, | |||
Liu, "YANG Model for Network Instances", draft-ietf-rtgwg- | DOI 10.17487/RFC3031, January 2001, | |||
ni-model-12 (work in progress), March 2018. | <https://www.rfc-editor.org/info/rfc3031>. | |||
[RFC6428] Allan, D., Ed., Swallow, G., Ed., and J. Drake, Ed., | ||||
"Proactive Connectivity Verification, Continuity Check, | ||||
and Remote Defect Indication for the MPLS Transport | ||||
Profile", RFC 6428, DOI 10.17487/RFC6428, November 2011, | ||||
<https://www.rfc-editor.org/info/rfc6428>. | ||||
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
Appendix A. Echo function configuration example | [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | |||
Liu, "YANG Data Model for Network Instances", RFC 8529, | ||||
DOI 10.17487/RFC8529, March 2019, | ||||
<https://www.rfc-editor.org/info/rfc8529>. | ||||
[RFC8530] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | ||||
Liu, "YANG Model for Logical Network Elements", RFC 8530, | ||||
DOI 10.17487/RFC8530, March 2019, | ||||
<https://www.rfc-editor.org/info/rfc8530>. | ||||
[RFC8532] Kumar, D., Wang, Z., Wu, Q., Ed., Rahman, R., and S. | ||||
Raghavan, "Generic YANG Data Model for the Management of | ||||
Operations, Administration, and Maintenance (OAM) | ||||
Protocols That Use Connectionless Communications", | ||||
RFC 8532, DOI 10.17487/RFC8532, April 2019, | ||||
<https://www.rfc-editor.org/info/rfc8532>. | ||||
[W3C.REC-xml-20081126] | ||||
Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and | ||||
F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth | ||||
Edition)", World Wide Web Consortium Recommendation REC- | ||||
xml-20081126, November 2008, | ||||
<https://www.w3.org/TR/2008/REC-xml-20081126>. | ||||
Appendix A. Echo Function Configuration Example | ||||
As mentioned in Section 2.1.2, the mechanism to start and stop the | As mentioned in Section 2.1.2, the mechanism to start and stop the | |||
echo function, as defined in [RFC5880] and [RFC5881], is | Echo function, as defined in [RFC5880] and discussed in [RFC5881], is | |||
implementation specific. In this section we provide an example of | implementation specific. In this appendix, we provide an example of | |||
how the echo function can be implemented via configuration. | how the Echo function can be implemented via configuration. | |||
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 | |||
A.1. Example YANG module for BFD echo function configuration | A.1. Example YANG Module for BFD Echo Function Configuration | |||
module example-bfd-echo { | ||||
namespace "tag:example.com,2018:example-bfd-echo"; | ||||
prefix "example-bfd-echo"; | ||||
import ietf-bfd-types { | ||||
prefix "bfd-types"; | ||||
} | ||||
import ietf-bfd { | ||||
prefix "bfd"; | ||||
} | ||||
import ietf-bfd-ip-sh { | ||||
prefix "bfd-ip-sh"; | ||||
} | ||||
import ietf-routing { | ||||
prefix "rt"; | ||||
} | ||||
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 an example YANG augmentation for configuration | ||||
of BFD echo function. | ||||
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."; | ||||
revision 2018-08-01 { | ||||
description "Initial revision."; | ||||
reference | ||||
"RFC XXXX: A YANG data model example augmentation for BFD echo | ||||
function"; | ||||
} | ||||
// RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
// note | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping echo-cfg-parms { | ||||
description "BFD grouping for echo config parameters"; | ||||
leaf desired-min-echo-tx-interval { | ||||
type uint32; | ||||
units microseconds; | ||||
default 0; | ||||
description | ||||
"This is the minimum interval that the local system would like | ||||
to use when transmitting BFD echo packets. If 0, the echo | ||||
function as defined in BFD [RFC5880] is disabled."; | ||||
} | ||||
leaf required-min-echo-rx-interval { | ||||
type uint32; | ||||
units microseconds; | ||||
default 0; | ||||
description | ||||
"This is the Required Min Echo RX Interval as defined in BFD | ||||
[RFC5880]."; | ||||
} | ||||
} | ||||
augment "/rt:routing/rt:control-plane-protocols/" | ||||
+ "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" | ||||
+ "bfd-ip-sh:sessions" { | ||||
description "Augmentation for BFD echo function."; | ||||
container echo { | ||||
if-feature bfd-types:echo-mode; | ||||
description "BFD echo function container"; | ||||
uses echo-cfg-parms; | ||||
} | ||||
} | ||||
} | ||||
Appendix B. Change log | ||||
RFC Editor: Remove this section upon publication as an RFC. | ||||
B.1. Changes between versions -16 and -17 | ||||
o Addressed IESG comments. | ||||
B.2. Changes between versions -15 and -16 | ||||
o Added list of modules for YANG module registry. | ||||
B.3. Changes between versions -14 and -15 | ||||
o Added missing ietf-bfd-types in XML registry. | ||||
B.4. Changes between versions -13 and -14 | ||||
o Addressed missing/incorrect references in import statements. | ||||
B.5. Changes between versions -12 and -13 | ||||
o Updated references for drafts which became RFCs recently. | ||||
B.6. Changes between versions -11 and -12 | ||||
o Addressed comments from YANG Doctor review of rev11. | ||||
B.7. Changes between versions -10 and -11 | ||||
o Added 2 examples. | ||||
o Added a container around some lists. | ||||
o Fixed some indentation nits. | ||||
B.8. Changes between versions -09 and -10 | ||||
o Addressed comments from YANG Doctor review. | ||||
o Addressed comments from WGLC. | ||||
B.9. Changes between versions -08 and -09 | ||||
o Mostly cosmetic changes to abide by draft-ietf-netmod-rfc6087bis. | ||||
o Specified yang-version 1.1. | ||||
o Added data model examples. | ||||
o Some minor changes. | ||||
B.10. Changes between versions -07 and -08 | ||||
o Timer intervals in client-cfg-parms are not mandatory anymore. | ||||
o Added list of interfaces under "ip-sh" node for authentication | ||||
parameters. | ||||
o Renamed replay-protection to meticulous. | ||||
B.11. Changes between versions -06 and -07 | ||||
o New ietf-bfd-types module. | ||||
o Grouping for BFD clients to have BFD multiplier and interval | ||||
values. | ||||
o Change in ietf-bfd-mpls-te since MPLS-TE model changed. | ||||
o Removed bfd- prefix from many names. | ||||
B.12. Changes between versions -05 and -06 | ||||
o Adhere to NMDA-guidelines. | ||||
o Echo function config moved to appendix as example. | ||||
o Added IANA YANG modules. | ||||
o Addressed various comments. | ||||
B.13. Changes between versions -04 and -05 | This appendix provides an example YANG module for configuration of | |||
the BFD Echo function. It imports and augments "/routing/control- | ||||
plane-protocols/control-plane-protocol" from [RFC8349], and it | ||||
references [RFC5880]. | ||||
o "bfd" node in augment of control-plane-protocol. | module example-bfd-echo { | |||
namespace "tag:example.com,2021:example-bfd-echo"; | ||||
prefix example-bfd-echo; | ||||
o Removed augment of network-instance. Replaced by schema-mount. | import ietf-bfd-types { | |||
prefix bfd-types; | ||||
} | ||||
import ietf-bfd { | ||||
prefix bfd; | ||||
} | ||||
import ietf-bfd-ip-sh { | ||||
prefix bfd-ip-sh; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
} | ||||
o Added information on interaction with other YANG modules. | organization | |||
"IETF BFD Working Group"; | ||||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/bfd/> | ||||
WG List: <mailto:rtg-bfd@ietf.org> | ||||
B.14. Changes between versions -03 and -04 | Editor: Reshad Rahman | |||
<mailto:reshad@yahoo.com> | ||||
o Updated author information. | Editor: Lianshu Zheng | |||
<mailto:veronique_cheng@hotmail.com> | ||||
o Fixed YANG compile error in ietf-bfd-lag.yang which was due to | Editor: Mahesh Jethanandani | |||
incorrect when statement. | <mailto:mjethanandani@gmail.com>"; | |||
description | ||||
"This module contains an example YANG augmentation for | ||||
configuration of the BFD Echo function. | ||||
B.15. Changes between versions -02 and -03 | Copyright (c) 2021 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | ||||
o Fixed YANG compilation warning due to incorrect revision date in | Redistribution and use in source and binary forms, with or | |||
ietf-bfd-ip-sh module. | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
B.16. Changes between versions -01 and -02 | This version of this YANG module is part of RFC 9127; see the | |||
RFC itself for full legal notices."; | ||||
o Replace routing-instance with network-instance from YANG Network | revision 2021-09-03 { | |||
Instances [I-D.ietf-rtgwg-ni-model] | description | |||
"Initial revision."; | ||||
reference | ||||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | ||||
B.17. Changes between versions -00 and -01 | /* | |||
* Groupings | ||||
*/ | ||||
o Remove BFD configuration parameters from BFD clients, all BFD | grouping echo-cfg-parms { | |||
configuration parameters in BFD | description | |||
"BFD grouping for Echo configuration parameters."; | ||||
leaf desired-min-echo-tx-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
default "0"; | ||||
description | ||||
"This is the minimum interval that the local system would | ||||
like to use when transmitting BFD Echo packets. If 0, | ||||
the Echo function as defined in BFD (RFC 5880) is | ||||
disabled."; | ||||
} | ||||
leaf required-min-echo-rx-interval { | ||||
type uint32; | ||||
units "microseconds"; | ||||
default "0"; | ||||
description | ||||
"This is the Required Min Echo RX Interval as defined in BFD | ||||
(RFC 5880)."; | ||||
} | ||||
} | ||||
o YANG module split in multiple YANG modules (one per type of | augment "/rt:routing/rt:control-plane-protocols/" | |||
forwarding path) | + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" | |||
+ "bfd-ip-sh:sessions" { | ||||
description | ||||
"Augmentation for the BFD Echo function."; | ||||
container echo { | ||||
if-feature "bfd-types:echo-mode"; | ||||
description | ||||
"BFD Echo function container."; | ||||
uses echo-cfg-parms; | ||||
} | ||||
} | ||||
} | ||||
o For BFD over MPLS-TE we augment MPLS-TE model | Acknowledgments | |||
o For BFD authentication we now use YANG Data Model for Key Chains | We would like to thank Nobo Akiya and Jeff Haas for their | |||
[RFC8177] | encouragement on this work. We would also like to thank Tom Petch | |||
for his comments on the document. We would also like to thank Acee | ||||
Lindem for his guidance. Thanks also to Jürgen Schönwälder, who was | ||||
instrumental in improving the YANG modules. | ||||
Authors' Addresses | Authors' Addresses | |||
Reshad Rahman (editor) | Reshad Rahman (editor) | |||
Cisco Systems | ||||
Canada | Canada | |||
Email: rrahman@cisco.com | Email: reshad@yahoo.com | |||
Lianshu Zheng (editor) | Lianshu Zheng (editor) | |||
Huawei Technologies | Huawei Technologies | |||
China | China | |||
Email: vero.zheng@huawei.com | Email: veronique_cheng@hotmail.com | |||
Mahesh Jethanandani (editor) | Mahesh Jethanandani (editor) | |||
Xoriant Corporation | Xoriant Corporation | |||
1248 Reamwood Ave | 1248 Reamwood Ave | |||
Sunnyvale, California 94089 | Sunnyvale, California 94089 | |||
USA | United States of America | |||
Email: mjethanandani@gmail.com | Email: mjethanandani@gmail.com | |||
Santosh Pallagatti | Santosh Pallagatti | |||
Rtbrick | VMware | |||
India | India | |||
Email: santosh.pallagatti@gmail.com | Email: santosh.pallagatti@gmail.com | |||
Greg Mirsky | Greg Mirsky | |||
ZTE Corporation | Ericsson | |||
Email: gregimirsky@gmail.com | Email: gregimirsky@gmail.com | |||
End of changes. 377 change blocks. | ||||
2511 lines changed or deleted | 2081 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/ |