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

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