| < draft-ietf-bfd-yang-05.txt | draft-ietf-bfd-yang-06.txt > | |||
|---|---|---|---|---|
| Network Working Group R. Rahman, Ed. | Network Working Group R. Rahman, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track L. Zheng, Ed. | Intended status: Standards Track L. Zheng, Ed. | |||
| Expires: September 11, 2017 Huawei Technologies | Expires: January 1, 2018 Huawei Technologies | |||
| M. Jethanandani, Ed. | ||||
| Cisco Systems | ||||
| S. Pallagatti | S. Pallagatti | |||
| M. Jethanandani | ||||
| Cisco Systems | ||||
| G. Mirsky | G. Mirsky | |||
| ZTE Corporation | ZTE Corporation | |||
| March 10, 2017 | June 30, 2017 | |||
| Yang Data Model for Bidirectional Forwarding Detection (BFD) | YANG Data Model for Bidirectional Forwarding Detection (BFD) | |||
| draft-ietf-bfd-yang-05.txt | draft-ietf-bfd-yang-06.txt | |||
| 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). | |||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on September 11, 2017. | This Internet-Draft will expire on January 1, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Contributors . . . . . . . . . . . . . . . . . . . . . . 4 | ||||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. Design of Configuration Model . . . . . . . . . . . . . . 4 | 2.1. Design of Configuration Model . . . . . . . . . . . . . . 5 | |||
| 2.1.1. Common BFD configuration parameters . . . . . . . . . 5 | 2.1.1. Common BFD configuration parameters . . . . . . . . . 5 | |||
| 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 6 | 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.1.3. Multi-hop IP . . . . . . . . . . . . . . . . . . . . 6 | 2.1.3. Multi-hop IP . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 | 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 | |||
| 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 7 | 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 7 | |||
| 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 7 | 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 8 | |||
| 2.2. Design of Operational Model . . . . . . . . . . . . . . . 8 | 2.2. Design of Operational Model . . . . . . . . . . . . . . . 8 | |||
| 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 | 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 | 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 9 | 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 9 | |||
| 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 9 | 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 9 | |||
| 2.7. BFD IP multi-hop hierarchy . . . . . . . . . . . . . . . 11 | 2.7. BFD IP multi-hop hierarchy . . . . . . . . . . . . . . . 11 | |||
| 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 | 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 | |||
| 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 15 | 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 16 | |||
| 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 17 | 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 18 | |||
| 2.11. Examples . . . . . . . . . . . . . . . . . . . . . . . . 19 | 2.11. Interaction with other YANG modules . . . . . . . . . . . 19 | |||
| 2.12. Interaction with other YANG modules . . . . . . . . . . . 19 | 2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 20 | |||
| 2.12.1. Module ietf-interfaces . . . . . . . . . . . . . . . 19 | 2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 20 | |||
| 2.12.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 19 | 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 20 | |||
| 2.12.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 20 | 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 20 | |||
| 2.12.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 20 | 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 21 | |||
| 2.13. BFD top-level Yang Module . . . . . . . . . . . . . . . . 20 | 2.13. BFD top-level YANG Module . . . . . . . . . . . . . . . . 23 | |||
| 2.14. BFD IP single-hop Yang Module . . . . . . . . . . . . . . 32 | 2.14. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 36 | |||
| 2.15. BFD IP multi-hop Yang Module . . . . . . . . . . . . . . 35 | 2.15. BFD IP multi-hop YANG Module . . . . . . . . . . . . . . 38 | |||
| 2.16. BFD over LAG Yang Module . . . . . . . . . . . . . . . . 38 | 2.16. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 41 | |||
| 2.17. BFD over MPLS Yang Module . . . . . . . . . . . . . . . . 42 | 2.17. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 44 | |||
| 2.18. BFD over MPLS-TE Yang Module . . . . . . . . . . . . . . 45 | 2.18. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 47 | |||
| 2.19. Security Considerations . . . . . . . . . . . . . . . . . 48 | 2.19. Security Considerations . . . . . . . . . . . . . . . . . 50 | |||
| 2.20. IANA Considerations . . . . . . . . . . . . . . . . . . . 48 | 2.20. IANA Considerations . . . . . . . . . . . . . . . . . . . 50 | |||
| 2.21. Acknowledgements . . . . . . . . . . . . . . . . . . . . 48 | 2.20.1. IANA-Maintained iana-bfd-types module . . . . . . . 51 | |||
| 3. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 | 2.21. Acknowledgements . . . . . . . . . . . . . . . . . . . . 52 | |||
| 3.1. Normative References . . . . . . . . . . . . . . . . . . 49 | 3. References . . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| 3.2. Informative References . . . . . . . . . . . . . . . . . 50 | 3.1. Normative References . . . . . . . . . . . . . . . . . . 52 | |||
| Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 51 | 3.2. Informative References . . . . . . . . . . . . . . . . . 53 | |||
| A.1. Changes between versions -04 and -05 . . . . . . . . . . 51 | Appendix A. Echo function configuration example . . . . . . . . 54 | |||
| A.2. Changes between versions -03 and -04 . . . . . . . . . . 52 | A.1. Example YANG module for BFD echo function . . . . . . . . 55 | |||
| A.3. Changes between versions -02 and -03 . . . . . . . . . . 52 | Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 57 | |||
| A.4. Changes between versions -01 and -02 . . . . . . . . . . 52 | B.1. Changes between versions -05 and -06 . . . . . . . . . . 57 | |||
| A.5. Changes between versions -00 and -01 . . . . . . . . . . 52 | B.2. Changes between versions -04 and -05 . . . . . . . . . . 57 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 | B.3. Changes between versions -03 and -04 . . . . . . . . . . 57 | |||
| B.4. Changes between versions -02 and -03 . . . . . . . . . . 57 | ||||
| B.5. Changes between versions -01 and -02 . . . . . . . . . . 58 | ||||
| B.6. Changes between versions -00 and -01 . . . . . . . . . . 58 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 58 | ||||
| 1. Introduction | 1. Introduction | |||
| YANG [RFC6020] is a data definition language that was introduced to | ||||
| define the contents of a conceptual data store that allows networked | ||||
| devices to be managed using NETCONF [RFC6241]. YANG is proving | ||||
| relevant beyond its initial confines, as bindings to other interfaces | ||||
| (e.g RESTCONF [I-D.ietf-netconf-restconf]) and encodings other than | ||||
| XML (e.g JSON) are being defined. Furthermore, YANG data models can | ||||
| be used as the basis of implementation for other interfaces, such as | ||||
| CLI and programmatic APIs. | ||||
| 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 is | and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD | |||
| a network protocol which is used for liveness detection of arbitrary | is a network protocol which is used for liveness detection of | |||
| paths between systems. Some examples of different types of paths | arbitrary paths between systems. Some examples of different types of | |||
| over which we have BFD: | paths over which we have BFD: | |||
| 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 [RFC5881] | single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881] | |||
| 2) Two systems connected via multiple hops [RFC5883] | 2) Two systems connected via multiple hops as described in BFD for | |||
| Multiple Hops. [RFC5883] | ||||
| 3) Two systems connected via MPLS Label Switched Paths (LSPs) | 3) Two systems connected via MPLS Label Switched Paths (LSPs) as | |||
| [RFC5884] | described in BFD for MPLS LSP [RFC5884] | |||
| 4) Two systems connected via pseudowires (PWs), this is known as | 4) Two systems connected via a Link Aggregation Group (LAG) interface | |||
| Virtual Circuit Connectivity Verification (VCCV) [RFC5885] | as described in BFD on LAG Interfaces [RFC7130] | |||
| 5) Two systems connected via a Link Aggregation Group (LAG) interface | 5) Two systems connected via pseudowires (PWs), this is known as | |||
| [RFC7130] | Virtual Circuit Connectivity Verification (VCCV) as described in BFD | |||
| for PW VCCV [RFC5885]. This 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 [RFC5882]. The obvious candidates which | BFD for their own operation as described in Generic Application of | |||
| use BFD are those which do not have Hellos to detect failures, e.g. | BFD [RFC5882]. The obvious candidates which use BFD are those which | |||
| static routes, and routing protocols whose Hellos do not support sub- | do not have "hellos" to detect failures, e.g. static routes, and | |||
| second failure detection, e.g. OSPF and IS-IS. | routing protocols whose "hellos" do not support sub-second failure | |||
| detection, e.g. OSPF and IS-IS. | ||||
| 1.1. Contributors | ||||
| 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 liveliness detection of various forwarding | |||
| paths, there is no uniform key to identify a BFD session. So the BFD | paths, there is no uniform key to identify a BFD session. So the BFD | |||
| data model is split in multiple YANG modules where each module | data model is split in 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-TE is in another | |||
| YANG module. The main difference between these modules is how a BFD | YANG 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 which 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" container | |||
| is created under control-plane-protocol as specified in [RFC8022]. | is created under control-plane-protocol as specified in A YANG Data | |||
| This new "bfd" node is augmented by all the YANG modules for their | Model for Routing Management [RFC8022]. This new "bfd" node is | |||
| respective specific information. Each BFD YANG module which augments | augmented by all the YANG modules for their respective specific | |||
| the "bfd" node contains a "config" node and an "oper" node. | information. | |||
| BFD can operate in the following contexts: | BFD can operate in the following contexts: | |||
| 1. Network devices as described in [I-D.ietf-rtgwg-device-model] | 1. Network devices as described in Network Device YANG | |||
| Organizational Models [I-D.ietf-rtgwg-device-model] | ||||
| 2. Logical Network Elements as described in | 2. Logical Network Elements as described in YANG Logical Network | |||
| [I-D.ietf-rtgwg-lne-model] | Element [I-D.ietf-rtgwg-lne-model] | |||
| 3. Network instances as described in [I-D.ietf-rtgwg-ni-model] | 3. Network instances as described in YANG Logical Network Element | |||
| [I-D.ietf-rtgwg-ni-model] | ||||
| The approach taken is to do a schema-mount (see | The approach taken is to do a schema-mount (see Schema Mount | |||
| [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate | [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate | |||
| locations. For example, if an implementation supports BFD IP multi- | locations. For example, if an implementation supports BFD IP multi- | |||
| hop in network instances, the implementation would do schema-mount of | hop in network instances, the implementation would do schema-mount of | |||
| the BFD IP multi-hop model in a mount-point which resides in a | the BFD IP multi-hop model in a mount-point which resides in a | |||
| network instance. | network instance. | |||
| The data models in this document strive to follow the "Network | ||||
| Management Datastore Architecture" (NMDA) guidelines described in | ||||
| [I-D.dsdt-nmda-guidelines]. This means that the data models do NOT | ||||
| have separate top-level or sibling containers for configuration and | ||||
| operational data. One exception at the moment is the model for MPLS- | ||||
| TE in Section 2.1.4 | ||||
| 2.1. Design of Configuration Model | 2.1. Design of Configuration Model | |||
| The configuration model consists mainly of the parameters specified | The configuration model consists mainly of the parameters specified | |||
| in [RFC5880]. Some examples are desired minimum transmit interval, | in BFD [RFC5880]. Some examples are desired minimum transmit | |||
| required minimum receive interval, detection multiplier, etc | interval, required minimum receive interval, detection multiplier, | |||
| Some implementations have BFD session configuration under the BFD | etc | |||
| clients. For example, BFD session configuration is under routing | ||||
| applications such as OSPF, IS-IS, BGP etc. Other implementations | BFD clients are applications that use BFD for fast detection of | |||
| have BFD session configuration centralized under BFD, i.e. outside | failures. Some implementations have BFD session configuration under | |||
| the multiple BFD clients. | the BFD clients. For example, BFD session configuration under | |||
| routing applications such as OSPF, IS-IS, BGP etc. Other | ||||
| implementations have BFD session configuration centralized under BFD, | ||||
| i.e. outside the multiple BFD clients. | ||||
| The BFD parameters of interest to a BFD client are mainly the | The BFD parameters of interest to a BFD client are mainly the | |||
| multiplier and interval(s) since those parameters impact the | multiplier and interval(s) since those parameters impact the | |||
| convergence time of the BFD clients when a failure occurs. Other | convergence time of the BFD clients when a failure occurs. Other | |||
| parameters such as BFD authentication are not specific to the | parameters such as BFD authentication are not specific to the | |||
| requirements of the BFD client. To avoid splitting the BFD | requirements of the BFD client. To avoid splitting the BFD | |||
| configuration between BFD clients and BFD, all the configuration is | configuration between BFD clients and this centralized model of BFD, | |||
| under BFD. The only BFD configuration under BFD clients should be an | all the configuration is kept under this centralized model of BFD. | |||
| "enable" knob which makes those clients react to BFD liveliness | The only BFD configuration under BFD clients should be an "enable" | |||
| detection events. | knob which makes those clients react to BFD liveliness detection | |||
| events. | ||||
| 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: | |||
| local-multiplier | local-multiplier | |||
| This is the detection time multiplier as defined in | 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 [RFC5880]. | This is the Desired Min TX Interval as defined in BFD | |||
| [RFC5880]. | ||||
| required-min-rx-interval | required-min-rx-interval | |||
| This is the Required Min RX Interval as defined in [RFC5880]. | This is the Required Min RX Interval as defined in BFD | |||
| [RFC5880]. | ||||
| Although [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 which 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 | model supports this: there is a choice between "min-interval", used | |||
| for both transmit and receive intervals, and "desired-min-tx- | 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 a | |||
| grouping which is used by the YANG modules for the various forwarding | grouping which is used by the YANG modules for the various forwarding | |||
| paths. There are also intervals for the echo function (if | paths. For BFD authentication we have: | |||
| supported): | ||||
| desired-min-echo-tx-interval | ||||
| 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 [RFC5880] is disabled. | ||||
| required-min-echo-rx-interval | ||||
| This is the Required Min Echo RX Interval as defined in | ||||
| [RFC5880]. | ||||
| For BFD authentication we have: | ||||
| key-chain | key-chain | |||
| This is a reference to key-chain defined in | This is a reference to key-chain defined in YANG Data Model | |||
| [I-D.ietf-rtgwg-yang-key-chain]. The keys, cryptographic | for Key Chains [RFC8177]. The keys, cryptographic algotihms, | |||
| algotihms, key lifetime etc are all defined in the key-chain | key lifetime etc are all defined in the key-chain model. | |||
| model. | ||||
| replay-protection | replay-protection | |||
| This specifies meticulous v/s non-meticulous mode as per | This specifies meticulous v/s non-meticulous mode as per BFD | |||
| [RFC5880]. | [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 in | |||
| Section 2. We have a list of IP single-hop sessions where each | Section 2. The "ip-sh" node contains a list of IP single-hop | |||
| session is uniquely identified by the interface and destination | sessions where each session is uniquely identified by the interface | |||
| address pair. For the configuration parameters we use what is | and destination address pair. For the configuration parameters we | |||
| defined in Section 2.1.1 | use what is defined in Section 2.1.1 | |||
| [RFC5880] and [RFC5881] do not specify whether echo function is | ||||
| continuous or on demand. Therefore the mechanism used to start and | ||||
| stop echo function is implementation specific and should be done by | ||||
| augmentation: | ||||
| 1) Configuration. This is suitable for continuous echo function. | ||||
| An example is provided in Appendix A. | ||||
| 2) RPC. This is suitable for on-demand echo function. | ||||
| 2.1.3. Multi-hop IP | 2.1.3. Multi-hop IP | |||
| For multi-hop IP, there is an augment of the "bfd" data node in | For multi-hop IP, there is an augment of the "bfd" data node in | |||
| Section 2. | Section 2. | |||
| We have a list for BFD sessions over multi-hop IP. The key consists | Because of multiple paths, there could be multiple multi-hop IP | |||
| sessions between a source and a destination address. We identify | ||||
| this as a "session-group". The key for each "session-group" consists | ||||
| of: | of: | |||
| source address | source address | |||
| Address belonging to the local system as per [RFC5883] | Address belonging to the local system as per BFD for Multiple | |||
| Hops [RFC5883] | ||||
| destination address | destination address | |||
| Address belonging to the remote system as per [RFC5883] | Address belonging to the remote system as per BFD for | |||
| Multiple Hops [RFC5883] | ||||
| For the configuration parameters we use what is defined in | For the configuration parameters we use what is defined in | |||
| Section 2.1.1 | Section 2.1.1 | |||
| Here are some extra parameters: | Here are some extra 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 | 2.1.4. MPLS Traffic Engineering Tunnels | |||
| For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel since | For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel since | |||
| the desired failure detection parameters is a property of the MPLS-TE | the desired failure detection parameters is a property of the MPLS-TE | |||
| tunnel. This is achieved by augmenting the MPLS-TE data model in | tunnel. This is achieved by augmenting the MPLS-TE data model in | |||
| [I-D.ietf-teas-yang-te]. For BFD parameters which are specific to | YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te]. For BFD | |||
| the TE application, e.g. whether to tear down the tunnel in the event | parameters which are specific to the TE application, e.g. whether to | |||
| of a BFD session failure, these parameters will be defined in the | tear down the tunnel in the event of a BFD session failure, these | |||
| YANG model of the MPLS-TE application. | 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 | On top of the usual BFD parameters, we have the following per MPLS-TE | |||
| tunnel: | tunnel: | |||
| encap | encap | |||
| Encapsulation for the BFD packets: choice between IP, G-ACh | Encapsulation for the BFD packets: choice between IP, G-ACh | |||
| and IP with G-ACh as per [RFC5586] | 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 | 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- | "bfd" node in Section 2. Since some MPLS-TE tunnels are uni- | |||
| directional there is no MPLS-TE configuration for these tunnels on | directional there is no MPLS-TE configuration for these tunnels on | |||
| the egress node (note that this does not apply to bi-directional | the egress node (note that this does not apply to bi-directional | |||
| MPLS-TP tunnels). The BFD parameters for the egress node are added | MPLS-TP tunnels). The BFD parameters for the egress node are added | |||
| under "mpls-te". | under "mpls-te". | |||
| 2.1.5. MPLS Label Switched Paths | 2.1.5. MPLS Label Switched Paths | |||
| Here we address MPLS LSPs whose FEC is an IP address. The "bfd" node | Here we address MPLS LSPs whose FEC is an IP address. The "bfd" node | |||
| in Section 2 is augmented with "mpls" which contains a list of | in Section 2 is augmented with "mpls" which contains a list of | |||
| sessions uniquely identified by an IP address. | sessions uniquely identified by an IP prefix. Because of multiple | |||
| paths, there could be multiple MPLS sessions to an MPLS FEC. We | ||||
| identify this as a "session-group". | ||||
| Since these LSPs are uni-directional there is no LSP configuration on | Since these LSPs are uni-directional there is no LSP configuration on | |||
| the egress node. The BFD parameters for the egress node are added | the egress node. | |||
| under "mpls". | ||||
| The BFD parameters for the egress node are added under "mpls". | ||||
| 2.1.6. Link Aggregation Groups | 2.1.6. Link Aggregation Groups | |||
| Per [RFC7130], configuring BFD on LAG consists of having micro-BFD | Per BFD on LAG Interfaces [RFC7130], configuring BFD on LAG consists | |||
| sessions on each LAG member link. Since the BFD parameters are an | of having micro-BFD sessions on each LAG member link. Since the BFD | |||
| attribute of the LAG, they should be under the LAG. However there is | parameters are an attribute of the LAG, they should be under the LAG. | |||
| no LAG YANG model which we can augment. So a "lag" data node is | However there is no LAG YANG model which we can augment. So a "lag" | |||
| added to the "bfd" node in Section 2, the configuration is per-LAG: | data node is added to the "bfd" node in Section 2, the configuration | |||
| we have a list of LAGs. The destination IP address of the micro-BFD | is per-LAG: we have a list of LAGs. The destination IP address of | |||
| sessions is configured per-LAG and per address-family (IPv4 and IPv6) | the micro-BFD sessions is configured per-LAG and per address-family | |||
| (IPv4 and IPv6) | ||||
| 2.2. Design of Operational Model | 2.2. Design of Operational Model | |||
| The operational model contains both the overall statistics of BFD | The operational model contains both the overall statistics of BFD | |||
| sessions running on the device and the per session operational | sessions running on the device and the per session operational | |||
| information. | information. | |||
| The overall statistics of BFD sessions consist of number of BFD | The overall statistics of BFD sessions consist of number of BFD | |||
| sessions, number of BFD sessions up etc. This information is | sessions, number of BFD sessions up etc. This information is | |||
| available globally (i.e. for all BFD sessions) under the "bfd" node | available globally (i.e. for all BFD sessions) under the "bfd" node | |||
| skipping to change at page 8, line 31 ¶ | skipping to change at page 8, line 44 ¶ | |||
| remote BFD state and the diagnostic code received. Another example | remote BFD state and the diagnostic code received. Another example | |||
| is the actual transmit interval between the control packets, which | is the actual transmit interval between the control packets, which | |||
| may be different from the desired minimum transmit interval | may be different from the desired minimum transmit interval | |||
| configured, is shown in this category. Similar examples are actual | configured, is shown in this category. Similar examples are actual | |||
| received interval between the control packets and the actual transmit | received interval between the control packets and the actual transmit | |||
| interval between the echo packets. The third category contains the | interval between the echo packets. The third category contains the | |||
| detailed statistics of the session, e.g. when the session | detailed statistics of the session, e.g. when the session | |||
| transitioned up/down and how long it has been in that state. | transitioned up/down and how long it has been in that state. | |||
| For some session types, there may be more than 1 session on the | For some session types, there may be more than 1 session on the | |||
| virtual path to the destination. For example, with IP multi-hop | virtual path to the destination. For example, with IP multi-hop and | |||
| there could be multiple BFD sessions from the source to the same | MPLS LSPs, there could be multiple BFD sessions from the source to | |||
| destination to test the various paths (ECMP) to the destination. | the same destination to test the various paths (ECMP) to the | |||
| Each of the BFD sessions on the same virtual path is uniquely | destination. This is represented by having multiple "sessions" under | |||
| identified by the local discriminator. | each "session-group". | |||
| 2.3. Notifications | 2.3. Notifications | |||
| This YANG model defines notifications to inform clients of BFD of | This YANG model defines notifications to inform clients of BFD of | |||
| important events detected during the protocol operation. Pair of | important events detected during the protocol operation. Pair of | |||
| local and remote discriminator identifies a BFD session on local | local and remote discriminator identifies a BFD session on local | |||
| system. Notifications also give more important details about BFD | system. Notifications also give more important details about BFD | |||
| sessions; e.g. new state, time in previous state, network-instance | sessions; e.g. new state, time in previous state, network-instance | |||
| and the reason that the BFD session state changed. The notifications | and the reason that the BFD session state changed. The notifications | |||
| are defined for each type of forwarding path but use groupings for | are defined for each type of forwarding path but use groupings for | |||
| common information. | common information. | |||
| 2.4. RPC Operations | 2.4. RPC Operations | |||
| TBD | 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 data. The operational data | configuration data, only operational data. The operational data | |||
| consist of overall BFD session statistics, i.e. for BFD on all types | consist of overall BFD session statistics, i.e. for BFD on all types | |||
| of forwarding paths. The "bfd" node under control-plane-protocol can | of forwarding paths. The "bfd" node under control-plane-protocol can | |||
| be mounted in a network device (top-level), in an LNE or in a network | be used in a network device (top-level), or mounted in an LNE or in a | |||
| instance. | network instance. | |||
| 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 | |||
| +--rw config | +--ro bfd-session-statistics | |||
| +--ro oper | +--ro session-count? uint32 | |||
| +--ro bfd-session-statistics | +--ro session-up-count? uint32 | |||
| +--ro session-count? uint32 | +--ro session-down-count? uint32 | |||
| +--ro session-up-count? uint32 | +--ro session-admin-down-count? uint32 | |||
| +--ro session-down-count? uint32 | ||||
| +--ro session-admin-down-count? uint32 | ||||
| 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 "bfd" node in control-plane-protocol. | |||
| The configuration and operational data for each BFD IP single-hop | The configuration and operational data for each BFD IP single-hop | |||
| session is under this "ip-sh" node. The "ip-sh" node can be mounted | session is under this "ip-sh" node. The "ip-sh" node can be used in | |||
| in a network device (top-level), in an LNE or in a network instance. | a network device (top-level), or mounted in an LNE or in a network | |||
| instance. | ||||
| module: ietf-bfd-ip-sh | ||||
| augment /rt:routing/rt:control-plane-protocols | ||||
| /rt:control-plane-protocol/bfd:bfd: | ||||
| +--rw ip-sh | ||||
| +--rw config | ||||
| | +--rw session-cfg | ||||
| | +--rw sessions* [interface dest-addr] | ||||
| | +--rw interface if:interface-ref | ||||
| | +--rw dest-addr inet:ip-address | ||||
| | +--rw source-addr? inet:ip-address | ||||
| | +--rw local-multiplier? bfd-multiplier | ||||
| | +--rw (interval-config-type)? | ||||
| | | +--:(tx-rx-intervals) | ||||
| | | | +--rw desired-min-tx-interval uint32 | ||||
| | | | +--rw required-min-rx-interval uint32 | ||||
| | | +--:(single-interval) | ||||
| | | +--rw min-interval uint32 | ||||
| | +--rw demand-enabled? boolean | ||||
| | +--rw admin-down? boolean | ||||
| | +--rw authentication-parms! {bfd-authentication}? | ||||
| | | +--rw key-chain? kc:key-chain-ref | ||||
| | | +--rw replay-protection? identityref | ||||
| | +--rw desired-min-echo-tx-interval? uint32 | ||||
| | +--rw required-min-echo-rx-interval? uint32 | ||||
| +--ro oper | ||||
| +--ro bfd-session-statistics | ||||
| | +--ro session-count? uint32 | ||||
| | +--ro session-up-count? uint32 | ||||
| | +--ro session-down-count? uint32 | ||||
| | +--ro session-admin-down-count? uint32 | ||||
| +--ro sessions* [interface dest-addr] | ||||
| +--ro interface if:interface-ref | ||||
| +--ro dest-addr inet:ip-address | ||||
| +--ro source-addr? inet:ip-address | ||||
| +--ro path-type? identityref | ||||
| +--ro local-discriminator? bfd-discriminator | ||||
| +--ro remote-discriminator? bfd-discriminator | ||||
| +--ro remote-multiplier? bfd-multiplier | ||||
| +--ro out-interface? if:interface-ref | ||||
| +--ro demand-capability? boolean | ||||
| +--ro source-port? inet:port-number | ||||
| +--ro dest-port? inet:port-number | ||||
| +--ro session-running | ||||
| | +--ro session-index? uint32 | ||||
| | +--ro local-state? bfd-state | ||||
| | +--ro remote-state? bfd-state | ||||
| | +--ro local-diagnostic? bfd-diagnostic | ||||
| | +--ro remote-diagnostic? bfd-diagnostic | ||||
| | +--ro detection-mode? enumeration | ||||
| | +--ro negotiated-tx-interval? uint32 | ||||
| | +--ro negotiated-rx-interval? uint32 | ||||
| | +--ro echo-tx-interval-in-use? uint32 | ||||
| | +--ro detection-time? uint32 | ||||
| +--ro sesssion-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? uint32 | ||||
| +--ro admin-down-count? uint32 | ||||
| +--ro receive-packet-count? uint64 | ||||
| +--ro send-packet-count? uint64 | ||||
| +--ro receive-bad-packet? uint64 | ||||
| +--ro send-failed-packet? uint64 | ||||
| notifications: | ||||
| +---n bfd-singlehop-notification | module: ietf-bfd-ip-sh | |||
| +--ro local-discr? bfd-discriminator | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protoco | |||
| +--ro remote-discr? bfd-discriminator | l/bfd:bfd: | |||
| +--ro new-state? bfd-state | +--rw ip-sh | |||
| +--ro state-change-reason? string | +--ro bfd-session-statistics | |||
| +--ro time-in-previous-state? string | | +--ro session-count? uint32 | |||
| +--ro dest-addr? inet:ip-address | | +--ro session-up-count? uint32 | |||
| +--ro source-addr? inet:ip-address | | +--ro session-down-count? uint32 | |||
| +--ro session-index? uint32 | | +--ro session-admin-down-count? uint32 | |||
| +--ro path-type? identityref | +--rw sessions* [interface dest-addr] | |||
| +--ro interface? if:interface-ref | +--rw interface if:interface-ref | |||
| +--ro echo-enabled? boolean | +--rw dest-addr inet:ip-address | |||
| +--rw source-addr? inet:ip-address | ||||
| +--rw local-multiplier? bfd-multiplier | ||||
| +--rw (interval-config-type)? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval uint32 | ||||
| | | +--rw required-min-rx-interval uint32 | ||||
| | +--:(single-interval) | ||||
| | +--rw min-interval uint32 | ||||
| +--rw demand-enabled? boolean | ||||
| {bfd-demand-mode}? | ||||
| +--rw admin-down? boolean | ||||
| +--rw authentication-parms! {bfd-authentication}? | ||||
| | +--rw key-chain? kc:key-chain-ref | ||||
| | +--rw replay-protection? identityref | ||||
| +--rw desired-min-echo-tx-interval? uint32 | ||||
| +--rw required-min-echo-rx-interval? uint32 | ||||
| +--ro path-type? identityref | ||||
| +--ro ip-encapsulation? boolean | ||||
| +--ro local-discriminator? bfd-discriminator | ||||
| +--ro remote-discriminator? bfd-discriminator | ||||
| +--ro remote-multiplier? bfd-multiplier | ||||
| +--ro demand-capability? boolean | ||||
| {bfd-demand-mode}? | ||||
| +--ro source-port? inet:port-number | ||||
| +--ro dest-port? inet:port-number | ||||
| +--ro session-running | ||||
| | +--ro session-index? uint32 | ||||
| | +--ro local-state? bfd-state | ||||
| | +--ro remote-state? bfd-state | ||||
| | +--ro local-diagnostic? iana-bfd-types: | ||||
| bfd-diagnostic | ||||
| | +--ro remote-diagnostic? iana-bfd-types: | ||||
| bfd-diagnostic | ||||
| | +--ro remote-authenticated? boolean | ||||
| | +--ro remote-authentication-type? iana-bfd-types: | ||||
| bfd-auth-type | ||||
| | +--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 {bfd-echo-mode}? | ||||
| +--ro sesssion-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? uint32 | ||||
| +--ro admin-down-count? uint32 | ||||
| +--ro receive-packet-count? uint64 | ||||
| +--ro send-packet-count? uint64 | ||||
| +--ro receive-bad-packet? uint64 | ||||
| +--ro send-failed-packet? uint64 | ||||
| notifications: | ||||
| +---n bfd-singlehop-notification | ||||
| +--ro local-discr? bfd-discriminator | ||||
| +--ro remote-discr? bfd-discriminator | ||||
| +--ro new-state? bfd-state | ||||
| +--ro state-change-reason? iana-bfd-types:bfd-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 interface? if:interface-ref | ||||
| +--ro echo-enabled? boolean | ||||
| 2.7. BFD IP multi-hop hierarchy | 2.7. BFD IP multi-hop 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 cntrol-plane- | |||
| protocol. The configuration and operational data for each BFD IP | protocol. The configuration and operational data for each BFD IP | |||
| multi-hop session is under this "ip-mh" node. In the operational | multi-hop session is under this "ip-mh" node. In the operational | |||
| model we support multiple BFD multi-hop sessions per remote address | model we support multiple BFD multi-hop sessions per remote address | |||
| (ECMP), the local discriminator is used as key. The "ip-mh" node can | (ECMP), the local discriminator is used as key. The "ip-mh" node can | |||
| be mounted in a network device (top-level), in an LNE or in a network | be used in a network device (top-level), or mounted in an LNE or in a | |||
| instance. | network instance. | |||
| 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 | |||
| +--rw config | +--ro bfd-session-statistics | |||
| | +--rw session-cfg | | +--ro session-count? uint32 | |||
| | +--rw sessions* [source-addr dest-addr] | | +--ro session-up-count? uint32 | |||
| | +--rw source-addr inet:ip-address | | +--ro session-down-count? uint32 | |||
| | +--rw dest-addr inet:ip-address | | +--ro session-admin-down-count? uint32 | |||
| | +--rw local-multiplier? bfd-multiplier | +--rw session-group* [source-addr dest-addr] | |||
| | +--rw (interval-config-type)? | +--rw source-addr inet:ip-address | |||
| | | +--:(tx-rx-intervals) | +--rw dest-addr inet:ip-address | |||
| | | | +--rw desired-min-tx-interval uint32 | +--rw local-multiplier? bfd-multiplier | |||
| | | | +--rw required-min-rx-interval uint32 | +--rw (interval-config-type)? | |||
| | | +--:(single-interval) | | +--:(tx-rx-intervals) | |||
| | | +--rw min-interval uint32 | | | +--rw desired-min-tx-interval uint32 | |||
| | +--rw demand-enabled? boolean | | | +--rw required-min-rx-interval uint32 | |||
| | +--rw admin-down? boolean | | +--:(single-interval) | |||
| | +--rw authentication-parms! {bfd-authentication}? | | +--rw min-interval uint32 | |||
| | | +--rw key-chain? kc:key-chain-ref | +--rw demand-enabled? boolean {bfd-demand-mode}? | |||
| | | +--rw replay-protection? identityref | +--rw admin-down? boolean | |||
| | +--rw tx-ttl? bfd:ttl | +--rw authentication-parms! {bfd-authentication}? | |||
| | +--rw rx-ttl bfd:ttl | | +--rw key-chain? kc:key-chain-ref | |||
| +--ro oper | | +--rw replay-protection? identityref | |||
| +--ro bfd-session-statistics | +--rw tx-ttl? bfd:hops | |||
| | +--ro session-count? uint32 | +--rw rx-ttl bfd:hops | |||
| | +--ro session-up-count? uint32 | +--ro sessions* | |||
| | +--ro session-down-count? uint32 | +--ro path-type? identityref | |||
| | +--ro session-admin-down-count? uint32 | +--ro ip-encapsulation? boolean | |||
| +--ro session-group* [source-addr dest-addr] | +--ro local-discriminator? bfd-discriminator | |||
| +--ro source-addr inet:ip-address | +--ro remote-discriminator? bfd-discriminator | |||
| +--ro dest-addr inet:ip-address | +--ro remote-multiplier? bfd-multiplier | |||
| +--ro sessions* [local-discriminator] | +--ro demand-capability? boolean {bfd-demand-mode}? | |||
| +--ro ttl? bfd:ttl | +--ro source-port? inet:port-number | |||
| +--ro path-type? identityref | +--ro dest-port? inet:port-number | |||
| +--ro local-discriminator bfd-discriminator | +--ro session-running | |||
| +--ro remote-discriminator? bfd-discriminator | | +--ro session-index? uint32 | |||
| +--ro remote-multiplier? bfd-multiplier | | +--ro local-state? bfd-state | |||
| +--ro out-interface? if:interface-ref | | +--ro remote-state? bfd-state | |||
| +--ro demand-capability? boolean | | +--ro local-diagnostic? iana-bfd-types: | |||
| +--ro source-port? inet:port-number | bfd-diagnostic | |||
| +--ro dest-port? inet:port-number | | +--ro remote-diagnostic? iana-bfd-types: | |||
| +--ro session-running | bfd-diagnostic | |||
| | +--ro session-index? uint32 | | +--ro remote-authenticated? boolean | |||
| | +--ro local-state? bfd-state | | +--ro remote-authentication-type? iana-bfd-types: | |||
| | +--ro remote-state? bfd-state | bfd-auth-type | |||
| | +--ro local-diagnostic? bfd-diagnostic | | +--ro detection-mode? enumeration | |||
| | +--ro remote-diagnostic? bfd-diagnostic | | +--ro negotiated-tx-interval? uint32 | |||
| | +--ro detection-mode? enumeration | | +--ro negotiated-rx-interval? uint32 | |||
| | +--ro negotiated-tx-interval? uint32 | | +--ro detection-time? uint32 | |||
| | +--ro negotiated-rx-interval? uint32 | | +--ro echo-tx-interval-in-use? uint32 | |||
| | +--ro echo-tx-interval-in-use? uint32 | {bfd-echo-mode}? | |||
| | +--ro detection-time? uint32 | +--ro session-statistics | |||
| +--ro sesssion-statistics | +--ro create-time? yang:date-and-time | |||
| +--ro create-time? yang:date-and-time | +--ro last-down-time? yang:date-and-time | |||
| +--ro last-down-time? yang:date-and-time | +--ro last-up-time? yang:date-and-time | |||
| +--ro last-up-time? yang:date-and-time | +--ro down-count? uint32 | |||
| +--ro down-count? uint32 | +--ro admin-down-count? uint32 | |||
| +--ro admin-down-count? uint32 | +--ro receive-packet-count? uint64 | |||
| +--ro receive-packet-count? uint64 | +--ro send-packet-count? uint64 | |||
| +--ro send-packet-count? uint64 | +--ro receive-bad-packet? uint64 | |||
| +--ro receive-bad-packet? uint64 | +--ro send-failed-packet? uint64 | |||
| +--ro send-failed-packet? uint64 | ||||
| notifications: | notifications: | |||
| +---n bfd-multihop-notification | +---n bfd-multihop-notification | |||
| +--ro local-discr? bfd-discriminator | +--ro local-discr? bfd-discriminator | |||
| +--ro remote-discr? bfd-discriminator | +--ro remote-discr? bfd-discriminator | |||
| +--ro new-state? bfd-state | +--ro new-state? bfd-state | |||
| +--ro state-change-reason? string | +--ro state-change-reason? iana-bfd-types:bfd-diagnostic | |||
| +--ro time-in-previous-state? string | +--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-protocol. | |||
| The configuration and operational data for each BFD LAG session is | The configuration and operational data for each BFD LAG session is | |||
| under this "lag" node. The "lag" node can be mounted in a network | under this "lag" node. The "lag" node can be used in a network | |||
| device (top-level), in an LNE or in a network instance. | device (top-level), or mounted in an LNE or in a network instance. | |||
| 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 config | +--rw micro-bfd-ipv4-session-statistics | |||
| | +--rw session-cfg | | +--ro bfd-session-statistics | |||
| | +--rw sessions* [lag-name] | | +--ro session-count? uint32 | |||
| | +--rw lag-name if:interface-ref | | +--ro session-up-count? uint32 | |||
| | +--rw ipv4-dest-addr? inet:ipv4-address | | +--ro session-down-count? uint32 | |||
| | +--rw ipv6-dest-addr? inet:ipv6-address | | +--ro session-admin-down-count? uint32 | |||
| | +--rw local-multiplier? bfd-multiplier | +--rw micro-bfd-ipv6-session-statistics | |||
| | +--rw (interval-config-type)? | | +--ro bfd-session-statistics | |||
| | | +--:(tx-rx-intervals) | | +--ro session-count? uint32 | |||
| | | | +--rw desired-min-tx-interval uint32 | | +--ro session-up-count? uint32 | |||
| | | | +--rw required-min-rx-interval uint32 | | +--ro session-down-count? uint32 | |||
| | | +--:(single-interval) | | +--ro session-admin-down-count? uint32 | |||
| | | +--rw min-interval uint32 | +--rw sessions* [lag-name] | |||
| | +--rw demand-enabled? boolean | +--rw lag-name if:interface-ref | |||
| | +--rw admin-down? boolean | +--rw ipv4-dest-addr? inet:ipv4-address | |||
| | +--rw authentication-parms! {bfd-authentication}? | +--rw ipv6-dest-addr? inet:ipv6-address | |||
| | +--rw key-chain? kc:key-chain-ref | +--rw local-multiplier? bfd-multiplier | |||
| | +--rw replay-protection? identityref | +--rw (interval-config-type)? | |||
| +--ro oper | | +--:(tx-rx-intervals) | |||
| +--ro micro-bfd-ipv4-session-statistics | | | +--rw desired-min-tx-interval uint32 | |||
| | +--ro bfd-session-statistics | | | +--rw required-min-rx-interval uint32 | |||
| | +--ro session-count? uint32 | | +--:(single-interval) | |||
| | +--ro session-up-count? uint32 | | +--rw min-interval uint32 | |||
| | +--ro session-down-count? uint32 | +--rw demand-enabled? boolean {bfd-demand-mode}? | |||
| | +--ro session-admin-down-count? uint32 | +--rw admin-down? boolean | |||
| +--ro micro-bfd-ipv6-session-statistics | +--rw authentication-parms! {bfd-authentication}? | |||
| | +--ro bfd-session-statistics | | +--rw key-chain? kc:key-chain-ref | |||
| | +--ro session-count? uint32 | | +--rw replay-protection? identityref | |||
| | +--ro session-up-count? uint32 | +--rw use-ipv4? boolean | |||
| | +--ro session-down-count? uint32 | +--rw use-ipv6? boolean | |||
| | +--ro session-admin-down-count? uint32 | +--ro member-links* [member-link] | |||
| +--ro session-lag* [lag-name] | +--ro member-link if:interface-ref | |||
| +--ro lag-name if:interface-ref | +--ro micro-bfd-ipv4 | |||
| +--ro use-ipv4? boolean | | +--ro path-type? identityref | |||
| +--ro use-ipv6? boolean | | +--ro ip-encapsulation? boolean | |||
| +--ro member-links* [member-link] | | +--ro local-discriminator? bfd-discriminator | |||
| +--ro member-link if:interface-ref | | +--ro remote-discriminator? bfd-discriminator | |||
| +--ro micro-bfd-ipv4 | | +--ro remote-multiplier? bfd-multiplier | |||
| | +--ro path-type? identityref | | +--ro demand-capability? boolean {bfd-demand-mode}? | |||
| | +--ro local-discriminator? bfd-discriminator | | +--ro source-port? inet:port-number | |||
| | +--ro remote-discriminator? bfd-discriminator | | +--ro dest-port? inet:port-number | |||
| | +--ro remote-multiplier? bfd-multiplier | | +--ro session-running | |||
| | +--ro out-interface? if:interface-ref | | | +--ro session-index? uint32 | |||
| | +--ro demand-capability? boolean | | | +--ro local-state? bfd-state | |||
| | +--ro source-port? inet:port-number | | | +--ro remote-state? bfd-state | |||
| | +--ro dest-port? inet:port-number | | | +--ro local-diagnostic? iana-bfd-types: | |||
| | +--ro session-running | bfd-diagnostic | |||
| | | +--ro session-index? uint32 | | | +--ro remote-diagnostic? iana-bfd-types: | |||
| | | +--ro local-state? bfd-state | bfd-diagnostic | |||
| | | +--ro remote-state? bfd-state | | | +--ro remote-authenticated? boolean | |||
| | | +--ro local-diagnostic? bfd-diagnostic | | | +--ro remote-authentication-type? iana-bfd-types: | |||
| | | +--ro remote-diagnostic? bfd-diagnostic | bfd-auth-type | |||
| | | +--ro detection-mode? enumeration | | | +--ro detection-mode? enumeration | |||
| | | +--ro negotiated-tx-interval? uint32 | | | +--ro negotiated-tx-interval? uint32 | |||
| | | +--ro negotiated-rx-interval? uint32 | | | +--ro negotiated-rx-interval? uint32 | |||
| | | +--ro echo-tx-interval-in-use? uint32 | | | +--ro detection-time? uint32 | |||
| | | +--ro detection-time? uint32 | | | +--ro echo-tx-interval-in-use? uint32 | |||
| | +--ro sesssion-statistics | {bfd-echo-mode}? | |||
| | +--ro create-time? yang:date-and-time | | +--ro sesssion-statistics | |||
| | +--ro last-down-time? yang:date-and-time | | +--ro create-time? yang:date-and-time | |||
| | +--ro last-up-time? yang:date-and-time | | +--ro last-down-time? yang:date-and-time | |||
| | +--ro down-count? uint32 | | +--ro last-up-time? yang:date-and-time | |||
| | +--ro admin-down-count? uint32 | | +--ro down-count? uint32 | |||
| | +--ro receive-packet-count? uint64 | | +--ro admin-down-count? uint32 | |||
| | +--ro send-packet-count? uint64 | | +--ro receive-packet-count? uint64 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro send-packet-count? uint64 | |||
| | +--ro send-failed-packet? uint64 | | +--ro receive-bad-packet? uint64 | |||
| +--ro micro-bfd-ipv6 | | +--ro send-failed-packet? uint64 | |||
| +--ro path-type? identityref | +--ro micro-bfd-ipv6 | |||
| +--ro local-discriminator? bfd-discriminator | +--ro path-type? identityref | |||
| +--ro remote-discriminator? bfd-discriminator | +--ro ip-encapsulation? boolean | |||
| +--ro remote-multiplier? bfd-multiplier | +--ro local-discriminator? bfd-discriminator | |||
| +--ro out-interface? if:interface-ref | +--ro remote-discriminator? bfd-discriminator | |||
| +--ro demand-capability? boolean | +--ro remote-multiplier? bfd-multiplier | |||
| +--ro source-port? inet:port-number | +--ro demand-capability? boolean {bfd-demand-mode}? | |||
| +--ro dest-port? inet:port-number | +--ro source-port? inet:port-number | |||
| +--ro session-running | +--ro dest-port? inet:port-number | |||
| | +--ro session-index? uint32 | +--ro session-running | |||
| | +--ro local-state? bfd-state | | +--ro session-index? uint32 | |||
| | +--ro remote-state? bfd-state | | +--ro local-state? bfd-state | |||
| | +--ro local-diagnostic? bfd-diagnostic | | +--ro remote-state? bfd-state | |||
| | +--ro remote-diagnostic? bfd-diagnostic | | +--ro local-diagnostic? iana-bfd-types: | |||
| | +--ro detection-mode? enumeration | bfd-diagnostic | |||
| | +--ro negotiated-tx-interval? uint32 | | +--ro remote-diagnostic? iana-bfd-types: | |||
| | +--ro negotiated-rx-interval? uint32 | bfd-diagnostic | |||
| | +--ro echo-tx-interval-in-use? uint32 | | +--ro remote-authenticated? boolean | |||
| | +--ro detection-time? uint32 | | +--ro remote-authentication-type? iana-bfd-types: | |||
| +--ro sesssion-statistics | bfd-auth-type | |||
| +--ro create-time? yang:date-and-time | | +--ro detection-mode? enumeration | |||
| +--ro last-down-time? yang:date-and-time | | +--ro negotiated-tx-interval? uint32 | |||
| +--ro last-up-time? yang:date-and-time | | +--ro negotiated-rx-interval? uint32 | |||
| +--ro down-count? uint32 | | +--ro detection-time? uint32 | |||
| +--ro admin-down-count? uint32 | | +--ro echo-tx-interval-in-use? uint32 | |||
| +--ro receive-packet-count? uint64 | {bfd-echo-mode}? | |||
| +--ro send-packet-count? uint64 | +--ro sesssion-statistics | |||
| +--ro receive-bad-packet? uint64 | +--ro create-time? yang:date-and-time | |||
| +--ro send-failed-packet? uint64 | +--ro last-down-time? yang:date-and-time | |||
| notifications: | +--ro last-up-time? yang:date-and-time | |||
| +---n bfd-lag-notification | +--ro down-count? uint32 | |||
| +--ro local-discr? bfd-discriminator | +--ro admin-down-count? uint32 | |||
| +--ro remote-discr? bfd-discriminator | +--ro receive-packet-count? uint64 | |||
| +--ro new-state? bfd-state | +--ro send-packet-count? uint64 | |||
| +--ro state-change-reason? string | +--ro receive-bad-packet? uint64 | |||
| +--ro time-in-previous-state? string | +--ro send-failed-packet? uint64 | |||
| +--ro dest-addr? inet:ip-address | notifications: | |||
| +--ro source-addr? inet:ip-address | +---n bfd-lag-notification | |||
| +--ro session-index? uint32 | +--ro local-discr? bfd-discriminator | |||
| +--ro path-type? identityref | +--ro remote-discr? bfd-discriminator | |||
| +--ro lag-name? if:interface-ref | +--ro new-state? bfd-state | |||
| +--ro member-link? if:interface-ref | +--ro state-change-reason? iana-bfd-types:bfd-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 lag-name? 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 model we support multiple BFD sessions per MPLS | In the operational model we support multiple BFD sessions per MPLS | |||
| FEC (ECMP), the local discriminator is used as key. The "mpls" node | FEC (ECMP), the local discriminator is used as key. The "mpls" node | |||
| can be mounted in a network device (top-level), in an LNE or in a | can be used in a network device (top-level), or mounted in an LNE or | |||
| network instance. | in a 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 | |||
| +--rw config | +--ro bfd-session-statistics | |||
| | +--rw egress | | +--ro session-count? uint32 | |||
| | | +--rw local-multiplier? bfd-multiplier | | +--ro session-up-count? uint32 | |||
| | | +--rw (interval-config-type)? | | +--ro session-down-count? uint32 | |||
| | | | +--:(tx-rx-intervals) | | +--ro session-admin-down-count? uint32 | |||
| | | | | +--rw desired-min-tx-interval uint32 | +--rw egress | |||
| | | | | +--rw required-min-rx-interval uint32 | | +--rw local-multiplier? bfd-multiplier | |||
| | | | +--:(single-interval) | | +--rw (interval-config-type)? | |||
| | | | +--rw min-interval uint32 | | | +--:(tx-rx-intervals) | |||
| | | +--rw authentication-parms! {bfd-authentication}? | | | | +--rw desired-min-tx-interval uint32 | |||
| | | +--rw key-chain? kc:key-chain-ref | | | | +--rw required-min-rx-interval uint32 | |||
| | | +--rw replay-protection? identityref | | | +--:(single-interval) | |||
| | +--rw session-cfg | | | +--rw min-interval uint32 | |||
| | +--rw sessions* [mpls-fec] | | +--rw authentication-parms! {bfd-authentication}? | |||
| | +--rw mpls-fec inet:ip-address | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw local-multiplier? bfd-multiplier | | +--rw replay-protection? identityref | |||
| | +--rw (interval-config-type)? | +--rw session-group* [mpls-fec] | |||
| | | +--:(tx-rx-intervals) | +--rw mpls-fec inet:ip-prefix | |||
| | | | +--rw desired-min-tx-interval uint32 | +--rw local-multiplier? bfd-multiplier | |||
| | | | +--rw required-min-rx-interval uint32 | +--rw (interval-config-type)? | |||
| | | +--:(single-interval) | | +--:(tx-rx-intervals) | |||
| | | +--rw min-interval uint32 | | | +--rw desired-min-tx-interval uint32 | |||
| | +--rw demand-enabled? boolean | | | +--rw required-min-rx-interval uint32 | |||
| | +--rw admin-down? boolean | | +--:(single-interval) | |||
| | +--rw authentication-parms! {bfd-authentication}? | | +--rw min-interval uint32 | |||
| | +--rw key-chain? kc:key-chain-ref | +--rw demand-enabled? boolean {bfd-demand-mode}? | |||
| | +--rw replay-protection? identityref | +--rw admin-down? boolean | |||
| +--ro oper | +--rw authentication-parms! {bfd-authentication}? | |||
| +--ro bfd-session-statistics | | +--rw key-chain? kc:key-chain-ref | |||
| | +--ro session-count? uint32 | | +--rw replay-protection? identityref | |||
| | +--ro session-up-count? uint32 | +--ro sessions* | |||
| | +--ro session-down-count? uint32 | +--ro path-type? identityref | |||
| | +--ro session-admin-down-count? uint32 | +--ro ip-encapsulation? boolean | |||
| +--ro session-group* [mpls-fec] | +--ro local-discriminator? bfd-discriminator | |||
| +--ro mpls-fec inet:ip-address | +--ro remote-discriminator? bfd-discriminator | |||
| +--ro sessions* [local-discriminator] | +--ro remote-multiplier? bfd-multiplier | |||
| +--ro path-type? identityref | +--ro demand-capability? boolean {bfd-demand-mode}? | |||
| +--ro local-discriminator bfd-discriminator | +--ro source-port? inet:port-number | |||
| +--ro remote-discriminator? bfd-discriminator | +--ro dest-port? inet:port-number | |||
| +--ro remote-multiplier? bfd-multiplier | +--ro session-running | |||
| +--ro out-interface? if:interface-ref | | +--ro session-index? uint32 | |||
| +--ro demand-capability? boolean | | +--ro local-state? bfd-state | |||
| +--ro source-port? inet:port-number | | +--ro remote-state? bfd-state | |||
| +--ro dest-port? inet:port-number | | +--ro local-diagnostic? iana-bfd-types: | |||
| +--ro session-running | bfd-diagnostic | |||
| | +--ro session-index? uint32 | | +--ro remote-diagnostic? iana-bfd-types: | |||
| | +--ro local-state? bfd-state | bfd-diagnostic | |||
| | +--ro remote-state? bfd-state | | +--ro remote-authenticated? boolean | |||
| | +--ro local-diagnostic? bfd-diagnostic | | +--ro remote-authentication-type? iana-bfd-types: | |||
| | +--ro remote-diagnostic? bfd-diagnostic | bfd-auth-type | |||
| | +--ro detection-mode? enumeration | | +--ro detection-mode? enumeration | |||
| | +--ro negotiated-tx-interval? uint32 | | +--ro negotiated-tx-interval? uint32 | |||
| | +--ro negotiated-rx-interval? uint32 | | +--ro negotiated-rx-interval? uint32 | |||
| | +--ro echo-tx-interval-in-use? uint32 | | +--ro detection-time? uint32 | |||
| | +--ro detection-time? uint32 | | +--ro echo-tx-interval-in-use? uint32 | |||
| +--ro sesssion-statistics | {bfd-echo-mode}? | |||
| | +--ro create-time? yang:date-and-time | +--ro sesssion-statistics | |||
| | +--ro last-down-time? yang:date-and-time | | +--ro create-time? yang:date-and-time | |||
| | +--ro last-up-time? yang:date-and-time | | +--ro last-down-time? yang:date-and-time | |||
| | +--ro down-count? uint32 | | +--ro last-up-time? yang:date-and-time | |||
| | +--ro admin-down-count? uint32 | | +--ro down-count? uint32 | |||
| | +--ro receive-packet-count? uint64 | | +--ro admin-down-count? uint32 | |||
| | +--ro send-packet-count? uint64 | | +--ro receive-packet-count? uint64 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro send-packet-count? uint64 | |||
| | +--ro send-failed-packet? uint64 | | +--ro receive-bad-packet? uint64 | |||
| +--ro mpls-dest-address? inet:ip-address | | +--ro send-failed-packet? uint64 | |||
| notifications: | +--ro mpls-dest-address? inet:ip-address | |||
| +---n bfd-mpls-notification | notifications: | |||
| +--ro local-discr? bfd-discriminator | +---n bfd-mpls-notification | |||
| +--ro remote-discr? bfd-discriminator | +--ro local-discr? bfd-discriminator | |||
| +--ro new-state? bfd-state | +--ro remote-discr? bfd-discriminator | |||
| +--ro state-change-reason? string | +--ro new-state? bfd-state | |||
| +--ro time-in-previous-state? string | +--ro state-change-reason? iana-bfd-types:bfd-diagnostic | |||
| +--ro dest-addr? inet:ip-address | +--ro time-of-last-state-change? yang:date-and-time | |||
| +--ro source-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| +--ro session-index? uint32 | +--ro source-addr? inet:ip-address | |||
| +--ro path-type? identityref | +--ro session-index? uint32 | |||
| +--ro mpls-dest-address? inet:ip-address | +--ro path-type? identityref | |||
| +--ro mpls-dest-address? inet:ip-address | ||||
| 2.10. BFD over MPLS-TE hierarchy | 2.10. BFD over MPLS-TE hierarchy | |||
| The MPLS-TE YANG model [I-D.ietf-teas-yang-te] is augmented. BFD is | YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is | |||
| configured per MPLS-TE tunnel, and BFD session operational data is | augmented. BFD is configured per MPLS-TE tunnel, and BFD session | |||
| provided per MPLS-TE LSP. | operational 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 config | ||||
| | +--rw egress | ||||
| | +--rw local-multiplier? bfd-multiplier | ||||
| | +--rw (interval-config-type)? | ||||
| | | +--:(tx-rx-intervals) | ||||
| | | | +--rw desired-min-tx-interval uint32 | ||||
| | | | +--rw required-min-rx-interval uint32 | ||||
| | | +--:(single-interval) | ||||
| | | +--rw min-interval uint32 | ||||
| | +--rw authentication-parms! {bfd-authentication}? | ||||
| | +--rw key-chain? kc:key-chain-ref | ||||
| | +--rw replay-protection? identityref | ||||
| +--ro oper | ||||
| +--ro bfd-session-statistics | ||||
| +--ro session-count? uint32 | ||||
| +--ro session-up-count? uint32 | ||||
| +--ro session-down-count? uint32 | ||||
| +--ro session-admin-down-count? uint32 | ||||
| augment /te:te/te:tunnels/te:tunnel/te:config: | ||||
| +--rw local-multiplier? bfd-multiplier | ||||
| +--rw (interval-config-type)? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval uint32 | ||||
| | | +--rw required-min-rx-interval uint32 | ||||
| | +--:(single-interval) | ||||
| | +--rw min-interval uint32 | ||||
| +--rw demand-enabled? boolean | ||||
| +--rw admin-down? boolean | ||||
| +--rw authentication-parms! {bfd-authentication}? | ||||
| | +--rw key-chain? kc:key-chain-ref | ||||
| | +--rw replay-protection? identityref | ||||
| +--rw encap? identityref | ||||
| augment /te:te/te:lsps-state/te:lsp: | ||||
| +--ro path-type? identityref | ||||
| +--ro local-discriminator? bfd-discriminator | ||||
| +--ro remote-discriminator? bfd-discriminator | ||||
| +--ro remote-multiplier? bfd-multiplier | ||||
| +--ro out-interface? if:interface-ref | ||||
| +--ro demand-capability? boolean | ||||
| +--ro source-port? inet:port-number | ||||
| +--ro dest-port? inet:port-number | ||||
| +--ro session-running | ||||
| | +--ro session-index? uint32 | ||||
| | +--ro local-state? bfd-state | ||||
| | +--ro remote-state? bfd-state | ||||
| | +--ro local-diagnostic? bfd-diagnostic | ||||
| | +--ro remote-diagnostic? bfd-diagnostic | ||||
| | +--ro detection-mode? enumeration | ||||
| | +--ro negotiated-tx-interval? uint32 | ||||
| | +--ro negotiated-rx-interval? uint32 | ||||
| | +--ro echo-tx-interval-in-use? uint32 | ||||
| | +--ro detection-time? uint32 | ||||
| +--ro sesssion-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? uint32 | ||||
| | +--ro admin-down-count? uint32 | ||||
| | +--ro receive-packet-count? uint64 | ||||
| | +--ro send-packet-count? uint64 | ||||
| | +--ro receive-bad-packet? uint64 | ||||
| | +--ro send-failed-packet? uint64 | ||||
| +--ro mpls-dest-address? inet:ip-address | ||||
| notifications: | ||||
| +---n bfd-mpls-te-notification | ||||
| +--ro local-discr? bfd-discriminator | ||||
| +--ro remote-discr? bfd-discriminator | ||||
| +--ro new-state? bfd-state | ||||
| +--ro state-change-reason? string | ||||
| +--ro time-in-previous-state? string | ||||
| +--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. Examples | module: ietf-bfd-mpls-te | |||
| augment /rt:routing/rt:control-plane-protocols | ||||
| /rt:control-plane-protocol/bfd:bfd: | ||||
| +--rw mpls-te | ||||
| +--rw config | ||||
| | +--rw egress | ||||
| | +--rw local-multiplier? bfd-multiplier | ||||
| | +--rw (interval-config-type)? | ||||
| | | +--:(tx-rx-intervals) | ||||
| | | | +--rw desired-min-tx-interval uint32 | ||||
| | | | +--rw required-min-rx-interval uint32 | ||||
| | | +--:(single-interval) | ||||
| | | +--rw min-interval uint32 | ||||
| | +--rw authentication-parms! {bfd-authentication}? | ||||
| | +--rw key-chain? kc:key-chain-ref | ||||
| | +--rw replay-protection? identityref | ||||
| +--ro oper | ||||
| +--ro bfd-session-statistics | ||||
| +--ro session-count? uint32 | ||||
| +--ro session-up-count? uint32 | ||||
| +--ro session-down-count? uint32 | ||||
| +--ro session-admin-down-count? uint32 | ||||
| augment /te:te/te:tunnels/te:tunnel/te:config: | ||||
| +--rw local-multiplier? bfd-multiplier | ||||
| +--rw (interval-config-type)? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval uint32 | ||||
| | | +--rw required-min-rx-interval uint32 | ||||
| | +--:(single-interval) | ||||
| | +--rw min-interval uint32 | ||||
| +--rw demand-enabled? boolean {bfd-demand-mode}? | ||||
| +--rw admin-down? boolean | ||||
| +--rw authentication-parms! {bfd-authentication}? | ||||
| | +--rw key-chain? kc:key-chain-ref | ||||
| | +--rw replay-protection? identityref | ||||
| +--rw encap? identityref | ||||
| augment /te:te/te:lsps-state/te:lsp: | ||||
| +--ro path-type? identityref | ||||
| +--ro ip-encapsulation? boolean | ||||
| +--ro local-discriminator? bfd-discriminator | ||||
| +--ro remote-discriminator? bfd-discriminator | ||||
| +--ro remote-multiplier? bfd-multiplier | ||||
| +--ro demand-capability? boolean {bfd-demand-mode}? | ||||
| +--ro source-port? inet:port-number | ||||
| +--ro dest-port? inet:port-number | ||||
| +--ro session-running | ||||
| | +--ro session-index? uint32 | ||||
| | +--ro local-state? bfd-state | ||||
| | +--ro remote-state? bfd-state | ||||
| | +--ro local-diagnostic? iana-bfd-types:bfd-diagnostic | ||||
| | +--ro remote-diagnostic? iana-bfd-types:bfd-diagnostic | ||||
| | +--ro remote-authenticated? boolean | ||||
| | +--ro remote-authentication-type? iana-bfd-types:bfd-auth-type | ||||
| {bfd-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 {bfd-echo-mode}? | ||||
| +--ro sesssion-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? uint32 | ||||
| | +--ro admin-down-count? uint32 | ||||
| | +--ro receive-packet-count? uint64 | ||||
| | +--ro send-packet-count? uint64 | ||||
| | +--ro receive-bad-packet? uint64 | ||||
| | +--ro send-failed-packet? uint64 | ||||
| +--ro mpls-dest-address? inet:ip-address | ||||
| notifications: | ||||
| +---n bfd-mpls-te-notification | ||||
| +--ro local-discr? bfd-discriminator | ||||
| +--ro remote-discr? bfd-discriminator | ||||
| +--ro new-state? bfd-state | ||||
| +--ro state-change-reason? iana-bfd-types:bfd-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.12. Interaction with other YANG modules | 2.11. Interaction with other YANG modules | |||
| Generic YANG Data Model for Connectionless OAM protocols | ||||
| [I-D.ietf-lime-yang-connectionless-oam] describes how the LIME | [I-D.ietf-lime-yang-connectionless-oam] describes how the 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.12.1. Module ietf-interfaces | 2.11.1. Module ietf-interfaces | |||
| The following boolean configuration is defined in the "ietf- | The following boolean configuration is defined in A YANG Data Model | |||
| interfaces" YANG module [RFC7223]: | for Interface Management [RFC7223]: | |||
| /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 transmitted or received on that interface. | be transmitted or received on that interface. | |||
| 2.12.2. Module ietf-ip | 2.11.2. Module ietf-ip | |||
| The following boolean configuration is defined in the "ietf-ip" YANG | The following boolean configuration is defined in A YANG Data Model | |||
| module [RFC7277]: | for IP Management [RFC7277]: | |||
| /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 be transmitted or received on that interface. | can 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 be transmitted or received on that interface. | can 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 be transmitted or received on that interface. | can 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 be transmitted or received on that interface. | can be transmitted or received on that interface. | |||
| 2.12.3. Module ietf-mpls | 2.11.3. Module ietf-mpls | |||
| The following boolean configuration is defined in the "ietf-mpls" | The following boolean configuration is defined in A YANG Data Model | |||
| YANG module [I-D.ietf-mpls-base-yang]: | for MPLS Base [I-D.ietf-mpls-base-yang]: | |||
| /rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:enabled | /rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:enabled | |||
| If this configuration is set to "false", no BFD MPLS packets | If this configuration is set to "false", no BFD MPLS packets | |||
| can be transmitted or received on that interface. | can be transmitted or received on that interface. | |||
| 2.12.4. Module ietf-te | 2.11.4. Module ietf-te | |||
| The following configuration is defined in the "ietf-te" YANG module | The following configuration is defined in the "ietf-te" YANG module | |||
| [I-D.ietf-teas-yang-te]: | 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- | /ietf-te:te/ietf-te:tunnels/ietf-te:tunnel/ietf-te:config/ietf- | |||
| te:admin-status | te:admin-status | |||
| If this configuration is not set to "state-up", no BFD MPLS | If this configuration is not set to "state-up", no BFD MPLS | |||
| packets can be transmitted or received on that tunnel. | packets can be transmitted or received on that tunnel. | |||
| 2.13. BFD top-level Yang Module | 2.12. IANA BFD YANG Module | |||
| <CODE BEGINS> file "ietf-bfd@2017-03-07.yang" | <CODE BEGINS> file "iana-bfd-types@2017-06-30.yang" | |||
| module ietf-bfd { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; | ||||
| // replace with IANA namespace when assigned | ||||
| prefix "bfd"; | ||||
| import ietf-interfaces { | module iana-bfd-types { | |||
| prefix "if"; | namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | |||
| } | ||||
| import ietf-inet-types { | prefix "iana-bfd-types"; | |||
| prefix "inet"; | ||||
| } | ||||
| import ietf-yang-types { | organization "IANA"; | |||
| prefix "yang"; | ||||
| } | ||||
| import ietf-routing { | contact | |||
| prefix "rt"; | " Internet Assigned Numbers Authority | |||
| } | Postal: ICANN | |||
| 4676 Admiralty Way, Suite 330 | ||||
| Marina del Rey, CA 90292 | ||||
| import ietf-key-chain { | Tel: +1 310 823 9358 | |||
| prefix "kc"; | <mailto:iana@iana.org>"; | |||
| } | ||||
| organization "IETF BFD Working Group"; | description | |||
| "This module contains a collection of YANG data types | ||||
| considered defined by IANA and used for BFD. | ||||
| contact | Copyright (c) 2017 IETF Trust and the persons | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | identified as authors of the code. All rights reserved. | |||
| WG List: <rtg-bfd@ietf.org> | ||||
| WG Chair: Jeff Haas | ||||
| WG Chair: Reshad Rahman | ||||
| Editor: Lianshu Zheng and Reshad Rahman"; | ||||
| description | Redistribution and use in source and binary forms, with or | |||
| "This module contains the YANG definition for BFD parameters as | without modification, is permitted pursuant to, and subject | |||
| per RFC5880. | 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). | ||||
| Copyright (c) 2017 IETF Trust and the persons | This version of this YANG module is part of RFC XXXX; see | |||
| identified as authors of the code. All rights reserved. | the RFC itself for full legal notices."; | |||
| Redistribution and use in source and binary forms, with or | revision 2017-06-30 { | |||
| without modification, is permitted pursuant to, and subject | description "Initial revision."; | |||
| to the license terms contained in, the Simplified BSD License | reference "RFC XXXX: IANA BFD YANG Data Types."; | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | } | |||
| Relating to IETF Documents | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| (http://trustee.ietf.org/license-info). | // note | |||
| This version of this YANG module is part of RFC XXXX; see | typedef bfd-diagnostic { | |||
| the RFC itself for full legal notices."; | 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 RFC5880. Range is 0 to 31."; | ||||
| } | ||||
| revision 2017-03-07 { | typedef bfd-auth-type { | |||
| description "Initial revision."; | type enumeration { | |||
| reference "RFC XXXX: A YANG data model for BFD"; | 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 RFC5880. Range is 0 to | ||||
| 255."; | ||||
| } | ||||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | } | |||
| // note | ||||
| identity bfdv1 { | <CODE ENDS> | |||
| base "rt:control-plane-protocol"; | ||||
| description "BFD protocol version 1 as per RFC5880."; | ||||
| } | ||||
| typedef bfd-discriminator { | 2.13. BFD top-level YANG Module | |||
| type uint32 { | ||||
| range 1..4294967295; | <CODE BEGINS> file "ietf-bfd@2017-06-30.yang" | |||
| module ietf-bfd { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; | ||||
| prefix "bfd"; | ||||
| import iana-bfd-types { | ||||
| prefix "iana-bfd-types"; | ||||
| } | ||||
| import ietf-inet-types { | ||||
| prefix "inet"; | ||||
| } | ||||
| import ietf-yang-types { | ||||
| prefix "yang"; | ||||
| } | ||||
| import ietf-routing { | ||||
| prefix "rt"; | ||||
| } | ||||
| import ietf-key-chain { | ||||
| prefix "kc"; | ||||
| } | ||||
| 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 as | ||||
| per RFC5880. | ||||
| Copyright (c) 2017 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 2017-06-30 { | ||||
| description "Initial revision."; | ||||
| reference "RFC XXXX: A YANG data model for BFD"; | ||||
| } | ||||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
| // note | ||||
| identity bfdv1 { | ||||
| base "rt:control-plane-protocol"; | ||||
| description "BFD protocol version 1 as per RFC5880."; | ||||
| } | ||||
| typedef bfd-discriminator { | ||||
| type uint32 { | ||||
| range 1..4294967295; | ||||
| } | ||||
| description "BFD discriminator"; | ||||
| } | ||||
| typedef bfd-state { | ||||
| type enumeration { | ||||
| 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 discriminator"; | ||||
| } | } | |||
| description "BFD state as defined in RFC5880"; | ||||
| } | ||||
| typedef bfd-diagnostic { | typedef bfd-multiplier { | |||
| type enumeration { | type uint8 { | |||
| enum none { | range 1..255; | |||
| value 0; | } | |||
| description "None"; | description "Multiplier"; | |||
| } | } | |||
| enum controlExpiry { | typedef hops { | |||
| value 1; | type uint8 { | |||
| description "Control timer expiry"; | range 1..255; | |||
| } | } | |||
| enum echoFailed { | description | |||
| value 2; | "This corresponds to Time To Live for IPv4 and corresponds to hop | |||
| description "Echo failure"; | limit for IPv6"; | |||
| } | } | |||
| enum nborDown { | ||||
| value 3; | /* | |||
| description "Neighbor down"; | * Identity definitions | |||
| } | */ | |||
| enum fwdingReset { | identity bfd-path-type { | |||
| value 4; | description | |||
| description "Forwarding reset"; | "Base identity for BFD path type. The session type indicates | |||
| } | the type of path on which BFD is running"; | |||
| enum pathDown { | } | |||
| value 5; | identity bfd-path-ip-sh { | |||
| description "Path down"; | base bfd-path-type; | |||
| } | description "BFD on IP single hop"; | |||
| enum concPathDown { | } | |||
| value 6; | identity bfd-path-ip-mh { | |||
| description "Concatenated path down"; | base bfd-path-type; | |||
| } | description "BFD on IP multi hop"; | |||
| enum adminDown { | } | |||
| value 7; | identity bfd-path-mpls-te { | |||
| description "Admin down"; | base bfd-path-type; | |||
| description "BFD on MPLS Traffic Engineering"; | ||||
| } | ||||
| identity bfd-path-mpls-lsp { | ||||
| base bfd-path-type; | ||||
| description "BFD on MPLS Label Switched Path"; | ||||
| } | ||||
| identity bfd-path-lag { | ||||
| base bfd-path-type; | ||||
| description "Micro-BFD on LAG member links"; | ||||
| } | ||||
| identity bfd-encap-type { | ||||
| description | ||||
| "Base identity for BFD encapsulation type."; | ||||
| } | ||||
| identity bfd-encap-ip { | ||||
| base bfd-encap-type; | ||||
| description "BFD with IP encapsulation."; | ||||
| } | ||||
| identity bfd-auth-replay-protection { | ||||
| description | ||||
| "Base identity for BFD authentication replay protection. " + | ||||
| "See section 6.7 of RFC5880."; | ||||
| } | ||||
| identity bfd-auth-replay-protection-non-meticulous { | ||||
| base bfd-auth-replay-protection; | ||||
| description "Non-meticulous (see section 6.7.3 of RFC5880)"; | ||||
| } | ||||
| identity bfd-auth-replay-protection-meticulous { | ||||
| base bfd-auth-replay-protection; | ||||
| description "Meticulous (see section 6.7.3 of RFC5880)"; | ||||
| } | ||||
| /* | ||||
| * Feature definitions. | ||||
| */ | ||||
| feature bfd-authentication { | ||||
| description "BFD authentication supported"; | ||||
| } | } | |||
| enum reverseConcPathDown { | ||||
| value 8; | feature bfd-demand-mode { | |||
| description "Reverse concatenated path down"; | description "BFD demand mode supported"; | |||
| } | ||||
| feature bfd-echo-mode { | ||||
| description "BFD echo mode supported"; | ||||
| } | ||||
| /* | ||||
| * Groupings | ||||
| */ | ||||
| grouping bfd-auth-parms { | ||||
| description | ||||
| "Grouping for BFD authentication parameters | ||||
| (see section 6.7 of RFC5880)."; | ||||
| container authentication-parms { | ||||
| if-feature bfd-authentication; | ||||
| presence | ||||
| "Enables BFD authentication (see section 6.7 of RFC5880)."; | ||||
| description "Parameters for BFD authentication"; | ||||
| leaf key-chain { | ||||
| type kc:key-chain-ref; | ||||
| description "Name of key-chain"; | ||||
| } | ||||
| leaf replay-protection { | ||||
| type identityref { | ||||
| base bfd-auth-replay-protection; | ||||
| } | } | |||
| description | ||||
| "Protection against replays"; | ||||
| } | } | |||
| description "BFD diagnostic"; | ||||
| } | } | |||
| } | ||||
| typedef bfd-state { | grouping bfd-grouping-base-cfg-parms { | |||
| type enumeration { | description "BFD grouping for base config parameters"; | |||
| enum adminDown { | leaf local-multiplier { | |||
| value 0; | type bfd-multiplier; | |||
| description "admindown"; | default 3; | |||
| } | description "Multiplier transmitted by local system"; | |||
| enum down { | } | |||
| value 1; | ||||
| description "down"; | choice interval-config-type { | |||
| description | ||||
| "Two interval values or 1 value used for both tx and rx"; | ||||
| case tx-rx-intervals { | ||||
| leaf desired-min-tx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| mandatory true; | ||||
| description | ||||
| "Desired minimum transmit interval of control packets"; | ||||
| } | } | |||
| enum init { | ||||
| value 2; | leaf required-min-rx-interval { | |||
| description "init"; | type uint32; | |||
| units microseconds; | ||||
| mandatory true; | ||||
| description | ||||
| "Required minimum receive interval of control packets"; | ||||
| } | } | |||
| enum up { | } | |||
| value 3; | case single-interval { | |||
| description "up"; | leaf min-interval { | |||
| type uint32; | ||||
| units microseconds; | ||||
| mandatory true; | ||||
| description | ||||
| "Desired minimum transmit interval and required " + | ||||
| "minimum receive interval of control packets"; | ||||
| } | } | |||
| } | } | |||
| description "BFD state"; | ||||
| } | } | |||
| } | ||||
| grouping bfd-grouping-common-cfg-parms { | ||||
| description "BFD grouping for common config parameters"; | ||||
| typedef bfd-multiplier { | uses bfd-grouping-base-cfg-parms; | |||
| type uint8 { | ||||
| range 1..255; | ||||
| } | ||||
| description "Multiplier"; | ||||
| } | ||||
| typedef ttl { | leaf demand-enabled { | |||
| type uint8 { | if-feature bfd-demand-mode; | |||
| range 1..255; | type boolean; | |||
| } | default false; | |||
| description "Time To Live"; | description "To enable demand mode"; | |||
| } | } | |||
| identity bfd-path-type { | leaf admin-down { | |||
| type boolean; | ||||
| default false; | ||||
| description | description | |||
| "Base identity for BFD path type. The session type indicates | "Is the BFD session administratively down"; | |||
| the type of path on which BFD is running"; | ||||
| } | ||||
| identity bfd-path-ip-sh { | ||||
| base bfd-path-type; | ||||
| description "BFD on IP single hop"; | ||||
| } | ||||
| identity bfd-path-ip-mh { | ||||
| base bfd-path-type; | ||||
| description "BFD on IP multi hop"; | ||||
| } | } | |||
| identity bfd-path-mpls-te { | uses bfd-auth-parms; | |||
| base bfd-path-type; | } | |||
| description "BFD on MPLS Traffic Engineering"; | ||||
| grouping bfd-grouping-echo-cfg-parms { | ||||
| description "BFD grouping for echo config parameters"; | ||||
| leaf desired-min-echo-tx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| default 0; | ||||
| description "Desired minumum transmit interval for echo"; | ||||
| } | } | |||
| identity bfd-path-mpls-lsp { | ||||
| base bfd-path-type; | leaf required-min-echo-rx-interval { | |||
| description "BFD on MPLS Label Switched Path"; | type uint32; | |||
| units microseconds; | ||||
| default 0; | ||||
| description "Required minimum receive interval for echo"; | ||||
| } | } | |||
| identity bfd-path-lag { | } | |||
| base bfd-path-type; | ||||
| description "Micro-BFD on LAG member links"; | grouping bfd-client-base-cfg-parms { | |||
| description | ||||
| "BFD grouping which could be used by a protocol which | ||||
| is a client of BFD to enable its use of BFD"; | ||||
| container bfd-cfg { | ||||
| description "BFD configuration"; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| default false; | ||||
| description "True if BFD is enabled"; | ||||
| } | ||||
| } | } | |||
| } | ||||
| identity bfd-encap-type { | grouping bfd-all-session { | |||
| description "BFD session operational information"; | ||||
| leaf path-type { | ||||
| type identityref { | ||||
| base bfd-path-type; | ||||
| } | ||||
| config "false"; | ||||
| description | description | |||
| "Base identity for BFD encapsulation type."; | "BFD session type, this indicates the path type that BFD is | |||
| running on"; | ||||
| } | } | |||
| identity bfd-encap-ip { | leaf ip-encapsulation { | |||
| base bfd-encap-type; | type boolean; | |||
| description "BFD with IP encapsulation."; | config "false"; | |||
| description "Whether BFD encapsulation uses IP"; | ||||
| } | } | |||
| leaf local-discriminator { | ||||
| feature bfd-authentication { | type bfd-discriminator; | |||
| description "BFD authentication supported"; | config "false"; | |||
| description "Local discriminator"; | ||||
| } | } | |||
| leaf remote-discriminator { | ||||
| identity bfd-auth-replay-protection { | type bfd-discriminator; | |||
| description | config "false"; | |||
| "Base identity for BFD authentication replay protection"; | description "Remote discriminator"; | |||
| } | } | |||
| identity bfd-auth-replay-protection-non-meticulous { | leaf remote-multiplier { | |||
| base bfd-auth-replay-protection; | type bfd-multiplier; | |||
| description "Non-meticulous (see RFC5880)"; | config "false"; | |||
| description "Remote multiplier"; | ||||
| } | } | |||
| identity bfd-auth-replay-protection-meticulous { | leaf demand-capability { | |||
| base bfd-auth-replay-protection; | if-feature bfd-demand-mode; | |||
| description "Meticulous (see RFC5880)"; | type boolean; | |||
| config "false"; | ||||
| description "Local demand mode capability"; | ||||
| } | } | |||
| leaf source-port { | ||||
| grouping bfd-auth-parms { | when "../ip-encapsulation = 'true'" { | |||
| description | description | |||
| "Grouping for BFD authentication parameters | "Source port valid only when IP encapsulation is used"; | |||
| (see section 6.7 of RFC5880)."; | ||||
| container authentication-parms { | ||||
| if-feature bfd-authentication; | ||||
| presence | ||||
| "Enables BFD authentication (see section 6.7 of RFC5880)."; | ||||
| description "Parameters for BFD authentication"; | ||||
| leaf key-chain { | ||||
| type kc:key-chain-ref; | ||||
| description "Name of key-chain"; | ||||
| } | ||||
| leaf replay-protection { | ||||
| type identityref { | ||||
| base bfd-auth-replay-protection; | ||||
| } | ||||
| description | ||||
| "Protection against replays"; | ||||
| } | ||||
| } | } | |||
| 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"; | ||||
| } | } | |||
| grouping bfd-grouping-base-cfg-parms { | container session-running { | |||
| description "BFD grouping for base config parameters"; | config "false"; | |||
| leaf local-multiplier { | description "BFD session running information"; | |||
| type bfd-multiplier; | leaf session-index { | |||
| default 3; | type uint32; | |||
| description "Multiplier transmitted by local system"; | description | |||
| "An index used to uniquely identify BFD sessions"; | ||||
| } | ||||
| leaf local-state { | ||||
| type bfd-state; | ||||
| description "Local state"; | ||||
| } | } | |||
| leaf remote-state { | ||||
| type bfd-state; | ||||
| description "Remote state"; | ||||
| } | ||||
| leaf local-diagnostic { | ||||
| type iana-bfd-types:bfd-diagnostic; | ||||
| description "Local diagnostic"; | ||||
| } | ||||
| leaf remote-diagnostic { | ||||
| type iana-bfd-types:bfd-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"; | ||||
| choice interval-config-type { | } | |||
| if-feature bfd-authentication; | ||||
| type iana-bfd-types:bfd-auth-type; | ||||
| description | description | |||
| "Two interval values or 1 value used for both tx and rx"; | "Authentication type of incoming BFD control packets"; | |||
| case tx-rx-intervals { | } | |||
| leaf desired-min-tx-interval { | leaf detection-mode { | |||
| type uint32; | type enumeration { | |||
| units microseconds; | enum async-with-echo { | |||
| mandatory true; | value "1"; | |||
| description | description "Async with echo"; | |||
| "Desired minimum transmit interval of control packets"; | ||||
| } | } | |||
| enum async-without-echo { | ||||
| leaf required-min-rx-interval { | value "2"; | |||
| type uint32; | description "Async without echo"; | |||
| units microseconds; | ||||
| mandatory true; | ||||
| description | ||||
| "Required minimum receive interval of control packets"; | ||||
| } | } | |||
| } | enum demand-with-echo { | |||
| case single-interval { | value "3"; | |||
| leaf min-interval { | description "Demand with echo"; | |||
| type uint32; | } | |||
| units microseconds; | enum demand-without-echo { | |||
| mandatory true; | value "4"; | |||
| description | description "Demand without echo"; | |||
| "Desired minimum transmit interval and required " + | ||||
| "minimum receive interval of control packets"; | ||||
| } | } | |||
| } | } | |||
| description "Detection mode"; | ||||
| } | } | |||
| } | leaf negotiated-tx-interval { | |||
| type uint32; | ||||
| grouping bfd-grouping-common-cfg-parms { | units microseconds; | |||
| description "BFD grouping for common config parameters"; | description "Negotiated transmit interval"; | |||
| uses bfd-grouping-base-cfg-parms; | ||||
| leaf demand-enabled { | ||||
| type boolean; | ||||
| default false; | ||||
| description "To enable demand mode"; | ||||
| } | ||||
| leaf admin-down { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "Is the BFD session administratively down"; | ||||
| } | } | |||
| uses bfd-auth-parms; | leaf negotiated-rx-interval { | |||
| } | ||||
| grouping bfd-grouping-echo-cfg-parms { | ||||
| description "BFD grouping for echo config parameters"; | ||||
| leaf desired-min-echo-tx-interval { | ||||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 0; | description "Negotiated receive interval"; | |||
| description "Desired minumum transmit interval for echo"; | ||||
| } | } | |||
| leaf detection-time { | ||||
| leaf required-min-echo-rx-interval { | ||||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 0; | description "Detection time"; | |||
| description "Required minimum receive interval for echo"; | ||||
| } | } | |||
| } | leaf echo-tx-interval-in-use { | |||
| when "../../path-type = 'bfd-path-ip-sh'" { | ||||
| grouping bfd-client-base-cfg-parms { | description | |||
| description | "Echo is supported for IP single-hop only."; | |||
| "BFD grouping which could be used by a protocol which | ||||
| is a client of BFD to enable its use of BFD"; | ||||
| container bfd-cfg { | ||||
| description "BFD configuration"; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| default false; | ||||
| description "True if BFD is enabled"; | ||||
| } | } | |||
| if-feature bfd-echo-mode; | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Echo transmit interval in use"; | ||||
| } | } | |||
| } | } | |||
| grouping bfd-all-session { | container sesssion-statistics { | |||
| description "BFD session operational information"; | config "false"; | |||
| leaf path-type { | description "BFD per-session statistics"; | |||
| type identityref { | ||||
| base bfd-path-type; | leaf create-time { | |||
| } | type yang:date-and-time; | |||
| description | description | |||
| "BFD session type, this indicates the path type that BFD is | "Time and date when session was created"; | |||
| running on"; | ||||
| } | ||||
| leaf local-discriminator { | ||||
| type bfd-discriminator; | ||||
| description "Local discriminator"; | ||||
| } | } | |||
| leaf remote-discriminator { | leaf last-down-time { | |||
| type bfd-discriminator; | type yang:date-and-time; | |||
| description "Remote discriminator"; | description | |||
| "Time and date of last time the session went down"; | ||||
| } | } | |||
| leaf remote-multiplier { | leaf last-up-time { | |||
| type bfd-multiplier; | type yang:date-and-time; | |||
| description "Remote multiplier"; | description | |||
| "Time and date of last time the session went up"; | ||||
| } | } | |||
| leaf out-interface { | leaf down-count { | |||
| type if:interface-ref; | type uint32; | |||
| description "Outgoing physical interface name"; | description "Session Down Count"; | |||
| } | } | |||
| leaf demand-capability { | leaf admin-down-count { | |||
| type boolean; | type uint32; | |||
| description "Local demand mode capability"; | description "Session Admin-Down Count"; | |||
| } | } | |||
| leaf source-port { | leaf receive-packet-count { | |||
| type inet:port-number; | type uint64; | |||
| description "Source UDP port"; | description "Received Packet Count"; | |||
| } | } | |||
| leaf dest-port { | leaf send-packet-count { | |||
| type inet:port-number; | type uint64; | |||
| description "Destination UDP port"; | description "Sent Packet Count"; | |||
| } | } | |||
| leaf receive-bad-packet { | ||||
| container session-running { | type uint64; | |||
| description "BFD session running information"; | description "Received bad packet count"; | |||
| leaf session-index { | ||||
| type uint32; | ||||
| description | ||||
| "An index used to uniquely identify BFD sessions"; | ||||
| } | ||||
| leaf local-state { | ||||
| type bfd-state; | ||||
| description "Local state"; | ||||
| } | ||||
| leaf remote-state { | ||||
| type bfd-state; | ||||
| description "Remote state"; | ||||
| } | ||||
| leaf local-diagnostic { | ||||
| type bfd-diagnostic; | ||||
| description "Local diagnostic"; | ||||
| } | ||||
| leaf remote-diagnostic { | ||||
| type bfd-diagnostic; | ||||
| description "Remote diagnostic"; | ||||
| } | ||||
| 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 echo-tx-interval-in-use { | ||||
| when "../../path-type = 'bfd-path-ip-sh'" { | ||||
| description | ||||
| "Echo is supported for IP single-hop only."; | ||||
| } | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Echo transmit interval in use"; | ||||
| } | ||||
| leaf detection-time { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Detection time"; | ||||
| } | ||||
| } | } | |||
| leaf send-failed-packet { | ||||
| type uint64; | ||||
| description "Packet Failed to Send Count"; | ||||
| container sesssion-statistics { | ||||
| description "BFD per-session statistics"; | ||||
| leaf create-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date when session was created"; | ||||
| } | ||||
| leaf last-down-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date of last time the session went down"; | ||||
| } | ||||
| leaf last-up-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date of last time the session went up"; | ||||
| } | ||||
| leaf down-count { | ||||
| type uint32; | ||||
| description "Session Down Count"; | ||||
| } | ||||
| leaf admin-down-count { | ||||
| type uint32; | ||||
| description "Session Admin-Down Count"; | ||||
| } | ||||
| leaf receive-packet-count { | ||||
| type uint64; | ||||
| description "Received Packet Count"; | ||||
| } | ||||
| leaf send-packet-count { | ||||
| type uint64; | ||||
| description "Sent Packet Count"; | ||||
| } | ||||
| leaf receive-bad-packet { | ||||
| type uint64; | ||||
| description "Received bad packet count"; | ||||
| } | ||||
| leaf send-failed-packet { | ||||
| type uint64; | ||||
| description "Packet Failed to Send Count"; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping bfd-session-statistics { | grouping bfd-session-statistics { | |||
| description "Grouping for session counters"; | description "Grouping for session counters"; | |||
| container bfd-session-statistics { | container bfd-session-statistics { | |||
| description "BFD session counters"; | config false; | |||
| leaf session-count { | description "BFD session counters"; | |||
| type uint32; | leaf session-count { | |||
| description "Number of sessions"; | type uint32; | |||
| } | description "Number of sessions"; | |||
| leaf session-up-count { | ||||
| type uint32; | ||||
| description "Count of sessions which are up"; | ||||
| } | ||||
| leaf session-down-count { | ||||
| type uint32; | ||||
| description "Count of sessions which are down"; | ||||
| } | ||||
| leaf session-admin-down-count { | ||||
| type uint32; | ||||
| description "Count of sessions which are admin-down"; | ||||
| } | ||||
| } | } | |||
| } | leaf session-up-count { | |||
| type uint32; | ||||
| grouping bfd-notification-parms { | description "Count of sessions which are up"; | |||
| description | ||||
| "This group describes common parameters that will be sent " + | ||||
| "as part of BFD notification"; | ||||
| leaf local-discr { | ||||
| type bfd-discriminator; | ||||
| description "BFD local discriminator"; | ||||
| } | } | |||
| leaf session-down-count { | ||||
| leaf remote-discr { | type uint32; | |||
| type bfd-discriminator; | description "Count of sessions which are down"; | |||
| description "BFD remote discriminator"; | ||||
| } | } | |||
| leaf session-admin-down-count { | ||||
| leaf new-state { | type uint32; | |||
| type bfd-state; | description "Count of sessions which are admin-down"; | |||
| description "Current BFD state"; | ||||
| } | } | |||
| } | ||||
| } | ||||
| leaf state-change-reason { | grouping bfd-notification-parms { | |||
| type string; | description | |||
| description "BFD state change reason"; | "This group describes common parameters that will be sent " + | |||
| } | "as part of BFD notification"; | |||
| leaf time-in-previous-state { | leaf local-discr { | |||
| type string; | type bfd-discriminator; | |||
| description | description "BFD local discriminator"; | |||
| "How long the BFD session was in the previous state"; | } | |||
| } | ||||
| leaf dest-addr { | leaf remote-discr { | |||
| type inet:ip-address; | type bfd-discriminator; | |||
| description "BFD peer address"; | description "BFD remote discriminator"; | |||
| } | } | |||
| leaf source-addr { | leaf new-state { | |||
| type inet:ip-address; | type bfd-state; | |||
| description "BFD local address"; | description "Current BFD state"; | |||
| } | } | |||
| leaf state-change-reason { | ||||
| type iana-bfd-types:bfd-diagnostic; | ||||
| description "BFD state change reason"; | ||||
| } | ||||
| leaf session-index { | leaf time-of-last-state-change { | |||
| type uint32; | type yang:date-and-time; | |||
| description "An index used to uniquely identify BFD sessions"; | description | |||
| } | "Calendar time of previous state change"; | |||
| } | ||||
| leaf path-type { | leaf dest-addr { | |||
| type identityref { | type inet:ip-address; | |||
| base bfd-path-type; | description "BFD peer address"; | |||
| } | } | |||
| description "BFD path type"; | ||||
| } | leaf source-addr { | |||
| type inet:ip-address; | ||||
| description "BFD local address"; | ||||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | leaf session-index { | |||
| + "rt:control-plane-protocol" { | type uint32; | |||
| when "rt:type = 'bfd:bfdv1'" { | description "An index used to uniquely identify BFD sessions"; | |||
| description | } | |||
| "This augmentation is only valid for a control-plane protocol | ||||
| instance of BFD (type 'bfdv1')."; | leaf path-type { | |||
| type identityref { | ||||
| base bfd-path-type; | ||||
| } | } | |||
| description "BFD augmentation."; | description "BFD path type"; | |||
| } | ||||
| } | ||||
| container bfd { | augment "/rt:routing/rt:control-plane-protocols/" | |||
| description "BFD top level container"; | + "rt:control-plane-protocol" { | |||
| container config { | when "rt:type = 'bfd:bfdv1'" { | |||
| description "BFD configuration container"; | description | |||
| } | "This augmentation is only valid for a control-plane protocol | |||
| instance of BFD (type 'bfdv1')."; | ||||
| } | ||||
| description "BFD augmentation."; | ||||
| container oper { | container bfd { | |||
| config "false"; | description "BFD top level container"; | |||
| description "BFD operational container."; | ||||
| uses bfd-session-statistics; | uses bfd-session-statistics; | |||
| } | ||||
| } | ||||
| } | } | |||
| } | } | |||
| <CODE ENDS> | } | |||
| 2.14. BFD IP single-hop Yang Module | <CODE ENDS> | |||
| 2.14. BFD IP single-hop YANG Module | ||||
| <CODE BEGINS> file "ietf-bfd-ip-sh@2017-06-30.yang" | ||||
| <CODE BEGINS> file "ietf-bfd-ip-sh@2017-03-07.yang" | ||||
| module ietf-bfd-ip-sh { | module ietf-bfd-ip-sh { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | |||
| // replace with IANA namespace when assigned | ||||
| prefix "bfd-ip-sh"; | prefix "bfd-ip-sh"; | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| } | } | |||
| skipping to change at page 33, line 4 ¶ | skipping to change at page 36, line 30 ¶ | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| organization "IETF BFD Working Group"; | organization "IETF BFD Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <http://tools.ietf.org/wg/bfd> | |||
| WG List: <rtg-bfd@ietf.org> | WG List: <rtg-bfd@ietf.org> | |||
| WG Chair: Jeff Haas | ||||
| WG Chair: Reshad Rahman | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Editor: Lianshu Zheng and Reshad Rahman"; | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (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 RFC5881. | as per RFC5881. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as 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 the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2017-03-07 { | revision 2017-06-30 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD IP single-hop"; | reference "RFC XXXX: A YANG data model for BFD IP single-hop"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| 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"; | |||
| container config { | uses bfd:bfd-session-statistics; | |||
| description "BFD IP single-hop configuration container"; | ||||
| container session-cfg { | ||||
| description "BFD IP single-hop session configuration"; | ||||
| list sessions { | ||||
| key "interface dest-addr"; | ||||
| description "List of IP single-hop sessions"; | ||||
| leaf interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Interface on which the BFD session is running."; | ||||
| } | ||||
| leaf dest-addr { | ||||
| type inet:ip-address; | ||||
| description "IP address of the peer"; | ||||
| } | ||||
| leaf source-addr { | ||||
| type inet:ip-address; | ||||
| description "Local address"; | ||||
| } | ||||
| uses bfd:bfd-grouping-common-cfg-parms; | ||||
| uses bfd:bfd-grouping-echo-cfg-parms; | list sessions { | |||
| } | key "interface dest-addr"; | |||
| description "List of IP single-hop sessions"; | ||||
| leaf interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Interface on which the BFD session is running."; | ||||
| } | ||||
| leaf dest-addr { | ||||
| type inet:ip-address; | ||||
| description "IP address of the peer"; | ||||
| } | ||||
| leaf source-addr { | ||||
| type inet:ip-address; | ||||
| description "Local address"; | ||||
| } | } | |||
| } | ||||
| container oper { | ||||
| config "false"; | ||||
| description "BFD IP single-hop operational container"; | ||||
| uses bfd:bfd-session-statistics; | ||||
| list sessions { | uses bfd:bfd-grouping-common-cfg-parms; | |||
| key "interface dest-addr"; | ||||
| description "BFD IP single-hop sessions"; | ||||
| leaf interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Interface on which the BFD session is running."; | ||||
| } | ||||
| leaf dest-addr { | ||||
| type inet:ip-address; | ||||
| description "BFD peer address"; | ||||
| } | ||||
| leaf source-addr { | ||||
| type inet:ip-address; | ||||
| description "BFD source address"; | ||||
| } | ||||
| uses bfd:bfd-all-session; | uses bfd:bfd-grouping-echo-cfg-parms; | |||
| } | uses bfd:bfd-all-session; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| notification bfd-singlehop-notification { | notification bfd-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:bfd-notification-parms; | uses bfd:bfd-notification-parms; | |||
| skipping to change at page 35, line 30 ¶ | skipping to change at page 38, line 28 ¶ | |||
| description "Interface to which this BFD session belongs to"; | description "Interface to which this BFD session belongs to"; | |||
| } | } | |||
| leaf echo-enabled { | leaf echo-enabled { | |||
| type boolean; | type boolean; | |||
| description "Was echo enabled for BFD"; | description "Was echo enabled for BFD"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.15. BFD IP multi-hop Yang Module | 2.15. BFD IP multi-hop YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-ip-mh@2017-03-07.yang" | <CODE BEGINS> file "ietf-bfd-ip-mh@2017-06-30.yang" | |||
| module ietf-bfd-ip-mh { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | ||||
| // replace with IANA namespace when assigned | ||||
| prefix "bfd-ip-mh"; | ||||
| import ietf-bfd { | module ietf-bfd-ip-mh { | |||
| prefix "bfd"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | |||
| } | // replace with IANA namespace when assigned | |||
| prefix "bfd-ip-mh"; | ||||
| import ietf-inet-types { | import ietf-bfd { | |||
| prefix "inet"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-routing { | import ietf-inet-types { | |||
| prefix "rt"; | prefix "inet"; | |||
| } | } | |||
| organization "IETF BFD Working Group"; | import ietf-routing { | |||
| contact | prefix "rt"; | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | } | |||
| WG List: <rtg-bfd@ietf.org> | ||||
| WG Chair: Jeff Haas | ||||
| WG Chair: Reshad Rahman | ||||
| Editor: Lianshu Zheng and Reshad Rahman"; | ||||
| description | organization "IETF BFD Working Group"; | |||
| "This module contains the YANG definition for BFD IP multi-hop | contact | |||
| as per RFC5883. | "WG Web: <http://tools.ietf.org/wg/bfd> | |||
| WG List: <rtg-bfd@ietf.org> | ||||
| Copyright (c) 2017 IETF Trust and the persons | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| identified as authors of the code. All rights reserved. | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
| Redistribution and use in source and binary forms, with or | description | |||
| without modification, is permitted pursuant to, and subject | "This module contains the YANG definition for BFD IP multi-hop | |||
| to the license terms contained in, the Simplified BSD License | as per RFC5883. | |||
| 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 | Copyright (c) 2017 IETF Trust and the persons | |||
| the RFC itself for full legal notices."; | identified as authors of the code. All rights reserved. | |||
| revision 2017-03-07 { | Redistribution and use in source and binary forms, with or | |||
| description "Initial revision."; | without modification, is permitted pursuant to, and subject | |||
| reference "RFC XXXX: A YANG data model for BFD IP multi-hop"; | 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). | ||||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | This version of this YANG module is part of RFC XXXX; see | |||
| // note | the RFC itself for full legal notices."; | |||
| augment "/rt:routing/rt:control-plane-protocols/" | revision 2017-06-30 { | |||
| + "rt:control-plane-protocol/bfd:bfd" { | description "Initial revision."; | |||
| description "BFD augmentation for IP multi-hop"; | reference "RFC XXXX: A YANG data model for BFD IP multi-hop"; | |||
| container ip-mh { | } | |||
| description "BFD IP multi-hop top level container"; | ||||
| container config { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| description "BFD IP multi-hop configuration container"; | // note | |||
| container session-cfg { | ||||
| description "BFD IP multi-hop session configuration"; | ||||
| list sessions { | augment "/rt:routing/rt:control-plane-protocols/" | |||
| key "source-addr dest-addr"; | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "List of IP multi-hop sessions"; | description "BFD augmentation for IP multi-hop"; | |||
| container ip-mh { | ||||
| description "BFD IP multi-hop top level container"; | ||||
| leaf source-addr { | uses bfd:bfd-session-statistics; | |||
| type inet:ip-address; | ||||
| description | ||||
| "Local IP address"; | ||||
| } | ||||
| leaf dest-addr { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "IP address of the peer"; | ||||
| } | ||||
| uses bfd:bfd-grouping-common-cfg-parms; | ||||
| leaf tx-ttl { | list session-group { | |||
| type bfd:ttl; | key "source-addr dest-addr"; | |||
| default 255; | description | |||
| description "TTL of outgoing BFD control packets"; | "Group of BFD IP multi-hop sessions (for ECMP). A " + | |||
| } | "group of sessions is between 1 source and 1 " + | |||
| leaf rx-ttl { | "destination, each session has a different field " + | |||
| type bfd:ttl; | "in UDP/IP hdr for ECMP."; | |||
| mandatory true; | ||||
| description | ||||
| "Minimum allowed TTL value for incoming BFD control | ||||
| packets"; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| container oper { | ||||
| config "false"; | ||||
| description "BFD IP multi-hop operational container"; | 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:bfd-grouping-common-cfg-parms; | ||||
| uses bfd:bfd-session-statistics; | leaf tx-ttl { | |||
| type bfd:hops; | ||||
| default 255; | ||||
| description "Hop count of outgoing BFD control packets"; | ||||
| } | ||||
| leaf rx-ttl { | ||||
| type bfd: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:bfd-all-session; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| list session-group { | notification bfd-multihop-notification { | |||
| key "source-addr dest-addr"; | description | |||
| description | "Notification for BFD multi-hop session state change. An " + | |||
| "BFD IP multi-hop group of sessions. A group of " + | "implementation may rate-limit notifications, e.g. when a" + | |||
| "sessions is between 1 source and 1 destination, " + | "session is continuously changing state."; | |||
| "each session has a different field in UDP/IP hdr for " + | ||||
| "ECMP."; | ||||
| leaf source-addr { | ||||
| type inet:ip-address; | ||||
| description "BFD source address"; | ||||
| } | ||||
| leaf dest-addr { | ||||
| type inet:ip-address; | ||||
| description "BFD peer address"; | ||||
| } | ||||
| list sessions { | ||||
| key "local-discriminator"; | ||||
| description | ||||
| "The BFD sessions between a source and a. " + | ||||
| "destination. Local discriminator is unique for " + | ||||
| "each session in the group."; | ||||
| leaf ttl { | ||||
| type bfd:ttl; | ||||
| description "TTL of outgoing packets"; | ||||
| } | ||||
| uses bfd:bfd-all-session; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| notification bfd-multihop-notification { | uses bfd:bfd-notification-parms; | |||
| 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:bfd-notification-parms; | <CODE ENDS> | |||
| } | 2.16. BFD over LAG YANG Module | |||
| } | ||||
| <CODE ENDS> | ||||
| 2.16. BFD over LAG Yang Module | <CODE BEGINS> file "ietf-bfd-lag@2017-06-30.yang" | |||
| <CODE BEGINS> file "ietf-bfd-lag@2017-03-07.yang" | module ietf-bfd-lag { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | |||
| // replace with IANA namespace when assigned | // replace with IANA namespace when assigned | |||
| prefix "bfd-lag"; | prefix "bfd-lag"; | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| skipping to change at page 39, line 12 ¶ | skipping to change at page 41, line 34 ¶ | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| organization "IETF BFD Working Group"; | organization "IETF BFD Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <http://tools.ietf.org/wg/bfd> | |||
| WG List: <rtg-bfd@ietf.org> | WG List: <rtg-bfd@ietf.org> | |||
| WG Chair: Jeff Haas | ||||
| WG Chair: Reshad Rahman | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Editor: Lianshu Zheng and Reshad Rahman"; | Lianshu Zheng vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
| description | description | |||
| "This module contains the YANG definition for BFD over LAG | "This module contains the YANG definition for BFD over LAG | |||
| interfaces as per RFC7130. | interfaces as per RFC7130. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as 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 | |||
| skipping to change at page 39, line 29 ¶ | skipping to change at page 42, line 4 ¶ | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as 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 the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2017-03-07 { | revision 2017-06-30 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD over LAG"; | reference "RFC XXXX: A YANG data model for BFD over LAG"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for LAG"; | description "BFD augmentation for LAG"; | |||
| container lag { | container lag { | |||
| description "BFD over LAG top level container"; | description "BFD over LAG top level container"; | |||
| container config { | container micro-bfd-ipv4-session-statistics { | |||
| description "BFD over LAG configuration container"; | description "Micro-BFD IPv4 session counters"; | |||
| container session-cfg { | uses bfd:bfd-session-statistics; | |||
| description "BFD over LAG session configuration"; | } | |||
| list sessions { | container micro-bfd-ipv6-session-statistics { | |||
| key "lag-name"; | description "Micro-BFD IPv6 session counters"; | |||
| description "A LAG interface on which BFD is running"; | uses bfd:bfd-session-statistics; | |||
| 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:bfd-grouping-common-cfg-parms; | ||||
| } | ||||
| } | ||||
| } | } | |||
| container oper { | list sessions { | |||
| config "false"; | key "lag-name"; | |||
| description "BFD over LAG operational container."; | description "A LAG interface on which BFD is running"; | |||
| leaf lag-name { | ||||
| container micro-bfd-ipv4-session-statistics { | type if:interface-ref ; | |||
| description "Micro-BFD IPv4 session counters"; | description "Name of the LAG"; | |||
| uses bfd:bfd-session-statistics; | ||||
| } | } | |||
| container micro-bfd-ipv6-session-statistics { | leaf ipv4-dest-addr { | |||
| description "Micro-BFD IPv6 session counters"; | type inet:ipv4-address; | |||
| uses bfd:bfd-session-statistics; | 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:bfd-grouping-common-cfg-parms; | ||||
| list session-lag { | leaf use-ipv4 { | |||
| key "lag-name"; | type boolean; | |||
| description "A LAG interface on which BFD is running"; | description "Using IPv4 micro-BFD."; | |||
| leaf lag-name { | ||||
| type if:interface-ref ; | ||||
| description "Name of the LAG"; | ||||
| } | ||||
| leaf use-ipv4 { | } | |||
| type boolean; | leaf use-ipv6 { | |||
| description "Using IPv4 micro-BFD."; | type boolean; | |||
| } | description "Using IPv6 micro-BFD."; | |||
| leaf use-ipv6 { | } | |||
| type boolean; | ||||
| description "Using IPv6 micro-BFD."; | ||||
| } | ||||
| list member-links { | list member-links { | |||
| key "member-link"; | key "member-link"; | |||
| description | config false; | |||
| "Micro-BFD over LAG. This represents one member link"; | description | |||
| "Micro-BFD over LAG. This represents one member link"; | ||||
| leaf member-link { | leaf member-link { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Member link on which micro-BFD is running"; | "Member link on which micro-BFD is running"; | |||
| } | } | |||
| container micro-bfd-ipv4 { | container micro-bfd-ipv4 { | |||
| when "../../use-ipv4 = 'true'" { | when "../../use-ipv4 = 'true'" { | |||
| description "Needed only if IPv4 is used."; | description "Needed only if IPv4 is used."; | |||
| } | ||||
| description | ||||
| "Micro-BFD IPv4 session state on member link"; | ||||
| uses bfd:bfd-all-session; | ||||
| } | } | |||
| container micro-bfd-ipv6 { | description | |||
| when "../../use-ipv6 = 'true'" { | "Micro-BFD IPv4 session state on member link"; | |||
| description "Needed only if IPv6 is used."; | uses bfd:bfd-all-session; | |||
| } | } | |||
| description | container micro-bfd-ipv6 { | |||
| "Micro-BFD IPv6 session state on member link"; | when "../../use-ipv6 = 'true'" { | |||
| uses bfd:bfd-all-session; | description "Needed only if IPv6 is used."; | |||
| } | } | |||
| description | ||||
| "Micro-BFD IPv6 session state on member link"; | ||||
| uses bfd:bfd-all-session; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| notification bfd-lag-notification { | notification bfd-lag-notification { | |||
| description | description | |||
| "Notification for BFD over LAG session state change. " + | "Notification for BFD over LAG session state change. " + | |||
| "An implementation may rate-limit notifications, e.g. when a" + | "An implementation may rate-limit notifications, e.g. when a" + | |||
| skipping to change at page 42, line 4 ¶ | skipping to change at page 44, line 6 ¶ | |||
| "Notification for BFD over LAG session state change. " + | "Notification for BFD over LAG session state change. " + | |||
| "An implementation may rate-limit notifications, e.g. when a" + | "An implementation may rate-limit notifications, e.g. when a" + | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd:bfd-notification-parms; | uses bfd:bfd-notification-parms; | |||
| leaf lag-name { | leaf lag-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "LAG interface name"; | description "LAG interface name"; | |||
| } | } | |||
| leaf member-link { | leaf member-link { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "Member link on which BFD is running"; | description "Member link on which BFD is running"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.17. BFD over MPLS Yang Module | 2.17. BFD over MPLS YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-mpls@2017-06-30.yang" | ||||
| <CODE BEGINS> file "ietf-bfd-mpls@2017-03-07.yang" | ||||
| module ietf-bfd-mpls { | module ietf-bfd-mpls { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | |||
| // replace with IANA namespace when assigned | // replace with IANA namespace when assigned | |||
| prefix "bfd-mpls"; | prefix "bfd-mpls"; | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| skipping to change at page 42, line 37 ¶ | skipping to change at page 44, line 42 ¶ | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| organization "IETF BFD Working Group"; | organization "IETF BFD Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <http://tools.ietf.org/wg/bfd> | |||
| WG List: <rtg-bfd@ietf.org> | WG List: <rtg-bfd@ietf.org> | |||
| WG Chair: Jeff Haas | ||||
| WG Chair: Reshad Rahman | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Editor: Lianshu Zheng and Reshad Rahman"; | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
| description | description | |||
| "This module contains the YANG definition for BFD parameters for | "This module contains the YANG definition for BFD parameters for | |||
| MPLS LSPs as per RFC5884. | MPLS LSPs as per RFC5884. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as 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 the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2017-03-07 { | revision 2017-06-30 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; | reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| identity bfd-encap-gach { | identity bfd-encap-gach { | |||
| base bfd:bfd-encap-type; | base bfd:bfd-encap-type; | |||
| description | description | |||
| skipping to change at page 44, line 4 ¶ | skipping to change at page 46, line 10 ¶ | |||
| grouping bfd-mpls-dest-address { | grouping bfd-mpls-dest-address { | |||
| description "Destination address as per RFC5884"; | description "Destination address as per RFC5884"; | |||
| leaf mpls-dest-address { | leaf mpls-dest-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config "false"; | config "false"; | |||
| description | description | |||
| "Destination address as per RFC5884. | "Destination address as per RFC5884. | |||
| Needed if IP encapsulation is used"; | Needed if IP encapsulation is used"; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for MPLS"; | description "BFD augmentation for MPLS"; | |||
| container mpls { | container mpls { | |||
| description "BFD MPLS top level container"; | description "BFD MPLS top level container"; | |||
| container config { | uses bfd:bfd-session-statistics; | |||
| description "BFD MPLS configuration container"; | ||||
| container egress { | ||||
| description "Egress configuration"; | ||||
| uses bfd:bfd-grouping-base-cfg-parms; | ||||
| uses bfd:bfd-auth-parms; | container egress { | |||
| } | description "Egress configuration"; | |||
| container session-cfg { | uses bfd:bfd-grouping-base-cfg-parms; | |||
| description "BFD MPLS session configuration"; | ||||
| list sessions { | ||||
| key "mpls-fec"; | ||||
| description "List of BFD MPLS sessions"; | ||||
| leaf mpls-fec { | ||||
| type inet:ip-address; | ||||
| description "MPLS FEC"; | ||||
| } | ||||
| uses bfd:bfd-grouping-common-cfg-parms; | uses bfd:bfd-auth-parms; | |||
| } | ||||
| } | ||||
| } | } | |||
| container oper { | list session-group { | |||
| config "false"; | key "mpls-fec"; | |||
| description | ||||
| description "BFD MPLS operational container"; | "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:bfd-session-statistics; | uses bfd:bfd-grouping-common-cfg-parms; | |||
| list session-group { | list sessions { | |||
| key "mpls-fec"; | config false; | |||
| description | description | |||
| "BFD MPLS group of sessions. A group of sessions is" + | "The BFD sessions for an MPLS FEC. Local " + | |||
| "for 1 FEC, each session has a different field in " + | "discriminator is unique for each session in the " + | |||
| "UDP/IP hdr for ECMP."; | "group."; | |||
| uses bfd:bfd-all-session; | ||||
| leaf mpls-fec { | ||||
| type inet:ip-address; | ||||
| description "MPLS-FEC"; | ||||
| } | ||||
| list sessions { | ||||
| key "local-discriminator"; | ||||
| description | ||||
| "The BFD sessions for an MPLS FEC. Local " + | ||||
| "discriminator is unique for each session in the " + | ||||
| "group."; | ||||
| uses bfd:bfd-all-session; | ||||
| uses bfd-mpls:bfd-mpls-dest-address; | uses bfd-mpls:bfd-mpls-dest-address; | |||
| } | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| notification bfd-mpls-notification { | notification bfd-mpls-notification { | |||
| description | description | |||
| "Notification for BFD over MPLS FEC session state change. " + | "Notification for BFD over MPLS FEC session state change. " + | |||
| "An implementation may rate-limit notifications, e.g. when a" + | "An implementation may rate-limit notifications, e.g. when a" + | |||
| skipping to change at page 45, line 41 ¶ | skipping to change at page 47, line 25 ¶ | |||
| uses bfd:bfd-notification-parms; | uses bfd:bfd-notification-parms; | |||
| leaf mpls-dest-address { | leaf mpls-dest-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Destination address as per RFC5884. | "Destination address as per RFC5884. | |||
| Needed if IP encapsulation is used"; | Needed if IP encapsulation is used"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.18. BFD over MPLS-TE Yang Module | 2.18. BFD over MPLS-TE YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-mpls-te@2017-06-30.yang" | ||||
| <CODE BEGINS> file "ietf-bfd-mpls-te@2017-03-07.yang" | ||||
| module ietf-bfd-mpls-te { | module ietf-bfd-mpls-te { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; | |||
| // replace with IANA namespace when assigned | // replace with IANA namespace when assigned | |||
| prefix "bfd-mpls-te"; | prefix "bfd-mpls-te"; | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-bfd-mpls { | import ietf-bfd-mpls { | |||
| prefix "bfd-mpls"; | prefix "bfd-mpls"; | |||
| } | } | |||
| import ietf-te { | import ietf-te { | |||
| prefix "te"; | prefix "te"; | |||
| } | } | |||
| skipping to change at page 46, line 18 ¶ | skipping to change at page 48, line 4 ¶ | |||
| prefix "bfd-mpls"; | prefix "bfd-mpls"; | |||
| } | } | |||
| import ietf-te { | import ietf-te { | |||
| prefix "te"; | prefix "te"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| organization "IETF BFD Working Group"; | organization "IETF BFD Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | "WG Web: <http://tools.ietf.org/wg/bfd> | |||
| WG List: <rtg-bfd@ietf.org> | WG List: <rtg-bfd@ietf.org> | |||
| WG Chair: Jeff Haas | ||||
| WG Chair: Reshad Rahman | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Editor: Lianshu Zheng and Reshad Rahman"; | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
| description | description | |||
| "This module contains the YANG definition for BFD parameters for | "This module contains the YANG definition for BFD parameters for | |||
| MPLS Traffic Engineering as per RFC5884. | MPLS Traffic Engineering as per RFC5884. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as 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 the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2017-03-07 { | revision 2017-06-30 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; | reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for MPLS-TE"; | description "BFD augmentation for MPLS-TE"; | |||
| container mpls-te { | container mpls-te { | |||
| description "BFD MPLS-TE top level container"; | description "BFD MPLS-TE top level container"; | |||
| container config { | container config { | |||
| description "BFD MPLS-TE configuration container"; | description "BFD MPLS-TE configuration container"; | |||
| container egress { | container egress { | |||
| skipping to change at page 48, line 39 ¶ | skipping to change at page 50, line 25 ¶ | |||
| The YANG module has writeable data nodes which can be used for | The YANG module has writeable data nodes which can be used for | |||
| creation of BFD sessions and modification of BFD session parameters. | creation of BFD sessions and modification of BFD session parameters. | |||
| The system should "police" creation of BFD sessions to prevent new | The system should "police" creation of BFD sessions to prevent new | |||
| sessions from causing existing BFD sessions to fail. For BFD session | sessions from causing existing BFD sessions to fail. For BFD session | |||
| modification, the BFD protocol has mechanisms in place which allow | modification, the BFD protocol has mechanisms in place which allow | |||
| for in service modification. | for in service modification. | |||
| 2.20. IANA Considerations | 2.20. IANA Considerations | |||
| The IANA is requested to as assign a new new namespace URI from the | The IANA is requested to as assign a new namespace URI from the IETF | |||
| IETF XML registry. | XML registry. | |||
| URI:TBD | This document registers the following namesace URIs in the IETF XML | |||
| registry [RFC3688]: | ||||
| -------------------------------------------------------------------- | ||||
| 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. | ||||
| -------------------------------------------------------------------- | ||||
| 2.20.1. IANA-Maintained iana-bfd-types module | ||||
| This document defines the initial version of the IANA-maintained | ||||
| iana-bfd-types YANG module. | ||||
| The iana-bfd-types YANG module is intended to reflect the "BFD | ||||
| Diagnostic Codes" registry and "BFD Authentication Types" registry at | ||||
| https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml | ||||
| 2.21. Acknowledgements | 2.21. Acknowledgements | |||
| We would also like to thank Nobo Akiya and Jeff Haas for their | We would also like to thank Nobo Akiya and Jeff Haas for their | |||
| encouragement on this work. We would also like to thank Rakesh | 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 | Gandhi and Tarek Saad for their help on the MPLS-TE model. We would | |||
| also like to thank Acee Lindem for his guidance. | also like to thank Acee Lindem for his guidance. | |||
| 3. References | 3. References | |||
| 3.1. Normative References | 3.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | ||||
| DOI 10.17487/RFC3688, January 2004, | ||||
| <http://www.rfc-editor.org/info/rfc3688>. | ||||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc5586>. | <http://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, | |||
| <http://www.rfc-editor.org/info/rfc5880>. | <http://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 50, line 30 ¶ | skipping to change at page 53, line 41 ¶ | |||
| [RFC7277] Bjorklund, M., "A YANG Data Model for IP Management", | [RFC7277] Bjorklund, M., "A YANG Data Model for IP Management", | |||
| RFC 7277, DOI 10.17487/RFC7277, June 2014, | RFC 7277, DOI 10.17487/RFC7277, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7277>. | <http://www.rfc-editor.org/info/rfc7277>. | |||
| [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| Management", RFC 8022, DOI 10.17487/RFC8022, November | Management", RFC 8022, DOI 10.17487/RFC8022, November | |||
| 2016, <http://www.rfc-editor.org/info/rfc8022>. | 2016, <http://www.rfc-editor.org/info/rfc8022>. | |||
| 3.2. Informative References | 3.2. Informative References | |||
| [I-D.dsdt-nmda-guidelines] | ||||
| Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
| and R. Wilton, "Guidelines for YANG Module Authors | ||||
| (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress), | ||||
| May 2017. | ||||
| [I-D.ietf-lime-yang-connectionless-oam] | [I-D.ietf-lime-yang-connectionless-oam] | |||
| Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | |||
| "Generic YANG Data Model for Connectionless Operations, | "Generic YANG Data Model for Connectionless Operations, | |||
| Administration, and Maintenance(OAM) protocols", draft- | Administration, and Maintenance(OAM) protocols", draft- | |||
| ietf-lime-yang-connectionless-oam-04 (work in progress), | ietf-lime-yang-connectionless-oam-07 (work in progress), | |||
| February 2017. | June 2017. | |||
| [I-D.ietf-mpls-base-yang] | [I-D.ietf-mpls-base-yang] | |||
| Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., | Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., | |||
| Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data | Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data | |||
| Model for MPLS Base", draft-ietf-mpls-base-yang-02 (work | Model for MPLS Base", draft-ietf-mpls-base-yang-04 (work | |||
| in progress), March 2017. | in progress), March 2017. | |||
| [I-D.ietf-netconf-restconf] | ||||
| Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
| Protocol", draft-ietf-netconf-restconf-18 (work in | ||||
| progress), October 2016. | ||||
| [I-D.ietf-netmod-routing-cfg] | ||||
| Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | ||||
| Management", draft-ietf-netmod-routing-cfg-25 (work in | ||||
| progress), November 2016. | ||||
| [I-D.ietf-netmod-schema-mount] | [I-D.ietf-netmod-schema-mount] | |||
| Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- | Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- | |||
| ietf-netmod-schema-mount-04 (work in progress), March | ietf-netmod-schema-mount-05 (work in progress), May 2017. | |||
| 2017. | ||||
| [I-D.ietf-rtgwg-device-model] | [I-D.ietf-rtgwg-device-model] | |||
| Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps, | Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps, | |||
| "Network Device YANG Organizational Models", draft-ietf- | "Network Device YANG Logical Organization", draft-ietf- | |||
| rtgwg-device-model-01 (work in progress), October 2016. | rtgwg-device-model-02 (work in progress), March 2017. | |||
| [I-D.ietf-rtgwg-lne-model] | [I-D.ietf-rtgwg-lne-model] | |||
| Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, | Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, | |||
| "YANG Logical Network Elements", draft-ietf-rtgwg-lne- | "YANG Logical Network Elements", draft-ietf-rtgwg-lne- | |||
| model-01 (work in progress), October 2016. | model-02 (work in progress), March 2017. | |||
| [I-D.ietf-rtgwg-ni-model] | [I-D.ietf-rtgwg-ni-model] | |||
| Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, | Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, | |||
| "YANG Network Instances", draft-ietf-rtgwg-ni-model-01 | "YANG Network Instances", draft-ietf-rtgwg-ni-model-02 | |||
| (work in progress), October 2016. | (work in progress), March 2017. | |||
| [I-D.ietf-rtgwg-yang-key-chain] | ||||
| Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. | ||||
| Yang, "Routing Key Chain YANG Data Model", draft-ietf- | ||||
| rtgwg-yang-key-chain-15 (work in progress), February 2017. | ||||
| [I-D.ietf-teas-yang-te] | [I-D.ietf-teas-yang-te] | |||
| Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., | Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | |||
| Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data | I. Bryskin, "A YANG Data Model for Traffic Engineering | |||
| Model for Traffic Engineering Tunnels and Interfaces", | Tunnels and Interfaces", draft-ietf-teas-yang-te-06 (work | |||
| draft-ietf-teas-yang-te-05 (work in progress), October | in progress), March 2017. | |||
| 2016. | ||||
| Appendix A. Change log | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
| <http://www.rfc-editor.org/info/rfc8040>. | ||||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | ||||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | ||||
| DOI 10.17487/RFC8177, June 2017, | ||||
| <http://www.rfc-editor.org/info/rfc8177>. | ||||
| Appendix A. Echo function configuration example | ||||
| The following intervals are added for the echo function (if | ||||
| supported): | ||||
| desired-min-echo-tx-interval | ||||
| 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. | ||||
| required-min-echo-rx-interval | ||||
| This is the Required Min Echo RX Interval as defined in BFD | ||||
| [RFC5880]. | ||||
| module: example-bfd-echo | ||||
| augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protoco | ||||
| l/bfd:bfd/bfd-ip-sh:ip-sh/bfd-ip-sh:sessions: | ||||
| +--rw echo {bfd-echo-mode}? | ||||
| +--rw desired-min-echo-tx-interval? uint32 | ||||
| +--rw required-min-echo-rx-interval? uint32 | ||||
| A.1. Example YANG module for BFD echo function | ||||
| module example-bfd-echo { | ||||
| namespace "tag:example.com,2017:example-bfd-echo"; | ||||
| prefix "example-bfd-echo"; | ||||
| 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) 2017 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 2017-06-30 { | ||||
| 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 bfd-grouping-echo-cfg-parms { | ||||
| description "BFD grouping for echo config parameters"; | ||||
| leaf desired-min-echo-tx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| default 0; | ||||
| description "Desired minumum transmit interval for echo"; | ||||
| } | ||||
| leaf required-min-echo-rx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| default 0; | ||||
| description "Required minimum receive interval for echo"; | ||||
| } | ||||
| } | ||||
| 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 fucntion."; | ||||
| container echo { | ||||
| if-feature bfd-echo-mode; | ||||
| description "BFD echo function container"; | ||||
| uses bfd-grouping-echo-cfg-parms; | ||||
| } | ||||
| } | ||||
| } | ||||
| Appendix B. Change log | ||||
| RFC Editor: Remove this section upon publication as an RFC. | RFC Editor: Remove this section upon publication as an RFC. | |||
| A.1. Changes between versions -04 and -05 | B.1. Changes between versions -05 and -06 | |||
| o "bfd" node in augment of control-plane-protocol as per [RFC8022]. | o Adhere to NMDA-guidelines. | |||
| o Echo function config moved to appendix as example. | ||||
| o Added IANA YANG modules. | ||||
| o Addressed various comments. | ||||
| B.2. Changes between versions -04 and -05 | ||||
| o "bfd" node in augment of control-plane-protocol as per A YANG Data | ||||
| Model for Routing Management [RFC8022]. | ||||
| o Removed augment of network-instance. Replaced by schema-mount. | o Removed augment of network-instance. Replaced by schema-mount. | |||
| o Added information on interaction with other YANG modules. | o Added information on interaction with other YANG modules. | |||
| A.2. Changes between versions -03 and -04 | B.3. Changes between versions -03 and -04 | |||
| o Updated author information. | o Updated author information. | |||
| o Fixed YANG compile error in ietf-bfd-lag.yang which was due to | o Fixed YANG compile error in ietf-bfd-lag.yang which was due to | |||
| incorrect when statement. | incorrect when statement. | |||
| A.3. Changes between versions -02 and -03 | B.4. Changes between versions -02 and -03 | |||
| o Fixed YANG compilation warning due to incorrect revision date in | o Fixed YANG compilation warning due to incorrect revision date in | |||
| ietf-bfd-ip-sh module. | ietf-bfd-ip-sh module. | |||
| A.4. Changes between versions -01 and -02 | B.5. Changes between versions -01 and -02 | |||
| o Replace routing-instance, which has been removed from | o Replace routing-instance, which has been removed from A YANG Data | |||
| [I-D.ietf-netmod-routing-cfg], with network-instance from | Model for Routing Management [RFC8022], with network-instance from | |||
| [I-D.ietf-rtgwg-ni-model] | YANG Network Instances [I-D.ietf-rtgwg-ni-model] | |||
| A.5. Changes between versions -00 and -01 | B.6. Changes between versions -00 and -01 | |||
| o Remove BFD configuration parameters from BFD clients, all BFD | o Remove BFD configuration parameters from BFD clients, all BFD | |||
| configuration parameters in BFD | configuration parameters in BFD | |||
| o YANG module split in multiple YANG modules (one per type of | o YANG module split in multiple YANG modules (one per type of | |||
| forwarding path) | forwarding path) | |||
| o For BFD over MPLS-TE we augment MPLS-TE model | o For BFD over MPLS-TE we augment MPLS-TE model | |||
| o For BFD authentication we now use key-chain in | o For BFD authentication we now use YANG Data Model for Key Chains | |||
| [I-D.ietf-rtgwg-yang-key-chain] | [RFC8177] | |||
| Authors' Addresses | Authors' Addresses | |||
| Reshad Rahman (editor) | Reshad Rahman (editor) | |||
| Cisco Systems | Cisco Systems | |||
| Canada | Canada | |||
| Email: rrahman@cisco.com | Email: rrahman@cisco.com | |||
| Lianshu Zheng (editor) | Lianshu Zheng (editor) | |||
| Huawei Technologies | Huawei Technologies | |||
| China | China | |||
| Email: vero.zheng@huawei.com | Email: vero.zheng@huawei.com | |||
| Santosh Pallagatti | ||||
| India | ||||
| Email: santosh.pallagatti@gmail.com | ||||
| Mahesh Jethanandani | Mahesh Jethanandani (editor) | |||
| Cisco Systems | Cisco Systems | |||
| Email: mjethanandani@gmail.com | Email: mjethanandani@gmail.com | |||
| Santosh Pallagatti | ||||
| India | ||||
| Email: santosh.pallagatti@gmail.com | ||||
| Greg Mirsky | Greg Mirsky | |||
| ZTE Corporation | ZTE Corporation | |||
| Email: gregimirsky@gmail.com | Email: gregimirsky@gmail.com | |||
| End of changes. 257 change blocks. | ||||
| 1446 lines changed or deleted | 1717 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/ | ||||