| < draft-ietf-bfd-yang-09.txt | draft-ietf-bfd-yang-10.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: July 26, 2018 Huawei Technologies | Expires: September 3, 2018 Huawei Technologies | |||
| M. Jethanandani, Ed. | M. Jethanandani, Ed. | |||
| S. Pallagatti | S. Pallagatti | |||
| G. Mirsky | G. Mirsky | |||
| ZTE Corporation | ZTE Corporation | |||
| January 22, 2018 | March 2, 2018 | |||
| YANG Data Model for Bidirectional Forwarding Detection (BFD) | YANG Data Model for Bidirectional Forwarding Detection (BFD) | |||
| draft-ietf-bfd-yang-09.txt | draft-ietf-bfd-yang-10.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 | The YANG modules in this document conform to the Network Management | |||
| Datastore Architecture (NMDA). | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 https://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 July 26, 2018. | This Internet-Draft will expire on September 3, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 | ||||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. Design of Configuration Model . . . . . . . . . . . . . . 5 | 2.1. Design of Configuration Model . . . . . . . . . . . . . . 5 | |||
| 2.1.1. Common BFD configuration parameters . . . . . . . . . 5 | 2.1.1. Common BFD configuration parameters . . . . . . . . . 6 | |||
| 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 6 | 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 | 2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 | 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 8 | |||
| 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 8 | 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 8 | |||
| 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 8 | 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 9 | |||
| 2.2. Design of Operational Model . . . . . . . . . . . . . . . 8 | 2.2. Design of Operational State Model . . . . . . . . . . . . 9 | |||
| 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 9 | 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 | 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 9 | 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 10 | |||
| 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 10 | 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 10 | |||
| 2.7. BFD IP multihop hierarchy . . . . . . . . . . . . . . . . 12 | 2.7. BFD IP multihop hierarchy . . . . . . . . . . . . . . . . 12 | |||
| 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 | 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 14 | |||
| 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 16 | 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 17 | |||
| 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 18 | 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 19 | |||
| 2.11. Interaction with other YANG modules . . . . . . . . . . . 20 | 2.11. Interaction with other YANG modules . . . . . . . . . . . 21 | |||
| 2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 20 | 2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 21 | |||
| 2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 20 | 2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 21 | |||
| 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 21 | 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 22 | |||
| 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 21 | 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 22 | |||
| 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 21 | 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 22 | |||
| 2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 24 | 2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 25 | |||
| 2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 36 | 2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 37 | |||
| 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 37 | 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 39 | |||
| 2.16. BFD IP multihop YANG Module . . . . . . . . . . . . . . . 40 | 2.16. BFD IP multihop YANG Module . . . . . . . . . . . . . . . 42 | |||
| 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 43 | 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 45 | |||
| 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 47 | 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 49 | |||
| 2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 51 | 2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 53 | |||
| 3. Data Model examples . . . . . . . . . . . . . . . . . . . . . 56 | ||||
| 3.1. IP single-hop . . . . . . . . . . . . . . . . . . . . . . 56 | ||||
| 3.2. IP multihop . . . . . . . . . . . . . . . . . . . . . . . 56 | ||||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 57 | ||||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 60 | ||||
| 5.1. IANA-Maintained iana-bfd-types module . . . . . . . . . . 61 | ||||
| 3. Data Model examples . . . . . . . . . . . . . . . . . . . . . 53 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 61 | |||
| 3.1. IP single-hop . . . . . . . . . . . . . . . . . . . . . . 53 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 61 | |||
| 3.2. IP multihop . . . . . . . . . . . . . . . . . . . . . . . 54 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 61 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 55 | 7.2. Informative References . . . . . . . . . . . . . . . . . 64 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55 | Appendix A. Echo function configuration example . . . . . . . . 64 | |||
| 5.1. IANA-Maintained iana-bfd-types module . . . . . . . . . . 56 | A.1. Example YANG module for BFD echo function configuration . 65 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 57 | Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 67 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 57 | B.1. Changes between versions -09 and -10 . . . . . . . . . . 67 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 57 | B.2. Changes between versions -08 and -09 . . . . . . . . . . 67 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 58 | B.3. Changes between versions -07 and -08 . . . . . . . . . . 67 | |||
| Appendix A. Echo function configuration example . . . . . . . . 59 | B.4. Changes between versions -06 and -07 . . . . . . . . . . 67 | |||
| A.1. Example YANG module for BFD echo function . . . . . . . . 60 | B.5. Changes between versions -05 and -06 . . . . . . . . . . 68 | |||
| Appendix B. BFD client configuration example . . . . . . . . . . 62 | B.6. Changes between versions -04 and -05 . . . . . . . . . . 68 | |||
| B.1. Example YANG module for BFD client . . . . . . . . . . . 62 | B.7. Changes between versions -03 and -04 . . . . . . . . . . 68 | |||
| Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 64 | B.8. Changes between versions -02 and -03 . . . . . . . . . . 68 | |||
| C.1. Changes between versions -08 and -09 . . . . . . . . . . 64 | B.9. Changes between versions -01 and -02 . . . . . . . . . . 68 | |||
| C.2. Changes between versions -07 and -08 . . . . . . . . . . 65 | B.10. Changes between versions -00 and -01 . . . . . . . . . . 68 | |||
| C.3. Changes between versions -06 and -07 . . . . . . . . . . 65 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 69 | |||
| C.4. Changes between versions -05 and -06 . . . . . . . . . . 65 | ||||
| C.5. Changes between versions -04 and -05 . . . . . . . . . . 65 | ||||
| C.6. Changes between versions -03 and -04 . . . . . . . . . . 65 | ||||
| C.7. Changes between versions -02 and -03 . . . . . . . . . . 66 | ||||
| C.8. Changes between versions -01 and -02 . . . . . . . . . . 66 | ||||
| C.9. Changes between versions -00 and -01 . . . . . . . . . . 66 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 66 | ||||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD | and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD | |||
| is a network protocol which is used for liveness detection of | is a network protocol which is used for liveness detection of | |||
| arbitrary paths between systems. Some examples of different types of | arbitrary paths between systems. Some examples of different types of | |||
| paths over which we have BFD: | paths over which we have BFD: | |||
| 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 | |||
| skipping to change at page 4, line 4 ¶ | skipping to change at page 3, line 43 ¶ | |||
| single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881] | single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881] | |||
| 2) Two systems connected via multiple hops as described in BFD for | 2) Two systems connected via multiple hops as described in BFD for | |||
| Multiple Hops. [RFC5883] | Multiple Hops. [RFC5883] | |||
| 3) Two systems connected via MPLS Label Switched Paths (LSPs) as | 3) Two systems connected via MPLS Label Switched Paths (LSPs) as | |||
| described in BFD for MPLS LSP [RFC5884] | described in BFD for MPLS LSP [RFC5884] | |||
| 4) Two systems connected via a Link Aggregation Group (LAG) interface | 4) Two systems connected via a Link Aggregation Group (LAG) interface | |||
| as described in BFD on LAG Interfaces [RFC7130] | as described in BFD on LAG Interfaces [RFC7130] | |||
| 5) Two systems connected via pseudowires (PWs), this is known as | 5) Two systems connected via pseudowires (PWs), this is known as | |||
| Virtual Circuit Connectivity Verification (VCCV) as described in BFD | Virtual Circuit Connectivity Verification (VCCV) as described in BFD | |||
| for PW VCCV [RFC5885]. This is not addressed in this document. | 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 as described in Generic Application of | BFD for their own operation as described in Generic Application of | |||
| BFD [RFC5882]. The obvious candidates which use BFD are those which | BFD [RFC5882]. The obvious candidates which use BFD are those which | |||
| do not have "hellos" to detect failures, e.g. static routes, and | do not have "hellos" to detect failures, e.g. static routes, and | |||
| routing protocols whose "hellos" do not support sub-second failure | routing protocols whose "hellos" do not support sub-second failure | |||
| detection, e.g. OSPF and IS-IS. | detection, e.g. OSPF and IS-IS. | |||
| The YANG modules in this document conform to the Network Management | ||||
| Datastore Architecture (NMDA) Network Management Datastore | ||||
| Architecture [I-D.ietf-netmod-revised-datastores]. This means that | ||||
| the data models do not have separate top-level or sibling containers | ||||
| for configuration and operational state data. | ||||
| 1.1. Requirements Language | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in BCP 14 [RFC2119] | ||||
| [RFC8174] when, and only when, they appear in all capitals, as shown | ||||
| here. | ||||
| 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 A YANG Data | is created under control-plane-protocol as specified in "A YANG Data | |||
| Model for Routing Management [RFC8022]. This new "bfd" node is | Model for Routing Management (NMDA Version)" | |||
| augmented by all the YANG modules for their respective specific | [I-D.ietf-netmod-rfc8022bis]. This new "bfd" container is augmented | |||
| information. | by all the YANG modules for their respective specific information: | |||
| 1. ietf-bfd-ip-sh.yang augments "/routing/control-plane-protocols/ | ||||
| control-plane-protocol/bfd/" with the "ip-sh" container for BFD | ||||
| sessions over IP single-hop. | ||||
| 2. ietf-bfd-ip-mh.yang augments "/routing/control-plane-protocols/ | ||||
| control-plane-protocol/bfd/" with the "ip-mh" container for BFD | ||||
| sessions over IP multi-hop. | ||||
| 3. ietf-bfd-lag.yang augments "/routing/control-plane-protocols/ | ||||
| control-plane-protocol/bfd/" with the "lag" container for BFD | ||||
| sessions over LAG. | ||||
| 4. ietf-bfd-mpls.yang augments "/routing/control-plane-protocols/ | ||||
| control-plane-protocol/bfd/" with the "mpls" container for BFD | ||||
| over MPLS LSPs. | ||||
| 5. ietf-bfd-mpls-te.yang augments "/routing/control-plane-protocols/ | ||||
| control-plane-protocol/bfd/" with the "mpls-te" container for BFD | ||||
| over MPLS-TE. | ||||
| BFD can operate in the following contexts: | BFD can operate in the following contexts: | |||
| 1. Network devices as described in Network Device YANG | 1. At the network device level | |||
| Organizational Models [I-D.ietf-rtgwg-device-model] | ||||
| 2. Logical Network Elements as described in YANG Logical Network | 2. In Logical Network Elements as described in YANG Logical Network | |||
| Element [I-D.ietf-rtgwg-lne-model] | Element [I-D.ietf-rtgwg-lne-model] | |||
| 3. Network instances as described in YANG Logical Network Element | 3. In Network Instances as described in YANG Logical Network Element | |||
| [I-D.ietf-rtgwg-ni-model] | [I-D.ietf-rtgwg-ni-model] | |||
| The approach taken is to do a schema-mount (see Schema Mount | When used at the network device level, the BFD YANG model is used | |||
| [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate | "as-is". When the BFD model is to be used in a Logical Network | |||
| locations. For example, if an implementation supports BFD IP | Element or in a Network Instance, the approach taken is to do a | |||
| multihop in network instances, the implementation would do schema- | schema-mount (see Schema Mount [I-D.ietf-netmod-schema-mount]) of the | |||
| mount of the BFD IP multihop model in a mount-point which resides in | BFD model in the appropriate location. For example, if an | |||
| a network instance. | implementation supports BFD IP multihop in network instances, the | |||
| implementation would do schema-mount of the BFD IP multihop model in | ||||
| The data models in this document strive to follow the "Network | a mount-point which resides in a network instance. | |||
| 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. | ||||
| 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 BFD [RFC5880]. Some examples are desired minimum transmit | in BFD [RFC5880]. Some examples are desired minimum transmit | |||
| interval, required minimum receive interval, detection multiplier, | interval, required minimum receive interval, detection multiplier, | |||
| etc | etc | |||
| BFD clients are applications that use BFD for fast detection of | BFD clients are applications that use BFD for fast detection of | |||
| failures. Some implementations have BFD session configuration under | failures. Some implementations have BFD session configuration under | |||
| skipping to change at page 5, line 40 ¶ | skipping to change at page 6, line 12 ¶ | |||
| centralized under BFD. However, this is a problem for clients of BFD | centralized under BFD. However, this is a problem for clients of BFD | |||
| which auto-discover their peers. For example, IGPs do not have the | which auto-discover their peers. For example, IGPs do not have the | |||
| peer address configured, instead the IGP is enabled on an interface | peer address configured, instead the IGP is enabled on an interface | |||
| and the IGP peers are auto-discovered. So for an operator to | and the IGP peers are auto-discovered. So for an operator to | |||
| configure BFD to an IGP peer, the operator would first have to | configure BFD to an IGP peer, the operator would first have to | |||
| determine the peer addresses. And when a new peer is discovered, BFD | determine the peer addresses. And when a new peer is discovered, BFD | |||
| configuration would need to be added. To avoid this issue, we define | configuration would need to be added. To avoid this issue, we define | |||
| grouping client-cfg-parms in Section 2.13 for BFD clients to | grouping client-cfg-parms in Section 2.13 for BFD clients to | |||
| configure BFD: this allows BFD clients such as the IGPs to have | configure BFD: this allows BFD clients such as the IGPs to have | |||
| configuration (multiplier and intervals) for the BFD sessions they | configuration (multiplier and intervals) for the BFD sessions they | |||
| need. The mechanism how the BFD sessions are created by the BFD | need. For example, when a new IGP peer is discovered, the IGP would | |||
| clients is outside the scope of this document. For BFD clients which | create a BFD session to the newly discovered peer and similarly when | |||
| create BFD sessions via their own configuration, authentication | an IGP peer goes away, the IGP would remove the BFD session to that | |||
| parameters (if required) are still specified in BFD. | peer. The mechanism how the BFD sessions are created and removed by | |||
| the BFD clients is outside the scope of this document, but typically | ||||
| this would be done by use of an API implemented by the BFD module on | ||||
| the system. For BFD clients which create BFD sessions via their own | ||||
| configuration, authentication parameters (if required) are still | ||||
| specified in BFD. | ||||
| 2.1.1. Common BFD configuration parameters | 2.1.1. Common BFD configuration parameters | |||
| The basic BFD configuration parameters are: | The basic BFD configuration parameters are: | |||
| local-multiplier | local-multiplier | |||
| This is the detection time multiplier as defined in BFD | This is the detection time multiplier as defined in BFD | |||
| [RFC5880]. | [RFC5880]. | |||
| desired-min-tx-interval | desired-min-tx-interval | |||
| skipping to change at page 8, line 39 ¶ | skipping to change at page 9, line 18 ¶ | |||
| Per BFD on LAG Interfaces [RFC7130], configuring BFD on LAG consists | Per BFD on LAG Interfaces [RFC7130], configuring BFD on LAG consists | |||
| of having micro-BFD sessions on each LAG member link. Since the BFD | of having micro-BFD sessions on each LAG member link. Since the BFD | |||
| parameters are an attribute of the LAG, they should be under the LAG. | parameters are an attribute of the LAG, they should be under the LAG. | |||
| However there is no LAG YANG model which we can augment. So a "lag" | However there is no LAG YANG model which we can augment. So a "lag" | |||
| data node is added to the "bfd" node in Section 2, the configuration | data node is added to the "bfd" node in Section 2, the configuration | |||
| is per-LAG: we have a list of LAGs. The destination IP address of | is per-LAG: we have a list of LAGs. The destination IP address of | |||
| the micro-BFD sessions is configured per-LAG and per address-family | the micro-BFD sessions is configured per-LAG and per address-family | |||
| (IPv4 and IPv6) | (IPv4 and IPv6) | |||
| 2.2. Design of Operational Model | 2.2. Design of Operational State Model | |||
| The operational model contains both the overall statistics of BFD | The operational state model contains both the overall statistics of | |||
| sessions running on the device and the per session operational | BFD 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 | |||
| in Section 2 and also per type of forwarding path. | in Section 2 and also per type of forwarding path. | |||
| For each BFD session, mainly three categories of operational items | For each BFD session, mainly three categories of operational state | |||
| are shown. The fundamental information of a BFD session such as the | data are shown. The fundamental information of a BFD session such as | |||
| local discriminator, remote discriminator and the capability of | the local discriminator, remote discriminator and the capability of | |||
| supporting demand detect mode are shown in the first category. The | supporting demand detect mode are shown in the first category. The | |||
| second category includes a BFD session running information, e.g. the | second category includes a BFD session running information, e.g. the | |||
| 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 path types, there may be more than 1 session on the virtual | For some path types, there may be more than 1 session on the virtual | |||
| path to the destination. For example, with IP multihop and MPLS | path to the destination. For example, with IP multihop and MPLS | |||
| LSPs, there could be multiple BFD sessions from the source to the | LSPs, there could be multiple BFD sessions from the source to the | |||
| same destination to test the various paths (ECMP) to the destination. | same destination to test the various paths (ECMP) to the destination. | |||
| This is represented by having multiple "sessions" under each | This is represented by having multiple "sessions" under each | |||
| "session-group". | "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 end-users 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 | |||
| None. | None. | |||
| 2.5. BFD top level hierarchy | 2.5. BFD top level hierarchy | |||
| At the "bfd" node under control-plane-protocol, there is no | At the "bfd" node under control-plane-protocol, there is no | |||
| configuration data, only operational data. The operational data | configuration data, only operational state data. The operational | |||
| consist of overall BFD session statistics, i.e. for BFD on all types | state data consist of overall BFD session statistics, i.e. for BFD on | |||
| of forwarding paths. The "bfd" node under control-plane-protocol can | all types of forwarding paths. The "bfd" node under control-plane- | |||
| be used in a network device (top-level), or mounted in an LNE or in a | protocol can be used in a network device (top-level), or mounted in | |||
| network instance. | an LNE or in a 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-proto | |||
| /rt:control-plane-protocol: | col: | |||
| +--rw bfd | +--rw bfd | |||
| +--ro session-statistics | +--ro summary | |||
| +--ro session-count? uint32 | +--ro number-of-sessions? yang:gauge32 | |||
| +--ro session-up-count? uint32 | +--ro number-of-sessions-up? yang:gauge32 | |||
| +--ro session-down-count? uint32 | +--ro number-of-sessions-down? yang:gauge32 | |||
| +--ro session-admin-down-count? uint32 | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| 2.6. BFD IP single-hop hierarchy | 2.6. BFD IP single-hop hierarchy | |||
| An "ip-sh" node is added under "bfd" node in control-plane-protocol. | An "ip-sh" node is added under "bfd" node in control-plane-protocol. | |||
| The configuration and operational data for each BFD IP single-hop | The configuration and operational state data for each BFD IP single- | |||
| session is under this "ip-sh" node. The "ip-sh" node can be used in | hop session is under this "ip-sh" node. The "ip-sh" node can be used | |||
| a network device (top-level), or mounted in an LNE or in a network | in a network device (top-level), or mounted in an LNE or in a network | |||
| instance. | instance. | |||
| module: ietf-bfd-ip-sh | module: ietf-bfd-ip-sh | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto | |||
| /rt:control-plane-protocol/bfd:bfd: | col/bfd:bfd: | |||
| +--rw ip-sh | +--rw ip-sh | |||
| +--ro session-statistics | +--ro summary | |||
| | +--ro session-count? uint32 | | +--ro number-of-sessions? yang:gauge32 | |||
| | +--ro session-up-count? uint32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| | +--ro session-down-count? uint32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| | +--ro session-admin-down-count? uint32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| +--rw sessions* [interface dest-addr] | +--rw sessions* [interface dest-addr] | |||
| | +--rw interface if:interface-ref | | +--rw interface if:interface-ref | |||
| | +--rw dest-addr inet:ip-address | | +--rw dest-addr inet:ip-address | |||
| | +--rw source-addr? inet:ip-address | | +--rw source-addr? inet:ip-address | |||
| | +--rw local-multiplier? multiplier | | +--rw local-multiplier? multiplier | |||
| | +--rw (interval-config-type)? | | +--rw (interval-config-type)? | |||
| | | +--:(tx-rx-intervals) | | | +--:(tx-rx-intervals) | |||
| | | | +--rw desired-min-tx-interval? uint32 | | | | +--rw desired-min-tx-interval? uint32 | |||
| | | | +--rw required-min-rx-interval? uint32 | | | | +--rw required-min-rx-interval? uint32 | |||
| | | +--:(single-interval) | | | +--:(single-interval) {single-minimum-interval}? | |||
| | | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| | +--rw demand-enabled? boolean {demand-mode}? | | +--rw demand-enabled? boolean {demand-mode}? | |||
| | +--rw admin-down? boolean | | +--rw admin-down? boolean | |||
| | +--rw authentication! {authentication}? | | +--rw authentication! {authentication}? | |||
| | | +--rw key-chain? kc:key-chain-ref | | | +--rw key-chain? kc:key-chain-ref | |||
| | | +--rw meticulous? boolean | | | +--rw meticulous? boolean | |||
| | +--ro path-type? identityref | | +--ro path-type? identityref | |||
| | +--ro ip-encapsulation? boolean | | +--ro ip-encapsulation? boolean | |||
| | +--ro local-discriminator? discriminator | | +--ro local-discriminator? discriminator | |||
| | +--ro remote-discriminator? discriminator | | +--ro remote-discriminator? discriminator | |||
| skipping to change at page 11, line 16 ¶ | skipping to change at page 11, line 40 ¶ | |||
| | +--ro dest-port? inet:port-number | | +--ro dest-port? inet:port-number | |||
| | +--ro session-running | | +--ro session-running | |||
| | | +--ro session-index? uint32 | | | +--ro session-index? uint32 | |||
| | | +--ro local-state? state | | | +--ro local-state? state | |||
| | | +--ro remote-state? state | | | +--ro remote-state? state | |||
| | | +--ro local-diagnostic? | | | +--ro local-diagnostic? | |||
| | | | iana-bfd-types:diagnostic | | | | iana-bfd-types:diagnostic | |||
| | | +--ro remote-diagnostic? | | | +--ro remote-diagnostic? | |||
| | | | iana-bfd-types:diagnostic | | | | iana-bfd-types:diagnostic | |||
| | | +--ro remote-authenticated? boolean | | | +--ro remote-authenticated? boolean | |||
| | | +--ro remote-authentication-type? iana-bfd-types: | | | +--ro remote-authentication-type? iana-bfd-types:auth-ty | |||
| auth-type | pe | |||
| | | | {authentication}? | | | | {authentication}? | |||
| | | +--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 detection-time? uint32 | | | +--ro detection-time? uint32 | |||
| | | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? | | | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? | |||
| | +--ro sesssion-statistics | | +--ro session-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? yang:counter32 | |||
| | +--ro admin-down-count? uint32 | | +--ro admin-down-count? yang:counter32 | |||
| | +--ro receive-packet-count? uint64 | | +--ro receive-packet-count? yang:counter64 | |||
| | +--ro send-packet-count? uint64 | | +--ro send-packet-count? yang:counter64 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro receive-invalid-packet-count? yang:counter64 | |||
| | +--ro send-failed-packet? uint64 | | +--ro send-failed-packet-count? yang:counter64 | |||
| +--rw interfaces* [interface] | +--rw interfaces* [interface] | |||
| +--rw interface if:interface-ref | +--rw interface if:interface-ref | |||
| +--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| +--rw key-chain? kc:key-chain-ref | +--rw key-chain? kc:key-chain-ref | |||
| +--rw meticulous? boolean | +--rw meticulous? boolean | |||
| notifications: | notifications: | |||
| +---n singlehop-notification | +---n singlehop-notification | |||
| +--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
| +--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
| skipping to change at page 12, line 9 ¶ | skipping to change at page 12, line 33 ¶ | |||
| +--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| +--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
| +--ro session-index? uint32 | +--ro session-index? uint32 | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro interface? if:interface-ref | +--ro interface? if:interface-ref | |||
| +--ro echo-enabled? boolean | +--ro echo-enabled? boolean | |||
| 2.7. BFD IP multihop hierarchy | 2.7. BFD IP multihop hierarchy | |||
| An "ip-mh" node is added under the "bfd" node in cntrol-plane- | An "ip-mh" node is added under the "bfd" node in cntrol-plane- | |||
| protocol. The configuration and operational data for each BFD IP | protocol. The configuration and operational state data for each BFD | |||
| multihop session is under this "ip-mh" node. In the operational | IP multihop session is under this "ip-mh" node. In the operational | |||
| model we support multiple BFD multihop sessions per remote address | state model we support multiple BFD multihop sessions per remote | |||
| (ECMP), the local discriminator is used as key. The "ip-mh" node can | address (ECMP), the local discriminator is used as key. The "ip-mh" | |||
| be used in a network device (top-level), or mounted in an LNE or in a | node can be used in a network device (top-level), or mounted in an | |||
| network instance. | LNE or in a 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-proto | |||
| /rt:control-plane-protocol/bfd:bfd: | col/bfd:bfd: | |||
| +--rw ip-mh | +--rw ip-mh | |||
| +--ro session-statistics | +--ro summary | |||
| | +--ro session-count? uint32 | | +--ro number-of-sessions? yang:gauge32 | |||
| | +--ro session-up-count? uint32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| | +--ro session-down-count? uint32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| | +--ro session-admin-down-count? uint32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| +--rw session-group* [source-addr dest-addr] | +--rw session-group* [source-addr dest-addr] | |||
| +--rw source-addr inet:ip-address | +--rw source-addr inet:ip-address | |||
| +--rw dest-addr inet:ip-address | +--rw dest-addr inet:ip-address | |||
| +--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier | |||
| +--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| | +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| | +--:(single-interval) | | +--:(single-interval) {single-minimum-interval}? | |||
| | +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
| +--rw demand-enabled? boolean {demand-mode}? | +--rw demand-enabled? boolean {demand-mode}? | |||
| +--rw admin-down? boolean | +--rw admin-down? boolean | |||
| +--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
| +--rw tx-ttl? bfd-types:hops | +--rw tx-ttl? bfd-types:hops | |||
| +--rw rx-ttl bfd-types:hops | +--rw rx-ttl bfd-types:hops | |||
| +--ro sessions* | +--ro sessions* | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| skipping to change at page 13, line 21 ¶ | skipping to change at page 13, line 45 ¶ | |||
| | | iana-bfd-types:diagnostic | | | iana-bfd-types:diagnostic | |||
| | +--ro remote-authenticated? boolean | | +--ro remote-authenticated? boolean | |||
| | +--ro remote-authentication-type? | | +--ro remote-authentication-type? | |||
| | | iana-bfd-types:auth-type {authentication}? | | | iana-bfd-types:auth-type {authentication}? | |||
| | +--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 detection-time? uint32 | | +--ro detection-time? uint32 | |||
| | +--ro echo-tx-interval-in-use? uint32 | | +--ro echo-tx-interval-in-use? uint32 | |||
| | {echo-mode}? | | {echo-mode}? | |||
| +--ro sesssion-statistics | +--ro session-statistics | |||
| +--ro create-time? yang:date-and-time | +--ro create-time? yang:date-and-tim | |||
| +--ro last-down-time? yang:date-and-time | e | |||
| +--ro last-up-time? yang:date-and-time | +--ro last-down-time? yang:date-and-tim | |||
| +--ro down-count? uint32 | e | |||
| +--ro admin-down-count? uint32 | +--ro last-up-time? yang:date-and-tim | |||
| +--ro receive-packet-count? uint64 | e | |||
| +--ro send-packet-count? uint64 | +--ro down-count? yang:counter32 | |||
| +--ro receive-bad-packet? uint64 | +--ro admin-down-count? yang:counter32 | |||
| +--ro send-failed-packet? uint64 | +--ro receive-packet-count? yang:counter64 | |||
| +--ro send-packet-count? yang:counter64 | ||||
| +--ro receive-invalid-packet-count? yang:counter64 | ||||
| +--ro send-failed-packet-count? yang:counter64 | ||||
| notifications: | notifications: | |||
| +---n multihop-notification | +---n multihop-notification | |||
| +--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
| +--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
| +--ro new-state? state | +--ro new-state? state | |||
| +--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
| +--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
| +--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| +--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
| +--ro session-index? uint32 | +--ro session-index? uint32 | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| 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 state data for each BFD LAG session | |||
| under this "lag" node. The "lag" node can be used in a network | is under this "lag" node. The "lag" node can be used in a network | |||
| device (top-level), or mounted 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-proto | |||
| /rt:control-plane-protocol/bfd:bfd: | col/bfd:bfd: | |||
| +--rw lag | +--rw lag | |||
| +--rw micro-bfd-ipv4-session-statistics | +--rw micro-bfd-ipv4-session-statistics | |||
| | +--ro session-statistics | | +--ro summary | |||
| | +--ro session-count? uint32 | | +--ro number-of-sessions? yang:gauge32 | |||
| | +--ro session-up-count? uint32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| | +--ro session-down-count? uint32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| | +--ro session-admin-down-count? uint32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| +--rw micro-bfd-ipv6-session-statistics | +--rw micro-bfd-ipv6-session-statistics | |||
| | +--ro session-statistics | | +--ro summary | |||
| | +--ro session-count? uint32 | | +--ro number-of-sessions? yang:gauge32 | |||
| | +--ro session-up-count? uint32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| | +--ro session-down-count? uint32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| | +--ro session-admin-down-count? uint32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| +--rw sessions* [lag-name] | +--rw sessions* [lag-name] | |||
| +--rw lag-name if:interface-ref | +--rw lag-name if:interface-ref | |||
| +--rw ipv4-dest-addr? inet:ipv4-address | +--rw ipv4-dest-addr? inet:ipv4-address | |||
| +--rw ipv6-dest-addr? inet:ipv6-address | +--rw ipv6-dest-addr? inet:ipv6-address | |||
| +--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier | |||
| +--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| | +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| | +--:(single-interval) | | +--:(single-interval) {single-minimum-interval}? | |||
| | +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
| +--rw demand-enabled? boolean {demand-mode}? | +--rw demand-enabled? boolean {demand-mode}? | |||
| +--rw admin-down? boolean | +--rw admin-down? boolean | |||
| +--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
| +--rw use-ipv4? boolean | +--rw use-ipv4? boolean | |||
| +--rw use-ipv6? boolean | +--rw use-ipv6? boolean | |||
| +--ro member-links* [member-link] | +--ro member-links* [member-link] | |||
| +--ro member-link if:interface-ref | +--ro member-link if:interface-ref | |||
| skipping to change at page 15, line 17 ¶ | skipping to change at page 15, line 44 ¶ | |||
| | | | iana-bfd-types:diagnostic | | | | iana-bfd-types:diagnostic | |||
| | | +--ro remote-authenticated? boolean | | | +--ro remote-authenticated? boolean | |||
| | | +--ro remote-authentication-type? | | | +--ro remote-authentication-type? | |||
| | | | iana-bfd-types:auth-type {authentication}? | | | | iana-bfd-types:auth-type {authentication}? | |||
| | | +--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 detection-time? uint32 | | | +--ro detection-time? uint32 | |||
| | | +--ro echo-tx-interval-in-use? uint32 | | | +--ro echo-tx-interval-in-use? uint32 | |||
| | | {echo-mode}? | | | {echo-mode}? | |||
| | +--ro sesssion-statistics | | +--ro session-statistics | |||
| | +--ro create-time? yang:date-and-time | | +--ro create-time? | |||
| | +--ro last-down-time? yang:date-and-time | | | yang:date-and-time | |||
| | +--ro last-up-time? yang:date-and-time | | +--ro last-down-time? | |||
| | +--ro down-count? uint32 | | | yang:date-and-time | |||
| | +--ro admin-down-count? uint32 | | +--ro last-up-time? | |||
| | +--ro receive-packet-count? uint64 | | | yang:date-and-time | |||
| | +--ro send-packet-count? uint64 | | +--ro down-count? yang:counter32 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro admin-down-count? yang:counter32 | |||
| | +--ro send-failed-packet? uint64 | | +--ro receive-packet-count? yang:counter64 | |||
| | +--ro send-packet-count? yang:counter64 | ||||
| | +--ro receive-invalid-packet-count? yang:counter64 | ||||
| | +--ro send-failed-packet-count? yang:counter64 | ||||
| +--ro micro-bfd-ipv6 | +--ro micro-bfd-ipv6 | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro ip-encapsulation? boolean | +--ro ip-encapsulation? boolean | |||
| +--ro local-discriminator? discriminator | +--ro local-discriminator? discriminator | |||
| +--ro remote-discriminator? discriminator | +--ro remote-discriminator? discriminator | |||
| +--ro remote-multiplier? multiplier | +--ro remote-multiplier? multiplier | |||
| +--ro demand-capability? boolean {demand-mode}? | +--ro demand-capability? boolean {demand-mode}? | |||
| +--ro source-port? inet:port-number | +--ro source-port? inet:port-number | |||
| +--ro dest-port? inet:port-number | +--ro dest-port? inet:port-number | |||
| +--ro session-running | +--ro session-running | |||
| skipping to change at page 16, line 5 ¶ | skipping to change at page 16, line 35 ¶ | |||
| | | iana-bfd-types:diagnostic | | | iana-bfd-types:diagnostic | |||
| | +--ro remote-authenticated? boolean | | +--ro remote-authenticated? boolean | |||
| | +--ro remote-authentication-type? | | +--ro remote-authentication-type? | |||
| | | iana-bfd-types:auth-type {authentication}? | | | iana-bfd-types:auth-type {authentication}? | |||
| | +--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 detection-time? uint32 | | +--ro detection-time? uint32 | |||
| | +--ro echo-tx-interval-in-use? uint32 | | +--ro echo-tx-interval-in-use? uint32 | |||
| | {echo-mode}? | | {echo-mode}? | |||
| +--ro sesssion-statistics | +--ro session-statistics | |||
| +--ro create-time? yang:date-and-time | +--ro create-time? | |||
| +--ro last-down-time? yang:date-and-time | | yang:date-and-time | |||
| +--ro last-up-time? yang:date-and-time | +--ro last-down-time? | |||
| +--ro down-count? uint32 | | yang:date-and-time | |||
| +--ro admin-down-count? uint32 | +--ro last-up-time? | |||
| +--ro receive-packet-count? uint64 | | yang:date-and-time | |||
| +--ro send-packet-count? uint64 | +--ro down-count? yang:counter32 | |||
| +--ro receive-bad-packet? uint64 | +--ro admin-down-count? yang:counter32 | |||
| +--ro send-failed-packet? uint64 | +--ro receive-packet-count? yang:counter64 | |||
| +--ro send-packet-count? yang:counter64 | ||||
| +--ro receive-invalid-packet-count? yang:counter64 | ||||
| +--ro send-failed-packet-count? yang:counter64 | ||||
| notifications: | notifications: | |||
| +---n lag-notification | +---n lag-notification | |||
| +--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
| +--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
| +--ro new-state? state | +--ro new-state? state | |||
| +--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
| +--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
| +--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| +--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
| +--ro session-index? uint32 | +--ro session-index? uint32 | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro lag-name? if:interface-ref | +--ro lag-name? if:interface-ref | |||
| +--ro member-link? if:interface-ref | +--ro member-link? if:interface-ref | |||
| 2.9. BFD over MPLS LSPs hierarchy | 2.9. BFD over MPLS LSPs hierarchy | |||
| An "mpls" node is added under the "bfd" node in control-plane- | An "mpls" node is added under the "bfd" node in control-plane- | |||
| protocol. The configuration is per MPLS FEC under this "mpls" node. | protocol. The configuration is per MPLS FEC under this "mpls" node. | |||
| In the operational model we support multiple BFD sessions per MPLS | In the operational state model we support multiple BFD sessions per | |||
| FEC (ECMP), the local discriminator is used as key. The "mpls" node | MPLS FEC (ECMP), the local discriminator is used as key. The "mpls" | |||
| can be used in a network device (top-level), or mounted in an LNE or | node can be used in a network device (top-level), or mounted in an | |||
| in a network instance. | LNE or 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-proto | |||
| /rt:control-plane-protocol/bfd:bfd: | col/bfd:bfd: | |||
| +--rw mpls | +--rw mpls | |||
| +--ro session-statistics | +--ro summary | |||
| | +--ro session-count? uint32 | | +--ro number-of-sessions? yang:gauge32 | |||
| | +--ro session-up-count? uint32 | | +--ro number-of-sessions-up? yang:gauge32 | |||
| | +--ro session-down-count? uint32 | | +--ro number-of-sessions-down? yang:gauge32 | |||
| | +--ro session-admin-down-count? uint32 | | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| +--rw egress | +--rw egress | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| | +--rw local-multiplier? multiplier | | +--rw local-multiplier? multiplier | |||
| | +--rw (interval-config-type)? | | +--rw (interval-config-type)? | |||
| | | +--:(tx-rx-intervals) | | | +--:(tx-rx-intervals) | |||
| | | | +--rw desired-min-tx-interval? uint32 | | | | +--rw desired-min-tx-interval? uint32 | |||
| | | | +--rw required-min-rx-interval? uint32 | | | | +--rw required-min-rx-interval? uint32 | |||
| | | +--:(single-interval) | | | +--:(single-interval) {single-minimum-interval}? | |||
| | | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| | +--rw authentication! {authentication}? | | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
| +--rw session-group* [mpls-fec] | +--rw session-group* [mpls-fec] | |||
| +--rw mpls-fec inet:ip-prefix | +--rw mpls-fec inet:ip-prefix | |||
| +--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier | |||
| +--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| | +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| | +--:(single-interval) | | +--:(single-interval) {single-minimum-interval}? | |||
| | +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
| +--rw demand-enabled? boolean {demand-mode}? | +--rw demand-enabled? boolean {demand-mode}? | |||
| +--rw admin-down? boolean | +--rw admin-down? boolean | |||
| +--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
| +--ro sessions* | +--ro sessions* | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro ip-encapsulation? boolean | +--ro ip-encapsulation? boolean | |||
| +--ro local-discriminator? discriminator | +--ro local-discriminator? discriminator | |||
| skipping to change at page 18, line 4 ¶ | skipping to change at page 18, line 37 ¶ | |||
| | | iana-bfd-types:diagnostic | | | iana-bfd-types:diagnostic | |||
| | +--ro remote-authenticated? boolean | | +--ro remote-authenticated? boolean | |||
| | +--ro remote-authentication-type? | | +--ro remote-authentication-type? | |||
| | | iana-bfd-types:auth-type {authentication}? | | | iana-bfd-types:auth-type {authentication}? | |||
| | +--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 detection-time? uint32 | | +--ro detection-time? uint32 | |||
| | +--ro echo-tx-interval-in-use? uint32 | | +--ro echo-tx-interval-in-use? uint32 | |||
| | {echo-mode}? | | {echo-mode}? | |||
| +--ro sesssion-statistics | +--ro session-statistics | |||
| | +--ro create-time? yang:date-and-time | | +--ro create-time? yang:date-and-tim | |||
| | +--ro last-down-time? yang:date-and-time | e | |||
| | +--ro last-up-time? yang:date-and-time | | +--ro last-down-time? yang:date-and-tim | |||
| | +--ro down-count? uint32 | e | |||
| | +--ro admin-down-count? uint32 | | +--ro last-up-time? yang:date-and-tim | |||
| | +--ro receive-packet-count? uint64 | e | |||
| | +--ro send-packet-count? uint64 | | +--ro down-count? yang:counter32 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro admin-down-count? yang:counter32 | |||
| | +--ro send-failed-packet? uint64 | | +--ro receive-packet-count? yang:counter64 | |||
| | +--ro send-packet-count? yang:counter64 | ||||
| | +--ro receive-invalid-packet-count? yang:counter64 | ||||
| | +--ro send-failed-packet-count? yang:counter64 | ||||
| +--ro mpls-dest-address? inet:ip-address | +--ro mpls-dest-address? inet:ip-address | |||
| notifications: | notifications: | |||
| +---n mpls-notification | +---n mpls-notification | |||
| +--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
| +--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
| +--ro new-state? state | +--ro new-state? state | |||
| +--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
| +--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
| +--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| +--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
| +--ro session-index? uint32 | +--ro session-index? uint32 | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro mpls-dest-address? inet:ip-address | +--ro mpls-dest-address? inet:ip-address | |||
| 2.10. BFD over MPLS-TE hierarchy | 2.10. BFD over MPLS-TE hierarchy | |||
| YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is | YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is | |||
| augmented. BFD is configured per MPLS-TE tunnel, and BFD session | augmented. BFD is configured per MPLS-TE tunnel, and BFD session | |||
| operational data is provided per MPLS-TE LSP. | operational state data is provided per MPLS-TE LSP. | |||
| module: ietf-bfd-mpls-te | module: ietf-bfd-mpls-te | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto | |||
| /rt:control-plane-protocol/bfd:bfd: | col/bfd:bfd: | |||
| +--rw mpls-te | +--rw mpls-te | |||
| +--rw egress | +--rw egress | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| | +--rw local-multiplier? multiplier | | +--rw local-multiplier? multiplier | |||
| | +--rw (interval-config-type)? | | +--rw (interval-config-type)? | |||
| | | +--:(tx-rx-intervals) | | | +--:(tx-rx-intervals) | |||
| | | | +--rw desired-min-tx-interval? uint32 | | | | +--rw desired-min-tx-interval? uint32 | |||
| | | | +--rw required-min-rx-interval? uint32 | | | | +--rw required-min-rx-interval? uint32 | |||
| | | +--:(single-interval) | | | +--:(single-interval) {single-minimum-interval}? | |||
| | | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| | +--rw authentication! {authentication}? | | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
| +--ro session-statistics | +--ro summary | |||
| +--ro session-count? uint32 | +--ro number-of-sessions? yang:gauge32 | |||
| +--ro session-up-count? uint32 | +--ro number-of-sessions-up? yang:gauge32 | |||
| +--ro session-down-count? uint32 | +--ro number-of-sessions-down? yang:gauge32 | |||
| +--ro session-admin-down-count? uint32 | +--ro number-of-sessions-admin-down? yang:gauge32 | |||
| augment /te:te/te:tunnels/te:tunnel: | augment /te:te/te:tunnels/te:tunnel: | |||
| +--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier | |||
| +--rw (interval-config-type)? | +--rw (interval-config-type)? | |||
| | +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | | +--rw desired-min-tx-interval? uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | | +--rw required-min-rx-interval? uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| | +--:(single-interval) | | +--:(single-interval) {single-minimum-interval}? | |||
| | +--rw min-interval? uint32 | | +--rw min-interval? uint32 | |||
| +--rw demand-enabled? boolean {demand-mode}? | +--rw demand-enabled? boolean {demand-mode}? | |||
| +--rw admin-down? boolean | +--rw admin-down? boolean | |||
| +--rw authentication! {authentication}? | +--rw authentication! {authentication}? | |||
| | +--rw key-chain? kc:key-chain-ref | | +--rw key-chain? kc:key-chain-ref | |||
| | +--rw meticulous? boolean | | +--rw meticulous? boolean | |||
| +--rw encap? identityref | +--rw encap? identityref | |||
| augment /te:te/te:lsps-state/te:lsp: | augment /te:te/te:lsps-state/te:lsp: | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro ip-encapsulation? boolean | +--ro ip-encapsulation? boolean | |||
| skipping to change at page 19, line 45 ¶ | skipping to change at page 20, line 33 ¶ | |||
| | +--ro local-diagnostic? iana-bfd-types:diagnostic | | +--ro local-diagnostic? iana-bfd-types:diagnostic | |||
| | +--ro remote-diagnostic? iana-bfd-types:diagnostic | | +--ro remote-diagnostic? iana-bfd-types:diagnostic | |||
| | +--ro remote-authenticated? boolean | | +--ro remote-authenticated? boolean | |||
| | +--ro remote-authentication-type? iana-bfd-types:auth-type | | +--ro remote-authentication-type? iana-bfd-types:auth-type | |||
| | | {authentication}? | | | {authentication}? | |||
| | +--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 detection-time? uint32 | | +--ro detection-time? uint32 | |||
| | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? | | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? | |||
| +--ro sesssion-statistics | +--ro session-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? yang:counter32 | |||
| | +--ro admin-down-count? uint32 | | +--ro admin-down-count? yang:counter32 | |||
| | +--ro receive-packet-count? uint64 | | +--ro receive-packet-count? yang:counter64 | |||
| | +--ro send-packet-count? uint64 | | +--ro send-packet-count? yang:counter64 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro receive-invalid-packet-count? yang:counter64 | |||
| | +--ro send-failed-packet? uint64 | | +--ro send-failed-packet-count? yang:counter64 | |||
| +--ro mpls-dest-address? inet:ip-address | +--ro mpls-dest-address? inet:ip-address | |||
| notifications: | notifications: | |||
| +---n mpls-te-notification | +---n mpls-te-notification | |||
| +--ro local-discr? discriminator | +--ro local-discr? discriminator | |||
| +--ro remote-discr? discriminator | +--ro remote-discr? discriminator | |||
| +--ro new-state? state | +--ro new-state? state | |||
| +--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
| +--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
| +--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| skipping to change at page 20, line 35 ¶ | skipping to change at page 21, line 23 ¶ | |||
| Generic YANG Data Model for Connectionless OAM protocols | 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.11.1. Module ietf-interfaces | 2.11.1. Module ietf-interfaces | |||
| The following boolean configuration is defined in A YANG Data Model | The following boolean configuration is defined in A YANG Data Model | |||
| for Interface Management [RFC7223]: | for Interface Management [I-D.ietf-netmod-rfc7223bis]: | |||
| /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.11.2. Module ietf-ip | 2.11.2. Module ietf-ip | |||
| The following boolean configuration is defined in A YANG Data Model | The following boolean configuration is defined in A YANG Data Model | |||
| for IP Management [RFC7277]: | for IP Management [I-D.ietf-netmod-rfc7277bis]: | |||
| /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 | |||
| skipping to change at page 21, line 36 ¶ | skipping to change at page 22, line 26 ¶ | |||
| The following configuration is defined in the "ietf-te" YANG module | The following configuration is defined in the "ietf-te" YANG module | |||
| YANG Data Model for TE Topology [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.12. IANA BFD YANG Module | 2.12. IANA BFD YANG Module | |||
| <CODE BEGINS> file "iana-bfd-types@2018-01-22.yang" | <CODE BEGINS> file "iana-bfd-types@2018-03-01.yang" | |||
| module iana-bfd-types { | module iana-bfd-types { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | |||
| prefix "iana-bfd-types"; | prefix "iana-bfd-types"; | |||
| organization "IANA"; | organization "IANA"; | |||
| skipping to change at page 22, line 11 ¶ | skipping to change at page 22, line 49 ¶ | |||
| " Internet Assigned Numbers Authority | " Internet Assigned Numbers Authority | |||
| Postal: ICANN | Postal: ICANN | |||
| 4676 Admiralty Way, Suite 330 | 4676 Admiralty Way, Suite 330 | |||
| Marina del Rey, CA 90292 | Marina del Rey, CA 90292 | |||
| Tel: +1 310 823 9358 | Tel: +1 310 823 9358 | |||
| <mailto:iana@iana.org>"; | <mailto:iana@iana.org>"; | |||
| description | description | |||
| "This module contains a collection of YANG data types | "This module defines YANG data types for IANA-registered | |||
| considered defined by IANA and used for BFD. | BFD parameters. | |||
| This YANG module is maintained by IANA and reflects the | ||||
| 'BFD Diagnostic Codes' and 'BFD Authentication Types' registries. | ||||
| Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2018 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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove | // RFC Ed.: replace XXXX with actual RFC number and remove | |||
| // this note | // this note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: IANA BFD YANG Data Types."; | reference "RFC XXXX: IANA BFD YANG Data Types."; | |||
| } | } | |||
| /* | /* | |||
| * Type Definitions | * Type Definitions | |||
| */ | */ | |||
| typedef diagnostic { | typedef diagnostic { | |||
| type enumeration { | type enumeration { | |||
| enum none { | enum none { | |||
| skipping to change at page 23, line 36 ¶ | skipping to change at page 24, line 28 ¶ | |||
| enum reverse-concatenated-path-down { | enum reverse-concatenated-path-down { | |||
| value 8; | value 8; | |||
| description "Reverse concatenated path down"; | description "Reverse concatenated path down"; | |||
| } | } | |||
| enum mis-connectivity-defect { | enum mis-connectivity-defect { | |||
| value 9; | value 9; | |||
| description "Mis-connectivity defect as specified in RFC6428"; | description "Mis-connectivity defect as specified in RFC6428"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "BFD diagnostic as defined in RFC 5880. Range is 0 to 31."; | "BFD diagnostic as defined in RFC 5880, values are maintained in | |||
| the 'BFD Diagnostic Codes' IANA registry. Range is 0 to 31."; | ||||
| } | } | |||
| typedef auth-type { | typedef auth-type { | |||
| type enumeration { | type enumeration { | |||
| enum reserved { | enum reserved { | |||
| value 0; | value 0; | |||
| description "Reserved"; | description "Reserved"; | |||
| } | } | |||
| enum simple-password { | enum simple-password { | |||
| value 1; | value 1; | |||
| skipping to change at page 24, line 4 ¶ | skipping to change at page 24, line 45 ¶ | |||
| value 0; | value 0; | |||
| description "Reserved"; | description "Reserved"; | |||
| } | } | |||
| enum simple-password { | enum simple-password { | |||
| value 1; | value 1; | |||
| description "Simple password"; | description "Simple password"; | |||
| } | } | |||
| enum keyed-md5 { | enum keyed-md5 { | |||
| value 2; | value 2; | |||
| description "Keyed MD5"; | description "Keyed MD5"; | |||
| } | } | |||
| enum meticulous-keyed-md5 { | enum meticulous-keyed-md5 { | |||
| value 3; | value 3; | |||
| description "Meticulous keyed MD5"; | description "Meticulous keyed MD5"; | |||
| } | } | |||
| enum keyed-sha1 { | enum keyed-sha1 { | |||
| value 4; | value 4; | |||
| description "Keyed SHA1"; | description "Keyed SHA1"; | |||
| } | } | |||
| enum meticulous-keyed-sha1 { | enum meticulous-keyed-sha1 { | |||
| value 5; | value 5; | |||
| description "Meticulous keyed SHA1"; | description "Meticulous keyed SHA1"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "BFD authentication type as defined in RFC 5880. Range is 0 to | "BFD authentication type as defined in RFC 5880, values are | |||
| 255."; | maintained in the 'BFD Authentication Types' IANA registry. | |||
| Range is 0 to 255."; | ||||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.13. BFD types YANG Module | 2.13. BFD types YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-types@2018-01-22.yang" | This YANG module imports typedefs from [RFC6991] and the "control- | |||
| plane-protocol" identity from [I-D.ietf-netmod-rfc8022bis]. | ||||
| module ietf-bfd-types { | <CODE BEGINS> file "ietf-bfd-types@2018-03-01.yang" | |||
| yang-version 1.1; | module ietf-bfd-types { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | yang-version 1.1; | |||
| prefix "bfd-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | |||
| import iana-bfd-types { | prefix "bfd-types"; | |||
| prefix "iana-bfd-types"; | ||||
| } | ||||
| import ietf-inet-types { | import iana-bfd-types { | |||
| prefix "inet"; | prefix "iana-bfd-types"; | |||
| reference "RFC 6991"; | } | |||
| } | ||||
| import ietf-yang-types { | import ietf-inet-types { | |||
| prefix "yang"; | prefix "inet"; | |||
| reference "RFC 6991"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | ||||
| prefix "rt"; | ||||
| reference "RFC 8022"; | ||||
| } | ||||
| import ietf-key-chain { | import ietf-yang-types { | |||
| prefix "kc"; | prefix "yang"; | |||
| reference "RFC 8177"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| organization "IETF BFD Working Group"; | import ietf-routing { | |||
| prefix "rt"; | ||||
| // RFC Ed.: replace XXXX with actual RFC number of | ||||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | ||||
| contact | import ietf-key-chain { | |||
| "WG Web: <http://tools.ietf.org/wg/bfd> | prefix "kc"; | |||
| WG List: <rtg-bfd@ietf.org> | reference "RFC 8177: YANG Data Model for Key Chains"; | |||
| } | ||||
| Editors: Reshad Rahman (rrahman@cisco.com), | organization "IETF BFD Working Group"; | |||
| Lianshu Zheng (vero.zheng@huawei.com), | ||||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | ||||
| description | contact | |||
| "This module contains a collection of BFD specific YANG data type | "WG Web: <http://tools.ietf.org/wg/bfd> | |||
| definitions, as per RFC 5880. | 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 a collection of BFD specific YANG data type | |||
| to the license terms contained in, the Simplified BSD License | definitions, as per RFC 5880, and also groupings which are common | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | to other BFD YANG modules. | |||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see | Copyright (c) 2018 IETF Trust and the persons | |||
| the RFC itself for full legal notices."; | identified as authors of the code. All rights reserved. | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | Redistribution and use in source and binary forms, with or | |||
| // note | 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). | ||||
| reference "RFC XXXX"; | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | ||||
| revision 2018-01-22 { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| description "Initial revision."; | // note | |||
| reference "RFC XXXX: A YANG data model for BFD"; | ||||
| } | ||||
| /* | reference "RFC XXXX"; | |||
| * Feature definitions | ||||
| */ | ||||
| feature authentication { | ||||
| description | ||||
| "This feature indicates that the server supports BFD | ||||
| authentication as defined in RFC 5880."; | ||||
| } | ||||
| feature demand-mode { | revision 2018-03-01 { | |||
| description | description "Initial revision."; | |||
| "This feature indicates that the server supports BFD demand mode | reference "RFC XXXX: YANG Data Model for BFD"; | |||
| as defined in RFC 5880."; | } | |||
| } | /* | |||
| * Feature definitions | ||||
| */ | ||||
| feature single-minimum-interval { | ||||
| description | ||||
| "This feature indicates that the server supports configuration | ||||
| of one minimum interval value which is used for both transmit and | ||||
| receive minimum intervals."; | ||||
| } | ||||
| feature echo-mode { | feature authentication { | |||
| description | description | |||
| "This feature indicates that the server supports BFD echo mode | "This feature indicates that the server supports BFD | |||
| as defined in RFC 5880."; | authentication as defined in RFC 5880."; | |||
| } | } | |||
| /* | feature demand-mode { | |||
| * Identity definitions | description | |||
| */ | "This feature indicates that the server supports BFD demand mode | |||
| identity bfdv1 { | as defined in RFC 5880."; | |||
| base "rt:control-plane-protocol"; | } | |||
| description "BFD protocol version 1 as per RFC 5880."; | ||||
| } | ||||
| identity path-type { | feature echo-mode { | |||
| description | description | |||
| "Base identity for BFD path type. The path type indicates | "This feature indicates that the server supports BFD echo mode | |||
| the type of path on which BFD is running."; | as defined in RFC 5880."; | |||
| } | } | |||
| identity path-ip-sh { | ||||
| base path-type; | ||||
| description "BFD on IP single hop as described in RFC 5881."; | ||||
| } | ||||
| identity path-ip-mh { | ||||
| base path-type; | ||||
| description "BFD on IP multihop paths as described in RFC 5883."; | ||||
| } | ||||
| identity path-mpls-te { | ||||
| base path-type; | ||||
| description | ||||
| "BFD on MPLS Traffic Engineering as described in RFC 5884."; | ||||
| } | ||||
| identity path-mpls-lsp { | ||||
| base path-type; | ||||
| description | ||||
| "BFD on MPLS Label Switched Path as described in RFC 5884."; | ||||
| } | ||||
| identity path-lag { | ||||
| base path-type; | ||||
| description | ||||
| "Micro-BFD on LAG member links as described in RFC 7130."; | ||||
| } | ||||
| identity encap-type { | /* | |||
| description | * Identity definitions | |||
| "Base identity for BFD encapsulation type."; | */ | |||
| } | identity bfdv1 { | |||
| identity encap-ip { | base "rt:control-plane-protocol"; | |||
| base encap-type; | description "BFD protocol version 1 as per RFC 5880."; | |||
| description "BFD with IP encapsulation."; | } | |||
| } | ||||
| /* | identity path-type { | |||
| * Type Definitions | description | |||
| */ | "Base identity for BFD path type. The path type indicates | |||
| typedef discriminator { | the type of path on which BFD is running."; | |||
| type uint32; | } | |||
| description "BFD discriminator as described in RFC 5880."; | identity path-ip-sh { | |||
| } | base path-type; | |||
| description "BFD on IP single hop as described in RFC 5881."; | ||||
| } | ||||
| identity path-ip-mh { | ||||
| base path-type; | ||||
| description "BFD on IP multihop paths as described in RFC 5883."; | ||||
| typedef state { | } | |||
| type enumeration { | identity path-mpls-te { | |||
| enum adminDown { | base path-type; | |||
| value 0; | description | |||
| description "admindown"; | "BFD on MPLS Traffic Engineering as described in RFC 5884."; | |||
| } | } | |||
| enum down { | identity path-mpls-lsp { | |||
| value 1; | base path-type; | |||
| description "down"; | description | |||
| } | "BFD on MPLS Label Switched Path as described in RFC 5884."; | |||
| enum init { | } | |||
| value 2; | identity path-lag { | |||
| description "init"; | base path-type; | |||
| } | description | |||
| enum up { | "Micro-BFD on LAG member links as described in RFC 7130."; | |||
| value 3; | } | |||
| description "up"; | ||||
| } | ||||
| } | ||||
| description "BFD state as defined in RFC 5880."; | ||||
| } | ||||
| typedef multiplier { | ||||
| type uint8 { | ||||
| range 1..255; | ||||
| } | ||||
| description "BFD multiplier as described in RFC 5880."; | ||||
| } | ||||
| typedef hops { | identity encap-type { | |||
| type uint8 { | description | |||
| range 1..255; | "Base identity for BFD encapsulation type."; | |||
| } | } | |||
| description | identity encap-ip { | |||
| "This corresponds to Time To Live for IPv4 and corresponds to hop | base encap-type; | |||
| limit for IPv6."; | description "BFD with IP encapsulation."; | |||
| } | } | |||
| /* | /* | |||
| * Groupings | * Type Definitions | |||
| */ | */ | |||
| grouping auth-parms { | typedef discriminator { | |||
| description | type uint32; | |||
| "Grouping for BFD authentication parameters | description "BFD discriminator as described in RFC 5880."; | |||
| (see section 6.7 of RFC 5880)."; | } | |||
| container authentication { | ||||
| if-feature authentication; | ||||
| presence | ||||
| "Enables BFD authentication (see section 6.7 of RFC 5880)."; | ||||
| description "Parameters for BFD authentication."; | ||||
| leaf key-chain { | typedef state { | |||
| type kc:key-chain-ref; | type enumeration { | |||
| description "Name of the key-chain as per RFC 8177."; | enum adminDown { | |||
| } | value 0; | |||
| description "admindown"; | ||||
| } | ||||
| enum down { | ||||
| value 1; | ||||
| description "down"; | ||||
| } | ||||
| enum init { | ||||
| value 2; | ||||
| description "init"; | ||||
| } | ||||
| enum up { | ||||
| value 3; | ||||
| description "up"; | ||||
| } | ||||
| } | ||||
| description "BFD state as defined in RFC 5880."; | ||||
| } | ||||
| leaf meticulous { | typedef multiplier { | |||
| type boolean; | type uint8 { | |||
| description | range 1..255; | |||
| "Enables meticulous mode as described in section 6.7 " + | } | |||
| "of RFC 5880."; | description "BFD multiplier as described in RFC 5880."; | |||
| } | } | |||
| } | ||||
| } | ||||
| grouping base-cfg-parms { | typedef hops { | |||
| description "BFD grouping for base config parameters."; | type uint8 { | |||
| leaf local-multiplier { | range 1..255; | |||
| type multiplier; | } | |||
| default 3; | description | |||
| description "Multiplier transmitted by local system."; | "This corresponds to Time To Live for IPv4 and corresponds to hop | |||
| } | limit for IPv6."; | |||
| } | ||||
| choice interval-config-type { | /* | |||
| description | * Groupings | |||
| "Two interval values or 1 value used for both transmit and | */ | |||
| receive."; | grouping auth-parms { | |||
| case tx-rx-intervals { | description | |||
| leaf desired-min-tx-interval { | "Grouping for BFD authentication parameters | |||
| type uint32; | (see section 6.7 of RFC 5880)."; | |||
| units microseconds; | container authentication { | |||
| default 1000000; | if-feature authentication; | |||
| description | presence | |||
| "Desired minimum transmit interval of control packets."; | "Enables BFD authentication (see section 6.7 of RFC 5880)."; | |||
| } | description "Parameters for BFD authentication."; | |||
| leaf required-min-rx-interval { | leaf key-chain { | |||
| type uint32; | type kc:key-chain-ref; | |||
| units microseconds; | description "Name of the key-chain as per RFC 8177."; | |||
| default 1000000; | } | |||
| description | ||||
| "Required minimum receive interval of control packets."; | ||||
| } | ||||
| } | ||||
| case single-interval { | ||||
| leaf min-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| default 1000000; | ||||
| description | ||||
| "Desired minimum transmit interval and required " + | ||||
| "minimum receive interval of control packets."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping client-cfg-parms { | leaf meticulous { | |||
| description | type boolean; | |||
| "BFD grouping for configuration parameters | description | |||
| used by clients of BFD, e.g. IGP or MPLS."; | "Enables meticulous mode as described in section 6.7 " + | |||
| "of RFC 5880."; | ||||
| } | ||||
| leaf enable { | } | |||
| type boolean; | } | |||
| default false; | ||||
| description | ||||
| "Indicates whether the BFD is enabled."; | ||||
| } | ||||
| uses base-cfg-parms; | ||||
| } | ||||
| grouping common-cfg-parms { | grouping base-cfg-parms { | |||
| description | description "BFD grouping for base config parameters."; | |||
| "BFD grouping for common configuration parameters."; | leaf local-multiplier { | |||
| type multiplier; | ||||
| default 3; | ||||
| description "Multiplier transmitted by local system."; | ||||
| } | ||||
| uses base-cfg-parms; | choice interval-config-type { | |||
| description | ||||
| "Two interval values or one value used for both transmit and | ||||
| receive."; | ||||
| case tx-rx-intervals { | ||||
| leaf desired-min-tx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| default 1000000; | ||||
| description | ||||
| "Desired minimum transmit interval of control packets."; | ||||
| } | ||||
| leaf demand-enabled { | leaf required-min-rx-interval { | |||
| if-feature demand-mode; | type uint32; | |||
| type boolean; | units microseconds; | |||
| default false; | default 1000000; | |||
| description | description | |||
| "To enable demand mode."; | "Required minimum receive interval of control packets."; | |||
| } | } | |||
| } | ||||
| case single-interval { | ||||
| if-feature single-minimum-interval; | ||||
| leaf admin-down { | leaf min-interval { | |||
| type boolean; | type uint32; | |||
| default false; | units microseconds; | |||
| description | default 1000000; | |||
| "Is the BFD session administratively down."; | description | |||
| } | "Desired minimum transmit interval and required " + | |||
| uses auth-parms; | "minimum receive interval of control packets."; | |||
| } | } | |||
| } | ||||
| } | ||||
| } | ||||
| grouping all-session { | grouping client-cfg-parms { | |||
| description "BFD session operational information"; | description | |||
| leaf path-type { | "BFD grouping for configuration parameters | |||
| type identityref { | used by clients of BFD, e.g. IGP or MPLS."; | |||
| base path-type; | ||||
| } | ||||
| config "false"; | ||||
| description | ||||
| "BFD path type, this indicates the path type that BFD is | ||||
| running on."; | ||||
| } | ||||
| leaf ip-encapsulation { | ||||
| type boolean; | ||||
| config "false"; | ||||
| description "Whether BFD encapsulation uses IP."; | ||||
| } | ||||
| leaf local-discriminator { | ||||
| type discriminator; | ||||
| config "false"; | ||||
| description "Local discriminator."; | ||||
| } | ||||
| leaf remote-discriminator { | ||||
| type discriminator; | ||||
| config "false"; | ||||
| description "Remote discriminator."; | ||||
| } | ||||
| leaf remote-multiplier { | ||||
| type multiplier; | ||||
| config "false"; | ||||
| description "Remote multiplier."; | ||||
| } | ||||
| leaf demand-capability { | ||||
| if-feature demand-mode; | ||||
| type boolean; | ||||
| config "false"; | ||||
| description "Local demand mode capability."; | ||||
| } | ||||
| leaf source-port { | ||||
| when "../ip-encapsulation = 'true'" { | ||||
| description | ||||
| "Source port valid only when IP encapsulation is used."; | ||||
| } | ||||
| type inet:port-number; | ||||
| config "false"; | ||||
| description "Source UDP port"; | ||||
| } | ||||
| leaf dest-port { | ||||
| when "../ip-encapsulation = 'true'" { | ||||
| description | ||||
| "Destination port valid only when IP encapsulation is used."; | ||||
| } | ||||
| type inet:port-number; | ||||
| config "false"; | ||||
| description "Destination UDP port."; | ||||
| } | ||||
| container session-running { | leaf enable { | |||
| config "false"; | type boolean; | |||
| description "BFD session running information."; | default false; | |||
| leaf session-index { | description | |||
| type uint32; | "Indicates whether the BFD is enabled."; | |||
| description | } | |||
| "An index used to uniquely identify BFD sessions."; | uses base-cfg-parms; | |||
| } | } | |||
| leaf local-state { | ||||
| type state; | ||||
| description "Local state."; | ||||
| } | ||||
| leaf remote-state { | ||||
| type state; | ||||
| description "Remote state."; | ||||
| } | ||||
| leaf local-diagnostic { | ||||
| type iana-bfd-types:diagnostic; | ||||
| description "Local diagnostic."; | ||||
| } | ||||
| leaf remote-diagnostic { | ||||
| type iana-bfd-types:diagnostic; | ||||
| description "Remote diagnostic."; | ||||
| } | ||||
| leaf remote-authenticated { | ||||
| type boolean; | ||||
| description | ||||
| "Indicates whether incoming BFD control packets are | ||||
| authenticated."; | ||||
| } | ||||
| leaf remote-authentication-type { | ||||
| when "../remote-authenticated = 'true'" { | ||||
| description | ||||
| "Only valid when incoming BFD control packets are | ||||
| authenticated."; | ||||
| } | ||||
| if-feature authentication; | ||||
| type iana-bfd-types:auth-type; | ||||
| description | ||||
| "Authentication type of incoming BFD control packets."; | ||||
| } | ||||
| leaf detection-mode { | ||||
| type enumeration { | ||||
| enum async-with-echo { | ||||
| value "1"; | ||||
| description "Async with echo."; | ||||
| } | ||||
| enum async-without-echo { | ||||
| value "2"; | ||||
| description "Async without echo."; | ||||
| } | ||||
| enum demand-with-echo { | ||||
| value "3"; | ||||
| description "Demand with echo."; | ||||
| } | ||||
| enum demand-without-echo { | ||||
| value "4"; | ||||
| description "Demand without echo."; | ||||
| } | ||||
| } | ||||
| description "Detection mode."; | ||||
| } | ||||
| leaf negotiated-tx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Negotiated transmit interval."; | ||||
| } | ||||
| leaf negotiated-rx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Negotiated receive interval."; | ||||
| } | ||||
| leaf detection-time { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Detection time."; | ||||
| } | ||||
| leaf echo-tx-interval-in-use { | ||||
| when "../../path-type = 'bfd-types:path-ip-sh'" { | ||||
| description | ||||
| "Echo is supported for IP single-hop only."; | ||||
| } | ||||
| if-feature echo-mode; | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Echo transmit interval in use."; | ||||
| } | ||||
| } | ||||
| container sesssion-statistics { | grouping common-cfg-parms { | |||
| config "false"; | description | |||
| description "BFD per-session statistics."; | "BFD grouping for common configuration parameters."; | |||
| leaf create-time { | uses base-cfg-parms; | |||
| 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 session-statistics { | leaf demand-enabled { | |||
| description "Grouping for session counters."; | if-feature demand-mode; | |||
| container session-statistics { | type boolean; | |||
| config false; | default false; | |||
| description "BFD session counters."; | description | |||
| leaf session-count { | "To enable demand mode."; | |||
| 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."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping notification-parms { | ||||
| description | ||||
| "This group describes common parameters that will be sent " + | ||||
| "as part of BFD notification."; | ||||
| leaf local-discr { | leaf admin-down { | |||
| type discriminator; | type boolean; | |||
| description "BFD local discriminator."; | default false; | |||
| } | description | |||
| "Is the BFD session administratively down."; | ||||
| } | ||||
| uses auth-parms; | ||||
| } | ||||
| leaf remote-discr { | grouping all-session { | |||
| type discriminator; | description "BFD session operational information"; | |||
| description "BFD remote discriminator."; | leaf path-type { | |||
| } | type identityref { | |||
| base path-type; | ||||
| } | ||||
| config "false"; | ||||
| description | ||||
| "BFD path type, this indicates the path type that BFD is | ||||
| running on."; | ||||
| } | ||||
| leaf ip-encapsulation { | ||||
| type boolean; | ||||
| config "false"; | ||||
| description "Whether BFD encapsulation uses IP."; | ||||
| } | ||||
| leaf local-discriminator { | ||||
| type discriminator; | ||||
| config "false"; | ||||
| description "Local discriminator."; | ||||
| } | ||||
| leaf remote-discriminator { | ||||
| type discriminator; | ||||
| config "false"; | ||||
| description "Remote discriminator."; | ||||
| } | ||||
| leaf remote-multiplier { | ||||
| type multiplier; | ||||
| config "false"; | ||||
| description "Remote multiplier."; | ||||
| } | ||||
| leaf demand-capability { | ||||
| if-feature demand-mode; | ||||
| type boolean; | ||||
| config "false"; | ||||
| description "Local demand mode capability."; | ||||
| } | ||||
| leaf source-port { | ||||
| when "../ip-encapsulation = 'true'" { | ||||
| description | ||||
| "Source port valid only when IP encapsulation is used."; | ||||
| } | ||||
| type inet:port-number; | ||||
| config "false"; | ||||
| description "Source UDP port"; | ||||
| } | ||||
| leaf dest-port { | ||||
| when "../ip-encapsulation = 'true'" { | ||||
| description | ||||
| "Destination port valid only when IP encapsulation is used."; | ||||
| } | ||||
| type inet:port-number; | ||||
| config "false"; | ||||
| description "Destination UDP port."; | ||||
| } | ||||
| leaf new-state { | container session-running { | |||
| type state; | config "false"; | |||
| description "Current BFD state."; | description "BFD session running information."; | |||
| } | leaf session-index { | |||
| type uint32; | ||||
| description | ||||
| "An index used to uniquely identify BFD sessions."; | ||||
| } | ||||
| leaf local-state { | ||||
| type state; | ||||
| description "Local state."; | ||||
| } | ||||
| leaf remote-state { | ||||
| type state; | ||||
| description "Remote state."; | ||||
| } | ||||
| leaf local-diagnostic { | ||||
| type iana-bfd-types:diagnostic; | ||||
| description "Local diagnostic."; | ||||
| } | ||||
| leaf remote-diagnostic { | ||||
| type iana-bfd-types:diagnostic; | ||||
| description "Remote diagnostic."; | ||||
| } | ||||
| leaf remote-authenticated { | ||||
| type boolean; | ||||
| description | ||||
| "Indicates whether incoming BFD control packets are | ||||
| authenticated."; | ||||
| } | ||||
| leaf remote-authentication-type { | ||||
| when "../remote-authenticated = 'true'" { | ||||
| description | ||||
| "Only valid when incoming BFD control packets are | ||||
| authenticated."; | ||||
| } | ||||
| if-feature authentication; | ||||
| type iana-bfd-types:auth-type; | ||||
| description | ||||
| "Authentication type of incoming BFD control packets."; | ||||
| } | ||||
| leaf detection-mode { | ||||
| type enumeration { | ||||
| enum async-with-echo { | ||||
| value "1"; | ||||
| description "Async with echo."; | ||||
| } | ||||
| enum async-without-echo { | ||||
| value "2"; | ||||
| description "Async without echo."; | ||||
| } | ||||
| enum demand-with-echo { | ||||
| value "3"; | ||||
| description "Demand with echo."; | ||||
| } | ||||
| enum demand-without-echo { | ||||
| value "4"; | ||||
| description "Demand without echo."; | ||||
| } | ||||
| } | ||||
| description "Detection mode."; | ||||
| } | ||||
| leaf negotiated-tx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Negotiated transmit interval."; | ||||
| } | ||||
| leaf negotiated-rx-interval { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Negotiated receive interval."; | ||||
| } | ||||
| leaf detection-time { | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Detection time."; | ||||
| } | ||||
| leaf echo-tx-interval-in-use { | ||||
| when "../../path-type = 'bfd-types:path-ip-sh'" { | ||||
| description | ||||
| "Echo is supported for IP single-hop only."; | ||||
| } | ||||
| if-feature echo-mode; | ||||
| type uint32; | ||||
| units microseconds; | ||||
| description "Echo transmit interval in use."; | ||||
| } | ||||
| } | ||||
| leaf state-change-reason { | container session-statistics { | |||
| type iana-bfd-types:diagnostic; | config "false"; | |||
| description "BFD state change reason."; | description "BFD per-session statistics."; | |||
| } | ||||
| leaf time-of-last-state-change { | leaf create-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Calendar time of previous state change."; | "Time and date when this session was created."; | |||
| } | } | |||
| leaf last-down-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date of last time this session went down."; | ||||
| } | ||||
| leaf last-up-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date of last time this session went up."; | ||||
| } | ||||
| leaf down-count { | ||||
| type yang:counter32; | ||||
| description | ||||
| "The number of times this session has transitioned in the | ||||
| down state."; | ||||
| } | ||||
| leaf admin-down-count { | ||||
| type yang:counter32; | ||||
| description | ||||
| "The number of times this session has transitioned in the | ||||
| admin-down state."; | ||||
| } | ||||
| leaf receive-packet-count { | ||||
| type yang:counter64; | ||||
| description | ||||
| "Count of received packets in this session. This includes | ||||
| valid and invalid received packets."; | ||||
| } | ||||
| leaf send-packet-count { | ||||
| type yang:counter64; | ||||
| description "Count of sent packets in this session."; | ||||
| } | ||||
| leaf receive-invalid-packet-count { | ||||
| type yang:counter64; | ||||
| description | ||||
| "Count of invalid received packets in this session."; | ||||
| } | ||||
| leaf send-failed-packet-count { | ||||
| type yang:counter64; | ||||
| description | ||||
| "Count of packets which failed to be sent in this session."; | ||||
| } | ||||
| } | ||||
| } | ||||
| leaf dest-addr { | grouping session-statistics-summary { | |||
| type inet:ip-address; | description "Grouping for session statistics summary."; | |||
| description "BFD peer address."; | container summary { | |||
| } | config false; | |||
| description "BFD session statistics summary."; | ||||
| leaf number-of-sessions { | ||||
| type yang:gauge32; | ||||
| description "Number of BFD sessions."; | ||||
| } | ||||
| leaf number-of-sessions-up { | ||||
| type yang:gauge32; | ||||
| description "Number of BFD sessions currently in up state."; | ||||
| } | ||||
| leaf number-of-sessions-down { | ||||
| type yang:gauge32; | ||||
| description "Number of BFD sessions currently in down state."; | ||||
| } | ||||
| leaf number-of-sessions-admin-down { | ||||
| type yang:gauge32; | ||||
| description | ||||
| "Number of BFD sessions currently in admin-down state."; | ||||
| } | ||||
| } | ||||
| } | ||||
| leaf source-addr { | grouping notification-parms { | |||
| type inet:ip-address; | description | |||
| description "BFD local address."; | "This group describes common parameters that will be sent " + | |||
| } | "as part of BFD notification."; | |||
| leaf session-index { | leaf local-discr { | |||
| type uint32; | type discriminator; | |||
| description "An index used to uniquely identify BFD sessions."; | description "BFD local discriminator."; | |||
| } | } | |||
| leaf path-type { | leaf remote-discr { | |||
| type identityref { | type discriminator; | |||
| base path-type; | description "BFD remote discriminator."; | |||
| } | } | |||
| description "BFD path type."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | leaf new-state { | |||
| type state; | ||||
| description "Current BFD state."; | ||||
| } | ||||
| leaf state-change-reason { | ||||
| type iana-bfd-types:diagnostic; | ||||
| description "BFD state change reason."; | ||||
| } | ||||
| leaf time-of-last-state-change { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Calendar time of previous state change."; | ||||
| } | ||||
| leaf dest-addr { | ||||
| type inet:ip-address; | ||||
| description "BFD peer address."; | ||||
| } | ||||
| leaf source-addr { | ||||
| type inet:ip-address; | ||||
| description "BFD local address."; | ||||
| } | ||||
| leaf session-index { | ||||
| type uint32; | ||||
| description "An index used to uniquely identify BFD sessions."; | ||||
| } | ||||
| leaf path-type { | ||||
| type identityref { | ||||
| base path-type; | ||||
| } | ||||
| description "BFD path type."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 2.14. BFD top-level YANG Module | 2.14. BFD top-level YANG Module | |||
| <CODE BEGINS> file "ietf-bfd@2018-01-22.yang" | This YANG module imports and augments "/routing/control-plane- | |||
| protocols/control-plane-protocol" from [I-D.ietf-netmod-rfc8022bis]. | ||||
| <CODE BEGINS> file "ietf-bfd@2018-03-01.yang" | ||||
| module ietf-bfd { | module ietf-bfd { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; | |||
| prefix "bfd"; | prefix "bfd"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
| // note | ||||
| reference "RFC XXXX: YANG Data Model for BFD"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | } | |||
| 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> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng (vero.zheng@huawei.com), | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | Mahesh Jethanandani (mjethanandani@gmail.com)"; | |||
| description | description | |||
| "This module contains the YANG definition for BFD parameters as | "This module contains the YANG definition for BFD parameters as | |||
| per RFC 5880. | per RFC 5880. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2018 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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD"; | reference "RFC XXXX: YANG Data Model for BFD"; | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
| when "rt:type = 'bfd-types:bfdv1'" { | when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { | |||
| description | description | |||
| "This augmentation is only valid for a control-plane protocol | "This augmentation is only valid for a control-plane protocol | |||
| instance of BFD (type 'bfdv1')."; | instance of BFD (type 'bfdv1')."; | |||
| } | } | |||
| description "BFD augmentation."; | description "BFD augmentation."; | |||
| container bfd { | container bfd { | |||
| description "BFD top level container."; | description "BFD top level container."; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics-summary; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.15. BFD IP single-hop YANG Module | 2.15. BFD IP single-hop YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-ip-sh@2018-01-22.yang" | This YANG module imports "interface-ref" from | |||
| [I-D.ietf-netmod-rfc7223bis]. | ||||
| <CODE BEGINS> file "ietf-bfd-ip-sh@2018-03-01.yang" | ||||
| module ietf-bfd-ip-sh { | module ietf-bfd-ip-sh { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | |||
| prefix "bfd-ip-sh"; | prefix "bfd-ip-sh"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| } | } | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| reference "RFC 7223"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc7223bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Interface Management"; | ||||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | } | |||
| 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> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng (vero.zheng@huawei.com), | Lianshu Zheng (vero.zheng@huawei.com), | |||
| skipping to change at page 39, line 4 ¶ | skipping to change at page 40, line 43 ¶ | |||
| Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2018 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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| 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"; | |||
| } | } | |||
| /* | /* | |||
| * Augments | * Augments | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for IP single-hop"; | description "BFD augmentation for IP single-hop"; | |||
| container ip-sh { | container ip-sh { | |||
| description "BFD IP single-hop top level container"; | description "BFD IP single-hop top level container"; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics-summary; | |||
| list sessions { | list sessions { | |||
| key "interface dest-addr"; | key "interface dest-addr"; | |||
| description "List of IP single-hop sessions"; | description "List of IP single-hop sessions"; | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Interface on which the BFD session is running."; | "Interface on which the BFD session is running."; | |||
| } | } | |||
| leaf dest-addr { | leaf dest-addr { | |||
| skipping to change at page 40, line 43 ¶ | skipping to change at page 42, line 35 ¶ | |||
| description "Was echo enabled for BFD."; | description "Was echo enabled for BFD."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.16. BFD IP multihop YANG Module | 2.16. BFD IP multihop YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-ip-mh@2018-01-22.yang" | This YANG module imports typedefs from [RFC6991]. | |||
| <CODE BEGINS> file "ietf-bfd-ip-mh@2018-03-01.yang" | ||||
| module ietf-bfd-ip-mh { | module ietf-bfd-ip-mh { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; | |||
| prefix "bfd-ip-mh"; | prefix "bfd-ip-mh"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| } | } | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | } | |||
| 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> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng (vero.zheng@huawei.com), | Lianshu Zheng (vero.zheng@huawei.com), | |||
| skipping to change at page 42, line 4 ¶ | skipping to change at page 43, line 49 ¶ | |||
| 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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD IP multihop."; | reference "RFC XXXX: A YANG data model for BFD IP multihop."; | |||
| } | } | |||
| /* | /* | |||
| * Augments | * Augments | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for IP multihop."; | description "BFD augmentation for IP multihop."; | |||
| container ip-mh { | container ip-mh { | |||
| description "BFD IP multihop top level container."; | description "BFD IP multihop top level container."; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics-summary; | |||
| list session-group { | list session-group { | |||
| key "source-addr dest-addr"; | key "source-addr dest-addr"; | |||
| description | description | |||
| "Group of BFD IP multi-hop sessions (for ECMP). A " + | "Group of BFD IP multi-hop sessions (for ECMP). A " + | |||
| "group of sessions is between 1 source and 1 " + | "group of sessions is between 1 source and 1 " + | |||
| "destination, each session has a different field " + | "destination, each session has a different field " + | |||
| "in UDP/IP hdr for ECMP."; | "in UDP/IP hdr for ECMP."; | |||
| leaf source-addr { | leaf source-addr { | |||
| skipping to change at page 43, line 35 ¶ | skipping to change at page 45, line 32 ¶ | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.17. BFD over LAG YANG Module | 2.17. BFD over LAG YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-lag@2018-01-22.yang" | This YANG module imports "interface-ref" from | |||
| [I-D.ietf-netmod-rfc7223bis]. | ||||
| <CODE BEGINS> file "ietf-bfd-lag@2018-03-01.yang" | ||||
| module ietf-bfd-lag { | module ietf-bfd-lag { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | |||
| prefix "bfd-lag"; | prefix "bfd-lag"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| } | } | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| reference "RFC 7223"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc7223bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Interface Management"; | ||||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | } | |||
| 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> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng vero.zheng@huawei.com), | Lianshu Zheng vero.zheng@huawei.com), | |||
| skipping to change at page 44, line 51 ¶ | skipping to change at page 47, line 10 ¶ | |||
| (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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| 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"; | |||
| } | } | |||
| /* | /* | |||
| * Augments | * Augments | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for LAG"; | description "BFD augmentation for LAG"; | |||
| container lag { | container lag { | |||
| description "BFD over LAG top level container"; | description "BFD over LAG top level container"; | |||
| container micro-bfd-ipv4-session-statistics { | container micro-bfd-ipv4-session-statistics { | |||
| description "Micro-BFD IPv4 session counters."; | description "Micro-BFD IPv4 session counters."; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics-summary; | |||
| } | } | |||
| container micro-bfd-ipv6-session-statistics { | container micro-bfd-ipv6-session-statistics { | |||
| description "Micro-BFD IPv6 session counters."; | description "Micro-BFD IPv6 session counters."; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics-summary; | |||
| } | } | |||
| list sessions { | list sessions { | |||
| key "lag-name"; | key "lag-name"; | |||
| description "A LAG interface on which BFD is running."; | description "A LAG interface on which BFD is running."; | |||
| leaf lag-name { | leaf lag-name { | |||
| type if:interface-ref ; | type if:interface-ref ; | |||
| description "Name of the LAG"; | description "Name of the LAG"; | |||
| } | } | |||
| leaf ipv4-dest-addr { | leaf ipv4-dest-addr { | |||
| skipping to change at page 47, line 4 ¶ | skipping to change at page 49, line 10 ¶ | |||
| description | description | |||
| "Notification for BFD over LAG session state change. " + | "Notification for BFD over LAG session state change. " + | |||
| "An implementation may rate-limit notifications, e.g. when a" + | "An implementation may rate-limit notifications, e.g. when a" + | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| leaf lag-name { | leaf lag-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "LAG interface name."; | description "LAG interface name."; | |||
| } | } | |||
| leaf member-link { | leaf member-link { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "Member link on which BFD is running."; | description "Member link on which BFD is running."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.18. BFD over MPLS YANG Module | 2.18. BFD over MPLS YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-mpls@2018-01-22.yang" | This YANG module imports typedefs from [RFC6991]. | |||
| <CODE BEGINS> file "ietf-bfd-mpls@2018-03-01.yang" | ||||
| module ietf-bfd-mpls { | module ietf-bfd-mpls { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | |||
| prefix "bfd-mpls"; | prefix "bfd-mpls"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| } | } | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | } | |||
| 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> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng (vero.zheng@huawei.com), | Lianshu Zheng (vero.zheng@huawei.com), | |||
| skipping to change at page 48, line 29 ¶ | skipping to change at page 50, line 39 ¶ | |||
| (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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| 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"; | |||
| } | } | |||
| /* | /* | |||
| * Identity definitions | * Identity definitions | |||
| */ | */ | |||
| identity encap-gach { | identity encap-gach { | |||
| base bfd-types:encap-type; | base bfd-types:encap-type; | |||
| description | description | |||
| skipping to change at page 49, line 38 ¶ | skipping to change at page 51, line 46 ¶ | |||
| /* | /* | |||
| * Augments | * Augments | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for MPLS."; | description "BFD augmentation for MPLS."; | |||
| container mpls { | container mpls { | |||
| description "BFD MPLS top level container."; | description "BFD MPLS top level container."; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics-summary; | |||
| container egress { | container egress { | |||
| description "Egress configuration."; | description "Egress configuration."; | |||
| uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
| uses bfd-types:auth-parms; | uses bfd-types:auth-parms; | |||
| } | } | |||
| list session-group { | list session-group { | |||
| key "mpls-fec"; | key "mpls-fec"; | |||
| description | description | |||
| "Group of BFD MPLS sessions (for ECMP). A group of " + | "Group of BFD MPLS sessions (for ECMP). A group of " + | |||
| "sessions is for 1 FEC, each session has a different " + | "sessions is for 1 FEC, each session has a different " + | |||
| "field in UDP/IP hdr for ECMP."; | "field in UDP/IP hdr for ECMP."; | |||
| leaf mpls-fec { | leaf mpls-fec { | |||
| skipping to change at page 50, line 44 ¶ | skipping to change at page 53, line 4 ¶ | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| leaf mpls-dest-address { | leaf mpls-dest-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Destination address as per RFC 5884. | "Destination address as per RFC 5884. | |||
| Needed if IP encapsulation is used."; | Needed if IP encapsulation is used."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.19. BFD over MPLS-TE YANG Module | 2.19. BFD over MPLS-TE YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-mpls-te@2018-01-22.yang" | This YANG module imports and augments "/te/tunnels/tunnel" from | |||
| [I-D.ietf-teas-yang-te]. | ||||
| <CODE BEGINS> file "ietf-bfd-mpls-te@2018-03-01.yang" | ||||
| module ietf-bfd-mpls-te { | module ietf-bfd-mpls-te { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; | |||
| prefix "bfd-mpls-te"; | prefix "bfd-mpls-te"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| skipping to change at page 51, line 35 ¶ | skipping to change at page 53, line 42 ¶ | |||
| import ietf-bfd-mpls { | import ietf-bfd-mpls { | |||
| 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"; | |||
| reference "RFC 8022"; | // RFC Ed.: replace XXXX with actual RFC number of | |||
| // draft-ietf-netmod-rfc8022bis and remove this note. | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for Routing Management"; | ||||
| } | } | |||
| 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> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng (vero.zheng@huawei.com), | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.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 RFC 5884. | MPLS Traffic Engineering as per RFC 5884. | |||
| Copyright (c) 2018 IETF Trust and the persons | Copyright (c) 2018 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as authors of the code. All rights reserved. | |||
| skipping to change at page 52, line 21 ¶ | skipping to change at page 54, line 30 ¶ | |||
| (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."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-01-22 { | revision 2018-03-01 { | |||
| 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"; | |||
| } | } | |||
| /* | /* | |||
| * Augments | * Augments | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd" { | + "rt:control-plane-protocol/bfd:bfd" { | |||
| description "BFD augmentation for MPLS-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 egress { | container egress { | |||
| description "Egress configuration."; | description "Egress configuration."; | |||
| uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
| uses bfd-types:auth-parms; | uses bfd-types:auth-parms; | |||
| } | } | |||
| uses bfd-types:session-statistics-summary; | ||||
| uses bfd-types:session-statistics; | ||||
| } | } | |||
| } | } | |||
| augment "/te:te/te:tunnels/te:tunnel" { | augment "/te:te/te:tunnels/te:tunnel" { | |||
| description "BFD configuration on MPLS-TE tunnel."; | description "BFD configuration on MPLS-TE tunnel."; | |||
| uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
| uses bfd-mpls:encap-cfg; | uses bfd-mpls:encap-cfg; | |||
| } | } | |||
| augment "/te:te/te:lsps-state/te:lsp" { | augment "/te:te/te:lsps-state/te:lsp" { | |||
| when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { | when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { | |||
| description "BFD information not needed at transit points."; | description "BFD information not needed at transit points."; | |||
| } | } | |||
| description "BFD state information on MPLS-TE LSP."; | description "BFD state information on MPLS-TE LSP."; | |||
| uses bfd-types:all-session; | uses bfd-types:all-session; | |||
| skipping to change at page 54, line 5 ¶ | skipping to change at page 56, line 16 ¶ | |||
| This section presents some simple and illustrative examples on how to | This section presents some simple and illustrative examples on how to | |||
| configure BFD. | configure BFD. | |||
| 3.1. IP single-hop | 3.1. IP single-hop | |||
| The following is an example configuration for a BFD IP single-hop | The following is an example configuration for a BFD IP single-hop | |||
| session. The desired transmit interval and the required receive | session. The desired transmit interval and the required receive | |||
| interval are both set to 10ms. | interval are both set to 10ms. | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | ||||
| <interface> | ||||
| <name>eth0</name> | ||||
| <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type> | ||||
| </interface> | ||||
| </interfaces> | ||||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
| <control-plane-protocols> | <control-plane-protocols> | |||
| <control-plane-protocol> | <control-plane-protocol> | |||
| <bfd> | <type xmlns:bfd-types="urn:ietf:params:xml:ns:yang:ietf-bfd-types">bfd-types:bfdv1</type> | |||
| <ip-sh> | <name>name:BFD</name> | |||
| <bfd xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd"> | ||||
| <ip-sh xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> | ||||
| <sessions> | <sessions> | |||
| <interface>eth0</interface> | <interface>eth0</interface> | |||
| <dest-addr>2001:203:0:113::101</dest-addr> | <dest-addr>2001:db8:0:113::101</dest-addr> | |||
| <desired-min-tx-interval>10000</desired-min-tx-interval> | <desired-min-tx-interval>10000</desired-min-tx-interval> | |||
| <required-min-rx-interval>10000</required-min-rx-interval> | <required-min-rx-interval>10000</required-min-rx-interval> | |||
| </sessions> | </sessions> | |||
| </ip-sh> | </ip-sh> | |||
| </bfd> | </bfd> | |||
| </control-plane-protocol> | </control-plane-protocol> | |||
| </control-plane-protocols> | </control-plane-protocols> | |||
| </routing> | </routing> | |||
| </config> | </config> | |||
| 3.2. IP multihop | 3.2. IP multihop | |||
| The following is an example configuration for a BFD IP multihop | The following is an example configuration for a BFD IP multihop | |||
| session group. The desired transmit interval and the required | session group. The desired transmit interval and the required | |||
| receive interval are both set to 150ms. | receive interval are both set to 150ms. | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
| <control-plane-protocols> | <control-plane-protocols> | |||
| <control-plane-protocol> | <control-plane-protocol> | |||
| <bfd> | <type xmlns:bfd-types="urn:ietf:params:xml:ns:yang:ietf-bfd-types">bfd-types:bfdv1</type> | |||
| <ip-mh> | <name>name:BFD</name> | |||
| <bfd xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd"> | ||||
| <ip-mh xmlns="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"> | ||||
| <session-group> | <session-group> | |||
| <dest-addr>2001:202:0:114::100</dest-addr> | <source-addr>2001:db8:0:113::103</source-addr> | |||
| <source-addr>2001:204:0:113::103</source-addr> | <dest-addr>2001:db8:0:114::100</dest-addr> | |||
| <desired-min-tx-interval>150000</desired-min-tx-interval> | <desired-min-tx-interval>150000</desired-min-tx-interval> | |||
| <required-min-rx-interval>150000</required-min-rx-interval> | <required-min-rx-interval>150000</required-min-rx-interval> | |||
| <rx-ttl>240</rx-ttl> | ||||
| </session-group> | </session-group> | |||
| </ip-mh> | </ip-mh> | |||
| </bfd> | </bfd> | |||
| </control-plane-protocol> | </control-plane-protocol> | |||
| </control-plane-protocols> | </control-plane-protocols> | |||
| </routing> | </routing> | |||
| </config> | </config> | |||
| 4. Security Considerations | 4. Security Considerations | |||
| The YANG module defined in this memo is designed to be accessed via | The YANG module specified in this document defines a schema for data | |||
| the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | that is designed to be accessed via network management protocols such | |||
| secure transport layer and the mandatory to implement secure | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| transport is SSH [RFC6242]. The NETCONF access control model | is the secure transport layer, and the mandatory-to-implement secure | |||
| [RFC6536] provides the means to restrict access for particular | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| NETCONF users to a pre-configured subset of all available NETCONF | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| protocol operations and content. | [RFC5246]. | |||
| The NETCONF access control model [RFC6536] provides the means to | ||||
| restrict access for particular NETCONF or RESTCONF users to a | ||||
| preconfigured subset of all available NETCONF or RESTCONF protocol | ||||
| operations and content. | ||||
| There are a number of data nodes defined in this YANG module that are | ||||
| writable/creatable/deletable (i.e., config true, which is the | ||||
| default). These data nodes may be considered sensitive or vulnerable | ||||
| in some network environments. Write operations (e.g., edit-config) | ||||
| to these data nodes without proper protection can have a negative | ||||
| effect on network operations. These are the subtrees and data nodes | ||||
| and their sensitivity/vulnerability: | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | ||||
| sessions: the list specifies the IP single-hop BFD sessions. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | ||||
| sessions: data nodes local-multiplier, desired-min-tx-interval, | ||||
| required-min-rx-interval, min-interval and authentication all impact | ||||
| the BFD IP single-hop session. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | ||||
| session-group: the list specifies the IP multi-hop BFD session | ||||
| groups. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | ||||
| session-group: data nodes local-multiplier, desired-min-tx-interval, | ||||
| required-min-rx-interval, min-interval and authentication all impact | ||||
| the BFD IP multi-hop session. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | ||||
| sessions: the list specifies the BFD sessions over LAG. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | ||||
| sessions: data nodes local-multiplier, desired-min-tx-interval, | ||||
| required-min-rx-interval, min-interval and authentication all impact | ||||
| the BFD over LAG session. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | ||||
| session-group: the list specifies the session groups for BFD over | ||||
| MPLS. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | ||||
| session-group: data nodes local-multiplier, desired-min-tx-interval, | ||||
| required-min-rx-interval, min-interval and authentication all impact | ||||
| the BFD over MPLS LSPs session. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | ||||
| egress: data nodes local-multiplier, desired-min-tx-interval, | ||||
| required-min-rx-interval, min-interval and authentication all impact | ||||
| the BFD over MPLS LSPs sessions for which this device is an MPLS LSP | ||||
| egress node. | ||||
| /te/tunnels/tunnel: data nodes local-multiplier, desired-min-tx- | ||||
| interval, required-min-rx-interval, min-interval and authentication | ||||
| all impact the BFD session over the MPLS-TE tunnel. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ | ||||
| egress: data nodes local-multiplier, desired-min-tx-interval, | ||||
| required-min-rx-interval, min-interval and authentication all impact | ||||
| the BFD over MPLS-TE sessions for which this device is an MPLS-TE | ||||
| egress node. | ||||
| The YANG module has writeable data nodes which can be used for | The YANG 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. | |||
| Some of the readable data nodes in this YANG module may be considered | ||||
| sensitive or vulnerable in some network environments. It is thus | ||||
| important to control read access (e.g., via get, get-config, or | ||||
| notification) to these data nodes. These are the subtrees and data | ||||
| nodes and their sensitivity/vulnerability: | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ | ||||
| summary: access to this information discloses the number of BFD IP | ||||
| single-hop sessions which are up, down and admin-down. The counters | ||||
| include BFD sessions for which the user does not have read-access. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ | ||||
| summary: access to this information discloses the number of BFD IP | ||||
| multi-hop sessions which are up, down and admin-down. The counters | ||||
| include BFD sessions for which the user does not have read-access. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | ||||
| micro-bfd-ipv4-session-statistics/summary: access to this information | ||||
| discloses the number of micro BFD IPv4 LAG sessions which are up, | ||||
| down and admin-down. The counters include BFD sessions for which the | ||||
| user does not have read-access. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ | ||||
| micro-bfd-ipv6-session-statistics/summary: access to this information | ||||
| discloses the number of micro BFD IPv6 LAG sessions which are up, | ||||
| down and admin-down. The counters include BFD sessions for which the | ||||
| user does not have read-access. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ | ||||
| summary: access to this information discloses the number of BFD | ||||
| sessions over MPLS LSPs which are up, down and admin-down. The | ||||
| counters include BFD sessions for which the user does not have read- | ||||
| access. | ||||
| /routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ | ||||
| summary: access to this information discloses the number of BFD | ||||
| sessions over MPLS-TE which are up, down and admin-down. The | ||||
| counters include BFD sessions for which the user does not have read- | ||||
| access. | ||||
| 5. IANA Considerations | 5. IANA Considerations | |||
| The IANA is requested to as assign a new namespace URI from the IETF | The IANA is requested to as assign a new namespace URI from the IETF | |||
| XML registry. | XML registry. | |||
| This document registers the following namesace URIs in the IETF XML | This document registers the following namesace URIs in the IETF XML | |||
| registry [RFC3688]: | registry [RFC3688]: | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| skipping to change at page 57, line 16 ¶ | skipping to change at page 61, line 44 ¶ | |||
| 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. | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-mpls-base-yang] | ||||
| Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A | ||||
| YANG Data Model for MPLS Base", draft-ietf-mpls-base- | ||||
| yang-06 (work in progress), February 2018. | ||||
| [I-D.ietf-netmod-rfc7223bis] | ||||
| Bjorklund, M., "A YANG Data Model for Interface | ||||
| Management", draft-ietf-netmod-rfc7223bis-03 (work in | ||||
| progress), January 2018. | ||||
| [I-D.ietf-netmod-rfc7277bis] | ||||
| Bjorklund, M., "A YANG Data Model for IP Management", | ||||
| draft-ietf-netmod-rfc7277bis-03 (work in progress), | ||||
| January 2018. | ||||
| [I-D.ietf-netmod-rfc8022bis] | ||||
| Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | ||||
| Routing Management (NMDA Version)", draft-ietf-netmod- | ||||
| rfc8022bis-11 (work in progress), January 2018. | ||||
| [I-D.ietf-teas-yang-te] | ||||
| Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | ||||
| I. Bryskin, "A YANG Data Model for Traffic Engineering | ||||
| Tunnels and Interfaces", draft-ietf-teas-yang-te-12 (work | ||||
| in progress), February 2018. | ||||
| [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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
| editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, | |||
| editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.2", RFC 5246, | ||||
| DOI 10.17487/RFC5246, August 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5246>. | ||||
| [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., | [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., | |||
| "MPLS Generic Associated Channel", RFC 5586, | "MPLS Generic Associated Channel", RFC 5586, | |||
| DOI 10.17487/RFC5586, June 2009, <https://www.rfc- | DOI 10.17487/RFC5586, June 2009, | |||
| editor.org/info/rfc5586>. | <https://www.rfc-editor.org/info/rfc5586>. | |||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
| [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, | (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, | |||
| DOI 10.17487/RFC5881, June 2010, <https://www.rfc- | DOI 10.17487/RFC5881, June 2010, | |||
| editor.org/info/rfc5881>. | <https://www.rfc-editor.org/info/rfc5881>. | |||
| [RFC5882] Katz, D. and D. Ward, "Generic Application of | [RFC5882] Katz, D. and D. Ward, "Generic Application of | |||
| Bidirectional Forwarding Detection (BFD)", RFC 5882, | Bidirectional Forwarding Detection (BFD)", RFC 5882, | |||
| DOI 10.17487/RFC5882, June 2010, <https://www.rfc- | DOI 10.17487/RFC5882, June 2010, | |||
| editor.org/info/rfc5882>. | <https://www.rfc-editor.org/info/rfc5882>. | |||
| [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, | (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, | |||
| June 2010, <https://www.rfc-editor.org/info/rfc5883>. | June 2010, <https://www.rfc-editor.org/info/rfc5883>. | |||
| [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, | [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, | |||
| "Bidirectional Forwarding Detection (BFD) for MPLS Label | "Bidirectional Forwarding Detection (BFD) for MPLS Label | |||
| Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, | Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, | |||
| June 2010, <https://www.rfc-editor.org/info/rfc5884>. | June 2010, <https://www.rfc-editor.org/info/rfc5884>. | |||
| [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional | [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional | |||
| Forwarding Detection (BFD) for the Pseudowire Virtual | Forwarding Detection (BFD) for the Pseudowire Virtual | |||
| Circuit Connectivity Verification (VCCV)", RFC 5885, | Circuit Connectivity Verification (VCCV)", RFC 5885, | |||
| DOI 10.17487/RFC5885, June 2010, <https://www.rfc- | DOI 10.17487/RFC5885, June 2010, | |||
| editor.org/info/rfc5885>. | <https://www.rfc-editor.org/info/rfc5885>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
| and A. Bierman, Ed., "Network Configuration Protocol | ||||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6241>. | ||||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
| DOI 10.17487/RFC6536, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6536>. | ||||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., | [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., | |||
| Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional | Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional | |||
| Forwarding Detection (BFD) on Link Aggregation Group (LAG) | Forwarding Detection (BFD) on Link Aggregation Group (LAG) | |||
| Interfaces", RFC 7130, DOI 10.17487/RFC7130, February | Interfaces", RFC 7130, DOI 10.17487/RFC7130, February | |||
| 2014, <https://www.rfc-editor.org/info/rfc7130>. | 2014, <https://www.rfc-editor.org/info/rfc7130>. | |||
| [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc7223>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC7277] Bjorklund, M., "A YANG Data Model for IP Management", | ||||
| RFC 7277, DOI 10.17487/RFC7277, June 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7277>. | ||||
| [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| Management", RFC 8022, DOI 10.17487/RFC8022, November | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| 2016, <https://www.rfc-editor.org/info/rfc8022>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | Zhang, "YANG Data Model for Key Chains", RFC 8177, | |||
| DOI 10.17487/RFC8177, June 2017, <https://www.rfc- | DOI 10.17487/RFC8177, June 2017, | |||
| editor.org/info/rfc8177>. | <https://www.rfc-editor.org/info/rfc8177>. | |||
| 7.2. Informative References | 7.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 the Management of Operations, | "Generic YANG Data Model for the Management of Operations, | |||
| Administration, and Maintenance (OAM) Protocols that use | Administration, and Maintenance (OAM) Protocols that use | |||
| Connectionless Communications", draft-ietf-lime-yang- | Connectionless Communications", draft-ietf-lime-yang- | |||
| connectionless-oam-18 (work in progress), November 2017. | connectionless-oam-18 (work in progress), November 2017. | |||
| [I-D.ietf-mpls-base-yang] | [I-D.ietf-netmod-revised-datastores] | |||
| Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., | Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data | and R. Wilton, "Network Management Datastore | |||
| Model for MPLS Base", draft-ietf-mpls-base-yang-05 (work | Architecture", draft-ietf-netmod-revised-datastores-10 | |||
| in progress), July 2017. | (work in progress), January 2018. | |||
| [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-08 (work in progress), October | ietf-netmod-schema-mount-08 (work in progress), October | |||
| 2017. | 2017. | |||
| [I-D.ietf-rtgwg-device-model] | ||||
| Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps, | ||||
| "Network Device YANG Logical Organization", draft-ietf- | ||||
| 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., Bogdanovic, D., and X. | Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | |||
| Liu, "YANG Logical Network Elements", draft-ietf-rtgwg- | Liu, "YANG Model for Logical Network Elements", draft- | |||
| lne-model-05 (work in progress), December 2017. | ietf-rtgwg-lne-model-07 (work in progress), February 2018. | |||
| [I-D.ietf-rtgwg-ni-model] | [I-D.ietf-rtgwg-ni-model] | |||
| Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. | |||
| Liu, "YANG Network Instances", draft-ietf-rtgwg-ni- | Liu, "YANG Model for Network Instances", draft-ietf-rtgwg- | |||
| model-05 (work in progress), December 2017. | ni-model-10 (work in progress), February 2018. | |||
| [I-D.ietf-teas-yang-te] | ||||
| Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | ||||
| I. Bryskin, "A YANG Data Model for Traffic Engineering | ||||
| Tunnels and Interfaces", draft-ietf-teas-yang-te-10 (work | ||||
| in progress), December 2017. | ||||
| Appendix A. Echo function configuration example | Appendix A. Echo function configuration example | |||
| The following intervals are added for the echo function (if | As mentioned in Section 2.1.2, the mechanism to start and stop the | |||
| supported): | echo function, as defined in [RFC5880] and [RFC5881], is | |||
| implementation specific. In this section we provide an example of | ||||
| desired-min-echo-tx-interval | how the echo function can be implemented via configuration. | |||
| 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 | module: example-bfd-echo | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto | |||
| /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh | col/bfd:bfd/bfd-ip-sh:ip-sh/bfd-ip-sh:sessions: | |||
| /bfd-ip-sh:sessions: | ||||
| +--rw echo {bfd-types:echo-mode}? | +--rw echo {bfd-types:echo-mode}? | |||
| +--rw desired-min-echo-tx-interval? uint32 | +--rw desired-min-echo-tx-interval? uint32 | |||
| +--rw required-min-echo-rx-interval? uint32 | +--rw required-min-echo-rx-interval? uint32 | |||
| A.1. Example YANG module for BFD echo function | A.1. Example YANG module for BFD echo function configuration | |||
| module example-bfd-echo { | module example-bfd-echo { | |||
| namespace "tag:example.com,2017:example-bfd-echo"; | namespace "tag:example.com,2018:example-bfd-echo"; | |||
| prefix "example-bfd-echo"; | prefix "example-bfd-echo"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| } | } | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| skipping to change at page 60, line 50 ¶ | skipping to change at page 65, line 49 ¶ | |||
| WG List: <rtg-bfd@ietf.org> | WG List: <rtg-bfd@ietf.org> | |||
| Editors: Reshad Rahman (rrahman@cisco.com), | Editors: Reshad Rahman (rrahman@cisco.com), | |||
| Lianshu Zheng (vero.zheng@huawei.com), | Lianshu Zheng (vero.zheng@huawei.com), | |||
| Mahesh Jethanandani (mjethanandani@gmail.com)"; | Mahesh Jethanandani (mjethanandani@gmail.com)"; | |||
| description | description | |||
| "This module contains an example YANG augmentation for configuration | "This module contains an example YANG augmentation for configuration | |||
| of BFD echo function. | of BFD echo function. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2018 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 2018-01-22 { | revision 2018-03-01 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG data model example augmentation for BFD echo | "RFC XXXX: A YANG data model example augmentation for BFD echo | |||
| function"; | function"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| */ | */ | |||
| grouping echo-cfg-parms { | grouping echo-cfg-parms { | |||
| description "BFD grouping for echo config parameters"; | description "BFD grouping for echo config parameters"; | |||
| leaf desired-min-echo-tx-interval { | leaf desired-min-echo-tx-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 0; | default 0; | |||
| description "Desired minumum transmit interval for echo"; | description | |||
| "This is the minimum interval that the local system would like | ||||
| to use when transmitting BFD echo packets. If 0, the echo | ||||
| function as defined in BFD [RFC5880] is disabled."; | ||||
| } | } | |||
| leaf required-min-echo-rx-interval { | leaf required-min-echo-rx-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 0; | default 0; | |||
| description "Required minimum receive interval for echo"; | description | |||
| "This is the Required Min Echo RX Interval as defined in BFD | ||||
| [RFC5880]."; | ||||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" | + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" | |||
| + "bfd-ip-sh:sessions" { | + "bfd-ip-sh:sessions" { | |||
| description "Augmentation for BFD echo fucntion."; | ||||
| description "Augmentation for BFD echo function."; | ||||
| container echo { | container echo { | |||
| if-feature bfd-types:echo-mode; | if-feature bfd-types:echo-mode; | |||
| description "BFD echo function container"; | description "BFD echo function container"; | |||
| uses echo-cfg-parms; | uses echo-cfg-parms; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Appendix B. BFD client configuration example | Appendix B. Change log | |||
| The following is an example of how a BFD client could use the | ||||
| grouping client-cfg-parms. | ||||
| module: example-bfd-client | ||||
| +--rw area* [area-id] | ||||
| +--rw area-id uint32 | ||||
| +--rw bfd | ||||
| | +--rw enable? boolean | ||||
| | +--rw local-multiplier? multiplier | ||||
| | +--rw (interval-config-type)? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval? uint32 | ||||
| | | +--rw required-min-rx-interval? uint32 | ||||
| | +--:(single-interval) | ||||
| | +--rw min-interval? uint32 | ||||
| +--rw interface* [interface] | ||||
| +--rw interface if:interface-ref | ||||
| +--rw bfd | ||||
| +--rw enable? boolean | ||||
| +--rw local-multiplier? multiplier | ||||
| +--rw (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--rw desired-min-tx-interval? uint32 | ||||
| | +--rw required-min-rx-interval? uint32 | ||||
| +--:(single-interval) | ||||
| +--rw min-interval? uint32 | ||||
| B.1. Example YANG module for BFD client | ||||
| module example-bfd-client { | ||||
| namespace "tag:example.com,2017:example-bfd-client"; | ||||
| prefix "example-bfd-client"; | ||||
| import ietf-bfd-types { | ||||
| prefix "bfd-types"; | ||||
| } | ||||
| import ietf-interfaces { | ||||
| prefix "if"; | ||||
| } | ||||
| 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 of how a protocol which is a | ||||
| client of BFD would use BFD parameters. | ||||
| 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 2018-01-22 { | ||||
| description "Initial revision."; | ||||
| reference | ||||
| "RFC XXXX: A YANG data model example for BFD client."; | ||||
| } | ||||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
| // note | ||||
| feature routing-app-bfd { | ||||
| description "BFD configuration under routing-app"; | ||||
| } | ||||
| list area { | ||||
| key "area-id"; | ||||
| description "Specify a routing area."; | ||||
| leaf area-id { | ||||
| type uint32; | ||||
| description "Area"; | ||||
| } | ||||
| container bfd { | ||||
| description "BFD configuration for the area."; | ||||
| uses bfd-types:client-cfg-parms { | ||||
| if-feature routing-app-bfd; | ||||
| } | ||||
| } | ||||
| list interface { | RFC Editor: Remove this section upon publication as an RFC. | |||
| key "interface"; | ||||
| description "List of interfaces"; | ||||
| leaf interface { | ||||
| type if:interface-ref; | ||||
| description "Interface"; | ||||
| } | ||||
| container bfd { | ||||
| description "BFD configuration for the interface."; | ||||
| uses bfd-types:client-cfg-parms { | ||||
| if-feature routing-app-bfd; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | B.1. Changes between versions -09 and -10 | |||
| Appendix C. Change log | o Addressed comments from YANG DOctor review. | |||
| RFC Editor: Remove this section upon publication as an RFC. | o Addressed comments from WGLC. | |||
| C.1. Changes between versions -08 and -09 | B.2. Changes between versions -08 and -09 | |||
| o Mostly cosmetic changes to abide by draft-ietf-netmod-rfc6087bis. | o Mostly cosmetic changes to abide by draft-ietf-netmod-rfc6087bis. | |||
| o Specified yang-version 1.1. | o Specified yang-version 1.1. | |||
| o Added data model examples. | o Added data model examples. | |||
| o Some minor changes. | o Some minor changes. | |||
| C.2. Changes between versions -07 and -08 | B.3. Changes between versions -07 and -08 | |||
| o Timer intervals in client-cfg-parms are not mandatory anymore. | o Timer intervals in client-cfg-parms are not mandatory anymore. | |||
| o Added list of interfaces under "ip-sh" node for authentication | o Added list of interfaces under "ip-sh" node for authentication | |||
| parameters. | parameters. | |||
| o Renamed replay-protection to meticulous. | o Renamed replay-protection to meticulous. | |||
| C.3. Changes between versions -06 and -07 | B.4. Changes between versions -06 and -07 | |||
| o New ietf-bfd-types module. | o New ietf-bfd-types module. | |||
| o Grouping for BFD clients to have BFD multiplier and interval | o Grouping for BFD clients to have BFD multiplier and interval | |||
| values. | values. | |||
| o Change in ietf-bfd-mpls-te since MPLS-TE model changed. | o Change in ietf-bfd-mpls-te since MPLS-TE model changed. | |||
| o Removed bfd- prefix from many names. | o Removed bfd- prefix from many names. | |||
| C.4. Changes between versions -05 and -06 | B.5. Changes between versions -05 and -06 | |||
| o Adhere to NMDA-guidelines. | o Adhere to NMDA-guidelines. | |||
| o Echo function config moved to appendix as example. | o Echo function config moved to appendix as example. | |||
| o Added IANA YANG modules. | o Added IANA YANG modules. | |||
| o Addressed various comments. | o Addressed various comments. | |||
| C.5. Changes between versions -04 and -05 | B.6. Changes between versions -04 and -05 | |||
| o "bfd" node in augment of control-plane-protocol as per A YANG Data | o "bfd" node in augment of control-plane-protocol. | |||
| 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. | |||
| C.6. Changes between versions -03 and -04 | B.7. 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. | |||
| C.7. Changes between versions -02 and -03 | B.8. 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. | |||
| C.8. Changes between versions -01 and -02 | B.9. Changes between versions -01 and -02 | |||
| o Replace routing-instance, which has been removed from A YANG Data | o Replace routing-instance with network-instance from YANG Network | |||
| Model for Routing Management [RFC8022], with network-instance from | Instances [I-D.ietf-rtgwg-ni-model] | |||
| YANG Network Instances [I-D.ietf-rtgwg-ni-model] | ||||
| C.9. Changes between versions -00 and -01 | B.10. 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 YANG Data Model for Key Chains | o For BFD authentication we now use YANG Data Model for Key Chains | |||
| [RFC8177] | [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 | |||
| End of changes. 220 change blocks. | ||||
| 999 lines changed or deleted | 1146 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/ | ||||