draft-ietf-bfd-yang-06.txt   draft-ietf-bfd-yang-07.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: January 1, 2018 Huawei Technologies Expires: May 3, 2018 Huawei Technologies
M. Jethanandani, Ed. M. Jethanandani, Ed.
Cisco Systems Cisco Systems
S. Pallagatti S. Pallagatti
G. Mirsky G. Mirsky
ZTE Corporation ZTE Corporation
June 30, 2017 October 30, 2017
YANG Data Model for Bidirectional Forwarding Detection (BFD) YANG Data Model for Bidirectional Forwarding Detection (BFD)
draft-ietf-bfd-yang-06.txt draft-ietf-bfd-yang-07.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 January 1, 2018. This Internet-Draft will expire on May 3, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 29 skipping to change at page 2, line 29
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 . . . . . . . . . . . . . . . . . . . . 6 2.1.3. Multi-hop IP . . . . . . . . . . . . . . . . . . . . 6
2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7
2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 7 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . 9 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 9
2.7. BFD IP multi-hop hierarchy . . . . . . . . . . . . . . . 11 2.7. BFD IP multi-hop hierarchy . . . . . . . . . . . . . . . 11
2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13
2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 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 . . . . . . . . . . . 19 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 . . . . . . . . . . . . . . . . . . 20 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 20
2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 20 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 21
2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 21 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 21
2.13. BFD top-level YANG Module . . . . . . . . . . . . . . . . 23 2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 23
2.14. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 36 2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 35
2.15. BFD IP multi-hop YANG Module . . . . . . . . . . . . . . 38 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 37
2.16. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 41 2.16. BFD IP multi-hop YANG Module . . . . . . . . . . . . . . 39
2.17. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 44 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 42
2.18. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 47 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 45
2.19. Security Considerations . . . . . . . . . . . . . . . . . 50 2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 48
2.20. IANA Considerations . . . . . . . . . . . . . . . . . . . 50 2.20. Security Considerations . . . . . . . . . . . . . . . . . 51
2.20.1. IANA-Maintained iana-bfd-types module . . . . . . . 51 2.21. IANA Considerations . . . . . . . . . . . . . . . . . . . 51
2.21. Acknowledgements . . . . . . . . . . . . . . . . . . . . 52 2.21.1. IANA-Maintained iana-bfd-types module . . . . . . . 53
3. References . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.22. Acknowledgements . . . . . . . . . . . . . . . . . . . . 53
3.1. Normative References . . . . . . . . . . . . . . . . . . 52 3. References . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2. Informative References . . . . . . . . . . . . . . . . . 53 3.1. Normative References . . . . . . . . . . . . . . . . . . 53
Appendix A. Echo function configuration example . . . . . . . . 54 3.2. Informative References . . . . . . . . . . . . . . . . . 54
A.1. Example YANG module for BFD echo function . . . . . . . . 55 Appendix A. Echo function configuration example . . . . . . . . 55
Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 57 A.1. Example YANG module for BFD echo function . . . . . . . . 56
B.1. Changes between versions -05 and -06 . . . . . . . . . . 57 Appendix B. BFD client configuration example . . . . . . . . . . 58
B.2. Changes between versions -04 and -05 . . . . . . . . . . 57 B.1. Example YANG module for BFD client . . . . . . . . . . . 58
B.3. Changes between versions -03 and -04 . . . . . . . . . . 57 Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 60
B.4. Changes between versions -02 and -03 . . . . . . . . . . 57 C.1. Changes between versions -06 and -07 . . . . . . . . . . 60
B.5. Changes between versions -01 and -02 . . . . . . . . . . 58 C.2. Changes between versions -05 and -06 . . . . . . . . . . 61
B.6. Changes between versions -00 and -01 . . . . . . . . . . 58 C.3. Changes between versions -04 and -05 . . . . . . . . . . 61
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 58 C.4. Changes between versions -03 and -04 . . . . . . . . . . 61
C.5. Changes between versions -02 and -03 . . . . . . . . . . 61
C.6. Changes between versions -01 and -02 . . . . . . . . . . 61
C.7. Changes between versions -00 and -01 . . . . . . . . . . 61
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62
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 46 skipping to change at page 4, line 50
[I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate
locations. For example, if an implementation supports BFD IP multi- locations. For example, if an implementation supports BFD IP multi-
hop in network instances, the implementation would do schema-mount of hop in network instances, the implementation would do schema-mount of
the BFD IP multi-hop model in a mount-point which resides in a the BFD IP multi-hop model in a mount-point which resides in a
network instance. network instance.
The data models in this document strive to follow the "Network 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. One exception at the moment is the model for MPLS- operational data.
TE in Section 2.1.4
2.1. Design of Configuration Model 2.1. Design of Configuration Model
The configuration model consists mainly of the parameters specified The configuration model consists mainly of the parameters specified
in BFD [RFC5880]. Some examples are desired minimum transmit in BFD [RFC5880]. Some examples are desired minimum transmit
interval, required minimum receive interval, detection multiplier, interval, required minimum receive interval, detection multiplier,
etc etc
BFD clients are applications that use BFD for fast detection of BFD clients are applications that use BFD for fast detection of
failures. Some implementations have BFD session configuration under failures. Some implementations have BFD session configuration under
the BFD clients. For example, BFD session configuration under the BFD clients. For example, BFD session configuration under
routing applications such as OSPF, IS-IS, BGP etc. Other routing applications such as OSPF, IS-IS, BGP etc. Other
implementations have BFD session configuration centralized under BFD, implementations have BFD session configuration centralized under BFD,
i.e. outside the multiple BFD clients. i.e. outside the multiple BFD clients.
The BFD parameters of interest to a BFD client are mainly the The BFD parameters of interest to a BFD client are mainly the
multiplier and interval(s) since those parameters impact the multiplier and interval(s) since those parameters impact the
convergence time of the BFD clients when a failure occurs. Other convergence time of the BFD clients when a failure occurs. Other
parameters such as BFD authentication are not specific to the parameters such as BFD authentication are not specific to the
requirements of the BFD client. To avoid splitting the BFD requirements of the BFD client. Ideally all configuration should be
configuration between BFD clients and this centralized model of BFD, centralized under BFD. However, this is a problem for clients of BFD
all the configuration is kept under this centralized model of BFD. which auto-discover their peers. For example, IGPs do not have the
The only BFD configuration under BFD clients should be an "enable" peer address configured, instead the IGP is enabled on an interface
knob which makes those clients react to BFD liveliness detection and the IGP peers are auto-discovered. So for an operator to
events. configure BFD to an IGP peer, the operator would first have to
determine the peer addresses. And when a new peer is discovered, BFD
configuration would need to be added. To avoid this issue, we define
grouping client-cfg-parms in Section 2.13 for BFD clients to
configure BFD: this allows BFD clients such as the IGPs to have
configuration (multipler and intervals) for the BFD sessions they
need. The mechanism how the BFD sessions are created by the BFD
clients is outside the scope of this document.
2.1.1. Common BFD configuration parameters 2.1.1. Common BFD configuration parameters
The basic BFD configuration parameters are: The basic BFD configuration parameters are:
local-multiplier local-multiplier
This is the detection time multiplier as defined in BFD This is the detection time multiplier as defined in BFD
[RFC5880]. [RFC5880].
desired-min-tx-interval desired-min-tx-interval
skipping to change at page 9, line 30 skipping to change at page 9, line 37
2.5. BFD top level hierarchy 2.5. BFD top level hierarchy
At the "bfd" node under control-plane-protocol, there is no At the "bfd" node under control-plane-protocol, there is no
configuration data, only operational data. The operational data configuration data, only operational data. The operational data
consist of overall BFD session statistics, i.e. for BFD on all types consist of overall BFD session statistics, i.e. for BFD on all types
of forwarding paths. The "bfd" node under control-plane-protocol can of forwarding paths. The "bfd" node under control-plane-protocol can
be 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 module: ietf-bfd
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw bfd +--rw bfd
+--ro bfd-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
2.6. BFD IP single-hop hierarchy 2.6. BFD IP single-hop hierarchy
An "ip-sh" node is added under "bfd" node in control-plane-protocol. An "ip-sh" node is added under "bfd" node in control-plane-protocol.
The configuration and operational data for each BFD IP single-hop The configuration and operational data for each BFD IP single-hop
session is under this "ip-sh" node. The "ip-sh" node can be used in session is under this "ip-sh" node. The "ip-sh" node can be used in
a network device (top-level), or mounted in an LNE or in a network a network device (top-level), or mounted in an LNE or in a network
instance. instance.
module: ietf-bfd-ip-sh module: ietf-bfd-ip-sh
augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protoco augment /rt:routing/rt:control-plane-protocols
l/bfd:bfd: /rt:control-plane-protocol/bfd:bfd:
+--rw ip-sh +--rw ip-sh
+--ro bfd-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
+--rw sessions* [interface dest-addr] +--rw sessions* [interface dest-addr]
+--rw interface if:interface-ref +--rw interface if:interface-ref
+--rw dest-addr inet:ip-address +--rw dest-addr inet:ip-address
+--rw source-addr? inet:ip-address +--rw source-addr? inet:ip-address
+--rw local-multiplier? bfd-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 +--rw demand-enabled? boolean {demand-mode}?
{bfd-demand-mode}? +--rw admin-down? boolean
+--rw admin-down? boolean +--rw authentication-parms! {authentication}?
+--rw authentication-parms! {bfd-authentication}? | +--rw key-chain? kc:key-chain-ref
| +--rw key-chain? kc:key-chain-ref | +--rw replay-protection? identityref
| +--rw replay-protection? identityref +--ro path-type? identityref
+--rw desired-min-echo-tx-interval? uint32 +--ro ip-encapsulation? boolean
+--rw required-min-echo-rx-interval? uint32 +--ro local-discriminator? discriminator
+--ro path-type? identityref +--ro remote-discriminator? discriminator
+--ro ip-encapsulation? boolean +--ro remote-multiplier? multiplier
+--ro local-discriminator? bfd-discriminator +--ro demand-capability? boolean {demand-mode}?
+--ro remote-discriminator? bfd-discriminator +--ro source-port? inet:port-number
+--ro remote-multiplier? bfd-multiplier +--ro dest-port? inet:port-number
+--ro demand-capability? boolean +--ro session-running
{bfd-demand-mode}? | +--ro session-index? uint32
+--ro source-port? inet:port-number | +--ro local-state? state
+--ro dest-port? inet:port-number | +--ro remote-state? state
+--ro session-running | +--ro local-diagnostic?
| +--ro session-index? uint32 | | iana-bfd-types:diagnostic
| +--ro local-state? bfd-state | +--ro remote-diagnostic?
| +--ro remote-state? bfd-state | | iana-bfd-types:diagnostic
| +--ro local-diagnostic? iana-bfd-types: | +--ro remote-authenticated? boolean
bfd-diagnostic | +--ro remote-authentication-type? iana-bfd-types:auth-ty
| +--ro remote-diagnostic? iana-bfd-types: pe
bfd-diagnostic | | {authentication}?
| +--ro remote-authenticated? boolean | +--ro detection-mode? enumeration
| +--ro remote-authentication-type? iana-bfd-types: | +--ro negotiated-tx-interval? uint32
bfd-auth-type | +--ro negotiated-rx-interval? uint32
| +--ro detection-mode? enumeration | +--ro detection-time? uint32
| +--ro negotiated-tx-interval? uint32 | +--ro echo-tx-interval-in-use? uint32 {echo-mode}?
| +--ro negotiated-rx-interval? uint32 +--ro sesssion-statistics
| +--ro detection-time? uint32 +--ro create-time? yang:date-and-time
| +--ro echo-tx-interval-in-use? uint32 {bfd-echo-mode}? +--ro last-down-time? yang:date-and-time
+--ro sesssion-statistics +--ro last-up-time? yang:date-and-time
+--ro create-time? yang:date-and-time +--ro down-count? uint32
+--ro last-down-time? yang:date-and-time +--ro admin-down-count? uint32
+--ro last-up-time? yang:date-and-time +--ro receive-packet-count? uint64
+--ro down-count? uint32 +--ro send-packet-count? uint64
+--ro admin-down-count? uint32 +--ro receive-bad-packet? uint64
+--ro receive-packet-count? uint64 +--ro send-failed-packet? uint64
+--ro send-packet-count? uint64
+--ro receive-bad-packet? uint64 notifications:
+--ro send-failed-packet? uint64 +---n singlehop-notification
notifications: +--ro local-discr? discriminator
+---n bfd-singlehop-notification +--ro remote-discr? discriminator
+--ro local-discr? bfd-discriminator +--ro new-state? state
+--ro remote-discr? bfd-discriminator +--ro state-change-reason? iana-bfd-types:diagnostic
+--ro new-state? bfd-state +--ro time-of-last-state-change? yang:date-and-time
+--ro state-change-reason? iana-bfd-types:bfd-diagnostic +--ro dest-addr? inet:ip-address
+--ro time-of-last-state-change? yang:date-and-time +--ro source-addr? inet:ip-address
+--ro dest-addr? inet:ip-address +--ro session-index? uint32
+--ro source-addr? inet:ip-address +--ro path-type? identityref
+--ro session-index? uint32 +--ro interface? if:interface-ref
+--ro path-type? identityref +--ro echo-enabled? boolean
+--ro interface? if:interface-ref
+--ro echo-enabled? boolean
2.7. BFD IP multi-hop hierarchy 2.7. BFD IP multi-hop hierarchy
An "ip-mh" node is added under the "bfd" node in cntrol-plane- An "ip-mh" node is added under the "bfd" node in cntrol-plane-
protocol. The configuration and operational data for each BFD IP protocol. The configuration and operational data for each BFD IP
multi-hop session is under this "ip-mh" node. In the operational multi-hop session is under this "ip-mh" node. In the operational
model we support multiple BFD multi-hop sessions per remote address model we support multiple BFD multi-hop sessions per remote address
(ECMP), the local discriminator is used as key. The "ip-mh" node can (ECMP), the local discriminator is used as key. The "ip-mh" node can
be 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 bfd-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
+--rw session-group* [source-addr dest-addr] +--rw session-group* [source-addr dest-addr]
+--rw source-addr inet:ip-address +--rw source-addr inet:ip-address
+--rw dest-addr inet:ip-address +--rw dest-addr inet:ip-address
+--rw local-multiplier? bfd-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 {bfd-demand-mode}? +--rw demand-enabled? boolean {demand-mode}?
+--rw admin-down? boolean +--rw admin-down? boolean
+--rw authentication-parms! {bfd-authentication}? +--rw authentication-parms! {authentication}?
| +--rw key-chain? kc:key-chain-ref | +--rw key-chain? kc:key-chain-ref
| +--rw replay-protection? identityref | +--rw replay-protection? identityref
+--rw tx-ttl? bfd:hops +--rw tx-ttl? bfd-types:hops
+--rw rx-ttl bfd: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? bfd-discriminator +--ro local-discriminator? discriminator
+--ro remote-discriminator? bfd-discriminator +--ro remote-discriminator? discriminator
+--ro remote-multiplier? bfd-multiplier +--ro remote-multiplier? multiplier
+--ro demand-capability? boolean {bfd-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? bfd-state | +--ro local-state? state
| +--ro remote-state? bfd-state | +--ro remote-state? state
| +--ro local-diagnostic? iana-bfd-types: | +--ro local-diagnostic?
bfd-diagnostic | | iana-bfd-types:diagnostic
| +--ro remote-diagnostic? iana-bfd-types: | +--ro remote-diagnostic?
bfd-diagnostic | | iana-bfd-types:diagnostic
| +--ro remote-authenticated? boolean | +--ro remote-authenticated? boolean
| +--ro remote-authentication-type? iana-bfd-types: | +--ro remote-authentication-type?
bfd-auth-type | | iana-bfd-types:auth-type {authentication}?
| +--ro detection-mode? enumeration | +--ro detection-mode? enumeration
| +--ro negotiated-tx-interval? uint32 | +--ro negotiated-tx-interval? uint32
| +--ro negotiated-rx-interval? uint32 | +--ro negotiated-rx-interval? uint32
| +--ro detection-time? uint32 | +--ro detection-time? uint32
| +--ro echo-tx-interval-in-use? uint32 | +--ro echo-tx-interval-in-use? uint32
{bfd-echo-mode}? | {echo-mode}?
+--ro session-statistics +--ro sesssion-statistics
+--ro create-time? yang:date-and-time +--ro create-time? yang:date-and-time
+--ro last-down-time? yang:date-and-time +--ro last-down-time? yang:date-and-time
+--ro last-up-time? yang:date-and-time +--ro last-up-time? yang:date-and-time
+--ro down-count? uint32 +--ro down-count? uint32
+--ro admin-down-count? uint32 +--ro admin-down-count? uint32
+--ro receive-packet-count? uint64 +--ro receive-packet-count? uint64
+--ro send-packet-count? uint64 +--ro send-packet-count? uint64
+--ro receive-bad-packet? uint64 +--ro receive-bad-packet? uint64
+--ro send-failed-packet? uint64 +--ro send-failed-packet? uint64
notifications: notifications:
+---n bfd-multihop-notification +---n multihop-notification
+--ro local-discr? bfd-discriminator +--ro local-discr? discriminator
+--ro remote-discr? bfd-discriminator +--ro remote-discr? discriminator
+--ro new-state? bfd-state +--ro new-state? state
+--ro state-change-reason? iana-bfd-types:bfd-diagnostic +--ro state-change-reason? iana-bfd-types:diagnostic
+--ro time-of-last-state-change? yang:date-and-time +--ro time-of-last-state-change? yang:date-and-time
+--ro dest-addr? inet:ip-address +--ro dest-addr? inet:ip-address
+--ro source-addr? inet:ip-address +--ro source-addr? inet:ip-address
+--ro session-index? uint32 +--ro session-index? uint32
+--ro path-type? identityref +--ro path-type? identityref
2.8. BFD over LAG hierarchy 2.8. BFD over LAG hierarchy
A "lag" node is added under the "bfd" node in control-plane-protocol. A "lag" node is added under the "bfd" node in control-plane-protocol.
The configuration and operational data for each BFD LAG session is The configuration and operational data for each BFD LAG session is
under this "lag" node. The "lag" node can be used in a network under this "lag" node. The "lag" node can be used in a network
device (top-level), or mounted in an LNE or in a network instance. device (top-level), or mounted in an LNE or in a network instance.
module: ietf-bfd-lag module: ietf-bfd-lag
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/bfd:bfd: /rt:control-plane-protocol/bfd:bfd:
+--rw lag +--rw lag
+--rw micro-bfd-ipv4-session-statistics +--rw micro-bfd-ipv4-session-statistics
| +--ro bfd-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
+--rw micro-bfd-ipv6-session-statistics +--rw micro-bfd-ipv6-session-statistics
| +--ro bfd-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
+--rw sessions* [lag-name] +--rw sessions* [lag-name]
+--rw lag-name if:interface-ref +--rw lag-name if:interface-ref
+--rw ipv4-dest-addr? inet:ipv4-address +--rw ipv4-dest-addr? inet:ipv4-address
+--rw ipv6-dest-addr? inet:ipv6-address +--rw ipv6-dest-addr? inet:ipv6-address
+--rw local-multiplier? bfd-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 {bfd-demand-mode}? +--rw demand-enabled? boolean {demand-mode}?
+--rw admin-down? boolean +--rw admin-down? boolean
+--rw authentication-parms! {bfd-authentication}? +--rw authentication-parms! {authentication}?
| +--rw key-chain? kc:key-chain-ref | +--rw key-chain? kc:key-chain-ref
| +--rw replay-protection? identityref | +--rw replay-protection? identityref
+--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? bfd-discriminator | +--ro local-discriminator? discriminator
| +--ro remote-discriminator? bfd-discriminator | +--ro remote-discriminator? discriminator
| +--ro remote-multiplier? bfd-multiplier | +--ro remote-multiplier? multiplier
| +--ro demand-capability? boolean {bfd-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? bfd-state | | +--ro local-state? state
| | +--ro remote-state? bfd-state | | +--ro remote-state? state
| | +--ro local-diagnostic? iana-bfd-types: | | +--ro local-diagnostic?
bfd-diagnostic | | | iana-bfd-types:diagnostic
| | +--ro remote-diagnostic? iana-bfd-types: | | +--ro remote-diagnostic?
bfd-diagnostic | | | iana-bfd-types:diagnostic
| | +--ro remote-authenticated? boolean | | +--ro remote-authenticated? boolean
| | +--ro remote-authentication-type? iana-bfd-types: | | +--ro remote-authentication-type?
bfd-auth-type | | | iana-bfd-types:auth-type {authentication}?
| | +--ro detection-mode? enumeration | | +--ro detection-mode? enumeration
| | +--ro negotiated-tx-interval? uint32 | | +--ro negotiated-tx-interval? uint32
| | +--ro negotiated-rx-interval? uint32 | | +--ro negotiated-rx-interval? uint32
| | +--ro detection-time? uint32 | | +--ro detection-time? uint32
| | +--ro echo-tx-interval-in-use? uint32 | | +--ro echo-tx-interval-in-use? uint32
{bfd-echo-mode}? | | {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
+--ro micro-bfd-ipv6 +--ro micro-bfd-ipv6
+--ro path-type? identityref +--ro path-type? identityref
+--ro ip-encapsulation? boolean +--ro ip-encapsulation? boolean
+--ro local-discriminator? bfd-discriminator +--ro local-discriminator? discriminator
+--ro remote-discriminator? bfd-discriminator +--ro remote-discriminator? discriminator
+--ro remote-multiplier? bfd-multiplier +--ro remote-multiplier? multiplier
+--ro demand-capability? boolean {bfd-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? bfd-state | +--ro local-state? state
| +--ro remote-state? bfd-state | +--ro remote-state? state
| +--ro local-diagnostic? iana-bfd-types: | +--ro local-diagnostic?
bfd-diagnostic | | iana-bfd-types:diagnostic
| +--ro remote-diagnostic? iana-bfd-types: | +--ro remote-diagnostic?
bfd-diagnostic | | iana-bfd-types:diagnostic
| +--ro remote-authenticated? boolean | +--ro remote-authenticated? boolean
| +--ro remote-authentication-type? iana-bfd-types: | +--ro remote-authentication-type?
bfd-auth-type | | iana-bfd-types:auth-type {authentication}?
| +--ro detection-mode? enumeration | +--ro detection-mode? enumeration
| +--ro negotiated-tx-interval? uint32 | +--ro negotiated-tx-interval? uint32
| +--ro negotiated-rx-interval? uint32 | +--ro negotiated-rx-interval? uint32
| +--ro detection-time? uint32 | +--ro detection-time? uint32
| +--ro echo-tx-interval-in-use? uint32 | +--ro echo-tx-interval-in-use? uint32
{bfd-echo-mode}? | {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
notifications:
+---n bfd-lag-notification notifications:
+--ro local-discr? bfd-discriminator +---n lag-notification
+--ro remote-discr? bfd-discriminator +--ro local-discr? discriminator
+--ro new-state? bfd-state +--ro remote-discr? discriminator
+--ro state-change-reason? iana-bfd-types:bfd-diagnostic +--ro new-state? state
+--ro time-of-last-state-change? yang:date-and-time +--ro state-change-reason? iana-bfd-types:diagnostic
+--ro dest-addr? inet:ip-address +--ro time-of-last-state-change? yang:date-and-time
+--ro source-addr? inet:ip-address +--ro dest-addr? inet:ip-address
+--ro session-index? uint32 +--ro source-addr? inet:ip-address
+--ro path-type? identityref +--ro session-index? uint32
+--ro lag-name? if:interface-ref +--ro path-type? identityref
+--ro member-link? if:interface-ref +--ro lag-name? if:interface-ref
+--ro member-link? if:interface-ref
2.9. BFD over MPLS LSPs hierarchy 2.9. BFD over MPLS LSPs hierarchy
An "mpls" node is added under the "bfd" node in control-plane- An "mpls" node is added under the "bfd" node in control-plane-
protocol. The configuration is per MPLS FEC under this "mpls" node. protocol. The configuration is per MPLS FEC under this "mpls" node.
In the operational model we support multiple BFD sessions per MPLS In the operational model we support multiple BFD sessions per MPLS
FEC (ECMP), the local discriminator is used as key. The "mpls" node FEC (ECMP), the local discriminator is used as key. The "mpls" node
can be used in a network device (top-level), or mounted in an LNE or can be used in a network device (top-level), or mounted in an LNE or
in a network instance. in a network instance.
module: ietf-bfd-mpls module: ietf-bfd-mpls
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/bfd:bfd: /rt:control-plane-protocol/bfd:bfd:
+--rw mpls +--rw mpls
+--ro bfd-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
+--rw egress +--rw egress
| +--rw local-multiplier? bfd-multiplier | +--rw enable? boolean
| +--rw (interval-config-type)? | +--rw local-multiplier? multiplier
| | +--:(tx-rx-intervals) | +--rw (interval-config-type)?
| | | +--rw desired-min-tx-interval uint32 | | +--:(tx-rx-intervals)
| | | +--rw required-min-rx-interval uint32 | | | +--rw desired-min-tx-interval uint32
| | +--:(single-interval) | | | +--rw required-min-rx-interval uint32
| | +--rw min-interval uint32 | | +--:(single-interval)
| +--rw authentication-parms! {bfd-authentication}? | | +--rw min-interval uint32
| +--rw key-chain? kc:key-chain-ref | +--rw authentication-parms! {authentication}?
| +--rw replay-protection? identityref | +--rw key-chain? kc:key-chain-ref
+--rw session-group* [mpls-fec] | +--rw replay-protection? identityref
+--rw mpls-fec inet:ip-prefix +--rw session-group* [mpls-fec]
+--rw local-multiplier? bfd-multiplier +--rw mpls-fec inet:ip-prefix
+--rw (interval-config-type)? +--rw local-multiplier? multiplier
| +--:(tx-rx-intervals) +--rw (interval-config-type)?
| | +--rw desired-min-tx-interval uint32 | +--:(tx-rx-intervals)
| | +--rw required-min-rx-interval uint32 | | +--rw desired-min-tx-interval uint32
| +--:(single-interval) | | +--rw required-min-rx-interval uint32
| +--rw min-interval uint32 | +--:(single-interval)
+--rw demand-enabled? boolean {bfd-demand-mode}? | +--rw min-interval uint32
+--rw admin-down? boolean +--rw demand-enabled? boolean {demand-mode}?
+--rw authentication-parms! {bfd-authentication}? +--rw admin-down? boolean
| +--rw key-chain? kc:key-chain-ref +--rw authentication-parms! {authentication}?
| +--rw replay-protection? identityref | +--rw key-chain? kc:key-chain-ref
+--ro sessions* | +--rw replay-protection? identityref
+--ro path-type? identityref +--ro sessions*
+--ro ip-encapsulation? boolean +--ro path-type? identityref
+--ro local-discriminator? bfd-discriminator +--ro ip-encapsulation? boolean
+--ro remote-discriminator? bfd-discriminator +--ro local-discriminator? discriminator
+--ro remote-multiplier? bfd-multiplier +--ro remote-discriminator? discriminator
+--ro demand-capability? boolean {bfd-demand-mode}? +--ro remote-multiplier? multiplier
+--ro source-port? inet:port-number +--ro demand-capability? boolean {demand-mode}?
+--ro dest-port? inet:port-number +--ro source-port? inet:port-number
+--ro session-running +--ro dest-port? inet:port-number
| +--ro session-index? uint32 +--ro session-running
| +--ro local-state? bfd-state | +--ro session-index? uint32
| +--ro remote-state? bfd-state | +--ro local-state? state
| +--ro local-diagnostic? iana-bfd-types: | +--ro remote-state? state
bfd-diagnostic | +--ro local-diagnostic?
| +--ro remote-diagnostic? iana-bfd-types: | | iana-bfd-types:diagnostic
bfd-diagnostic | +--ro remote-diagnostic?
| +--ro remote-authenticated? boolean | | iana-bfd-types:diagnostic
| +--ro remote-authentication-type? iana-bfd-types: | +--ro remote-authenticated? boolean
bfd-auth-type | +--ro remote-authentication-type?
| +--ro detection-mode? enumeration | | iana-bfd-types:auth-type {authentication}?
| +--ro negotiated-tx-interval? uint32 | +--ro detection-mode? enumeration
| +--ro negotiated-rx-interval? uint32 | +--ro negotiated-tx-interval? uint32
| +--ro detection-time? uint32 | +--ro negotiated-rx-interval? uint32
| +--ro echo-tx-interval-in-use? uint32 | +--ro detection-time? uint32
{bfd-echo-mode}? | +--ro echo-tx-interval-in-use? uint32
+--ro sesssion-statistics | {echo-mode}?
| +--ro create-time? yang:date-and-time +--ro sesssion-statistics
| +--ro last-down-time? yang:date-and-time | +--ro create-time? yang:date-and-time
| +--ro last-up-time? yang:date-and-time | +--ro last-down-time? yang:date-and-time
| +--ro down-count? uint32 | +--ro last-up-time? yang:date-and-time
| +--ro admin-down-count? uint32 | +--ro down-count? uint32
| +--ro receive-packet-count? uint64 | +--ro admin-down-count? uint32
| +--ro send-packet-count? uint64 | +--ro receive-packet-count? uint64
| +--ro receive-bad-packet? uint64 | +--ro send-packet-count? uint64
| +--ro send-failed-packet? uint64 | +--ro receive-bad-packet? uint64
+--ro mpls-dest-address? inet:ip-address | +--ro send-failed-packet? uint64
notifications: +--ro mpls-dest-address? inet:ip-address
+---n bfd-mpls-notification
+--ro local-discr? bfd-discriminator notifications:
+--ro remote-discr? bfd-discriminator +---n mpls-notification
+--ro new-state? bfd-state +--ro local-discr? discriminator
+--ro state-change-reason? iana-bfd-types:bfd-diagnostic +--ro remote-discr? discriminator
+--ro time-of-last-state-change? yang:date-and-time +--ro new-state? state
+--ro dest-addr? inet:ip-address +--ro state-change-reason? iana-bfd-types:diagnostic
+--ro source-addr? inet:ip-address +--ro time-of-last-state-change? yang:date-and-time
+--ro session-index? uint32 +--ro dest-addr? inet:ip-address
+--ro path-type? identityref +--ro source-addr? inet:ip-address
+--ro mpls-dest-address? inet:ip-address +--ro session-index? uint32
+--ro path-type? identityref
+--ro mpls-dest-address? inet:ip-address
2.10. BFD over MPLS-TE hierarchy 2.10. BFD over MPLS-TE hierarchy
YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is
augmented. BFD is configured per MPLS-TE tunnel, and BFD session augmented. BFD is configured per MPLS-TE tunnel, and BFD session
operational data is provided per MPLS-TE LSP. operational data is provided per MPLS-TE LSP.
module: ietf-bfd-mpls-te module: ietf-bfd-mpls-te
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/bfd:bfd: /rt:control-plane-protocol/bfd:bfd:
+--rw mpls-te +--rw mpls-te
+--rw config +--rw egress
| +--rw egress | +--rw enable? boolean
| +--rw local-multiplier? bfd-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! {bfd-authentication}? | +--rw authentication-parms! {authentication}?
| +--rw key-chain? kc:key-chain-ref | +--rw key-chain? kc:key-chain-ref
| +--rw replay-protection? identityref | +--rw replay-protection? identityref
+--ro oper +--ro session-statistics
+--ro bfd-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/te:config: +--rw local-multiplier? multiplier
+--rw local-multiplier? bfd-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 {bfd-demand-mode}? +--rw admin-down? boolean
+--rw admin-down? boolean +--rw authentication-parms! {authentication}?
+--rw authentication-parms! {bfd-authentication}? | +--rw key-chain? kc:key-chain-ref
| +--rw key-chain? kc:key-chain-ref | +--rw replay-protection? identityref
| +--rw replay-protection? identityref +--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? bfd-discriminator +--ro remote-discriminator? discriminator
+--ro remote-discriminator? bfd-discriminator +--ro remote-multiplier? multiplier
+--ro remote-multiplier? bfd-multiplier +--ro demand-capability? boolean {demand-mode}?
+--ro demand-capability? boolean {bfd-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? bfd-state | +--ro remote-state? state
| +--ro remote-state? bfd-state | +--ro local-diagnostic? iana-bfd-types:diagnostic
| +--ro local-diagnostic? iana-bfd-types:bfd-diagnostic | +--ro remote-diagnostic? iana-bfd-types:diagnostic
| +--ro remote-diagnostic? iana-bfd-types:bfd-diagnostic | +--ro remote-authenticated? boolean
| +--ro remote-authenticated? boolean | +--ro remote-authentication-type? iana-bfd-types:auth-type
| +--ro remote-authentication-type? iana-bfd-types:bfd-auth-type | | {authentication}?
{bfd-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 {bfd-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 +--ro mpls-dest-address? inet:ip-address
+--ro mpls-dest-address? inet:ip-address
notifications: notifications:
+---n bfd-mpls-te-notification +---n mpls-te-notification
+--ro local-discr? bfd-discriminator +--ro local-discr? discriminator
+--ro remote-discr? bfd-discriminator +--ro remote-discr? discriminator
+--ro new-state? bfd-state +--ro new-state? state
+--ro state-change-reason? iana-bfd-types:bfd-diagnostic +--ro state-change-reason? iana-bfd-types:diagnostic
+--ro time-of-last-state-change? yang:date-and-time +--ro time-of-last-state-change? yang:date-and-time
+--ro dest-addr? inet:ip-address +--ro dest-addr? inet:ip-address
+--ro source-addr? inet:ip-address +--ro source-addr? inet:ip-address
+--ro session-index? uint32 +--ro session-index? uint32
+--ro path-type? identityref +--ro path-type? identityref
+--ro mpls-dest-address? inet:ip-address +--ro mpls-dest-address? inet:ip-address
+--ro tunnel-name? string +--ro tunnel-name? string
2.11. Interaction with other YANG modules 2.11. Interaction with other YANG modules
Generic YANG Data Model for Connectionless OAM protocols Generic YANG Data Model for Connectionless OAM protocols
[I-D.ietf-lime-yang-connectionless-oam] describes how the LIME [I-D.ietf-lime-yang-connectionless-oam] describes how the LIME
connectionless OAM model could be extended to support BFD. connectionless OAM model could be extended to support BFD.
Also, the operation of the BFD data model depends on configuration Also, the operation of the BFD data model depends on configuration
parameters that are defined in other YANG modules. parameters that are defined in other YANG modules.
skipping to change at page 21, line 12 skipping to change at page 21, line 17
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@2017-06-30.yang" <CODE BEGINS> file "iana-bfd-types@2017-10-30.yang"
module iana-bfd-types { module iana-bfd-types {
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
skipping to change at page 21, line 48 skipping to change at page 22, line 5
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
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 // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
typedef bfd-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";
} }
enum echo-failed { enum echo-failed {
skipping to change at page 23, line 7 skipping to change at page 23, line 12
} }
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 RFC5880. Range is 0 to 31.";
} }
typedef bfd-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;
description "Simple password"; description "Simple password";
} }
enum keyed-md5 { enum keyed-md5 {
skipping to change at page 23, line 38 skipping to change at page 23, line 43
} }
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 RFC5880. Range is 0 to
255."; 255.";
} }
} }
<CODE ENDS> <CODE ENDS>
2.13. BFD top-level YANG Module 2.13. BFD types YANG Module
<CODE BEGINS> file "ietf-bfd@2017-06-30.yang" <CODE BEGINS> file "ietf-bfd-types@2017-10-30.yang"
module ietf-bfd { module ietf-bfd-types {
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types";
prefix "bfd-types";
prefix "bfd";
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";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
skipping to change at page 24, line 35 skipping to change at page 24, line 39
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 a collection of BFD specific YANG data type
per RFC5880. definitions, as per RFC5880.
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).
skipping to change at page 24, line 47 skipping to change at page 25, line 4
Copyright (c) 2017 IETF Trust and the persons Copyright (c) 2017 IETF Trust and the persons
identified as authors of the code. All rights reserved. identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
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 // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
identity bfdv1 { identity bfdv1 {
base "rt:control-plane-protocol"; base "rt:control-plane-protocol";
description "BFD protocol version 1 as per RFC5880."; description "BFD protocol version 1 as per RFC5880.";
} }
typedef bfd-discriminator { typedef discriminator {
type uint32 { type uint32 {
range 1..4294967295; range 1..4294967295;
} }
description "BFD discriminator"; description "BFD discriminator";
} }
typedef bfd-state { typedef state {
type enumeration { type enumeration {
enum adminDown { enum adminDown {
value 0; value 0;
description "admindown"; description "admindown";
} }
enum down { enum down {
value 1; value 1;
description "down"; description "down";
} }
enum init { enum init {
skipping to change at page 25, line 45 skipping to change at page 25, line 49
description "init"; description "init";
} }
enum up { enum up {
value 3; value 3;
description "up"; description "up";
} }
} }
description "BFD state as defined in RFC5880"; description "BFD state as defined in RFC5880";
} }
typedef bfd-multiplier { typedef multiplier {
type uint8 { type uint8 {
range 1..255; range 1..255;
} }
description "Multiplier"; description "Multiplier";
} }
typedef hops { typedef hops {
type uint8 { type uint8 {
range 1..255; range 1..255;
} }
description description
"This corresponds to Time To Live for IPv4 and corresponds to hop "This corresponds to Time To Live for IPv4 and corresponds to hop
limit for IPv6"; limit for IPv6";
} }
/* /*
skipping to change at page 26, line 16 skipping to change at page 26, line 21
range 1..255; range 1..255;
} }
description description
"This corresponds to Time To Live for IPv4 and corresponds to hop "This corresponds to Time To Live for IPv4 and corresponds to hop
limit for IPv6"; limit for IPv6";
} }
/* /*
* Identity definitions * Identity definitions
*/ */
identity bfd-path-type { identity path-type {
description description
"Base identity for BFD path type. The session type indicates "Base identity for BFD path type. The session type indicates
the type of path on which BFD is running"; the type of path on which BFD is running";
} }
identity bfd-path-ip-sh { identity path-ip-sh {
base bfd-path-type; base path-type;
description "BFD on IP single hop"; description "BFD on IP single hop";
} }
identity bfd-path-ip-mh { identity path-ip-mh {
base bfd-path-type; base path-type;
description "BFD on IP multi hop"; description "BFD on IP multi hop";
} }
identity bfd-path-mpls-te { identity path-mpls-te {
base bfd-path-type; base path-type;
description "BFD on MPLS Traffic Engineering"; description "BFD on MPLS Traffic Engineering";
} }
identity bfd-path-mpls-lsp { identity path-mpls-lsp {
base bfd-path-type; base path-type;
description "BFD on MPLS Label Switched Path"; description "BFD on MPLS Label Switched Path";
} }
identity bfd-path-lag { identity path-lag {
base bfd-path-type; base path-type;
description "Micro-BFD on LAG member links"; description "Micro-BFD on LAG member links";
} }
identity bfd-encap-type { identity encap-type {
description description
"Base identity for BFD encapsulation type."; "Base identity for BFD encapsulation type.";
} }
identity bfd-encap-ip { identity encap-ip {
base bfd-encap-type; base encap-type;
description "BFD with IP encapsulation."; description "BFD with IP encapsulation.";
} }
identity bfd-auth-replay-protection { identity auth-replay-protection {
description description
"Base identity for BFD authentication replay protection. " + "Base identity for BFD authentication replay protection. " +
"See section 6.7 of RFC5880."; "See section 6.7 of RFC5880.";
} }
identity bfd-auth-replay-protection-non-meticulous { identity auth-replay-protection-non-meticulous {
base bfd-auth-replay-protection; base auth-replay-protection;
description "Non-meticulous (see section 6.7.3 of RFC5880)"; description "Non-meticulous (see section 6.7.3 of RFC5880)";
} }
identity bfd-auth-replay-protection-meticulous { identity auth-replay-protection-meticulous {
base bfd-auth-replay-protection; base auth-replay-protection;
description "Meticulous (see section 6.7.3 of RFC5880)"; description "Meticulous (see section 6.7.3 of RFC5880)";
} }
/* /*
* Feature definitions. * Feature definitions.
*/ */
feature bfd-authentication { feature authentication {
description "BFD authentication supported"; description "BFD authentication supported";
} }
feature bfd-demand-mode { feature demand-mode {
description "BFD demand mode supported"; description "BFD demand mode supported";
} }
feature bfd-echo-mode { feature echo-mode {
description "BFD echo mode supported"; description "BFD echo mode supported";
} }
/* /*
* Groupings * Groupings
*/ */
grouping bfd-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 RFC5880).";
container authentication-parms { container authentication-parms {
if-feature bfd-authentication; if-feature authentication;
presence presence
"Enables BFD authentication (see section 6.7 of RFC5880)."; "Enables BFD authentication (see section 6.7 of RFC5880).";
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 key-chain";
} }
leaf replay-protection { leaf replay-protection {
type identityref { type identityref {
base bfd-auth-replay-protection; base auth-replay-protection;
} }
description description
"Protection against replays"; "Protection against replays";
} }
} }
} }
grouping bfd-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 bfd-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 tx and rx";
case tx-rx-intervals { case tx-rx-intervals {
leaf desired-min-tx-interval { leaf desired-min-tx-interval {
type uint32; type uint32;
skipping to change at page 28, line 48 skipping to change at page 29, line 4
} }
} }
case single-interval { case single-interval {
leaf min-interval { leaf min-interval {
type uint32; type uint32;
units microseconds; units microseconds;
mandatory true; mandatory true;
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 bfd-grouping-common-cfg-parms {
description "BFD grouping for common config parameters";
uses bfd-grouping-base-cfg-parms; grouping client-cfg-parms {
description
"BFD grouping for config parameters
used by clients of BFD, e.g. IGP or MPLS";
leaf enable {
type boolean;
default false;
description
"Indicates whether the BFD is enabled.";
}
uses base-cfg-parms;
}
grouping common-cfg-parms {
description
"BFD grouping for common config parameters";
uses base-cfg-parms;
leaf demand-enabled { leaf demand-enabled {
if-feature bfd-demand-mode; if-feature demand-mode;
type boolean; type boolean;
default false; default false;
description "To enable demand mode"; description
"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 bfd-auth-parms; uses auth-parms;
}
grouping bfd-grouping-echo-cfg-parms {
description "BFD grouping for echo config parameters";
leaf desired-min-echo-tx-interval {
type uint32;
units microseconds;
default 0;
description "Desired minumum transmit interval for echo";
}
leaf required-min-echo-rx-interval {
type uint32;
units microseconds;
default 0;
description "Required minimum receive interval for echo";
}
}
grouping bfd-client-base-cfg-parms {
description
"BFD grouping which could be used by a protocol which
is a client of BFD to enable its use of BFD";
container bfd-cfg {
description "BFD configuration";
leaf enabled {
type boolean;
default false;
description "True if BFD is enabled";
}
}
} }
grouping bfd-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 bfd-path-type; base path-type;
} }
config "false"; config "false";
description description
"BFD session type, this indicates the path type that BFD is "BFD session 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 bfd-discriminator; type discriminator;
config "false"; config "false";
description "Local discriminator"; description "Local discriminator";
} }
leaf remote-discriminator { leaf remote-discriminator {
type bfd-discriminator; type discriminator;
config "false"; config "false";
description "Remote discriminator"; description "Remote discriminator";
} }
leaf remote-multiplier { leaf remote-multiplier {
type bfd-multiplier; type multiplier;
config "false"; config "false";
description "Remote multiplier"; description "Remote multiplier";
} }
leaf demand-capability { leaf demand-capability {
if-feature bfd-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;
skipping to change at page 31, line 26 skipping to change at page 31, line 16
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 bfd-state; type state;
description "Local state"; description "Local state";
} }
leaf remote-state { leaf remote-state {
type bfd-state; type state;
description "Remote state"; description "Remote state";
} }
leaf local-diagnostic { leaf local-diagnostic {
type iana-bfd-types:bfd-diagnostic; type iana-bfd-types:diagnostic;
description "Local diagnostic"; description "Local diagnostic";
} }
leaf remote-diagnostic { leaf remote-diagnostic {
type iana-bfd-types:bfd-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'" {
skipping to change at page 32, line 4 skipping to change at page 31, line 42
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 bfd-authentication; if-feature authentication;
type iana-bfd-types:bfd-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 {
skipping to change at page 32, line 48 skipping to change at page 32, line 37
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-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 bfd-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";
skipping to change at page 34, line 4 skipping to change at page 33, line 41
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 bfd-session-statistics { grouping session-statistics {
description "Grouping for session counters"; description "Grouping for session counters";
container bfd-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";
} }
skipping to change at page 34, line 33 skipping to change at page 34, line 21
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 bfd-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 bfd-discriminator; type discriminator;
description "BFD local discriminator"; description "BFD local discriminator";
} }
leaf remote-discr { leaf remote-discr {
type bfd-discriminator; type discriminator;
description "BFD remote discriminator"; description "BFD remote discriminator";
} }
leaf new-state { leaf new-state {
type bfd-state; type state;
description "Current BFD state"; description "Current BFD state";
} }
leaf state-change-reason { leaf state-change-reason {
type iana-bfd-types:bfd-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";
} }
skipping to change at page 35, line 32 skipping to change at page 35, line 21
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 bfd-path-type; base path-type;
} }
description "BFD path type"; description "BFD path type";
} }
} }
}
augment "/rt:routing/rt:control-plane-protocols/" <CODE ENDS>
+ "rt:control-plane-protocol" {
when "rt:type = 'bfd:bfdv1'" { 2.14. BFD top-level YANG Module
description
"This augmentation is only valid for a control-plane protocol <CODE BEGINS> file "ietf-bfd@2017-10-30.yang"
instance of BFD (type 'bfdv1').";
module ietf-bfd {
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd";
prefix "bfd";
import ietf-bfd-types {
prefix "bfd-types";
} }
description "BFD augmentation.";
container bfd { import ietf-routing {
description "BFD top level container"; prefix "rt";
}
uses bfd-session-statistics; organization "IETF BFD Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/bfd>
WG List: <rtg-bfd@ietf.org>
Editors: Reshad Rahman (rrahman@cisco.com),
Lianshu Zheng (vero.zheng@huawei.com),
Mahesh Jethanandani (mjethanandani@gmail.com)";
description
"This module contains the YANG definition for BFD parameters as
per RFC5880.
Copyright (c) 2017 IETF Trust and the persons
identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
revision 2017-10-30 {
description "Initial revision.";
reference "RFC XXXX: A YANG data model for BFD";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this
// note
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol" {
when "rt:type = 'bfd-types:bfdv1'" {
description
"This augmentation is only valid for a control-plane protocol
instance of BFD (type 'bfdv1').";
}
description "BFD augmentation.";
container bfd {
description "BFD top level container";
uses bfd-types:session-statistics;
}
}
} }
}
<CODE ENDS> <CODE ENDS>
2.14. BFD IP single-hop YANG Module 2.15. BFD IP single-hop YANG Module
<CODE BEGINS> file "ietf-bfd-ip-sh@2017-06-30.yang" <CODE BEGINS> file "ietf-bfd-ip-sh@2017-10-30.yang"
module ietf-bfd-ip-sh { module ietf-bfd-ip-sh {
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh";
prefix "bfd-ip-sh"; prefix "bfd-ip-sh";
import ietf-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";
} }
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
skipping to change at page 37, line 13 skipping to change at page 38, line 12
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
description "Initial revision."; description "Initial revision.";
reference "RFC XXXX: A YANG data model for BFD IP single-hop"; reference "RFC XXXX: A YANG data model for BFD IP single-hop";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/bfd:bfd" { + "rt:control-plane-protocol/bfd:bfd" {
description "BFD augmentation for IP single-hop"; description "BFD augmentation for IP single-hop";
container ip-sh { container ip-sh {
description "BFD IP single-hop top level container"; description "BFD IP single-hop top level container";
uses bfd:bfd-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 address";
} }
uses bfd:bfd-grouping-common-cfg-parms; uses bfd-types:common-cfg-parms;
uses bfd:bfd-grouping-echo-cfg-parms;
uses bfd:bfd-all-session; uses bfd-types:all-session;
} }
} }
} }
notification singlehop-notification {
notification bfd-singlehop-notification {
description description
"Notification for BFD single-hop session state change. An " + "Notification for BFD single-hop session state change. An " +
"implementation may rate-limit notifications, e.g. when a" + "implementation may rate-limit notifications, e.g. when a" +
"session is continuously changing state."; "session is continuously changing state.";
uses bfd:bfd-notification-parms; uses bfd-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.15. BFD IP multi-hop YANG Module 2.16. BFD IP multi-hop YANG Module
<CODE BEGINS> file "ietf-bfd-ip-mh@2017-06-30.yang" <CODE BEGINS> file "ietf-bfd-ip-mh@2017-10-30.yang"
module ietf-bfd-ip-mh { module ietf-bfd-ip-mh {
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 // replace with IANA namespace when assigned
prefix "bfd-ip-mh"; prefix "bfd-ip-mh";
import ietf-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";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
skipping to change at page 39, line 29 skipping to change at page 40, line 31
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
description "Initial revision."; description "Initial revision.";
reference "RFC XXXX: A YANG data model for BFD IP multi-hop"; 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
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 multi-hop";
container ip-mh { container ip-mh {
description "BFD IP multi-hop top level container"; description "BFD IP multi-hop top level container";
uses bfd:bfd-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:bfd-grouping-common-cfg-parms; uses bfd-types:common-cfg-parms;
leaf tx-ttl { leaf tx-ttl {
type bfd: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: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:bfd-all-session; uses bfd-types:all-session;
} }
} }
} }
} }
notification bfd-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:bfd-notification-parms; uses bfd-types:notification-parms;
} }
} }
<CODE ENDS> <CODE ENDS>
2.16. BFD over LAG YANG Module
<CODE BEGINS> file "ietf-bfd-lag@2017-06-30.yang" 2.17. BFD over LAG YANG Module
<CODE BEGINS> file "ietf-bfd-lag@2017-10-30.yang"
module ietf-bfd-lag { module ietf-bfd-lag {
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix "bfd-lag"; prefix "bfd-lag";
import ietf-bfd-types {
prefix "bfd-types";
}
import ietf-bfd { import ietf-bfd {
prefix "bfd"; prefix "bfd";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
skipping to change at page 42, line 4 skipping to change at page 43, line 11
Copyright (c) 2017 IETF Trust and the persons Copyright (c) 2017 IETF Trust and the persons
identified as authors of the code. All rights reserved. identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
description "Initial revision."; description "Initial revision.";
reference "RFC XXXX: A YANG data model for BFD over LAG"; reference "RFC XXXX: A YANG data model for BFD over LAG";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/bfd:bfd" { + "rt:control-plane-protocol/bfd:bfd" {
description "BFD augmentation for LAG"; description "BFD augmentation for LAG";
container lag { container lag {
description "BFD over LAG top level container"; description "BFD over LAG top level container";
container 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:bfd-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:bfd-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 {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 address of the peer, for IPv6 micro-BFD."; "IPv6 address of the peer, for IPv6 micro-BFD.";
} }
uses bfd:bfd-grouping-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
skipping to change at page 43, line 28 skipping to change at page 44, line 34
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:bfd-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:bfd-all-session; uses bfd-types:all-session;
} }
} }
} }
} }
} }
notification bfd-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:bfd-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.17. BFD over MPLS YANG Module 2.18. BFD over MPLS YANG Module
<CODE BEGINS> file "ietf-bfd-mpls@2017-06-30.yang" <CODE BEGINS> file "ietf-bfd-mpls@2017-10-30.yang"
module ietf-bfd-mpls { module ietf-bfd-mpls {
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix "bfd-mpls"; prefix "bfd-mpls";
import ietf-bfd-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";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
skipping to change at page 45, line 16 skipping to change at page 46, line 27
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
description "Initial revision."; description "Initial revision.";
reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
identity bfd-encap-gach { identity encap-gach {
base bfd:bfd-encap-type; base bfd-types:encap-type;
description description
"BFD with G-ACh encapsulation as per RFC5586."; "BFD with G-ACh encapsulation as per RFC5586.";
} }
identity bfd-encap-ip-gach { identity encap-ip-gach {
base bfd:bfd-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 RFC5586.";
} }
grouping bfd-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:bfd-encap-type; base bfd-types:encap-type;
} }
default bfd:bfd-encap-ip; default bfd-types:encap-ip;
description "BFD encapsulation"; description "BFD encapsulation";
} }
} }
grouping bfd-mpls-dest-address { grouping mpls-dest-address {
description "Destination address as per RFC5884"; description "Destination address as per RFC5884";
leaf mpls-dest-address { leaf mpls-dest-address {
type inet:ip-address; type inet:ip-address;
config "false"; config "false";
description description
"Destination address as per RFC5884. "Destination address as per RFC5884.
Needed if IP encapsulation is used"; Needed if IP encapsulation is used";
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/bfd:bfd" { + "rt:control-plane-protocol/bfd:bfd" {
description "BFD augmentation for MPLS"; description "BFD augmentation for MPLS";
container mpls { container mpls {
description "BFD MPLS top level container"; description "BFD MPLS top level container";
uses bfd:bfd-session-statistics; uses bfd-types:session-statistics;
container egress { container egress {
description "Egress configuration"; description "Egress configuration";
uses bfd:bfd-grouping-base-cfg-parms; uses bfd-types:client-cfg-parms;
uses bfd:bfd-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:bfd-grouping-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:bfd-all-session; uses bfd-types:all-session;
uses bfd-mpls:bfd-mpls-dest-address; uses bfd-mpls:mpls-dest-address;
} }
} }
} }
} }
notification bfd-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:bfd-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 RFC5884.
Needed if IP encapsulation is used"; Needed if IP encapsulation is used";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
2.18. BFD over MPLS-TE YANG Module 2.19. BFD over MPLS-TE YANG Module
<CODE BEGINS> file "ietf-bfd-mpls-te@2017-06-30.yang" <CODE BEGINS> file "ietf-bfd-mpls-te@2017-10-30.yang"
module ietf-bfd-mpls-te { module ietf-bfd-mpls-te {
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix "bfd-mpls-te"; prefix "bfd-mpls-te";
import ietf-bfd-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 48, line 31 skipping to change at page 49, line 46
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
description "Initial revision."; description "Initial revision.";
reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; reference "RFC XXXX: A YANG data model for BFD over MPLS-TE";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/bfd:bfd" { + "rt:control-plane-protocol/bfd:bfd" {
description "BFD augmentation for MPLS-TE"; description "BFD augmentation for MPLS-TE";
container mpls-te { container mpls-te {
description "BFD MPLS-TE top level container"; description "BFD MPLS-TE top level container";
container config { container egress {
description "BFD MPLS-TE configuration container"; description "Egress configuration";
container egress { uses bfd-types:client-cfg-parms;
description "Egress configuration";
uses bfd:bfd-grouping-base-cfg-parms; uses bfd-types:auth-parms;
uses bfd:bfd-auth-parms;
}
} }
container oper { uses bfd-types:session-statistics;
config "false";
description "BFD operational container";
uses bfd:bfd-session-statistics;
}
} }
} }
augment "/te:te/te:tunnels/te:tunnel/te:config" { augment "/te:te/te:tunnels/te:tunnel" {
description "BFD configuration on MPLS-TE tunnel."; description "BFD configuration on MPLS-TE tunnel.";
uses bfd:bfd-grouping-common-cfg-parms; uses bfd-types:common-cfg-parms;
uses bfd-mpls:bfd-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:bfd-all-session; uses bfd-types:all-session;
uses bfd-mpls:bfd-mpls-dest-address; uses bfd-mpls:mpls-dest-address;
} }
notification bfd-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:bfd-notification-parms; uses bfd-types:notification-parms;
uses bfd-mpls:bfd-mpls-dest-address;
uses bfd-mpls:mpls-dest-address;
leaf tunnel-name { leaf tunnel-name {
type string; type string;
description "MPLS-TE tunnel on which BFD was running."; description "MPLS-TE tunnel on which BFD was running.";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
2.19. Security Considerations 2.20. 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.20. IANA Considerations 2.21. 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 51, line 42 skipping to change at page 53, line 5
-------------------------------------------------------------------- --------------------------------------------------------------------
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.20.1. IANA-Maintained iana-bfd-types module 2.21.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.21. Acknowledgements 2.22. Acknowledgements
We would also like to thank Nobo Akiya and Jeff Haas for their We would also like to thank Nobo Akiya and Jeff Haas for their
encouragement on this work. We would also like to thank Rakesh encouragement on this work. We would also like to thank Rakesh
Gandhi and Tarek Saad for their help on the MPLS-TE model. We would Gandhi and Tarek Saad for their help on the MPLS-TE model. We would
also like to thank Acee Lindem for his guidance. also like to thank Acee Lindem for his guidance.
3. References 3. References
3.1. Normative References 3.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-
<http://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, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc3688>. editor.org/info/rfc3688>.
[RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed.,
"MPLS Generic Associated Channel", RFC 5586, "MPLS Generic Associated Channel", RFC 5586,
DOI 10.17487/RFC5586, June 2009, DOI 10.17487/RFC5586, June 2009, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc5586>. editor.org/info/rfc5586>.
[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
(BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010,
<http://www.rfc-editor.org/info/rfc5880>. <https://www.rfc-editor.org/info/rfc5880>.
[RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
(BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881,
DOI 10.17487/RFC5881, June 2010, DOI 10.17487/RFC5881, June 2010, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc5881>. editor.org/info/rfc5881>.
[RFC5882] Katz, D. and D. Ward, "Generic Application of [RFC5882] Katz, D. and D. Ward, "Generic Application of
Bidirectional Forwarding Detection (BFD)", RFC 5882, Bidirectional Forwarding Detection (BFD)", RFC 5882,
DOI 10.17487/RFC5882, June 2010, DOI 10.17487/RFC5882, June 2010, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc5882>. editor.org/info/rfc5882>.
[RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
(BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883,
June 2010, <http://www.rfc-editor.org/info/rfc5883>. June 2010, <https://www.rfc-editor.org/info/rfc5883>.
[RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow,
"Bidirectional Forwarding Detection (BFD) for MPLS Label "Bidirectional Forwarding Detection (BFD) for MPLS Label
Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884,
June 2010, <http://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, DOI 10.17487/RFC5885, June 2010, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc5885>. editor.org/info/rfc5885>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010,
<http://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>.
[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, <http://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,
<http://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,
<http://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, <http://www.rfc-editor.org/info/rfc8022>. 2016, <https://www.rfc-editor.org/info/rfc8022>.
3.2. Informative References 3.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 Connectionless Operations, "Generic YANG Data Model for Operations, Administration,
Administration, and Maintenance(OAM) protocols", draft- and Maintenance(OAM) protocols for Connectionless
ietf-lime-yang-connectionless-oam-07 (work in progress), networks", draft-ietf-lime-yang-connectionless-oam-13
June 2017. (work in progress), October 2017.
[I-D.ietf-mpls-base-yang] [I-D.ietf-mpls-base-yang]
Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T.,
Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data
Model for MPLS Base", draft-ietf-mpls-base-yang-04 (work Model for MPLS Base", draft-ietf-mpls-base-yang-05 (work
in progress), March 2017. in progress), July 2017.
[I-D.ietf-netmod-schema-mount] [I-D.ietf-netmod-schema-mount]
Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft-
ietf-netmod-schema-mount-05 (work in progress), May 2017. ietf-netmod-schema-mount-08 (work in progress), October
2017.
[I-D.ietf-rtgwg-device-model] [I-D.ietf-rtgwg-device-model]
Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps, Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps,
"Network Device YANG Logical Organization", draft-ietf- "Network Device YANG Logical Organization", draft-ietf-
rtgwg-device-model-02 (work in progress), March 2017. rtgwg-device-model-02 (work in progress), March 2017.
[I-D.ietf-rtgwg-lne-model] [I-D.ietf-rtgwg-lne-model]
Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X.
"YANG Logical Network Elements", draft-ietf-rtgwg-lne- Liu, "YANG Logical Network Elements", draft-ietf-rtgwg-
model-02 (work in progress), March 2017. lne-model-04 (work in progress), September 2017.
[I-D.ietf-rtgwg-ni-model] [I-D.ietf-rtgwg-ni-model]
Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X.
"YANG Network Instances", draft-ietf-rtgwg-ni-model-02 Liu, "YANG Network Instances", draft-ietf-rtgwg-ni-
(work in progress), March 2017. model-04 (work in progress), September 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-06 (work Tunnels and Interfaces", draft-ietf-teas-yang-te-08 (work
in progress), March 2017. in progress), July 2017.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<http://www.rfc-editor.org/info/rfc8040>.
[RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
Zhang, "YANG Data Model for Key Chains", RFC 8177, Zhang, "YANG Data Model for Key Chains", RFC 8177,
DOI 10.17487/RFC8177, June 2017, DOI 10.17487/RFC8177, June 2017, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc8177>. 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-protoco augment /rt:routing/rt:control-plane-protocols
l/bfd:bfd/bfd-ip-sh:ip-sh/bfd-ip-sh:sessions: /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh
+--rw echo {bfd-echo-mode}? /bfd-ip-sh:sessions:
+--rw desired-min-echo-tx-interval? uint32 +--rw echo {bfd-types:echo-mode}?
+--rw required-min-echo-rx-interval? uint32 +--rw desired-min-echo-tx-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";
import ietf-bfd-types {
prefix "bfd-types";
}
import ietf-bfd { import ietf-bfd {
prefix "bfd"; prefix "bfd";
} }
import ietf-bfd-ip-sh { import ietf-bfd-ip-sh {
prefix "bfd-ip-sh"; prefix "bfd-ip-sh";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
skipping to change at page 56, line 18 skipping to change at page 57, line 18
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-06-30 { revision 2017-10-30 {
description "Initial revision."; description "Initial revision.";
reference reference
"RFC XXXX: A YANG data model example augmentation for BFD echo "RFC XXXX: A YANG data model example augmentation for BFD echo
function"; function";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note // note
/* /*
* Groupings * Groupings
*/ */
grouping bfd-grouping-echo-cfg-parms { grouping echo-cfg-parms {
description "BFD grouping for echo config parameters"; description "BFD grouping for echo config parameters";
leaf desired-min-echo-tx-interval { leaf desired-min-echo-tx-interval {
type uint32; type uint32;
units microseconds; units microseconds;
default 0; default 0;
description "Desired minumum transmit interval for echo"; description "Desired minumum transmit interval for echo";
} }
leaf required-min-echo-rx-interval { leaf required-min-echo-rx-interval {
type uint32; type uint32;
skipping to change at page 57, line 5 skipping to change at page 58, line 5
default 0; default 0;
description "Required minimum receive interval for echo"; description "Required minimum receive interval for echo";
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/"
+ "bfd-ip-sh:sessions" { + "bfd-ip-sh:sessions" {
description "Augmentation for BFD echo fucntion."; description "Augmentation for BFD echo fucntion.";
container echo { container echo {
if-feature bfd-echo-mode; if-feature bfd-types:echo-mode;
description "BFD echo function container"; description "BFD echo function container";
uses bfd-grouping-echo-cfg-parms; uses echo-cfg-parms;
} }
} }
} }
Appendix B. Change log Appendix B. BFD client configuration example
The following is an example of how a BFD client could use the
grouping client-cfg-parms.
module: example-bfd-client
+--rw area* [area-id]
+--rw area-id uint32
+--rw bfd
| +--rw enable? boolean
| +--rw local-multiplier? multiplier
| +--rw (interval-config-type)?
| +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval uint32
| | +--rw required-min-rx-interval uint32
| +--:(single-interval)
| +--rw min-interval uint32
+--rw interface* [interface]
+--rw interface if:interface-ref
+--rw bfd
+--rw enable? boolean
+--rw local-multiplier? multiplier
+--rw (interval-config-type)?
+--:(tx-rx-intervals)
| +--rw desired-min-tx-interval uint32
| +--rw required-min-rx-interval uint32
+--:(single-interval)
+--rw min-interval uint32
B.1. Example YANG module for BFD client
module example-bfd-client {
namespace "tag:example.com,2017:example-bfd-client";
prefix "example-bfd-client";
import ietf-bfd-types {
prefix "bfd-types";
}
import ietf-interfaces {
prefix "if";
}
organization "IETF BFD Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/bfd>
WG List: <rtg-bfd@ietf.org>
Editors: Reshad Rahman (rrahman@cisco.com),
Lianshu Zheng (vero.zheng@huawei.com),
Mahesh Jethanandani (mjethanandani@gmail.com)";
description
"This module contains an example of how a protocol which is a
client of BFD would use BFD parameters.
Copyright (c) 2017 IETF Trust and the persons
identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
revision 2017-10-30 {
description "Initial revision.";
reference
"RFC XXXX: A YANG data model example for BFD client.";
}
// RFC Ed.: replace XXXX with actual RFC number and remove this
// note
feature routing-app-bfd {
description "BFD configuration under routing-app";
}
list area {
key "area-id";
description "Specify a routing area.";
leaf area-id {
type uint32;
description "Area";
}
container bfd {
description "BFD configuration for the area.";
uses bfd-types:client-cfg-parms {
if-feature routing-app-bfd;
}
}
list interface {
key "interface";
description "List of interfaces";
leaf interface {
type if:interface-ref;
description "Interface";
}
container bfd {
description "BFD configuration for the interface.";
uses bfd-types:client-cfg-parms {
if-feature routing-app-bfd;
}
}
}
}
}
Appendix C. Change log
RFC Editor: Remove this section upon publication as an RFC. RFC Editor: Remove this section upon publication as an RFC.
B.1. Changes between versions -05 and -06 C.1. Changes between versions -06 and -07
o New ietf-bfd-types module.
o Grouping for BFD clients to have BFD multiplier and interval
values.
o Change in ietf-bfd-mpls-te since MPLS-TE model changed.
o Removed bfd- prefix from many names.
C.2. 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.
B.2. Changes between versions -04 and -05 C.3. 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.
B.3. Changes between versions -03 and -04 C.4. 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.
B.4. Changes between versions -02 and -03 C.5. 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.
B.5. Changes between versions -01 and -02 C.6. 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]
B.6. Changes between versions -00 and -01 C.7. Changes between versions -00 and -01
o Remove BFD configuration parameters from BFD clients, all BFD o Remove BFD configuration parameters from BFD clients, all BFD
configuration parameters in BFD configuration parameters in BFD
o YANG module split in multiple YANG modules (one per type of o YANG module split in multiple YANG modules (one per type of
forwarding path) forwarding path)
o For BFD over MPLS-TE we augment MPLS-TE model o For BFD over MPLS-TE we augment MPLS-TE model
o For BFD authentication we now use YANG Data Model for Key Chains o For BFD authentication we now use YANG Data Model for Key Chains
[RFC8177] [RFC8177]
Authors' Addresses Authors' Addresses
Reshad Rahman (editor) Reshad Rahman (editor)
Cisco Systems Cisco Systems
Canada Canada
Email: rrahman@cisco.com Email: rrahman@cisco.com
 End of changes. 206 change blocks. 
747 lines changed or deleted 927 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/