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 49 skipping to change at page 24, line 20
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
skipping to change at page 46, line 14 skipping to change at page 48, line 9
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 {
skipping to change at page 47, line 14 skipping to change at page 49, line 18
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";
skipping to change at page 49, line 18 skipping to change at page 51, line 35
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>
skipping to change at page 51, line 15 skipping to change at page 53, line 40
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. 257 change blocks. 
312 lines changed or deleted 495 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/