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

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