| < draft-ietf-bfd-yang-08.txt | draft-ietf-bfd-yang-09.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 15, 2018 Huawei Technologies | Expires: July 26, 2018 Huawei Technologies | |||
| M. Jethanandani, Ed. | M. Jethanandani, Ed. | |||
| Cisco Systems | ||||
| S. Pallagatti | S. Pallagatti | |||
| G. Mirsky | G. Mirsky | |||
| ZTE Corporation | ZTE Corporation | |||
| January 11, 2018 | January 22, 2018 | |||
| YANG Data Model for Bidirectional Forwarding Detection (BFD) | YANG Data Model for Bidirectional Forwarding Detection (BFD) | |||
| draft-ietf-bfd-yang-08.txt | draft-ietf-bfd-yang-09.txt | |||
| Abstract | Abstract | |||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage Bidirectional Forwarding Detection (BFD). | and manage Bidirectional Forwarding Detection (BFD). | |||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 15, 2018. | This Internet-Draft will expire on July 26, 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 | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| 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 | |||
| 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 . . . . . . . . . 5 | |||
| 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 6 | 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.1.3. Multi-hop IP . . . . . . . . . . . . . . . . . . . . 7 | 2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 | 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 | |||
| 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 . . . . . . . . . . . . . . . 8 | |||
| 2.2. Design of Operational Model . . . . . . . . . . . . . . . 8 | 2.2. Design of Operational Model . . . . . . . . . . . . . . . 8 | |||
| 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 9 | 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 | 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 9 | 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 9 | |||
| 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 10 | 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 10 | |||
| 2.7. BFD IP multi-hop hierarchy . . . . . . . . . . . . . . . 11 | 2.7. BFD IP multihop hierarchy . . . . . . . . . . . . . . . . 12 | |||
| 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 | 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 | |||
| 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 16 | 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 16 | |||
| 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 18 | 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 18 | |||
| 2.11. Interaction with other YANG modules . . . . . . . . . . . 20 | 2.11. Interaction with other YANG modules . . . . . . . . . . . 20 | |||
| 2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 20 | 2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 20 | |||
| 2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 20 | 2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 20 | |||
| 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 21 | 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 21 | |||
| 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 21 | 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 21 | |||
| 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 21 | 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 21 | |||
| 2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 24 | 2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 24 | |||
| 2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 35 | 2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 36 | |||
| 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 36 | 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 37 | |||
| 2.16. BFD IP multi-hop YANG Module . . . . . . . . . . . . . . 39 | 2.16. BFD IP multihop YANG Module . . . . . . . . . . . . . . . 40 | |||
| 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 42 | 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 43 | |||
| 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 45 | 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 47 | |||
| 2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 48 | 2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 51 | |||
| 2.20. Security Considerations . . . . . . . . . . . . . . . . . 51 | ||||
| 2.21. IANA Considerations . . . . . . . . . . . . . . . . . . . 51 | 3. Data Model examples . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 2.21.1. IANA-Maintained iana-bfd-types module . . . . . . . 53 | 3.1. IP single-hop . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 2.22. Acknowledgements . . . . . . . . . . . . . . . . . . . . 53 | 3.2. IP multihop . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
| 3. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 55 | |||
| 3.1. Normative References . . . . . . . . . . . . . . . . . . 53 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55 | |||
| 3.2. Informative References . . . . . . . . . . . . . . . . . 54 | 5.1. IANA-Maintained iana-bfd-types module . . . . . . . . . . 56 | |||
| Appendix A. Echo function configuration example . . . . . . . . 55 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 57 | |||
| A.1. Example YANG module for BFD echo function . . . . . . . . 56 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
| Appendix B. BFD client configuration example . . . . . . . . . . 58 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 57 | |||
| B.1. Example YANG module for BFD client . . . . . . . . . . . 58 | 7.2. Informative References . . . . . . . . . . . . . . . . . 58 | |||
| Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 60 | Appendix A. Echo function configuration example . . . . . . . . 59 | |||
| C.1. Changes between versions -07 and -08 . . . . . . . . . . 60 | A.1. Example YANG module for BFD echo function . . . . . . . . 60 | |||
| C.2. Changes between versions -06 and -07 . . . . . . . . . . 61 | Appendix B. BFD client configuration example . . . . . . . . . . 62 | |||
| C.3. Changes between versions -05 and -06 . . . . . . . . . . 61 | B.1. Example YANG module for BFD client . . . . . . . . . . . 62 | |||
| C.4. Changes between versions -04 and -05 . . . . . . . . . . 61 | Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 64 | |||
| C.5. Changes between versions -03 and -04 . . . . . . . . . . 61 | C.1. Changes between versions -08 and -09 . . . . . . . . . . 64 | |||
| C.6. Changes between versions -02 and -03 . . . . . . . . . . 61 | C.2. Changes between versions -07 and -08 . . . . . . . . . . 65 | |||
| C.7. Changes between versions -01 and -02 . . . . . . . . . . 61 | C.3. Changes between versions -06 and -07 . . . . . . . . . . 65 | |||
| C.8. Changes between versions -00 and -01 . . . . . . . . . . 62 | C.4. Changes between versions -05 and -06 . . . . . . . . . . 65 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 | 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 42 ¶ | skipping to change at page 4, line 48 ¶ | |||
| Organizational Models [I-D.ietf-rtgwg-device-model] | Organizational Models [I-D.ietf-rtgwg-device-model] | |||
| 2. Logical Network Elements as described in YANG Logical Network | 2. 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. 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 | The approach taken is to do a schema-mount (see Schema Mount | |||
| [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate | [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate | |||
| locations. For example, if an implementation supports BFD IP multi- | locations. For example, if an implementation supports BFD IP | |||
| hop in network instances, the implementation would do schema-mount of | multihop in network instances, the implementation would do schema- | |||
| the BFD IP multi-hop model in a mount-point which resides in a | mount of the BFD IP multihop model in a mount-point which resides in | |||
| network instance. | a network instance. | |||
| The data models in this document strive to follow the "Network | The data models in this document strive to follow the "Network | |||
| Management Datastore Architecture" (NMDA) guidelines described in | Management Datastore Architecture" (NMDA) guidelines described in | |||
| [I-D.dsdt-nmda-guidelines]. This means that the data models do NOT | [I-D.dsdt-nmda-guidelines]. This means that the data models do NOT | |||
| have separate top-level or sibling containers for configuration and | have separate top-level or sibling containers for configuration and | |||
| operational data. | 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 | |||
| skipping to change at page 7, line 5 ¶ | skipping to change at page 7, line 7 ¶ | |||
| [RFC5880] and [RFC5881] do not specify whether echo function is | [RFC5880] and [RFC5881] do not specify whether echo function is | |||
| continuous or on demand. Therefore the mechanism used to start and | continuous or on demand. Therefore the mechanism used to start and | |||
| stop echo function is implementation specific and should be done by | stop echo function is implementation specific and should be done by | |||
| augmentation: | augmentation: | |||
| 1) Configuration. This is suitable for continuous echo function. | 1) Configuration. This is suitable for continuous echo function. | |||
| An example is provided in Appendix A. | An example is provided in Appendix A. | |||
| 2) RPC. This is suitable for on-demand echo function. | 2) RPC. This is suitable for on-demand echo function. | |||
| 2.1.3. Multi-hop IP | 2.1.3. Multihop IP | |||
| For multi-hop IP, there is an augment of the "bfd" data node in | For multihop IP, there is an augment of the "bfd" data node in | |||
| Section 2. | Section 2. | |||
| Because of multiple paths, there could be multiple multi-hop IP | Because of multiple paths, there could be multiple multihop IP | |||
| sessions between a source and a destination address. We identify | sessions between a source and a destination address. We identify | |||
| this as a "session-group". The key for each "session-group" consists | this as a "session-group". The key for each "session-group" consists | |||
| of: | of: | |||
| source address | source address | |||
| Address belonging to the local system as per BFD for Multiple | Address belonging to the local system as per BFD for Multiple | |||
| Hops [RFC5883] | Hops [RFC5883] | |||
| destination address | destination address | |||
| Address belonging to the remote system as per BFD for | Address belonging to the remote system as per BFD for | |||
| skipping to change at page 9, line 13 ¶ | skipping to change at page 9, line 17 ¶ | |||
| 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 multi-hop 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 clients of BFD of | |||
| important events detected during the protocol operation. Pair of | important events detected during the protocol operation. Pair of | |||
| local and remote discriminator identifies a BFD session on local | local and remote discriminator identifies a BFD session on local | |||
| skipping to change at page 10, line 35 ¶ | skipping to change at page 10, line 45 ¶ | |||
| | +--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) | |||
| | | +--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-parms! {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 | |||
| | +--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 | |||
| | | +--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:auth-ty | | | +--ro remote-authentication-type? iana-bfd-types: | |||
| pe | 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 sesssion-statistics | |||
| | +--ro create-time? yang:date-and-time | | +--ro create-time? yang:date-and-time | |||
| | +--ro last-down-time? yang:date-and-time | | +--ro last-down-time? yang:date-and-time | |||
| | +--ro last-up-time? yang:date-and-time | | +--ro last-up-time? yang:date-and-time | |||
| | +--ro down-count? uint32 | | +--ro down-count? uint32 | |||
| | +--ro admin-down-count? uint32 | | +--ro admin-down-count? uint32 | |||
| | +--ro receive-packet-count? uint64 | | +--ro receive-packet-count? uint64 | |||
| | +--ro send-packet-count? uint64 | | +--ro send-packet-count? uint64 | |||
| | +--ro receive-bad-packet? uint64 | | +--ro receive-bad-packet? uint64 | |||
| | +--ro send-failed-packet? uint64 | | +--ro send-failed-packet? uint64 | |||
| +--rw interfaces* [interface] | +--rw interfaces* [interface] | |||
| +--rw interface if:interface-ref | +--rw interface if:interface-ref | |||
| +--rw authentication-parms! {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 | |||
| +--ro new-state? state | +--ro new-state? state | |||
| +--ro state-change-reason? iana-bfd-types:diagnostic | +--ro state-change-reason? iana-bfd-types:diagnostic | |||
| +--ro time-of-last-state-change? yang:date-and-time | +--ro time-of-last-state-change? yang:date-and-time | |||
| +--ro dest-addr? inet:ip-address | +--ro dest-addr? inet:ip-address | |||
| +--ro source-addr? inet:ip-address | +--ro source-addr? inet:ip-address | |||
| +--ro session-index? uint32 | +--ro session-index? uint32 | |||
| +--ro path-type? identityref | +--ro path-type? identityref | |||
| +--ro interface? if:interface-ref | +--ro interface? if:interface-ref | |||
| +--ro echo-enabled? boolean | +--ro echo-enabled? boolean | |||
| 2.7. BFD IP multi-hop 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 data for each BFD IP | |||
| multi-hop session is under this "ip-mh" node. In the operational | multihop session is under this "ip-mh" node. In the operational | |||
| model we support multiple BFD multi-hop sessions per remote address | model we support multiple BFD multihop sessions per remote address | |||
| (ECMP), the local discriminator is used as key. The "ip-mh" node can | (ECMP), the local discriminator is used as key. The "ip-mh" node can | |||
| be used in a network device (top-level), or mounted in an LNE or in a | be used in a network device (top-level), or mounted in an LNE or in a | |||
| network instance. | network instance. | |||
| module: ietf-bfd-ip-mh | module: ietf-bfd-ip-mh | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/bfd:bfd: | /rt:control-plane-protocol/bfd:bfd: | |||
| +--rw ip-mh | +--rw ip-mh | |||
| +--ro session-statistics | +--ro session-statistics | |||
| | +--ro session-count? uint32 | | +--ro session-count? uint32 | |||
| skipping to change at page 12, line 28 ¶ | skipping to change at page 12, line 37 ¶ | |||
| +--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) | |||
| | +--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-parms! {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 | |||
| +--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 | |||
| skipping to change at page 14, line 22 ¶ | skipping to change at page 14, line 32 ¶ | |||
| +--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) | |||
| | +--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-parms! {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 | |||
| +--ro micro-bfd-ipv4 | +--ro micro-bfd-ipv4 | |||
| | +--ro path-type? identityref | | +--ro path-type? identityref | |||
| | +--ro ip-encapsulation? boolean | | +--ro ip-encapsulation? boolean | |||
| | +--ro local-discriminator? discriminator | | +--ro local-discriminator? discriminator | |||
| skipping to change at page 16, line 47 ¶ | skipping to change at page 17, line 9 ¶ | |||
| | +--ro session-admin-down-count? uint32 | | +--ro session-admin-down-count? uint32 | |||
| +--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) | |||
| | | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| | +--rw authentication-parms! {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) | |||
| | +--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-parms! {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 | |||
| +--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 | |||
| skipping to change at page 18, line 38 ¶ | skipping to change at page 18, line 48 ¶ | |||
| +--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) | |||
| | | +--rw min-interval? uint32 | | | +--rw min-interval? uint32 | |||
| | +--rw authentication-parms! {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 session-statistics | |||
| +--ro session-count? uint32 | +--ro session-count? uint32 | |||
| +--ro session-up-count? uint32 | +--ro session-up-count? uint32 | |||
| +--ro session-down-count? uint32 | +--ro session-down-count? uint32 | |||
| +--ro session-admin-down-count? uint32 | +--ro session-admin-down-count? uint32 | |||
| 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) | |||
| | +--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-parms! {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 | |||
| +--ro local-discriminator? discriminator | +--ro local-discriminator? discriminator | |||
| +--ro remote-discriminator? discriminator | +--ro remote-discriminator? discriminator | |||
| +--ro remote-multiplier? multiplier | +--ro remote-multiplier? multiplier | |||
| +--ro demand-capability? boolean {demand-mode}? | +--ro demand-capability? boolean {demand-mode}? | |||
| skipping to change at page 21, line 26 ¶ | skipping to change at page 21, line 36 ¶ | |||
| 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-11.yang" | <CODE BEGINS> file "iana-bfd-types@2018-01-22.yang" | |||
| module iana-bfd-types { | module iana-bfd-types { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; | |||
| prefix "iana-bfd-types"; | prefix "iana-bfd-types"; | |||
| organization "IANA"; | organization "IANA"; | |||
| contact | contact | |||
| " Internet Assigned Numbers Authority | " Internet Assigned Numbers Authority | |||
| Postal: ICANN | 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 contains a collection of YANG data types | |||
| considered defined by IANA and used for BFD. | considered defined by IANA and used for BFD. | |||
| 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-11 { | // RFC Ed.: replace XXXX with actual RFC number and remove | |||
| // this note | ||||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: IANA BFD YANG Data Types."; | reference "RFC XXXX: IANA BFD YANG Data Types."; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | /* | |||
| // note | * Type Definitions | |||
| */ | ||||
| typedef diagnostic { | typedef diagnostic { | |||
| type enumeration { | type enumeration { | |||
| enum none { | enum none { | |||
| value 0; | value 0; | |||
| description "None"; | description "None"; | |||
| } | } | |||
| enum control-expiry { | enum control-expiry { | |||
| value 1; | value 1; | |||
| description "Control timer expiry"; | description "Control timer expiry"; | |||
| } | } | |||
| skipping to change at page 23, line 18 ¶ | skipping to change at page 23, line 36 ¶ | |||
| 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 RFC5880. Range is 0 to 31."; | "BFD diagnostic as defined in RFC 5880. 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 23, line 34 ¶ | skipping to change at page 24, line 4 ¶ | |||
| 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 RFC5880. Range is 0 to | "BFD authentication type as defined in RFC 5880. Range is 0 to | |||
| 255."; | 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-11.yang" | <CODE BEGINS> file "ietf-bfd-types@2018-01-22.yang" | |||
| module ietf-bfd-types { | module ietf-bfd-types { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| import iana-bfd-types { | import iana-bfd-types { | |||
| prefix "iana-bfd-types"; | prefix "iana-bfd-types"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | ||||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix "yang"; | |||
| reference "RFC 6991"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | ||||
| } | } | |||
| import ietf-key-chain { | import ietf-key-chain { | |||
| prefix "kc"; | prefix "kc"; | |||
| reference "RFC 8177"; | ||||
| } | } | |||
| 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 a collection of BFD specific YANG data type | "This module contains a collection of BFD specific YANG data type | |||
| definitions, as per RFC5880. | definitions, as per RFC 5880. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2018-01-11 { | ||||
| description "Initial revision."; | ||||
| reference "RFC XXXX: A YANG data model for BFD"; | ||||
| } | ||||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| identity bfdv1 { | reference "RFC XXXX"; | |||
| base "rt:control-plane-protocol"; | ||||
| description "BFD protocol version 1 as per RFC5880."; | ||||
| } | ||||
| typedef discriminator { | revision 2018-01-22 { | |||
| type uint32 { | description "Initial revision."; | |||
| range 1..4294967295; | reference "RFC XXXX: A YANG data model for BFD"; | |||
| } | ||||
| description "BFD discriminator"; | ||||
| } | } | |||
| typedef state { | /* | |||
| type enumeration { | * Feature definitions | |||
| enum adminDown { | */ | |||
| value 0; | feature authentication { | |||
| description "admindown"; | description | |||
| } | "This feature indicates that the server supports BFD | |||
| enum down { | authentication as defined in RFC 5880."; | |||
| value 1; | ||||
| description "down"; | ||||
| } | ||||
| enum init { | ||||
| value 2; | ||||
| description "init"; | ||||
| } | ||||
| enum up { | ||||
| value 3; | ||||
| description "up"; | ||||
| } | ||||
| } | ||||
| description "BFD state as defined in RFC5880"; | ||||
| } | } | |||
| typedef multiplier { | feature demand-mode { | |||
| type uint8 { | description | |||
| range 1..255; | "This feature indicates that the server supports BFD demand mode | |||
| } | as defined in RFC 5880."; | |||
| description "Multiplier"; | ||||
| } | } | |||
| typedef hops { | feature echo-mode { | |||
| type uint8 { | ||||
| range 1..255; | ||||
| } | ||||
| description | description | |||
| "This corresponds to Time To Live for IPv4 and corresponds to hop | "This feature indicates that the server supports BFD echo mode | |||
| limit for IPv6"; | as defined in RFC 5880."; | |||
| } | } | |||
| /* | /* | |||
| * Identity definitions | * Identity definitions | |||
| */ | */ | |||
| identity bfdv1 { | ||||
| base "rt:control-plane-protocol"; | ||||
| description "BFD protocol version 1 as per RFC 5880."; | ||||
| } | ||||
| identity path-type { | identity path-type { | |||
| description | description | |||
| "Base identity for BFD path type. The path type indicates | "Base identity for BFD path type. The path type indicates | |||
| the type of path on which BFD is running"; | the type of path on which BFD is running."; | |||
| } | } | |||
| identity path-ip-sh { | identity path-ip-sh { | |||
| base path-type; | base path-type; | |||
| description "BFD on IP single hop"; | description "BFD on IP single hop as described in RFC 5881."; | |||
| } | } | |||
| identity path-ip-mh { | identity path-ip-mh { | |||
| base path-type; | base path-type; | |||
| description "BFD on IP multi hop"; | description "BFD on IP multihop paths as described in RFC 5883."; | |||
| } | } | |||
| identity path-mpls-te { | identity path-mpls-te { | |||
| base path-type; | base path-type; | |||
| description "BFD on MPLS Traffic Engineering"; | description | |||
| "BFD on MPLS Traffic Engineering as described in RFC 5884."; | ||||
| } | } | |||
| identity path-mpls-lsp { | identity path-mpls-lsp { | |||
| base path-type; | base path-type; | |||
| description "BFD on MPLS Label Switched Path"; | description | |||
| "BFD on MPLS Label Switched Path as described in RFC 5884."; | ||||
| } | } | |||
| identity path-lag { | identity path-lag { | |||
| base path-type; | base path-type; | |||
| description "Micro-BFD on LAG member links"; | description | |||
| "Micro-BFD on LAG member links as described in RFC 7130."; | ||||
| } | } | |||
| identity encap-type { | identity encap-type { | |||
| description | description | |||
| "Base identity for BFD encapsulation type."; | "Base identity for BFD encapsulation type."; | |||
| } | } | |||
| identity encap-ip { | identity encap-ip { | |||
| base encap-type; | base encap-type; | |||
| description "BFD with IP encapsulation."; | description "BFD with IP encapsulation."; | |||
| } | } | |||
| /* | /* | |||
| * Feature definitions. | * Type Definitions | |||
| */ | */ | |||
| feature authentication { | typedef discriminator { | |||
| description "BFD authentication supported"; | type uint32; | |||
| description "BFD discriminator as described in RFC 5880."; | ||||
| } | } | |||
| feature demand-mode { | typedef state { | |||
| description "BFD demand mode supported"; | type enumeration { | |||
| enum adminDown { | ||||
| value 0; | ||||
| description "admindown"; | ||||
| } | ||||
| enum down { | ||||
| value 1; | ||||
| description "down"; | ||||
| } | ||||
| enum init { | ||||
| value 2; | ||||
| description "init"; | ||||
| } | ||||
| enum up { | ||||
| value 3; | ||||
| description "up"; | ||||
| } | ||||
| } | ||||
| description "BFD state as defined in RFC 5880."; | ||||
| } | ||||
| typedef multiplier { | ||||
| type uint8 { | ||||
| range 1..255; | ||||
| } | ||||
| description "BFD multiplier as described in RFC 5880."; | ||||
| } | } | |||
| feature echo-mode { | typedef hops { | |||
| description "BFD echo mode supported"; | type uint8 { | |||
| range 1..255; | ||||
| } | ||||
| description | ||||
| "This corresponds to Time To Live for IPv4 and corresponds to hop | ||||
| limit for IPv6."; | ||||
| } | } | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| */ | */ | |||
| grouping auth-parms { | grouping auth-parms { | |||
| description | description | |||
| "Grouping for BFD authentication parameters | "Grouping for BFD authentication parameters | |||
| (see section 6.7 of RFC5880)."; | (see section 6.7 of RFC 5880)."; | |||
| container authentication-parms { | container authentication { | |||
| if-feature authentication; | if-feature authentication; | |||
| presence | presence | |||
| "Enables BFD authentication (see section 6.7 of RFC5880)."; | "Enables BFD authentication (see section 6.7 of RFC 5880)."; | |||
| description "Parameters for BFD authentication"; | description "Parameters for BFD authentication."; | |||
| leaf key-chain { | leaf key-chain { | |||
| type kc:key-chain-ref; | type kc:key-chain-ref; | |||
| description "Name of key-chain"; | description "Name of the key-chain as per RFC 8177."; | |||
| } | } | |||
| leaf meticulous { | leaf meticulous { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enables meticulous mode as described in section 6.7 " + | "Enables meticulous mode as described in section 6.7 " + | |||
| "of RFC5880"; | "of RFC 5880."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping base-cfg-parms { | grouping base-cfg-parms { | |||
| description "BFD grouping for base config parameters"; | description "BFD grouping for base config parameters."; | |||
| leaf local-multiplier { | leaf local-multiplier { | |||
| type multiplier; | type multiplier; | |||
| default 3; | default 3; | |||
| description "Multiplier transmitted by local system"; | description "Multiplier transmitted by local system."; | |||
| } | } | |||
| choice interval-config-type { | choice interval-config-type { | |||
| description | description | |||
| "Two interval values or 1 value used for both tx and rx"; | "Two interval values or 1 value used for both transmit and | |||
| receive."; | ||||
| case tx-rx-intervals { | case tx-rx-intervals { | |||
| leaf desired-min-tx-interval { | leaf desired-min-tx-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 1000000; | default 1000000; | |||
| description | description | |||
| "Desired minimum transmit interval of control packets"; | "Desired minimum transmit interval of control packets."; | |||
| } | } | |||
| leaf required-min-rx-interval { | leaf required-min-rx-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 1000000; | default 1000000; | |||
| description | description | |||
| "Required minimum receive interval of control packets"; | "Required minimum receive interval of control packets."; | |||
| } | } | |||
| } | } | |||
| case single-interval { | case single-interval { | |||
| leaf min-interval { | leaf min-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| default 1000000; | default 1000000; | |||
| description | description | |||
| "Desired minimum transmit interval and required " + | "Desired minimum transmit interval and required " + | |||
| "minimum receive interval of control packets"; | "minimum receive interval of control packets."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping client-cfg-parms { | grouping client-cfg-parms { | |||
| description | description | |||
| "BFD grouping for config parameters | "BFD grouping for configuration parameters | |||
| used by clients of BFD, e.g. IGP or MPLS"; | used by clients of BFD, e.g. IGP or MPLS."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description | description | |||
| "Indicates whether the BFD is enabled."; | "Indicates whether the BFD is enabled."; | |||
| } | } | |||
| uses base-cfg-parms; | uses base-cfg-parms; | |||
| } | } | |||
| grouping common-cfg-parms { | grouping common-cfg-parms { | |||
| description | description | |||
| "BFD grouping for common config parameters"; | "BFD grouping for common configuration parameters."; | |||
| uses base-cfg-parms; | uses base-cfg-parms; | |||
| leaf demand-enabled { | leaf demand-enabled { | |||
| if-feature demand-mode; | if-feature demand-mode; | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description | description | |||
| "To enable demand mode"; | "To enable demand mode."; | |||
| } | } | |||
| leaf admin-down { | leaf admin-down { | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description | description | |||
| "Is the BFD session administratively down"; | "Is the BFD session administratively down."; | |||
| } | } | |||
| uses auth-parms; | uses auth-parms; | |||
| } | } | |||
| grouping all-session { | grouping all-session { | |||
| description "BFD session operational information"; | description "BFD session operational information"; | |||
| leaf path-type { | leaf path-type { | |||
| type identityref { | type identityref { | |||
| base path-type; | base path-type; | |||
| } | } | |||
| config "false"; | config "false"; | |||
| description | description | |||
| "BFD path type, this indicates the path type that BFD is | "BFD path type, this indicates the path type that BFD is | |||
| running on"; | running on."; | |||
| } | } | |||
| leaf ip-encapsulation { | leaf ip-encapsulation { | |||
| type boolean; | type boolean; | |||
| config "false"; | config "false"; | |||
| description "Whether BFD encapsulation uses IP"; | description "Whether BFD encapsulation uses IP."; | |||
| } | } | |||
| leaf local-discriminator { | leaf local-discriminator { | |||
| type discriminator; | type discriminator; | |||
| config "false"; | config "false"; | |||
| description "Local discriminator"; | description "Local discriminator."; | |||
| } | } | |||
| leaf remote-discriminator { | leaf remote-discriminator { | |||
| type discriminator; | type discriminator; | |||
| config "false"; | config "false"; | |||
| description "Remote discriminator"; | description "Remote discriminator."; | |||
| } | } | |||
| leaf remote-multiplier { | leaf remote-multiplier { | |||
| type multiplier; | type multiplier; | |||
| config "false"; | config "false"; | |||
| description "Remote multiplier"; | description "Remote multiplier."; | |||
| } | } | |||
| leaf demand-capability { | leaf demand-capability { | |||
| if-feature demand-mode; | if-feature demand-mode; | |||
| type boolean; | type boolean; | |||
| config "false"; | config "false"; | |||
| description "Local demand mode capability"; | description "Local demand mode capability."; | |||
| } | } | |||
| leaf source-port { | leaf source-port { | |||
| when "../ip-encapsulation = 'true'" { | when "../ip-encapsulation = 'true'" { | |||
| description | description | |||
| "Source port valid only when IP encapsulation is used"; | "Source port valid only when IP encapsulation is used."; | |||
| } | } | |||
| type inet:port-number; | type inet:port-number; | |||
| config "false"; | config "false"; | |||
| description "Source UDP port"; | description "Source UDP port"; | |||
| } | } | |||
| leaf dest-port { | leaf dest-port { | |||
| when "../ip-encapsulation = 'true'" { | when "../ip-encapsulation = 'true'" { | |||
| description | description | |||
| "Destination port valid only when IP encapsulation is used"; | "Destination port valid only when IP encapsulation is used."; | |||
| } | } | |||
| type inet:port-number; | type inet:port-number; | |||
| config "false"; | config "false"; | |||
| description "Destination UDP port"; | description "Destination UDP port."; | |||
| } | } | |||
| container session-running { | container session-running { | |||
| config "false"; | config "false"; | |||
| description "BFD session running information"; | description "BFD session running information."; | |||
| leaf session-index { | leaf session-index { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "An index used to uniquely identify BFD sessions"; | "An index used to uniquely identify BFD sessions."; | |||
| } | } | |||
| leaf local-state { | leaf local-state { | |||
| type state; | type state; | |||
| description "Local state"; | description "Local state."; | |||
| } | } | |||
| leaf remote-state { | leaf remote-state { | |||
| type state; | type state; | |||
| description "Remote state"; | description "Remote state."; | |||
| } | } | |||
| leaf local-diagnostic { | leaf local-diagnostic { | |||
| type iana-bfd-types:diagnostic; | type iana-bfd-types:diagnostic; | |||
| description "Local diagnostic"; | description "Local diagnostic."; | |||
| } | } | |||
| leaf remote-diagnostic { | leaf remote-diagnostic { | |||
| type iana-bfd-types:diagnostic; | type iana-bfd-types:diagnostic; | |||
| description "Remote diagnostic"; | description "Remote diagnostic."; | |||
| } | } | |||
| leaf remote-authenticated { | leaf remote-authenticated { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Indicates whether incoming BFD control packets are | "Indicates whether incoming BFD control packets are | |||
| authenticated"; | authenticated."; | |||
| } | } | |||
| leaf remote-authentication-type { | leaf remote-authentication-type { | |||
| when "../remote-authenticated = 'true'" { | when "../remote-authenticated = 'true'" { | |||
| description | description | |||
| "Only valid when incoming BFD control packets are | "Only valid when incoming BFD control packets are | |||
| authenticated"; | authenticated."; | |||
| } | } | |||
| if-feature authentication; | if-feature authentication; | |||
| type iana-bfd-types:auth-type; | type iana-bfd-types:auth-type; | |||
| description | description | |||
| "Authentication type of incoming BFD control packets"; | "Authentication type of incoming BFD control packets."; | |||
| } | } | |||
| leaf detection-mode { | leaf detection-mode { | |||
| type enumeration { | type enumeration { | |||
| enum async-with-echo { | enum async-with-echo { | |||
| value "1"; | value "1"; | |||
| description "Async with echo"; | description "Async with echo."; | |||
| } | } | |||
| enum async-without-echo { | enum async-without-echo { | |||
| value "2"; | value "2"; | |||
| description "Async without echo"; | description "Async without echo."; | |||
| } | } | |||
| enum demand-with-echo { | enum demand-with-echo { | |||
| value "3"; | value "3"; | |||
| description "Demand with echo"; | description "Demand with echo."; | |||
| } | } | |||
| enum demand-without-echo { | enum demand-without-echo { | |||
| value "4"; | value "4"; | |||
| description "Demand without echo"; | description "Demand without echo."; | |||
| } | } | |||
| } | } | |||
| description "Detection mode"; | description "Detection mode."; | |||
| } | } | |||
| leaf negotiated-tx-interval { | leaf negotiated-tx-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| description "Negotiated transmit interval"; | description "Negotiated transmit interval."; | |||
| } | } | |||
| leaf negotiated-rx-interval { | leaf negotiated-rx-interval { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| description "Negotiated receive interval"; | description "Negotiated receive interval."; | |||
| } | } | |||
| leaf detection-time { | leaf detection-time { | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| description "Detection time"; | description "Detection time."; | |||
| } | } | |||
| leaf echo-tx-interval-in-use { | leaf echo-tx-interval-in-use { | |||
| when "../../path-type = 'bfd-types:path-ip-sh'" { | when "../../path-type = 'bfd-types:path-ip-sh'" { | |||
| description | description | |||
| "Echo is supported for IP single-hop only."; | "Echo is supported for IP single-hop only."; | |||
| } | } | |||
| if-feature echo-mode; | if-feature echo-mode; | |||
| type uint32; | type uint32; | |||
| units microseconds; | units microseconds; | |||
| description "Echo transmit interval in use"; | description "Echo transmit interval in use."; | |||
| } | } | |||
| } | } | |||
| container sesssion-statistics { | container sesssion-statistics { | |||
| config "false"; | config "false"; | |||
| description "BFD per-session statistics"; | description "BFD per-session statistics."; | |||
| leaf create-time { | leaf create-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time and date when session was created"; | "Time and date when session was created."; | |||
| } | } | |||
| leaf last-down-time { | leaf last-down-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time and date of last time the session went down"; | "Time and date of last time the session went down."; | |||
| } | } | |||
| leaf last-up-time { | leaf last-up-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time and date of last time the session went up"; | "Time and date of last time the session went up."; | |||
| } | } | |||
| leaf down-count { | leaf down-count { | |||
| type uint32; | type uint32; | |||
| description "Session Down Count"; | description "Session Down Count."; | |||
| } | } | |||
| leaf admin-down-count { | leaf admin-down-count { | |||
| type uint32; | type uint32; | |||
| description "Session Admin-Down Count"; | description "Session Admin-Down Count."; | |||
| } | } | |||
| leaf receive-packet-count { | leaf receive-packet-count { | |||
| type uint64; | type uint64; | |||
| description "Received Packet Count"; | description "Received Packet Count."; | |||
| } | } | |||
| leaf send-packet-count { | leaf send-packet-count { | |||
| type uint64; | type uint64; | |||
| description "Sent Packet Count"; | description "Sent Packet Count."; | |||
| } | } | |||
| leaf receive-bad-packet { | leaf receive-bad-packet { | |||
| type uint64; | type uint64; | |||
| description "Received bad packet count"; | description "Received bad packet count."; | |||
| } | } | |||
| leaf send-failed-packet { | leaf send-failed-packet { | |||
| type uint64; | type uint64; | |||
| description "Packet Failed to Send Count"; | description "Packet Failed to Send Count."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping session-statistics { | grouping session-statistics { | |||
| description "Grouping for session counters"; | description "Grouping for session counters."; | |||
| container session-statistics { | container session-statistics { | |||
| config false; | config false; | |||
| description "BFD session counters"; | description "BFD session counters."; | |||
| leaf session-count { | leaf session-count { | |||
| type uint32; | type uint32; | |||
| description "Number of sessions"; | description "Number of sessions."; | |||
| } | } | |||
| leaf session-up-count { | leaf session-up-count { | |||
| type uint32; | type uint32; | |||
| description "Count of sessions which are up"; | description "Count of sessions which are up."; | |||
| } | } | |||
| leaf session-down-count { | leaf session-down-count { | |||
| type uint32; | type uint32; | |||
| description "Count of sessions which are down"; | description "Count of sessions which are down."; | |||
| } | } | |||
| leaf session-admin-down-count { | leaf session-admin-down-count { | |||
| type uint32; | type uint32; | |||
| description "Count of sessions which are admin-down"; | description "Count of sessions which are admin-down."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping notification-parms { | grouping notification-parms { | |||
| description | description | |||
| "This group describes common parameters that will be sent " + | "This group describes common parameters that will be sent " + | |||
| "as part of BFD notification"; | "as part of BFD notification."; | |||
| leaf local-discr { | leaf local-discr { | |||
| type discriminator; | type discriminator; | |||
| description "BFD local discriminator"; | description "BFD local discriminator."; | |||
| } | } | |||
| leaf remote-discr { | leaf remote-discr { | |||
| type discriminator; | type discriminator; | |||
| description "BFD remote discriminator"; | description "BFD remote discriminator."; | |||
| } | } | |||
| leaf new-state { | leaf new-state { | |||
| type state; | type state; | |||
| description "Current BFD state"; | description "Current BFD state."; | |||
| } | } | |||
| leaf state-change-reason { | leaf state-change-reason { | |||
| type iana-bfd-types:diagnostic; | type iana-bfd-types:diagnostic; | |||
| description "BFD state change reason"; | description "BFD state change reason."; | |||
| } | } | |||
| leaf time-of-last-state-change { | leaf time-of-last-state-change { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Calendar time of previous state change"; | "Calendar time of previous state change."; | |||
| } | } | |||
| leaf dest-addr { | leaf dest-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "BFD peer address"; | description "BFD peer address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "BFD local address"; | description "BFD local address."; | |||
| } | } | |||
| leaf session-index { | leaf session-index { | |||
| type uint32; | type uint32; | |||
| description "An index used to uniquely identify BFD sessions"; | description "An index used to uniquely identify BFD sessions."; | |||
| } | } | |||
| leaf path-type { | leaf path-type { | |||
| type identityref { | type identityref { | |||
| base path-type; | base path-type; | |||
| } | } | |||
| description "BFD path type"; | description "BFD path type."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.14. BFD top-level YANG Module | 2.14. BFD top-level YANG Module | |||
| <CODE BEGINS> file "ietf-bfd@2018-01-11.yang" | <CODE BEGINS> file "ietf-bfd@2018-01-22.yang" | |||
| module ietf-bfd { | module ietf-bfd { | |||
| 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"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | ||||
| } | } | |||
| 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 RFC5880. | per RFC 5880. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2018-01-11 { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | ||||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD"; | reference "RFC XXXX: A YANG data model for BFD"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
| // note | ||||
| 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 "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; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <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-11.yang" | <CODE BEGINS> file "ietf-bfd-ip-sh@2018-01-22.yang" | |||
| module ietf-bfd-ip-sh { | module ietf-bfd-ip-sh { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; | ||||
| yang-version 1.1; | ||||
| 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"; | ||||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | ||||
| } | } | |||
| 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 IP single-hop | "This module contains the YANG definition for BFD IP single-hop | |||
| as per RFC5881. | as per RFC 5881. | |||
| 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-11 { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | ||||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD IP single-hop"; | reference "RFC XXXX: A YANG data model for BFD IP single-hop"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | /* | |||
| // note | * 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; | |||
| 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 { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "IP address of the peer"; | description "IP address of the peer."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "Local address"; | description "Local IP address."; | |||
| } | } | |||
| uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
| uses bfd-types:all-session; | uses bfd-types:all-session; | |||
| } | } | |||
| list interfaces { | list interfaces { | |||
| key "interface"; | key "interface"; | |||
| description "List of interfaces"; | description "List of interfaces."; | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "BFD information for this interface."; | "BFD information for this interface."; | |||
| } | } | |||
| uses bfd-types:auth-parms; | uses bfd-types:auth-parms; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| notification singlehop-notification { | notification singlehop-notification { | |||
| description | description | |||
| "Notification for BFD single-hop session state change. An " + | "Notification for BFD single-hop session state change. An " + | |||
| "implementation may rate-limit notifications, e.g. when a" + | "implementation may rate-limit notifications, e.g. when a" + | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "Interface to which this BFD session belongs to"; | description "Interface to which this BFD session belongs to."; | |||
| } | } | |||
| leaf echo-enabled { | leaf echo-enabled { | |||
| type boolean; | type boolean; | |||
| description "Was echo enabled for BFD"; | description "Was echo enabled for BFD."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.16. BFD IP multi-hop YANG Module | 2.16. BFD IP multihop YANG Module | |||
| <CODE BEGINS> file "ietf-bfd-ip-mh@2018-01-11.yang" | <CODE BEGINS> file "ietf-bfd-ip-mh@2018-01-22.yang" | |||
| module ietf-bfd-ip-mh { | module ietf-bfd-ip-mh { | |||
| 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"; | |||
| // replace with IANA namespace when assigned | ||||
| 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"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | ||||
| } | } | |||
| 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 IP multi-hop | "This module contains the YANG definition for BFD IP multi-hop | |||
| as per RFC5883. | as per RFC 5883. | |||
| 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-11 { | ||||
| description "Initial revision."; | ||||
| reference "RFC XXXX: A YANG data model for BFD IP multi-hop"; | ||||
| } | ||||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | ||||
| reference "RFC XXXX: A YANG data model for BFD IP multihop."; | ||||
| } | ||||
| /* | ||||
| * 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 multi-hop"; | description "BFD augmentation for IP multihop."; | |||
| container ip-mh { | container ip-mh { | |||
| description "BFD IP multi-hop top level container"; | description "BFD IP multihop top level container."; | |||
| uses bfd-types:session-statistics; | uses bfd-types:session-statistics; | |||
| 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 { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Local IP address"; | "Local IP address."; | |||
| } | } | |||
| leaf dest-addr { | leaf dest-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "IP address of the peer"; | "IP address of the peer."; | |||
| } | } | |||
| uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
| leaf tx-ttl { | leaf tx-ttl { | |||
| type bfd-types:hops; | type bfd-types:hops; | |||
| default 255; | default 255; | |||
| description "Hop count of outgoing BFD control packets"; | description "Hop count of outgoing BFD control packets."; | |||
| } | } | |||
| leaf rx-ttl { | leaf rx-ttl { | |||
| type bfd-types:hops; | type bfd-types:hops; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Minimum allowed hop count value for incoming BFD control | "Minimum allowed hop count value for incoming BFD control | |||
| packets. Control packets whose hop count is lower than this | packets. Control packets whose hop count is lower than this | |||
| value are dropped."; | value are dropped."; | |||
| } | } | |||
| list sessions { | list sessions { | |||
| config false; | config false; | |||
| description | description | |||
| "The multiple BFD sessions between a source and a " + | "The multiple BFD sessions between a source and a " + | |||
| "destination."; | "destination."; | |||
| uses bfd-types:all-session; | uses bfd-types:all-session; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| notification multihop-notification { | notification multihop-notification { | |||
| description | description | |||
| "Notification for BFD multi-hop session state change. An " + | "Notification for BFD multi-hop session state change. An " + | |||
| "implementation may rate-limit notifications, e.g. when a" + | "implementation may rate-limit notifications, e.g. when a" + | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| } | } | |||
| } | } | |||
| <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-11.yang" | <CODE BEGINS> file "ietf-bfd-lag@2018-01-22.yang" | |||
| module ietf-bfd-lag { | module ietf-bfd-lag { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; | |||
| // replace with IANA namespace when assigned | ||||
| 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"; | ||||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | ||||
| } | } | |||
| 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 over LAG | "This module contains the YANG definition for BFD over LAG | |||
| interfaces as per RFC7130. | interfaces as per RFC7130. | |||
| Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 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-11 { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | ||||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD over LAG"; | reference "RFC XXXX: A YANG data model for BFD over LAG"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | /* | |||
| // note | * 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; | |||
| } | } | |||
| 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; | |||
| } | } | |||
| 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 { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "IPv4 address of the peer, for IPv4 micro-BFD."; | "IPv4 address of the peer, for IPv4 micro-BFD."; | |||
| } | } | |||
| leaf ipv6-dest-addr { | leaf ipv6-dest-addr { | |||
| skipping to change at page 44, line 18 ¶ | skipping to change at page 46, line 4 ¶ | |||
| } | } | |||
| uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
| leaf use-ipv4 { | leaf use-ipv4 { | |||
| type boolean; | type boolean; | |||
| description "Using IPv4 micro-BFD."; | description "Using IPv4 micro-BFD."; | |||
| } | } | |||
| leaf use-ipv6 { | leaf use-ipv6 { | |||
| type boolean; | type boolean; | |||
| description "Using IPv6 micro-BFD."; | description "Using IPv6 micro-BFD."; | |||
| } | } | |||
| list member-links { | list member-links { | |||
| key "member-link"; | key "member-link"; | |||
| config false; | config false; | |||
| description | description | |||
| "Micro-BFD over LAG. This represents one member link"; | "Micro-BFD over LAG. This represents one member link."; | |||
| leaf member-link { | leaf member-link { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Member link on which micro-BFD is running"; | "Member link on which micro-BFD is running."; | |||
| } | } | |||
| container micro-bfd-ipv4 { | container micro-bfd-ipv4 { | |||
| when "../../use-ipv4 = 'true'" { | when "../../use-ipv4 = 'true'" { | |||
| description "Needed only if IPv4 is used."; | description "Needed only if IPv4 is used."; | |||
| } | } | |||
| description | description | |||
| "Micro-BFD IPv4 session state on member link"; | "Micro-BFD IPv4 session state on member link."; | |||
| uses bfd-types:all-session; | uses bfd-types:all-session; | |||
| } | } | |||
| container micro-bfd-ipv6 { | container micro-bfd-ipv6 { | |||
| when "../../use-ipv6 = 'true'" { | when "../../use-ipv6 = 'true'" { | |||
| description "Needed only if IPv6 is used."; | description "Needed only if IPv6 is used."; | |||
| } | } | |||
| description | description | |||
| "Micro-BFD IPv6 session state on member link"; | "Micro-BFD IPv6 session state on member link."; | |||
| uses bfd-types:all-session; | uses bfd-types:all-session; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| notification lag-notification { | notification lag-notification { | |||
| description | description | |||
| "Notification for BFD over LAG session state change. " + | "Notification for BFD over LAG session state change. " + | |||
| "An implementation may rate-limit notifications, e.g. when a" + | "An implementation may rate-limit notifications, e.g. when a" + | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| leaf lag-name { | leaf lag-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "LAG interface name"; | description "LAG interface name."; | |||
| } | } | |||
| leaf member-link { | leaf member-link { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "Member link on which BFD is running"; | description "Member link on which BFD is running."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <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-11.yang" | <CODE BEGINS> file "ietf-bfd-mpls@2018-01-22.yang" | |||
| module ietf-bfd-mpls { | module ietf-bfd-mpls { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; | |||
| // replace with IANA namespace when assigned | ||||
| 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"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8022"; | ||||
| } | } | |||
| 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 LSPs as per RFC5884. | MPLS LSPs as per RFC 5884. | |||
| 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-11 { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | ||||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; | reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | /* | |||
| // note | * Identity definitions | |||
| */ | ||||
| identity encap-gach { | identity encap-gach { | |||
| base bfd-types:encap-type; | base bfd-types:encap-type; | |||
| description | description | |||
| "BFD with G-ACh encapsulation as per RFC5586."; | "BFD with G-ACh encapsulation as per RFC 5586."; | |||
| } | } | |||
| identity encap-ip-gach { | identity encap-ip-gach { | |||
| base bfd-types:encap-type; | base bfd-types:encap-type; | |||
| description | description | |||
| "BFD with IP and G-ACh encapsulation as per RFC5586."; | "BFD with IP and G-ACh encapsulation as per RFC 5586."; | |||
| } | } | |||
| /* | ||||
| * Groupings | ||||
| */ | ||||
| grouping encap-cfg { | grouping encap-cfg { | |||
| description "Configuration for BFD encapsulation"; | description "Configuration for BFD encapsulation"; | |||
| leaf encap { | leaf encap { | |||
| type identityref { | type identityref { | |||
| base bfd-types:encap-type; | base bfd-types:encap-type; | |||
| } | } | |||
| default bfd-types:encap-ip; | default bfd-types:encap-ip; | |||
| description "BFD encapsulation"; | description "BFD encapsulation"; | |||
| } | } | |||
| } | } | |||
| grouping mpls-dest-address { | grouping mpls-dest-address { | |||
| description "Destination address as per RFC5884"; | description "Destination address as per RFC 5884."; | |||
| leaf mpls-dest-address { | leaf mpls-dest-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config "false"; | config "false"; | |||
| description | description | |||
| "Destination address as per RFC5884. | "Destination address as per RFC 5884. | |||
| Needed if IP encapsulation is used"; | Needed if IP encapsulation is used."; | |||
| } | } | |||
| } | } | |||
| /* | ||||
| * 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; | |||
| 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 { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description "MPLS FEC"; | description "MPLS FEC."; | |||
| } | } | |||
| uses bfd-types:common-cfg-parms; | uses bfd-types:common-cfg-parms; | |||
| list sessions { | list sessions { | |||
| config false; | config false; | |||
| description | description | |||
| "The BFD sessions for an MPLS FEC. Local " + | "The BFD sessions for an MPLS FEC. Local " + | |||
| "discriminator is unique for each session in the " + | "discriminator is unique for each session in the " + | |||
| "group."; | "group."; | |||
| uses bfd-types:all-session; | uses bfd-types:all-session; | |||
| uses bfd-mpls:mpls-dest-address; | uses bfd-mpls:mpls-dest-address; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| notification mpls-notification { | notification mpls-notification { | |||
| description | description | |||
| "Notification for BFD over MPLS FEC session state change. " + | "Notification for BFD over MPLS FEC session state change. " + | |||
| "An implementation may rate-limit notifications, e.g. when a" + | "An implementation may rate-limit notifications, e.g. when a" + | |||
| "session is continuously changing state."; | "session is continuously changing state."; | |||
| uses bfd-types:notification-parms; | uses bfd-types:notification-parms; | |||
| leaf mpls-dest-address { | leaf mpls-dest-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Destination address as per RFC5884. | "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-11.yang" | <CODE BEGINS> file "ietf-bfd-mpls-te@2018-01-22.yang" | |||
| module ietf-bfd-mpls-te { | module ietf-bfd-mpls-te { | |||
| 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"; | |||
| // replace with IANA namespace when assigned | ||||
| prefix "bfd-mpls-te"; | prefix "bfd-mpls-te"; | |||
| import ietf-bfd-types { | import ietf-bfd-types { | |||
| prefix "bfd-types"; | prefix "bfd-types"; | |||
| } | } | |||
| import ietf-bfd { | import ietf-bfd { | |||
| prefix "bfd"; | prefix "bfd"; | |||
| } | } | |||
| import ietf-bfd-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"; | ||||
| } | } | |||
| 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 RFC5884. | MPLS Traffic Engineering as per RFC 5884. | |||
| 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-11 { | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | ||||
| reference "RFC XXXX"; | ||||
| revision 2018-01-22 { | ||||
| description "Initial revision."; | description "Initial revision."; | |||
| reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; | reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
| // note | ||||
| /* | ||||
| * 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; | uses bfd-types:session-statistics; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 50, line 29 ¶ | skipping to change at page 53, line 4 ¶ | |||
| } | } | |||
| uses bfd-types:session-statistics; | 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; | |||
| uses bfd-mpls:mpls-dest-address; | uses bfd-mpls:mpls-dest-address; | |||
| } | } | |||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| notification mpls-te-notification { | notification mpls-te-notification { | |||
| description | description | |||
| "Notification for BFD over MPLS-TE session state change. " + | "Notification for BFD over MPLS-TE 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; | |||
| uses bfd-mpls:mpls-dest-address; | uses bfd-mpls:mpls-dest-address; | |||
| leaf tunnel-name { | leaf tunnel-name { | |||
| type string; | type string; | |||
| description "MPLS-TE tunnel on which BFD was running."; | description "MPLS-TE tunnel on which BFD was running."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 2.20. Security Considerations | 3. Data Model examples | |||
| This section presents some simple and illustrative examples on how to | ||||
| configure BFD. | ||||
| 3.1. IP single-hop | ||||
| The following is an example configuration for a BFD IP single-hop | ||||
| session. The desired transmit interval and the required receive | ||||
| interval are both set to 10ms. | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | ||||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | ||||
| <control-plane-protocols> | ||||
| <control-plane-protocol> | ||||
| <bfd> | ||||
| <ip-sh> | ||||
| <sessions> | ||||
| <interface>eth0</interface> | ||||
| <dest-addr>2001:203:0:113::101</dest-addr> | ||||
| <desired-min-tx-interval>10000</desired-min-tx-interval> | ||||
| <required-min-rx-interval>10000</required-min-rx-interval> | ||||
| </sessions> | ||||
| </ip-sh> | ||||
| </bfd> | ||||
| </control-plane-protocol> | ||||
| </control-plane-protocols> | ||||
| </routing> | ||||
| </config> | ||||
| 3.2. IP multihop | ||||
| The following is an example configuration for a BFD IP multihop | ||||
| session group. The desired transmit interval and the required | ||||
| receive interval are both set to 150ms. | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | ||||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | ||||
| <control-plane-protocols> | ||||
| <control-plane-protocol> | ||||
| <bfd> | ||||
| <ip-mh> | ||||
| <session-group> | ||||
| <dest-addr>2001:202:0:114::100</dest-addr> | ||||
| <source-addr>2001:204:0:113::103</source-addr> | ||||
| <desired-min-tx-interval>150000</desired-min-tx-interval> | ||||
| <required-min-rx-interval>150000</required-min-rx-interval> | ||||
| </session-group> | ||||
| </ip-mh> | ||||
| </bfd> | ||||
| </control-plane-protocol> | ||||
| </control-plane-protocols> | ||||
| </routing> | ||||
| </config> | ||||
| 4. Security Considerations | ||||
| The YANG module defined in this memo is designed to be accessed via | The YANG module defined in this memo is designed to be accessed via | |||
| the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | |||
| secure transport layer and the mandatory to implement secure | secure transport layer and the mandatory to implement secure | |||
| transport is SSH [RFC6242]. The NETCONF access control model | transport is SSH [RFC6242]. The NETCONF access control model | |||
| [RFC6536] provides the means to restrict access for particular | [RFC6536] provides the means to restrict access for particular | |||
| NETCONF users to a pre-configured subset of all available NETCONF | NETCONF users to a pre-configured subset of all available NETCONF | |||
| protocol operations and content. | protocol operations and content. | |||
| The YANG module has writeable data nodes which can be used for | The YANG module has writeable data nodes which can be used for | |||
| creation of BFD sessions and modification of BFD session parameters. | creation of BFD sessions and modification of BFD session parameters. | |||
| The system should "police" creation of BFD sessions to prevent new | The system should "police" creation of BFD sessions to prevent new | |||
| sessions from causing existing BFD sessions to fail. For BFD session | sessions from causing existing BFD sessions to fail. For BFD session | |||
| modification, the BFD protocol has mechanisms in place which allow | modification, the BFD protocol has mechanisms in place which allow | |||
| for in service modification. | for in service modification. | |||
| 2.21. 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]: | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-bfd | URI: urn:ietf:params:xml:ns:yang:ietf-bfd | |||
| skipping to change at page 53, line 5 ¶ | skipping to change at page 56, line 40 ¶ | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| 2.21.1. IANA-Maintained iana-bfd-types module | 5.1. IANA-Maintained iana-bfd-types module | |||
| This document defines the initial version of the IANA-maintained | This document defines the initial version of the IANA-maintained | |||
| iana-bfd-types YANG module. | iana-bfd-types YANG module. | |||
| The iana-bfd-types YANG module is intended to reflect the "BFD | The iana-bfd-types YANG module is intended to reflect the "BFD | |||
| Diagnostic Codes" registry and "BFD Authentication Types" registry at | Diagnostic Codes" registry and "BFD Authentication Types" registry at | |||
| https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml | https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml | |||
| 2.22. Acknowledgements | 6. Acknowledgements | |||
| We would also like to thank Nobo Akiya and Jeff Haas for their | We would also like to thank Nobo Akiya and Jeff Haas for their | |||
| encouragement on this work. We would also like to thank Rakesh | encouragement on this work. We would also like to thank Rakesh | |||
| Gandhi and Tarek Saad for their help on the MPLS-TE model. We would | Gandhi and Tarek Saad for their help on the MPLS-TE model. We would | |||
| also like to thank Acee Lindem for his guidance. | also like to thank Acee Lindem for his guidance. | |||
| 3. References | 7. References | |||
| 3.1. Normative References | 7.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| editor.org/info/rfc2119>. | 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, <https://www.rfc- | |||
| editor.org/info/rfc3688>. | editor.org/info/rfc3688>. | |||
| skipping to change at page 54, line 20 ¶ | skipping to change at page 58, line 11 ¶ | |||
| "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, <https://www.rfc- | |||
| editor.org/info/rfc5885>. | editor.org/info/rfc5885>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | ||||
| <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 | [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | |||
| <https://www.rfc-editor.org/info/rfc7223>. | <https://www.rfc-editor.org/info/rfc7223>. | |||
| [RFC7277] Bjorklund, M., "A YANG Data Model for IP Management", | [RFC7277] Bjorklund, M., "A YANG Data Model for IP Management", | |||
| RFC 7277, DOI 10.17487/RFC7277, June 2014, | RFC 7277, DOI 10.17487/RFC7277, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7277>. | <https://www.rfc-editor.org/info/rfc7277>. | |||
| [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| Management", RFC 8022, DOI 10.17487/RFC8022, November | Management", RFC 8022, DOI 10.17487/RFC8022, November | |||
| 2016, <https://www.rfc-editor.org/info/rfc8022>. | 2016, <https://www.rfc-editor.org/info/rfc8022>. | |||
| 3.2. Informative References | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | ||||
| DOI 10.17487/RFC8177, June 2017, <https://www.rfc- | ||||
| editor.org/info/rfc8177>. | ||||
| 7.2. Informative References | ||||
| [I-D.dsdt-nmda-guidelines] | [I-D.dsdt-nmda-guidelines] | |||
| Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Guidelines for YANG Module Authors | and R. Wilton, "Guidelines for YANG Module Authors | |||
| (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress), | (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress), | |||
| May 2017. | 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, | |||
| skipping to change at page 55, line 37 ¶ | skipping to change at page 59, line 37 ¶ | |||
| 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 Network Instances", draft-ietf-rtgwg-ni- | |||
| model-05 (work in progress), December 2017. | model-05 (work in progress), December 2017. | |||
| [I-D.ietf-teas-yang-te] | [I-D.ietf-teas-yang-te] | |||
| Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | |||
| I. Bryskin, "A YANG Data Model for Traffic Engineering | I. Bryskin, "A YANG Data Model for Traffic Engineering | |||
| Tunnels and Interfaces", draft-ietf-teas-yang-te-10 (work | Tunnels and Interfaces", draft-ietf-teas-yang-te-10 (work | |||
| in progress), December 2017. | in progress), December 2017. | |||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | ||||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | ||||
| DOI 10.17487/RFC8177, June 2017, <https://www.rfc- | ||||
| editor.org/info/rfc8177>. | ||||
| Appendix A. Echo function configuration example | Appendix A. Echo function configuration example | |||
| The following intervals are added for the echo function (if | The following intervals are added for the echo function (if | |||
| supported): | supported): | |||
| desired-min-echo-tx-interval | desired-min-echo-tx-interval | |||
| This is the minimum interval that the local system would like | This is the minimum interval that the local system would like | |||
| to use when transmitting BFD echo packets. If 0, the echo | to use when transmitting BFD echo packets. If 0, the echo | |||
| function as defined in BFD [RFC5880] is disabled. | function as defined in BFD [RFC5880] is disabled. | |||
| required-min-echo-rx-interval | required-min-echo-rx-interval | |||
| This is the Required Min Echo RX Interval as defined in BFD | This is the Required Min Echo RX Interval as defined in BFD | |||
| [RFC5880]. | [RFC5880]. | |||
| module: example-bfd-echo | module: example-bfd-echo | |||
| augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto | augment /rt:routing/rt:control-plane-protocols | |||
| col/bfd:bfd/bfd-ip-sh:ip-sh/bfd-ip-sh:sessions: | /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh | |||
| /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 | |||
| module example-bfd-echo { | module example-bfd-echo { | |||
| namespace "tag:example.com,2017:example-bfd-echo"; | namespace "tag:example.com,2017:example-bfd-echo"; | |||
| prefix "example-bfd-echo"; | prefix "example-bfd-echo"; | |||
| skipping to change at page 57, line 18 ¶ | skipping to change at page 61, line 15 ¶ | |||
| 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-11 { | revision 2018-01-22 { | |||
| 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 | |||
| /* | /* | |||
| skipping to change at page 59, line 38 ¶ | skipping to change at page 63, line 35 ¶ | |||
| 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-11 { | revision 2018-01-22 { | |||
| description "Initial revision."; | description "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG data model example for BFD client."; | "RFC XXXX: A YANG data model example for BFD client."; | |||
| } | } | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
| // note | // note | |||
| feature routing-app-bfd { | feature routing-app-bfd { | |||
| description "BFD configuration under routing-app"; | description "BFD configuration under routing-app"; | |||
| skipping to change at page 60, line 42 ¶ | skipping to change at page 64, line 38 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Appendix C. Change log | Appendix C. Change log | |||
| RFC Editor: Remove this section upon publication as an RFC. | RFC Editor: Remove this section upon publication as an RFC. | |||
| C.1. Changes between versions -07 and -08 | C.1. Changes between versions -08 and -09 | |||
| o Mostly cosmetic changes to abide by draft-ietf-netmod-rfc6087bis. | ||||
| o Specified yang-version 1.1. | ||||
| o Added data model examples. | ||||
| o Some minor changes. | ||||
| C.2. 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.2. Changes between versions -06 and -07 | C.3. 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.3. Changes between versions -05 and -06 | C.4. 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.4. Changes between versions -04 and -05 | C.5. 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 as per A YANG Data | |||
| Model for Routing Management [RFC8022]. | 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.5. Changes between versions -03 and -04 | C.6. 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.6. Changes between versions -02 and -03 | C.7. 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.7. Changes between versions -01 and -02 | C.8. Changes between versions -01 and -02 | |||
| o Replace routing-instance, which has been removed from A YANG Data | o Replace routing-instance, which has been removed from A YANG Data | |||
| Model for Routing Management [RFC8022], with network-instance from | Model for Routing Management [RFC8022], with network-instance from | |||
| YANG Network Instances [I-D.ietf-rtgwg-ni-model] | YANG Network Instances [I-D.ietf-rtgwg-ni-model] | |||
| C.8. Changes between versions -00 and -01 | C.9. 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 | |||
| skipping to change at page 62, line 33 ¶ | skipping to change at page 66, line 44 ¶ | |||
| Email: rrahman@cisco.com | Email: rrahman@cisco.com | |||
| Lianshu Zheng (editor) | Lianshu Zheng (editor) | |||
| Huawei Technologies | Huawei Technologies | |||
| China | China | |||
| Email: vero.zheng@huawei.com | Email: vero.zheng@huawei.com | |||
| Mahesh Jethanandani (editor) | Mahesh Jethanandani (editor) | |||
| Cisco Systems | ||||
| Email: mjethanandani@gmail.com | Email: mjethanandani@gmail.com | |||
| Santosh Pallagatti | Santosh Pallagatti | |||
| India | India | |||
| Email: santosh.pallagatti@gmail.com | Email: santosh.pallagatti@gmail.com | |||
| Greg Mirsky | Greg Mirsky | |||
| ZTE Corporation | ZTE Corporation | |||
| Email: gregimirsky@gmail.com | Email: gregimirsky@gmail.com | |||
| End of changes. 258 change blocks. | ||||
| 312 lines changed or deleted | 496 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/ | ||||