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