idnits 2.17.00 (12 Aug 2021) /tmp/idnits37725/draft-ietf-bfd-rfc9127-bis-04.txt: -(3157): Line appears to be too long, but this could be caused by non-ascii characters in UTF-8 encoding Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == There is 1 instance of lines with non-ascii characters in the document. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- -- The draft header indicates that this document updates RFC9127, but the abstract doesn't seem to directly say this. It does mention RFC9127 though, so this could be OK. Miscellaneous warnings: ---------------------------------------------------------------------------- -- The document date (6 April 2022) is 38 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Jethanandani, Ed. 3 Internet-Draft Xoriant Corporation 4 Updates: 9127 (if approved) R. Rahman, Ed. 5 Intended status: Standards Track 6 Expires: 8 October 2022 L. Zheng, Ed. 7 Huawei Technologies 8 S. Pallagatti 9 VMware 10 G. Mirsky 11 Ericsson 12 6 April 2022 14 YANG Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-rfc9127-bis-04 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage Bidirectional Forwarding Detection (BFD). 22 The YANG modules in this document conform to the Network Management 23 Datastore Architecture (NMDA) (RFC 8342). This document updates YANG 24 Data Model for Bidirectional Forwarding Detection (BFD) (RFC 9127). 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on 8 October 2022. 43 Copyright Notice 45 Copyright (c) 2022 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 50 license-info) in effect on the date of publication of this document. 51 Please review these documents carefully, as they describe your rights 52 and restrictions with respect to this document. Code Components 53 extracted from this document must include Revised BSD License text as 54 described in Section 4.e of the Trust Legal Provisions and are 55 provided without warranty as described in the Revised BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 60 1.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 61 1.2. Note to RFC Editor . . . . . . . . . . . . . . . . . . . 4 62 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 63 2.1. Design of the Configuration Model . . . . . . . . . . . . 5 64 2.1.1. Common BFD Configuration Parameters . . . . . . . . . 6 65 2.1.2. Single-Hop IP . . . . . . . . . . . . . . . . . . . . 7 66 2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 67 2.1.4. MPLS Label Switched Paths . . . . . . . . . . . . . . 8 68 2.1.5. Link Aggregation Groups . . . . . . . . . . . . . . . 8 69 2.2. Design of the Operational State Model . . . . . . . . . . 8 70 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 9 71 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 72 2.5. BFD Top-Level Hierarchy . . . . . . . . . . . . . . . . . 9 73 2.6. BFD IP Single-Hop Hierarchy . . . . . . . . . . . . . . . 10 74 2.7. BFD IP Multihop Hierarchy . . . . . . . . . . . . . . . . 12 75 2.8. BFD-over-LAG Hierarchy . . . . . . . . . . . . . . . . . 14 76 2.9. BFD-over-MPLS-LSPs Hierarchy . . . . . . . . . . . . . . 17 77 2.10. Interaction with other YANG Modules . . . . . . . . . . . 19 78 2.10.1. "ietf-interfaces" Module . . . . . . . . . . . . . . 19 79 2.10.2. "ietf-ip" Module . . . . . . . . . . . . . . . . . . 20 80 2.10.3. "ietf-mpls" Module . . . . . . . . . . . . . . . . . 20 81 2.11. BFD Types YANG Module . . . . . . . . . . . . . . . . . . 20 82 2.12. BFD Top-Level YANG Module . . . . . . . . . . . . . . . . 35 83 2.13. BFD IP Single-Hop YANG Module . . . . . . . . . . . . . . 37 84 2.14. BFD IP Multihop YANG Module . . . . . . . . . . . . . . . 40 85 2.15. BFD-over-LAG YANG Module . . . . . . . . . . . . . . . . 44 86 2.16. BFD-over-MPLS YANG Module . . . . . . . . . . . . . . . . 48 87 3. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 53 88 3.1. IP Single-Hop . . . . . . . . . . . . . . . . . . . . . . 53 89 3.2. IP Multihop . . . . . . . . . . . . . . . . . . . . . . . 54 90 3.3. LAG . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 91 3.4. MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . 56 92 4. Security Considerations . . . . . . . . . . . . . . . . . . . 57 93 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 61 94 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 62 95 6.1. Normative References . . . . . . . . . . . . . . . . . . 62 96 6.2. Informative References . . . . . . . . . . . . . . . . . 65 97 Appendix A. Echo Function Configuration Example . . . . . . . . 66 98 A.1. Example YANG Module for BFD Echo Function 99 Configuration . . . . . . . . . . . . . . . . . . . . . . 66 100 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 68 101 Updates since RFC 9127 . . . . . . . . . . . . . . . . . . . . . 68 102 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 69 104 1. Introduction 106 This document defines a YANG data model that can be used to configure 107 and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD 108 is a network protocol that is used for liveness detection of 109 arbitrary paths between systems. Some examples of different types of 110 paths over which we have BFD are as follows: 112 1. Two systems directly connected via IP. This is known as BFD over 113 single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881]. 115 2. Two systems connected via multiple hops as described in 116 "Bidirectional Forwarding Detection (BFD) for Multihop Paths" 117 [RFC5883]. 119 3. Two systems connected via MPLS Label Switched Paths (LSPs) as 120 described in "Bidirectional Forwarding Detection (BFD) for MPLS 121 Label Switched Paths (LSPs)" [RFC5884]. 123 4. Two systems connected via a Link Aggregation Group (LAG) 124 interface as described in "Bidirectional Forwarding Detection 125 (BFD) on Link Aggregation Group (LAG) Interfaces" [RFC7130]. 127 5. Two systems connected via pseudowires (PWs). This is known as 128 Virtual Circuit Connectivity Verification (VCCV), as described in 129 "Bidirectional Forwarding Detection (BFD) for the Pseudowire 130 Virtual Circuit Connectivity Verification (VCCV)" [RFC5885]. 131 This scenario is not addressed in this document. 133 BFD typically does not operate on its own. Various control 134 protocols, also known as BFD clients, use the services provided by 135 BFD for their own operation, as described in "Generic Application of 136 Bidirectional Forwarding Detection (BFD)" [RFC5882]. The obvious 137 candidates that use BFD are those that do not have "hellos" to detect 138 failures, e.g., static routes, and routing protocols whose "hellos" 139 do not support sub-second failure detection, e.g., OSPF and IS-IS. 141 The YANG modules in this document conform to the Network Management 142 Datastore Architecture (NMDA) [RFC8342]. This means that the data 143 models do not have separate top-level or sibling containers for 144 configuration data and operational state data. 146 1.1. Tree Diagrams 148 This document uses the graphical representation of data models, as 149 defined in [RFC8340]. 151 1.2. Note to RFC Editor 153 This section is to be removed before publishing as an RFC. 155 This document uses several placeholder values throughout the 156 document. Please replace them as follows and remove this note before 157 publication. 159 RFC XXXX, where XXXX is the number assigned to this document at the 160 time of publication. 162 2022-04-06 with the actual date of the publication of this document. 164 2. Design of the Data Model 166 Since BFD is used for liveness detection of various forwarding paths, 167 there is no uniform key to identify a BFD session, and so the BFD 168 data model is split into multiple YANG modules where each module 169 corresponds to one type of forwarding path. For example, BFD for IP 170 single-hop is in one YANG module, and BFD for MPLS is in another YANG 171 module. The main difference between these modules is how a BFD 172 session is uniquely identified, i.e., the key for the list containing 173 the BFD sessions for that forwarding path. To avoid duplication of 174 BFD definitions, we have common types and groupings that are used by 175 all the modules. 177 A new control-plane protocol, "bfdv1", is defined, and a "bfd" 178 container is created under "control-plane-protocol" as specified in 179 "A YANG Data Model for Routing Management (NMDA Version)" [RFC8349]. 180 This new "bfd" container is augmented by the following YANG modules 181 for their respective specific information: 183 1. The "ietf-bfd-ip-sh" module (Section 2.13) augments "/routing/ 184 control-plane-protocols/control-plane-protocol/bfd/" with the 185 "ip-sh" container for BFD sessions over IP single-hop. 187 2. The "ietf-bfd-ip-mh" module (Section 2.14) augments "/routing/ 188 control-plane-protocols/control-plane-protocol/bfd/" with the 189 "ip-mh" container for BFD sessions over IP multihop. 191 3. The "ietf-bfd-lag" module (Section 2.15) augments "/routing/ 192 control-plane-protocols/control-plane-protocol/bfd/" with the 193 "lag" container for BFD sessions over a LAG. 195 4. The "ietf-bfd-mpls" module (Section 2.16) augments "/routing/ 196 control-plane-protocols/control-plane-protocol/bfd/" with the 197 "mpls" container for BFD-over-MPLS LSPs. 199 BFD can operate in the following contexts: 201 1. At the network device level. 203 2. In logical network elements (LNEs) as described in "YANG Model 204 for Logical Network Elements" [RFC8530]. 206 3. In network instances as described in "YANG Data Model for Network 207 Instances" [RFC8529]. 209 When used at the network device level, the BFD YANG data model is 210 used "as is". When the BFD YANG data model is used in an LNE or 211 network instance, the BFD YANG data model augments the mounted 212 routing model for the LNE or network instance. 214 2.1. Design of the Configuration Model 216 The configuration model consists mainly of the parameters specified 217 in BFD [RFC5880] -- for example, desired minimum transmit interval, 218 required minimum receive interval, and detection multiplier. 220 BFD clients are applications that use BFD for fast detection of 221 failures. Some implementations have BFD session configuration under 222 the BFD clients -- for example, BFD session configuration under 223 routing applications such as OSPF, IS-IS, or BGP. Other 224 implementations have BFD session configuration centralized under BFD, 225 i.e., outside the multiple BFD clients. 227 The main BFD parameters of interest to a BFD client are those related 228 to the multiplier and interval(s), since those parameters impact the 229 convergence time of the BFD clients when a failure occurs. Other 230 parameters, such as BFD authentication, are not specific to the 231 requirements of the BFD client. Configuration of BFD for all clients 232 should be centralized. However, this is a problem for BFD clients 233 that auto-discover their peers. For example, IGPs do not have the 234 peer address configured; instead, the IGP is enabled on an interface, 235 and the IGP peers are auto-discovered. So, for an operator to 236 configure BFD to an IGP peer, the operator would first have to 237 determine the peer addresses. And when a new peer is discovered, BFD 238 configuration would need to be added. To avoid this issue, we define 239 the grouping "client-cfg-parms" in Section 2.11 for BFD clients to 240 configure BFD: this allows BFD clients, such as the IGPs, to have 241 configuration (multiplier and intervals) for the BFD sessions they 242 need. For example, when a new IGP peer is discovered, the IGP would 243 create a BFD session to the newly discovered peer; similarly, when an 244 IGP peer goes away, the IGP would remove the BFD session to that 245 peer. The mechanism for how the BFD sessions are created and removed 246 by the BFD clients is outside the scope of this document, but this 247 would typically be done by using an API implemented by the BFD module 248 on the system. In the case of BFD clients that create BFD sessions 249 via their own configuration, authentication parameters (if required) 250 are still specified in BFD. 252 2.1.1. Common BFD Configuration Parameters 254 The basic BFD configuration parameters are as follows: 256 local-multiplier 257 This is the detection time multiplier as defined in BFD [RFC5880]. 259 desired-min-tx-interval 260 This is the Desired Min TX Interval as defined in BFD [RFC5880]. 262 required-min-rx-interval 263 This is the Required Min RX Interval as defined in BFD [RFC5880]. 265 Although BFD [RFC5880] allows for different values for transmit and 266 receive intervals, some implementations allow users to specify just 267 one interval that is used for both transmit and receive intervals, or 268 separate values for transmit and receive intervals. The BFD YANG 269 data model supports this: there is a choice between "min-interval", 270 used for both transmit and receive intervals, and "desired-min-tx- 271 interval" and "required-min-rx-interval". This is supported via the 272 "base-cfg-parms" grouping (Section 2.11), which is used by the YANG 273 modules for the various forwarding paths. 275 For BFD authentication, we have the following: 277 key-chain 278 This is a reference to "key-chain" as defined in "YANG Data Model 279 for Key Chains" [RFC8177]. The keys, cryptographic algorithms, 280 key lifetime, etc. are all defined in the "key-chain" model. 282 meticulous 283 This enables a meticulous mode as per BFD [RFC5880]. 285 2.1.2. Single-Hop IP 287 For single-hop IP, there is an augment of the "bfd" data node, as 288 described in Section 2. The "ip-sh" node contains a list of IP 289 single-hop sessions where each session is uniquely identified by the 290 interface and destination address pair. We use the configuration 291 parameters defined in Section 2.1.1. The "ip-sh" node also contains 292 a list of interfaces and is used to specify authentication parameters 293 for BFD sessions that are created by BFD clients. See Section 2.1. 295 [RFC5880] and [RFC5881] do not specify whether the Echo function 296 operates continuously or on demand. Therefore, the mechanism used to 297 start and stop the Echo function is implementation specific and 298 should be done by augmentation: 300 1. Configuration. This is suitable for an Echo function that 301 operates continuously. An example is provided in Appendix A. 303 2. RPC. This is suitable for an Echo function that operates on 304 demand. 306 2.1.3. Multihop IP 308 For multihop IP, there is an augment of the "bfd" data node, as 309 described in Section 2. 311 Because of multiple paths, there could be multiple multihop IP 312 sessions between a source and a destination address. We identify 313 this set of sessions as a "session-group". The key for each 314 "session-group" consists of the following: 316 Source address 317 Address belonging to the local system as per "Bidirectional 318 Forwarding Detection (BFD) for Multihop Paths" [RFC5883]. 320 Destination address 321 Address belonging to the remote system as per [RFC5883]. 323 We use the configuration parameters defined in Section 2.1.1. 325 This document also provides the following parameters: 327 tx-ttl 328 TTL of outgoing BFD control packets. 330 rx-ttl 331 Minimum TTL of incoming BFD control packets. 333 2.1.4. MPLS Label Switched Paths 335 Here, we address MPLS LSPs whose Forwarding Equivalence Class (FEC) 336 [RFC3031] is an IP address. The "bfd" node (Section 2) is augmented 337 with "mpls", which contains a list of sessions uniquely identified by 338 an IP prefix. Because of multiple paths, there could be multiple 339 MPLS sessions to an MPLS FEC. We identify this set of sessions as a 340 "session-group". 342 Since these LSPs are unidirectional, there is no LSP configuration on 343 the egress node. 345 The BFD parameters for the egress node are added under "mpls". 347 2.1.5. Link Aggregation Groups 349 Per "Bidirectional Forwarding Detection (BFD) on Link Aggregation 350 Group (LAG) Interfaces" [RFC7130], configuring BFD on a LAG consists 351 of having micro-BFD sessions on each LAG member link. Since the BFD 352 parameters are an attribute of the LAG, they should be under the LAG. 353 However, there is no LAG YANG data model that we can augment. So, a 354 "lag" data node is added to the "bfd" node; see Section 2. The 355 configuration is per LAG: we have a list of LAGs. The destination IP 356 address of the micro-BFD sessions is configured per LAG and per 357 address family (IPv4 and IPv6). 359 2.2. Design of the Operational State Model 361 The operational state model contains both the overall statistics for 362 the BFD sessions running on the device and the per-session 363 operational information. 365 The overall statistics for the BFD sessions consist of the number of 366 BFD sessions, the number of BFD sessions that are up, etc. This 367 information is available globally (i.e., for all BFD sessions) under 368 the "bfd" node (Section 2) and also per type of forwarding path. 370 For each BFD session, three main categories of operational state data 371 are shown. 373 1. The first category includes fundamental information regarding a 374 BFD session, such as the local discriminator, the remote 375 discriminator, and the ability to support Demand mode. 377 2. The second category includes BFD "session-running" information, 378 e.g., the remote BFD state and the diagnostic code received. 379 Another example is the actual transmit interval between the 380 control packets, which may be different from the configured 381 desired minimum transmit interval. Similar examples include the 382 actual receive interval between the control packets and the 383 actual transmit interval between the Echo packets. 385 3. The third category contains the detailed statistics for the 386 session, e.g., when the session transitioned up/down and how long 387 it has been in that state. 389 For some path types, there may be more than one session on the 390 virtual path to the destination. For example, with IP multihop and 391 MPLS LSPs, there could be multiple BFD sessions from the source to 392 the same destination to test the various paths (ECMP) to the 393 destination. This is represented by having multiple "sessions" under 394 each "session-group". 396 2.3. Notifications 398 This YANG data model defines notifications to inform end users of 399 important events detected during the protocol operation. The local 400 discriminator identifies the corresponding BFD session on the local 401 system, and the remote discriminator identifies the BFD session on 402 the remote system. Notifications also give more important details 403 about BFD sessions, e.g., new state, time in previous state, network 404 instance, and the reason that the BFD session state changed. The 405 notifications are defined for each type of forwarding path but use 406 groupings for common information. 408 2.4. RPC Operations 410 None. 412 2.5. BFD Top-Level Hierarchy 414 At the "bfd" node under "control-plane-protocol", there is no 415 configuration data -- only operational state data. The operational 416 state data consists of overall BFD session statistics, i.e., for BFD 417 on all types of forwarding paths. 419 module: ietf-bfd 420 augment /rt:routing/rt:control-plane-protocols 421 /rt:control-plane-protocol: 422 +--rw bfd 423 +--ro summary 424 +--ro number-of-sessions? yang:gauge32 425 +--ro number-of-sessions-up? yang:gauge32 426 +--ro number-of-sessions-down? yang:gauge32 427 +--ro number-of-sessions-admin-down? yang:gauge32 429 2.6. BFD IP Single-Hop Hierarchy 431 An "ip-sh" node is added under the "bfd" node in "control-plane- 432 protocol". The configuration data and operational state data for 433 each BFD IP single-hop session are under this "ip-sh" node. 435 module: ietf-bfd-ip-sh 436 augment /rt:routing/rt:control-plane-protocols 437 /rt:control-plane-protocol/bfd:bfd: 438 +--rw ip-sh 439 +--ro summary 440 | +--ro number-of-sessions? yang:gauge32 441 | +--ro number-of-sessions-up? yang:gauge32 442 | +--ro number-of-sessions-down? yang:gauge32 443 | +--ro number-of-sessions-admin-down? yang:gauge32 444 +--rw sessions 445 | +--rw session* [interface dest-addr] 446 | +--rw interface if:interface-ref 447 | +--rw dest-addr inet:ip-address 448 | +--rw source-addr? inet:ip-address 449 | +--rw local-multiplier? multiplier 450 | +--rw (interval-config-type)? 451 | | +--:(tx-rx-intervals) 452 | | | +--rw desired-min-tx-interval? uint32 453 | | | +--rw required-min-rx-interval? uint32 454 | | +--:(single-interval) {single-minimum-interval}? 455 | | +--rw min-interval? uint32 456 | +--rw demand-enabled? boolean 457 | | {demand-mode}? 458 | +--rw admin-down? boolean 459 | +--rw authentication! {authentication}? 460 | | +--rw key-chain? key-chain:key-chain-ref 461 | | +--rw meticulous? boolean 462 | +--ro path-type? identityref 463 | +--ro ip-encapsulation? boolean 464 | +--ro local-discriminator? discriminator 465 | +--ro remote-discriminator? discriminator 466 | +--ro remote-multiplier? multiplier 467 | +--ro demand-capability? boolean 468 | | {demand-mode}? 469 | +--ro source-port? inet:port-number 470 | +--ro dest-port? inet:port-number 471 | +--ro session-running 472 | | +--ro session-index? uint32 473 | | +--ro local-state? state 474 | | +--ro remote-state? state 475 | | +--ro local-diagnostic? 476 | | | iana-bfd-types:diagnostic 477 | | +--ro remote-diagnostic? 478 | | | iana-bfd-types:diagnostic 479 | | +--ro remote-authenticated? boolean 480 | | +--ro remote-authentication-type? 481 | | | iana-bfd-types:auth-type {authentication}? 482 | | +--ro detection-mode? enumeration 483 | | +--ro negotiated-tx-interval? uint32 484 | | +--ro negotiated-rx-interval? uint32 485 | | +--ro detection-time? uint32 486 | | +--ro echo-tx-interval-in-use? uint32 487 | | {echo-mode}? 488 | +--ro session-statistics 489 | +--ro create-time? 490 | | yang:date-and-time 491 | +--ro last-down-time? 492 | | yang:date-and-time 493 | +--ro last-up-time? 494 | | yang:date-and-time 495 | +--ro down-count? yang:counter32 496 | +--ro admin-down-count? yang:counter32 497 | +--ro receive-packet-count? yang:counter64 498 | +--ro send-packet-count? yang:counter64 499 | +--ro receive-invalid-packet-count? yang:counter64 500 | +--ro send-failed-packet-count? yang:counter64 501 +--rw interfaces* [interface] 502 +--rw interface if:interface-ref 503 +--rw authentication! {authentication}? 504 +--rw key-chain? key-chain:key-chain-ref 505 +--rw meticulous? boolean 507 notifications: 508 +---n singlehop-notification 509 +--ro local-discr? discriminator 510 +--ro remote-discr? discriminator 511 +--ro new-state? state 512 +--ro state-change-reason? iana-bfd-types:diagnostic 513 +--ro time-of-last-state-change? yang:date-and-time 514 +--ro dest-addr? inet:ip-address 515 +--ro source-addr? inet:ip-address 516 +--ro session-index? uint32 517 +--ro path-type? identityref 518 +--ro interface? if:interface-ref 519 +--ro echo-enabled? boolean 521 2.7. BFD IP Multihop Hierarchy 523 An "ip-mh" node is added under the "bfd" node in "control-plane- 524 protocol". The configuration data and operational state data for 525 each BFD IP multihop session are under this "ip-mh" node. In the 526 operational state model, we support multiple BFD multihop sessions 527 per remote address (ECMP); the local discriminator is used as the 528 key. 530 module: ietf-bfd-ip-mh 531 augment /rt:routing/rt:control-plane-protocols 532 /rt:control-plane-protocol/bfd:bfd: 533 +--rw ip-mh 534 +--ro summary 535 | +--ro number-of-sessions? yang:gauge32 536 | +--ro number-of-sessions-up? yang:gauge32 537 | +--ro number-of-sessions-down? yang:gauge32 538 | +--ro number-of-sessions-admin-down? yang:gauge32 539 +--rw session-groups 540 +--rw session-group* [source-addr dest-addr] 541 +--rw source-addr inet:ip-address 542 +--rw dest-addr inet:ip-address 543 +--rw local-multiplier? multiplier 544 +--rw (interval-config-type)? 545 | +--:(tx-rx-intervals) 546 | | +--rw desired-min-tx-interval? uint32 547 | | +--rw required-min-rx-interval? uint32 548 | +--:(single-interval) {single-minimum-interval}? 549 | +--rw min-interval? uint32 550 +--rw demand-enabled? boolean 551 | {demand-mode}? 552 +--rw admin-down? boolean 553 +--rw authentication! {authentication}? 554 | +--rw key-chain? key-chain:key-chain-ref 555 | +--rw meticulous? boolean 556 +--rw tx-ttl? bfd-types:hops 557 +--rw rx-ttl bfd-types:hops 558 +--ro sessions* [] 559 +--ro path-type? identityref 560 +--ro ip-encapsulation? boolean 561 +--ro local-discriminator? discriminator 562 +--ro remote-discriminator? discriminator 563 +--ro remote-multiplier? multiplier 564 +--ro demand-capability? boolean {demand-mode}? 565 +--ro source-port? inet:port-number 566 +--ro dest-port? inet:port-number 567 +--ro session-running 568 | +--ro session-index? uint32 569 | +--ro local-state? state 570 | +--ro remote-state? state 571 | +--ro local-diagnostic? 572 | | iana-bfd-types:diagnostic 573 | +--ro remote-diagnostic? 574 | | iana-bfd-types:diagnostic 575 | +--ro remote-authenticated? boolean 576 | +--ro remote-authentication-type? 577 | | iana-bfd-types:auth-type {authentication}? 578 | +--ro detection-mode? enumeration 579 | +--ro negotiated-tx-interval? uint32 580 | +--ro negotiated-rx-interval? uint32 581 | +--ro detection-time? uint32 582 | +--ro echo-tx-interval-in-use? uint32 583 | {echo-mode}? 584 +--ro session-statistics 585 +--ro create-time? 586 | yang:date-and-time 587 +--ro last-down-time? 588 | yang:date-and-time 589 +--ro last-up-time? 590 | yang:date-and-time 591 +--ro down-count? 592 | yang:counter32 593 +--ro admin-down-count? 594 | yang:counter32 595 +--ro receive-packet-count? 596 | yang:counter64 597 +--ro send-packet-count? 598 | yang:counter64 599 +--ro receive-invalid-packet-count? 600 | yang:counter64 601 +--ro send-failed-packet-count? 602 yang:counter64 604 notifications: 605 +---n multihop-notification 606 +--ro local-discr? discriminator 607 +--ro remote-discr? discriminator 608 +--ro new-state? state 609 +--ro state-change-reason? iana-bfd-types:diagnostic 610 +--ro time-of-last-state-change? yang:date-and-time 611 +--ro dest-addr? inet:ip-address 612 +--ro source-addr? inet:ip-address 613 +--ro session-index? uint32 614 +--ro path-type? identityref 616 2.8. BFD-over-LAG Hierarchy 618 A "lag" node is added under the "bfd" node in "control-plane- 619 protocol". The configuration data and operational state data for 620 each BFD LAG session are under this "lag" node. 622 module: ietf-bfd-lag 623 augment /rt:routing/rt:control-plane-protocols 624 /rt:control-plane-protocol/bfd:bfd: 625 +--rw lag 626 +--rw micro-bfd-ipv4-session-statistics 627 | +--ro summary 628 | +--ro number-of-sessions? yang:gauge32 629 | +--ro number-of-sessions-up? yang:gauge32 630 | +--ro number-of-sessions-down? yang:gauge32 631 | +--ro number-of-sessions-admin-down? yang:gauge32 632 +--rw micro-bfd-ipv6-session-statistics 633 | +--ro summary 634 | +--ro number-of-sessions? yang:gauge32 635 | +--ro number-of-sessions-up? yang:gauge32 636 | +--ro number-of-sessions-down? yang:gauge32 637 | +--ro number-of-sessions-admin-down? yang:gauge32 638 +--rw sessions 639 +--rw session* [lag-name] 640 +--rw lag-name if:interface-ref 641 +--rw ipv4-dest-addr? 642 | inet:ipv4-address 643 +--rw ipv6-dest-addr? 644 | inet:ipv6-address 645 +--rw local-multiplier? multiplier 646 +--rw (interval-config-type)? 647 | +--:(tx-rx-intervals) 648 | | +--rw desired-min-tx-interval? uint32 649 | | +--rw required-min-rx-interval? uint32 650 | +--:(single-interval) {single-minimum-interval}? 651 | +--rw min-interval? uint32 652 +--rw demand-enabled? boolean 653 | {demand-mode}? 654 +--rw admin-down? boolean 655 +--rw authentication! {authentication}? 656 | +--rw key-chain? key-chain:key-chain-ref 657 | +--rw meticulous? boolean 658 +--rw use-ipv4? boolean 659 +--rw use-ipv6? boolean 660 +--ro member-links* [member-link] 661 +--ro member-link if:interface-ref 662 +--ro micro-bfd-ipv4 663 | +--ro path-type? identityref 664 | +--ro ip-encapsulation? boolean 665 | +--ro local-discriminator? discriminator 666 | +--ro remote-discriminator? discriminator 667 | +--ro remote-multiplier? multiplier 668 | +--ro demand-capability? boolean 669 | | {demand-mode}? 670 | +--ro source-port? inet:port-number 671 | +--ro dest-port? inet:port-number 672 | +--ro session-running 673 | | +--ro session-index? uint32 674 | | +--ro local-state? state 675 | | +--ro remote-state? state 676 | | +--ro local-diagnostic? 677 | | | iana-bfd-types:diagnostic 678 | | +--ro remote-diagnostic? 679 | | | iana-bfd-types:diagnostic 680 | | +--ro remote-authenticated? boolean 681 | | +--ro remote-authentication-type? 682 | | | iana-bfd-types:auth-type 683 | | | {authentication}? 684 | | +--ro detection-mode? enumeration 685 | | +--ro negotiated-tx-interval? uint32 686 | | +--ro negotiated-rx-interval? uint32 687 | | +--ro detection-time? uint32 688 | | +--ro echo-tx-interval-in-use? uint32 689 | | {echo-mode}? 690 | +--ro session-statistics 691 | +--ro create-time? 692 | | yang:date-and-time 693 | +--ro last-down-time? 694 | | yang:date-and-time 695 | +--ro last-up-time? 696 | | yang:date-and-time 697 | +--ro down-count? 698 | | yang:counter32 699 | +--ro admin-down-count? 700 | | yang:counter32 701 | +--ro receive-packet-count? 702 | | yang:counter64 703 | +--ro send-packet-count? 704 | | yang:counter64 705 | +--ro receive-invalid-packet-count? 706 | | yang:counter64 707 | +--ro send-failed-packet-count? 708 | yang:counter64 709 +--ro micro-bfd-ipv6 710 +--ro path-type? identityref 711 +--ro ip-encapsulation? boolean 712 +--ro local-discriminator? discriminator 713 +--ro remote-discriminator? discriminator 714 +--ro remote-multiplier? multiplier 715 +--ro demand-capability? boolean 716 | {demand-mode}? 717 +--ro source-port? inet:port-number 718 +--ro dest-port? inet:port-number 719 +--ro session-running 720 | +--ro session-index? uint32 721 | +--ro local-state? state 722 | +--ro remote-state? state 723 | +--ro local-diagnostic? 724 | | iana-bfd-types:diagnostic 725 | +--ro remote-diagnostic? 726 | | iana-bfd-types:diagnostic 727 | +--ro remote-authenticated? boolean 728 | +--ro remote-authentication-type? 729 | | iana-bfd-types:auth-type 730 | | {authentication}? 731 | +--ro detection-mode? enumeration 732 | +--ro negotiated-tx-interval? uint32 733 | +--ro negotiated-rx-interval? uint32 734 | +--ro detection-time? uint32 735 | +--ro echo-tx-interval-in-use? uint32 736 | {echo-mode}? 737 +--ro session-statistics 738 +--ro create-time? 739 | yang:date-and-time 740 +--ro last-down-time? 741 | yang:date-and-time 742 +--ro last-up-time? 743 | yang:date-and-time 744 +--ro down-count? 745 | yang:counter32 746 +--ro admin-down-count? 747 | yang:counter32 748 +--ro receive-packet-count? 749 | yang:counter64 750 +--ro send-packet-count? 751 | yang:counter64 752 +--ro receive-invalid-packet-count? 753 | yang:counter64 754 +--ro send-failed-packet-count? 755 yang:counter64 757 notifications: 758 +---n lag-notification 759 +--ro local-discr? discriminator 760 +--ro remote-discr? discriminator 761 +--ro new-state? state 762 +--ro state-change-reason? iana-bfd-types:diagnostic 763 +--ro time-of-last-state-change? yang:date-and-time 764 +--ro dest-addr? inet:ip-address 765 +--ro source-addr? inet:ip-address 766 +--ro session-index? uint32 767 +--ro path-type? identityref 768 +--ro lag-name? if:interface-ref 769 +--ro member-link? if:interface-ref 771 2.9. BFD-over-MPLS-LSPs Hierarchy 773 An "mpls" node is added under the "bfd" node in "control-plane- 774 protocol". The configuration is per MPLS FEC under this "mpls" node. 775 In the operational state model, we support multiple BFD sessions per 776 MPLS FEC (ECMP); the local discriminator is used as the key. The 777 "mpls" node can be used in a network device (top level) or can be 778 mounted in an LNE or network instance. 780 module: ietf-bfd-mpls 781 augment /rt:routing/rt:control-plane-protocols 782 /rt:control-plane-protocol/bfd:bfd: 783 +--rw mpls 784 +--ro summary 785 | +--ro number-of-sessions? yang:gauge32 786 | +--ro number-of-sessions-up? yang:gauge32 787 | +--ro number-of-sessions-down? yang:gauge32 788 | +--ro number-of-sessions-admin-down? yang:gauge32 789 +--rw egress 790 | +--rw enabled? boolean 791 | +--rw local-multiplier? multiplier 792 | +--rw (interval-config-type)? 793 | | +--:(tx-rx-intervals) 794 | | | +--rw desired-min-tx-interval? uint32 795 | | | +--rw required-min-rx-interval? uint32 796 | | +--:(single-interval) {single-minimum-interval}? 797 | | +--rw min-interval? uint32 798 | +--rw authentication! {authentication}? 799 | +--rw key-chain? key-chain:key-chain-ref 800 | +--rw meticulous? boolean 801 +--rw session-groups 802 +--rw session-group* [mpls-fec] 803 +--rw mpls-fec inet:ip-prefix 804 +--rw local-multiplier? multiplier 805 +--rw (interval-config-type)? 806 | +--:(tx-rx-intervals) 807 | | +--rw desired-min-tx-interval? uint32 808 | | +--rw required-min-rx-interval? uint32 809 | +--:(single-interval) {single-minimum-interval}? 810 | +--rw min-interval? uint32 811 +--rw demand-enabled? boolean 812 | {demand-mode}? 813 +--rw admin-down? boolean 814 +--rw authentication! {authentication}? 815 | +--rw key-chain? key-chain:key-chain-ref 816 | +--rw meticulous? boolean 817 +--ro sessions* [] 818 +--ro path-type? identityref 819 +--ro ip-encapsulation? boolean 820 +--ro local-discriminator? discriminator 821 +--ro remote-discriminator? discriminator 822 +--ro remote-multiplier? multiplier 823 +--ro demand-capability? boolean {demand-mode}? 824 +--ro source-port? inet:port-number 825 +--ro dest-port? inet:port-number 826 +--ro session-running 827 | +--ro session-index? uint32 828 | +--ro local-state? state 829 | +--ro remote-state? state 830 | +--ro local-diagnostic? 831 | | iana-bfd-types:diagnostic 832 | +--ro remote-diagnostic? 833 | | iana-bfd-types:diagnostic 834 | +--ro remote-authenticated? boolean 835 | +--ro remote-authentication-type? 836 | | iana-bfd-types:auth-type {authentication}? 837 | +--ro detection-mode? enumeration 838 | +--ro negotiated-tx-interval? uint32 839 | +--ro negotiated-rx-interval? uint32 840 | +--ro detection-time? uint32 841 | +--ro echo-tx-interval-in-use? uint32 842 | {echo-mode}? 843 +--ro session-statistics 844 | +--ro create-time? 845 | | yang:date-and-time 846 | +--ro last-down-time? 847 | | yang:date-and-time 848 | +--ro last-up-time? 849 | | yang:date-and-time 850 | +--ro down-count? 851 | | yang:counter32 852 | +--ro admin-down-count? 853 | | yang:counter32 854 | +--ro receive-packet-count? 855 | | yang:counter64 856 | +--ro send-packet-count? 857 | | yang:counter64 858 | +--ro receive-invalid-packet-count? 859 | | yang:counter64 860 | +--ro send-failed-packet-count? 861 | yang:counter64 862 +--ro mpls-dest-address? inet:ip-address 864 notifications: 865 +---n mpls-notification 866 +--ro local-discr? discriminator 867 +--ro remote-discr? discriminator 868 +--ro new-state? state 869 +--ro state-change-reason? iana-bfd-types:diagnostic 870 +--ro time-of-last-state-change? yang:date-and-time 871 +--ro dest-addr? inet:ip-address 872 +--ro source-addr? inet:ip-address 873 +--ro session-index? uint32 874 +--ro path-type? identityref 875 +--ro mpls-dest-address? inet:ip-address 877 2.10. Interaction with other YANG Modules 879 "Generic YANG Data Model for the Management of Operations, 880 Administration, and Maintenance (OAM) Protocols That Use 881 Connectionless Communications" [RFC8532] describes how the Layer- 882 Independent OAM Management in the Multi-Layer Environment (LIME) 883 connectionless OAM model could be extended to support BFD. 885 Also, the operation of the BFD data model depends on configuration 886 parameters that are defined in other YANG modules. 888 2.10.1. "ietf-interfaces" Module 890 The following boolean configuration is defined in "A YANG Data Model 891 for Interface Management" [RFC8343]: 893 /if:interfaces/if:interface/if:enabled 894 If this configuration is set to "false", no BFD packets can be 895 transmitted or received on that interface. 897 2.10.2. "ietf-ip" Module 899 The following boolean configuration is defined in "A YANG Data Model 900 for IP Management" [RFC8344]: 902 /if:interfaces/if:interface/ip:ipv4/ip:enabled 903 If this configuration is set to "false", no BFD IPv4 packets can 904 be transmitted or received on that interface. 906 /if:interfaces/if:interface/ip:ipv4/ip:forwarding 907 If this configuration is set to "false", no BFD IPv4 packets can 908 be transmitted or received on that interface. 910 /if:interfaces/if:interface/ip:ipv6/ip:enabled 911 If this configuration is set to "false", no BFD IPv6 packets can 912 be transmitted or received on that interface. 914 /if:interfaces/if:interface/ip:ipv6/ip:forwarding 915 If this configuration is set to "false", no BFD IPv6 packets can 916 be transmitted or received on that interface. 918 2.10.3. "ietf-mpls" Module 920 The following boolean configuration is defined in "A YANG Data Model 921 for MPLS Base" [RFC8960]: 923 /rt:routing/mpls:mpls/mpls:interfaces/mpls:interface/ 924 mpls:mpls-enabled 925 If this configuration is set to "false", no BFD MPLS packets can 926 be transmitted or received on that interface. 928 2.11. BFD Types YANG Module 930 This YANG module imports typedefs from [RFC6991] and [RFC8177]. It 931 also imports definitions from [RFC5880], [RFC5881], [RFC5883], 932 [RFC5884], and [RFC7130], as well as the "control-plane-protocol" 933 identity from [RFC8349], and references [RFC9127]. 935 file "ietf-bfd-types@2022-04-06.yang" 936 module ietf-bfd-types { 937 yang-version 1.1; 938 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; 939 prefix bfd-types; 941 import iana-bfd-types { 942 prefix iana-bfd-types; 943 reference 944 "RFC 9127: YANG Data Model for Bidirectional Forwarding 945 Detection (BFD)"; 946 } 947 import ietf-inet-types { 948 prefix inet; 949 reference 950 "RFC 6991: Common YANG Data Types"; 951 } 952 import ietf-yang-types { 953 prefix yang; 954 reference 955 "RFC 6991: Common YANG Data Types"; 956 } 957 import ietf-routing { 958 prefix rt; 959 reference 960 "RFC 8349: A YANG Data Model for Routing Management 961 (NMDA Version)"; 962 } 963 import ietf-key-chain { 964 prefix key-chain; 965 reference 966 "RFC 8177: YANG Data Model for Key Chains"; 967 } 969 organization 970 "IETF BFD Working Group"; 971 contact 972 "WG Web: 973 WG List: 975 Editor: Reshad Rahman 976 978 Editor: Lianshu Zheng 979 981 Editor: Mahesh Jethanandani 982 "; 983 description 984 "This module contains a collection of BFD-specific YANG data type 985 definitions, as per RFC 5880, and also groupings that are common 986 to other BFD YANG modules. 988 Copyright (c) 2021 IETF Trust and the persons identified as 989 authors of the code. All rights reserved. 991 Redistribution and use in source and binary forms, with or 992 without modification, is permitted pursuant to, and subject to 993 the license terms contained in, the Simplified BSD License set 994 forth in Section 4.c of the IETF Trust's Legal Provisions 995 Relating to IETF Documents 996 (https://trustee.ietf.org/license-info). 998 This version of this YANG module is part of RFC XXXX; see the 999 RFC itself for full legal notices."; 1000 reference 1001 "RFC 5880: Bidirectional Forwarding Detection (BFD) 1002 RFC XXXX: YANG Data Model for Bidirectional Forwarding 1003 Detection (BFD)"; 1005 revision 2022-04-06 { 1006 description 1007 "This revision is not backwards compatible with the 1008 previous version of this model. 1010 This revision adds an 'if-feature' statement called 1011 'client-base-cfg-parms' for client configuration parameters. 1012 Clients expecting to use those parameters now need to 1013 verify that the server declares support of the feature 1014 before depending on the presence of the parameters. 1016 The change was introduced for clients that do not need 1017 them, and have to deviate to prevent them from being 1018 included."; 1019 reference 1020 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1021 Detection (BFD)."; 1022 } 1023 revision 2021-10-21 { 1024 description 1025 "Initial revision."; 1026 reference 1027 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1028 Detection (BFD)"; 1029 } 1031 /* 1032 * Feature definitions 1033 */ 1035 feature single-minimum-interval { 1036 description 1037 "This feature indicates that the server supports configuration 1038 of one minimum interval value that is used for both transmit 1039 and receive minimum intervals."; 1041 } 1043 feature authentication { 1044 description 1045 "This feature indicates that the server supports BFD 1046 authentication."; 1047 reference 1048 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1049 Section 6.7"; 1050 } 1052 feature demand-mode { 1053 description 1054 "This feature indicates that the server supports BFD Demand 1055 mode."; 1056 reference 1057 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1058 Section 6.6"; 1059 } 1061 feature echo-mode { 1062 description 1063 "This feature indicates that the server supports BFD Echo 1064 mode."; 1065 reference 1066 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1067 Section 6.4"; 1068 } 1070 feature client-base-cfg-parms { 1071 description 1072 "This feature allows protocol models to configure BFD client 1073 session parameters."; 1074 reference 1075 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1076 Detection (BFD)."; 1077 } 1079 /* 1080 * Identity definitions 1081 */ 1083 identity bfdv1 { 1084 base rt:control-plane-protocol; 1085 description 1086 "BFD protocol version 1."; 1087 reference 1088 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1090 } 1092 identity path-type { 1093 description 1094 "Base identity for the BFD path type. The path type indicates 1095 the type of path on which BFD is running."; 1096 } 1098 identity path-ip-sh { 1099 base path-type; 1100 description 1101 "BFD on IP single-hop."; 1102 reference 1103 "RFC 5881: Bidirectional Forwarding Detection (BFD) 1104 for IPv4 and IPv6 (Single Hop)"; 1105 } 1107 identity path-ip-mh { 1108 base path-type; 1109 description 1110 "BFD on IP multihop paths."; 1111 reference 1112 "RFC 5883: Bidirectional Forwarding Detection (BFD) for 1113 Multihop Paths"; 1114 } 1116 identity path-mpls-te { 1117 base path-type; 1118 description 1119 "BFD on MPLS Traffic Engineering."; 1120 reference 1121 "RFC 5884: Bidirectional Forwarding Detection (BFD) 1122 for MPLS Label Switched Paths (LSPs)"; 1123 } 1125 identity path-mpls-lsp { 1126 base path-type; 1127 description 1128 "BFD on an MPLS Label Switched Path."; 1129 reference 1130 "RFC 5884: Bidirectional Forwarding Detection (BFD) 1131 for MPLS Label Switched Paths (LSPs)"; 1132 } 1134 identity path-lag { 1135 base path-type; 1136 description 1137 "Micro-BFD on LAG member links."; 1139 reference 1140 "RFC 7130: Bidirectional Forwarding Detection (BFD) on 1141 Link Aggregation Group (LAG) Interfaces"; 1142 } 1144 identity encap-type { 1145 description 1146 "Base identity for BFD encapsulation type."; 1147 } 1149 identity encap-ip { 1150 base encap-type; 1151 description 1152 "BFD with IP encapsulation."; 1153 } 1155 /* 1156 * Type definitions 1157 */ 1159 typedef discriminator { 1160 type uint32; 1161 description 1162 "BFD Discriminator as described in RFC 5880."; 1163 reference 1164 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1165 } 1167 typedef state { 1168 type enumeration { 1169 enum adminDown { 1170 value 0; 1171 description 1172 "'adminDown' state."; 1173 } 1174 enum down { 1175 value 1; 1176 description 1177 "'Down' state."; 1178 } 1179 enum init { 1180 value 2; 1181 description 1182 "'Init' state."; 1183 } 1184 enum up { 1185 value 3; 1186 description 1187 "'Up' state."; 1188 } 1189 } 1190 description 1191 "BFD states as defined in RFC 5880."; 1192 } 1194 typedef multiplier { 1195 type uint8 { 1196 range "1..255"; 1197 } 1198 description 1199 "BFD multiplier as described in RFC 5880."; 1200 } 1202 typedef hops { 1203 type uint8 { 1204 range "1..255"; 1205 } 1206 description 1207 "This corresponds to Time To Live for IPv4 and corresponds to 1208 the hop limit for IPv6."; 1209 } 1211 /* 1212 * Groupings 1213 */ 1215 grouping auth-parms { 1216 description 1217 "Grouping for BFD authentication parameters 1218 (see Section 6.7 of RFC 5880)."; 1219 container authentication { 1220 if-feature "authentication"; 1221 presence "Enables BFD authentication (see Section 6.7 1222 of RFC 5880)."; 1223 description 1224 "Parameters for BFD authentication."; 1225 reference 1226 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1227 Section 6.7"; 1228 leaf key-chain { 1229 type key-chain:key-chain-ref; 1230 description 1231 "Name of the 'key-chain' as per RFC 8177."; 1232 } 1233 leaf meticulous { 1234 type boolean; 1235 description 1236 "Enables a meticulous mode as per Section 6.7 of 1237 RFC 5880."; 1238 } 1239 } 1240 } 1242 grouping base-cfg-parms { 1243 description 1244 "BFD grouping for base configuration parameters."; 1245 leaf local-multiplier { 1246 type multiplier; 1247 default "3"; 1248 description 1249 "Multiplier transmitted by the local system."; 1250 } 1251 choice interval-config-type { 1252 default "tx-rx-intervals"; 1253 description 1254 "Two interval values or one value used for both transmit and 1255 receive."; 1256 case tx-rx-intervals { 1257 leaf desired-min-tx-interval { 1258 type uint32; 1259 units "microseconds"; 1260 default "1000000"; 1261 description 1262 "Desired minimum transmit interval of control packets."; 1263 } 1264 leaf required-min-rx-interval { 1265 type uint32; 1266 units "microseconds"; 1267 default "1000000"; 1268 description 1269 "Required minimum receive interval of control packets."; 1270 } 1271 } 1272 case single-interval { 1273 if-feature "single-minimum-interval"; 1274 leaf min-interval { 1275 type uint32; 1276 units "microseconds"; 1277 default "1000000"; 1278 description 1279 "Desired minimum transmit interval and required 1280 minimum receive interval of control packets."; 1281 } 1282 } 1284 } 1285 } 1287 grouping client-cfg-parms { 1288 description 1289 "BFD grouping for configuration parameters 1290 used by BFD clients, e.g., IGP or MPLS."; 1291 leaf enabled { 1292 type boolean; 1293 default "false"; 1294 description 1295 "Indicates whether BFD is enabled."; 1296 } 1297 uses base-cfg-parms { 1298 if-feature "client-base-cfg-parms"; 1299 } 1300 } 1302 grouping common-cfg-parms { 1303 description 1304 "BFD grouping for common configuration parameters."; 1305 uses base-cfg-parms; 1306 leaf demand-enabled { 1307 if-feature "demand-mode"; 1308 type boolean; 1309 default "false"; 1310 description 1311 "To enable Demand mode."; 1312 } 1313 leaf admin-down { 1314 type boolean; 1315 default "false"; 1316 description 1317 "Indicates whether the BFD session is administratively 1318 down."; 1319 } 1320 uses auth-parms; 1321 } 1323 grouping all-session { 1324 description 1325 "BFD session operational information."; 1326 leaf path-type { 1327 type identityref { 1328 base path-type; 1329 } 1330 config false; 1331 description 1332 "BFD path type. This indicates the path type that BFD is 1333 running on."; 1334 } 1335 leaf ip-encapsulation { 1336 type boolean; 1337 config false; 1338 description 1339 "Indicates whether BFD encapsulation uses IP."; 1340 } 1341 leaf local-discriminator { 1342 type discriminator; 1343 config false; 1344 description 1345 "Local discriminator."; 1346 } 1347 leaf remote-discriminator { 1348 type discriminator; 1349 config false; 1350 description 1351 "Remote discriminator."; 1352 } 1353 leaf remote-multiplier { 1354 type multiplier; 1355 config false; 1356 description 1357 "Remote multiplier."; 1358 } 1359 leaf demand-capability { 1360 if-feature "demand-mode"; 1361 type boolean; 1362 config false; 1363 description 1364 "Local Demand mode capability."; 1365 } 1366 leaf source-port { 1367 when "../ip-encapsulation = 'true'" { 1368 description 1369 "Source port valid only when IP encapsulation is used."; 1370 } 1371 type inet:port-number; 1372 config false; 1373 description 1374 "Source UDP port."; 1375 } 1376 leaf dest-port { 1377 when "../ip-encapsulation = 'true'" { 1378 description 1379 "Destination port valid only when IP encapsulation 1380 is used."; 1381 } 1382 type inet:port-number; 1383 config false; 1384 description 1385 "Destination UDP port."; 1386 } 1387 container session-running { 1388 config false; 1389 description 1390 "BFD 'session-running' information."; 1391 leaf session-index { 1392 type uint32; 1393 description 1394 "An index used to uniquely identify BFD sessions."; 1395 } 1396 leaf local-state { 1397 type state; 1398 description 1399 "Local state."; 1400 } 1401 leaf remote-state { 1402 type state; 1403 description 1404 "Remote state."; 1405 } 1406 leaf local-diagnostic { 1407 type iana-bfd-types:diagnostic; 1408 description 1409 "Local diagnostic."; 1410 } 1411 leaf remote-diagnostic { 1412 type iana-bfd-types:diagnostic; 1413 description 1414 "Remote diagnostic."; 1415 } 1416 leaf remote-authenticated { 1417 type boolean; 1418 description 1419 "Indicates whether incoming BFD control packets are 1420 authenticated."; 1421 } 1422 leaf remote-authentication-type { 1423 when "../remote-authenticated = 'true'" { 1424 description 1425 "Only valid when incoming BFD control packets are 1426 authenticated."; 1427 } 1428 if-feature "authentication"; 1429 type iana-bfd-types:auth-type; 1430 description 1431 "Authentication type of incoming BFD control packets."; 1432 } 1433 leaf detection-mode { 1434 type enumeration { 1435 enum async-with-echo { 1436 value 1; 1437 description 1438 "Async with echo."; 1439 } 1440 enum async-without-echo { 1441 value 2; 1442 description 1443 "Async without echo."; 1444 } 1445 enum demand-with-echo { 1446 value 3; 1447 description 1448 "Demand with echo."; 1449 } 1450 enum demand-without-echo { 1451 value 4; 1452 description 1453 "Demand without echo."; 1454 } 1455 } 1456 description 1457 "Detection mode."; 1458 } 1459 leaf negotiated-tx-interval { 1460 type uint32; 1461 units "microseconds"; 1462 description 1463 "Negotiated transmit interval."; 1464 } 1465 leaf negotiated-rx-interval { 1466 type uint32; 1467 units "microseconds"; 1468 description 1469 "Negotiated receive interval."; 1470 } 1471 leaf detection-time { 1472 type uint32; 1473 units "microseconds"; 1474 description 1475 "Detection time."; 1477 } 1478 leaf echo-tx-interval-in-use { 1479 when "../../path-type = 'bfd-types:path-ip-sh'" { 1480 description 1481 "Echo is supported for IP single-hop only."; 1482 } 1483 if-feature "echo-mode"; 1484 type uint32; 1485 units "microseconds"; 1486 description 1487 "Echo transmit interval in use."; 1488 } 1489 } 1490 container session-statistics { 1491 config false; 1492 description 1493 "BFD per-session statistics."; 1494 leaf create-time { 1495 type yang:date-and-time; 1496 description 1497 "Time and date when this session was created."; 1498 } 1499 leaf last-down-time { 1500 type yang:date-and-time; 1501 description 1502 "Time and date of the last time this session went down."; 1503 } 1504 leaf last-up-time { 1505 type yang:date-and-time; 1506 description 1507 "Time and date of the last time this session went up."; 1508 } 1509 leaf down-count { 1510 type yang:counter32; 1511 description 1512 "The number of times this session has transitioned to the 1513 'down' state."; 1514 } 1515 leaf admin-down-count { 1516 type yang:counter32; 1517 description 1518 "The number of times this session has transitioned to the 1519 'admin-down' state."; 1520 } 1521 leaf receive-packet-count { 1522 type yang:counter64; 1523 description 1524 "Count of received packets in this session. This includes 1525 valid and invalid received packets."; 1526 } 1527 leaf send-packet-count { 1528 type yang:counter64; 1529 description 1530 "Count of sent packets in this session."; 1531 } 1532 leaf receive-invalid-packet-count { 1533 type yang:counter64; 1534 description 1535 "Count of invalid received packets in this session."; 1536 } 1537 leaf send-failed-packet-count { 1538 type yang:counter64; 1539 description 1540 "Count of packets that failed to be sent in this session."; 1541 } 1542 } 1543 } 1545 grouping session-statistics-summary { 1546 description 1547 "Grouping for session statistics summary."; 1548 container summary { 1549 config false; 1550 description 1551 "BFD session statistics summary."; 1552 leaf number-of-sessions { 1553 type yang:gauge32; 1554 description 1555 "Number of BFD sessions."; 1556 } 1557 leaf number-of-sessions-up { 1558 type yang:gauge32; 1559 description 1560 "Number of BFD sessions currently in the 'Up' state 1561 (as defined in RFC 5880)."; 1562 } 1563 leaf number-of-sessions-down { 1564 type yang:gauge32; 1565 description 1566 "Number of BFD sessions currently in the 'Down' or 'Init' 1567 state but not 'adminDown' (as defined in RFC 5880)."; 1568 } 1569 leaf number-of-sessions-admin-down { 1570 type yang:gauge32; 1571 description 1572 "Number of BFD sessions currently in the 'adminDown' state 1573 (as defined in RFC 5880)."; 1574 } 1575 } 1576 } 1578 grouping notification-parms { 1579 description 1580 "This group describes common parameters that will be sent 1581 as part of BFD notifications."; 1582 leaf local-discr { 1583 type discriminator; 1584 description 1585 "BFD local discriminator."; 1586 } 1587 leaf remote-discr { 1588 type discriminator; 1589 description 1590 "BFD remote discriminator."; 1591 } 1592 leaf new-state { 1593 type state; 1594 description 1595 "Current BFD state."; 1596 } 1597 leaf state-change-reason { 1598 type iana-bfd-types:diagnostic; 1599 description 1600 "Reason for the BFD state change."; 1601 } 1602 leaf time-of-last-state-change { 1603 type yang:date-and-time; 1604 description 1605 "Calendar time of the most recent previous state change."; 1606 } 1607 leaf dest-addr { 1608 type inet:ip-address; 1609 description 1610 "BFD peer address."; 1611 } 1612 leaf source-addr { 1613 type inet:ip-address; 1614 description 1615 "BFD local address."; 1616 } 1617 leaf session-index { 1618 type uint32; 1619 description 1620 "An index used to uniquely identify BFD sessions."; 1622 } 1623 leaf path-type { 1624 type identityref { 1625 base path-type; 1626 } 1627 description 1628 "BFD path type."; 1629 } 1630 } 1631 } 1632 1634 2.12. BFD Top-Level YANG Module 1636 This YANG module imports and augments "/routing/control-plane- 1637 protocols/control-plane-protocol" from [RFC8349]. It also references 1638 [RFC5880]. 1640 file "ietf-bfd@2022-04-06.yang" 1641 module ietf-bfd { 1642 yang-version 1.1; 1643 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 1644 prefix bfd; 1646 import ietf-bfd-types { 1647 prefix bfd-types; 1648 reference 1649 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1650 Detection (BFD)"; 1651 } 1652 import ietf-routing { 1653 prefix rt; 1654 reference 1655 "RFC 8349: A YANG Data Model for Routing Management 1656 (NMDA Version)"; 1657 } 1659 organization 1660 "IETF BFD Working Group"; 1661 contact 1662 "WG Web: 1663 WG List: 1665 Editor: Reshad Rahman 1666 1668 Editor: Lianshu Zheng 1669 1671 Editor: Mahesh Jethanandani 1672 "; 1673 description 1674 "This module contains the YANG definition for BFD parameters as 1675 per RFC 5880. 1677 Copyright (c) 2021 IETF Trust and the persons identified as 1678 authors of the code. All rights reserved. 1680 Redistribution and use in source and binary forms, with or 1681 without modification, is permitted pursuant to, and subject to 1682 the license terms contained in, the Revised BSD License set 1683 forth in Section 4.c of the IETF Trust's Legal Provisions 1684 Relating to IETF Documents 1685 (https://trustee.ietf.org/license-info). 1687 This version of this YANG module is part of RFC XXXX; see the 1688 RFC itself for full legal notices."; 1689 reference 1690 "RFC 5880: Bidirectional Forwarding Detection (BFD) 1691 RFC XXXX: YANG Data Model for Bidirectional Forwarding 1692 Detection (BFD)"; 1694 revision 2022-04-06 { 1695 description 1696 "Updating reference to RFC XXXX."; 1697 reference 1698 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1699 Detection (BFD)."; 1700 } 1701 revision 2021-10-21 { 1702 description 1703 "Initial revision."; 1704 reference 1705 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1706 Detection (BFD)"; 1707 } 1709 augment "/rt:routing/rt:control-plane-protocols/" 1710 + "rt:control-plane-protocol" { 1711 when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { 1712 description 1713 "This augmentation is only valid for a control-plane protocol 1714 instance of BFD (type 'bfdv1')."; 1715 } 1716 description 1717 "BFD augmentation."; 1718 container bfd { 1719 description 1720 "BFD top-level container."; 1721 uses bfd-types:session-statistics-summary; 1722 } 1723 } 1724 } 1725 1727 2.13. BFD IP Single-Hop YANG Module 1729 This YANG module imports "interface-ref" from [RFC8343] and typedefs 1730 from [RFC6991]. It also imports and augments "/routing/control- 1731 plane-protocols/control-plane-protocol" from [RFC8349], and it 1732 references [RFC5881]. 1734 file "ietf-bfd-ip-sh@2022-04-06.yang" 1735 module ietf-bfd-ip-sh { 1736 yang-version 1.1; 1737 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1738 prefix bfd-ip-sh; 1740 import ietf-bfd-types { 1741 prefix bfd-types; 1742 reference 1743 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1744 Detection (BFD)"; 1745 } 1746 import ietf-bfd { 1747 prefix bfd; 1748 reference 1749 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1750 Detection (BFD)"; 1751 } 1752 import ietf-interfaces { 1753 prefix if; 1754 reference 1755 "RFC 8343: A YANG Data Model for Interface Management"; 1756 } 1757 import ietf-inet-types { 1758 prefix inet; 1759 reference 1760 "RFC 6991: Common YANG Data Types"; 1761 } 1762 import ietf-routing { 1763 prefix rt; 1764 reference 1765 "RFC 8349: A YANG Data Model for Routing Management 1766 (NMDA Version)"; 1767 } 1769 organization 1770 "IETF BFD Working Group"; 1771 contact 1772 "WG Web: 1773 WG List: 1775 Editor: Reshad Rahman 1776 1778 Editor: Lianshu Zheng 1779 1781 Editor: Mahesh Jethanandani 1782 "; 1783 description 1784 "This module contains the YANG definition for BFD IP single-hop 1785 as per RFC 5881. 1787 Copyright (c) 2021 IETF Trust and the persons identified as 1788 authors of the code. All rights reserved. 1790 Redistribution and use in source and binary forms, with or 1791 without modification, is permitted pursuant to, and subject to 1792 the license terms contained in, the Revised BSD License set 1793 forth in Section 4.c of the IETF Trust's Legal Provisions 1794 Relating to IETF Documents 1795 (https://trustee.ietf.org/license-info). 1797 This version of this YANG module is part of RFC XXXX; see the 1798 RFC itself for full legal notices."; 1799 reference 1800 "RFC 5881: Bidirectional Forwarding Detection (BFD) 1801 for IPv4 and IPv6 (Single Hop) 1802 RFC XXXX: YANG Data Model for Bidirectional Forwarding 1803 Detection (BFD)"; 1805 revision 2022-04-06 { 1806 description 1807 "Updating reference to RFC XXXX."; 1808 reference 1809 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1810 Detection (BFD)."; 1811 } 1812 revision 2021-10-21 { 1813 description 1814 "Initial revision."; 1815 reference 1816 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1817 Detection (BFD)"; 1818 } 1820 /* 1821 * Augments 1822 */ 1824 augment "/rt:routing/rt:control-plane-protocols/" 1825 + "rt:control-plane-protocol/bfd:bfd" { 1826 description 1827 "BFD augmentation for IP single-hop."; 1828 container ip-sh { 1829 description 1830 "BFD IP single-hop top-level container."; 1831 uses bfd-types:session-statistics-summary; 1832 container sessions { 1833 description 1834 "BFD IP single-hop sessions."; 1835 list session { 1836 key "interface dest-addr"; 1837 description 1838 "List of IP single-hop sessions."; 1839 leaf interface { 1840 type if:interface-ref; 1841 description 1842 "Interface on which the BFD session is running."; 1843 } 1844 leaf dest-addr { 1845 type inet:ip-address; 1846 description 1847 "IP address of the peer."; 1848 } 1849 leaf source-addr { 1850 type inet:ip-address; 1851 description 1852 "Local IP address."; 1853 } 1854 uses bfd-types:common-cfg-parms; 1855 uses bfd-types:all-session; 1856 } 1857 } 1858 list interfaces { 1859 key "interface"; 1860 description 1861 "List of interfaces."; 1862 leaf interface { 1863 type if:interface-ref; 1864 description 1865 "BFD information for this interface."; 1866 } 1867 uses bfd-types:auth-parms; 1868 } 1869 } 1870 } 1872 /* 1873 * Notifications 1874 */ 1876 notification singlehop-notification { 1877 description 1878 "Notification for BFD single-hop session state change. An 1879 implementation may rate-limit notifications, e.g., when a 1880 session is continuously changing state."; 1881 uses bfd-types:notification-parms; 1882 leaf interface { 1883 type if:interface-ref; 1884 description 1885 "Interface to which this BFD session belongs."; 1886 } 1887 leaf echo-enabled { 1888 type boolean; 1889 description 1890 "Indicates whether Echo was enabled for BFD."; 1891 } 1892 } 1893 } 1894 1896 2.14. BFD IP Multihop YANG Module 1898 This YANG module imports typedefs from [RFC6991]. It also imports 1899 and augments "/routing/control-plane-protocols/control-plane- 1900 protocol" from [RFC8349], and it references [RFC5883]. 1902 file "ietf-bfd-ip-mh@2022-04-06.yang" 1903 module ietf-bfd-ip-mh { 1904 yang-version 1.1; 1905 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 1906 prefix bfd-ip-mh; 1908 import ietf-bfd-types { 1909 prefix bfd-types; 1910 reference 1911 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1912 Detection (BFD)"; 1913 } 1914 import ietf-bfd { 1915 prefix bfd; 1916 reference 1917 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1918 Detection (BFD)"; 1919 } 1920 import ietf-inet-types { 1921 prefix inet; 1922 reference 1923 "RFC 6991: Common YANG Data Types"; 1924 } 1925 import ietf-routing { 1926 prefix rt; 1927 reference 1928 "RFC 8349: A YANG Data Model for Routing Management 1929 (NMDA Version)"; 1930 } 1932 organization 1933 "IETF BFD Working Group"; 1934 contact 1935 "WG Web: 1936 WG List: 1938 Editor: Reshad Rahman 1939 1941 Editor: Lianshu Zheng 1942 1944 Editor: Mahesh Jethanandani 1945 "; 1946 description 1947 "This module contains the YANG definition for BFD IP multihop 1948 as per RFC 5883. 1950 Copyright (c) 2021 IETF Trust and the persons identified as 1951 authors of the code. All rights reserved. 1953 Redistribution and use in source and binary forms, with or 1954 without modification, is permitted pursuant to, and subject to 1955 the license terms contained in, the Revised BSD License set 1956 forth in Section 4.c of the IETF Trust's Legal Provisions 1957 Relating to IETF Documents 1958 (https://trustee.ietf.org/license-info). 1960 This version of this YANG module is part of RFC XXXX; see the 1961 RFC itself for full legal notices."; 1962 reference 1963 "RFC 5883: Bidirectional Forwarding Detection (BFD) for 1964 Multihop Paths 1965 RFC XXXX: YANG Data Model for Bidirectional Forwarding 1966 Detection (BFD)"; 1968 revision 2022-04-06 { 1969 description 1970 "Updating reference to RFC XXXX."; 1971 reference 1972 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1973 Detection (BFD)."; 1974 } 1975 revision 2021-10-21 { 1976 description 1977 "Initial revision."; 1978 reference 1979 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1980 Detection (BFD)"; 1981 } 1983 /* 1984 * Augments 1985 */ 1987 augment "/rt:routing/rt:control-plane-protocols/" 1988 + "rt:control-plane-protocol/bfd:bfd" { 1989 description 1990 "BFD augmentation for IP multihop."; 1991 container ip-mh { 1992 description 1993 "BFD IP multihop top-level container."; 1994 uses bfd-types:session-statistics-summary; 1995 container session-groups { 1996 description 1997 "BFD IP multihop session groups."; 1999 list session-group { 2000 key "source-addr dest-addr"; 2001 description 2002 "Group of BFD IP multihop sessions (for ECMP). A 2003 group of sessions is between one source and one 2004 destination. Each session has a different field 2005 in the UDP/IP header for ECMP."; 2006 leaf source-addr { 2007 type inet:ip-address; 2008 description 2009 "Local IP address."; 2010 } 2011 leaf dest-addr { 2012 type inet:ip-address; 2013 description 2014 "IP address of the peer."; 2015 } 2016 uses bfd-types:common-cfg-parms; 2017 leaf tx-ttl { 2018 type bfd-types:hops; 2019 default "255"; 2020 description 2021 "Hop count of outgoing BFD control packets."; 2022 } 2023 leaf rx-ttl { 2024 type bfd-types:hops; 2025 mandatory true; 2026 description 2027 "Minimum allowed hop count value for incoming BFD 2028 control packets. Control packets whose hop count is 2029 lower than this value are dropped."; 2030 } 2031 list sessions { 2032 config false; 2033 description 2034 "The multiple BFD sessions between a source and a 2035 destination."; 2036 uses bfd-types:all-session; 2037 } 2038 } 2039 } 2040 } 2041 } 2043 /* 2044 * Notifications 2045 */ 2047 notification multihop-notification { 2048 description 2049 "Notification for BFD multihop session state change. An 2050 implementation may rate-limit notifications, e.g., when a 2051 session is continuously changing state."; 2052 uses bfd-types:notification-parms; 2053 } 2054 } 2055 2057 2.15. BFD-over-LAG YANG Module 2059 This YANG module imports "interface-ref" from [RFC8343] and typedefs 2060 from [RFC6991]. It also imports and augments "/routing/control- 2061 plane-protocols/control-plane-protocol" from [RFC8349]. 2062 Additionally, it references [RFC7130]. 2064 file "ietf-bfd-lag@2022-04-06.yang" 2065 module ietf-bfd-lag { 2066 yang-version 1.1; 2067 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 2068 prefix bfd-lag; 2070 import ietf-bfd-types { 2071 prefix bfd-types; 2072 reference 2073 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2074 Detection (BFD)"; 2075 } 2076 import ietf-bfd { 2077 prefix bfd; 2078 reference 2079 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2080 Detection (BFD)"; 2081 } 2082 import ietf-interfaces { 2083 prefix if; 2084 reference 2085 "RFC 8343: A YANG Data Model for Interface Management"; 2086 } 2087 import ietf-inet-types { 2088 prefix inet; 2089 reference 2090 "RFC 6991: Common YANG Data Types"; 2091 } 2092 import ietf-routing { 2093 prefix rt; 2094 reference 2095 "RFC 8349: A YANG Data Model for Routing Management 2096 (NMDA Version)"; 2097 } 2099 organization 2100 "IETF BFD Working Group"; 2101 contact 2102 "WG Web: 2103 WG List: 2105 Editor: Reshad Rahman 2106 2108 Editor: Lianshu Zheng 2109 2111 Editor: Mahesh Jethanandani 2112 "; 2113 description 2114 "This module contains the YANG definition for BFD-over-LAG 2115 interfaces as per RFC 7130. 2117 Copyright (c) 2021 IETF Trust and the persons identified as 2118 authors of the code. All rights reserved. 2120 Redistribution and use in source and binary forms, with or 2121 without modification, is permitted pursuant to, and subject to 2122 the license terms contained in, the Revised BSD License set 2123 forth in Section 4.c of the IETF Trust's Legal Provisions 2124 Relating to IETF Documents 2125 (https://trustee.ietf.org/license-info). 2127 This version of this YANG module is part of RFC XXXX; see the 2128 RFC itself for full legal notices."; 2129 reference 2130 "RFC 7130: Bidirectional Forwarding Detection (BFD) on 2131 Link Aggregation Group (LAG) Interfaces 2132 RFC XXXX: YANG Data Model for Bidirectional Forwarding 2133 Detection (BFD)"; 2135 revision 2022-04-06 { 2136 description 2137 "Updating reference to RFC XXXX."; 2138 reference 2139 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2140 Detection (BFD)."; 2141 } 2142 revision 2021-10-21 { 2143 description 2144 "Initial revision."; 2145 reference 2146 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2147 Detection (BFD)"; 2148 } 2150 /* 2151 * Augments 2152 */ 2154 augment "/rt:routing/rt:control-plane-protocols/" 2155 + "rt:control-plane-protocol/bfd:bfd" { 2156 description 2157 "BFD augmentation for a LAG."; 2158 container lag { 2159 description 2160 "BFD-over-LAG top-level container."; 2161 container micro-bfd-ipv4-session-statistics { 2162 description 2163 "Micro-BFD IPv4 session counters."; 2164 uses bfd-types:session-statistics-summary; 2165 } 2166 container micro-bfd-ipv6-session-statistics { 2167 description 2168 "Micro-BFD IPv6 session counters."; 2169 uses bfd-types:session-statistics-summary; 2170 } 2171 container sessions { 2172 description 2173 "BFD-over-LAG sessions."; 2174 list session { 2175 key "lag-name"; 2176 description 2177 "List of BFD-over-LAG sessions."; 2178 leaf lag-name { 2179 type if:interface-ref; 2180 description 2181 "Name of the LAG."; 2182 } 2183 leaf ipv4-dest-addr { 2184 type inet:ipv4-address; 2185 description 2186 "IPv4 address of the peer, for IPv4 micro-BFD."; 2187 } 2188 leaf ipv6-dest-addr { 2189 type inet:ipv6-address; 2190 description 2191 "IPv6 address of the peer, for IPv6 micro-BFD."; 2192 } 2193 uses bfd-types:common-cfg-parms; 2194 leaf use-ipv4 { 2195 type boolean; 2196 description 2197 "Using IPv4 micro-BFD."; 2198 } 2199 leaf use-ipv6 { 2200 type boolean; 2201 description 2202 "Using IPv6 micro-BFD."; 2203 } 2204 list member-links { 2205 key "member-link"; 2206 config false; 2207 description 2208 "Micro-BFD over a LAG. This represents one 2209 member link."; 2210 leaf member-link { 2211 type if:interface-ref; 2212 description 2213 "Member link on which micro-BFD is running."; 2214 } 2215 container micro-bfd-ipv4 { 2216 when "../../use-ipv4 = 'true'" { 2217 description 2218 "Needed only if IPv4 is used."; 2219 } 2220 description 2221 "Micro-BFD IPv4 session state on a member link."; 2222 uses bfd-types:all-session; 2223 } 2224 container micro-bfd-ipv6 { 2225 when "../../use-ipv6 = 'true'" { 2226 description 2227 "Needed only if IPv6 is used."; 2228 } 2229 description 2230 "Micro-BFD IPv6 session state on a member link."; 2231 uses bfd-types:all-session; 2232 } 2233 } 2234 } 2235 } 2236 } 2237 } 2238 /* 2239 * Notifications 2240 */ 2242 notification lag-notification { 2243 description 2244 "Notification for BFD-over-LAG session state change. 2245 An implementation may rate-limit notifications, e.g., when a 2246 session is continuously changing state."; 2247 uses bfd-types:notification-parms; 2248 leaf lag-name { 2249 type if:interface-ref; 2250 description 2251 "LAG interface name."; 2252 } 2253 leaf member-link { 2254 type if:interface-ref; 2255 description 2256 "Member link on which BFD is running."; 2257 } 2258 } 2259 } 2260 2262 2.16. BFD-over-MPLS YANG Module 2264 This YANG module imports typedefs from [RFC6991]. It also imports 2265 and augments "/routing/control-plane-protocols/control-plane- 2266 protocol" from [RFC8349]. Additionally, it references [RFC5586] and 2267 [RFC5884]. 2269 file "ietf-bfd-mpls@2022-04-06.yang" 2270 module ietf-bfd-mpls { 2271 yang-version 1.1; 2272 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 2273 prefix bfd-mpls; 2275 import ietf-bfd-types { 2276 prefix bfd-types; 2277 reference 2278 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2279 Detection (BFD)"; 2280 } 2281 import ietf-bfd { 2282 prefix bfd; 2283 reference 2284 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2285 Detection (BFD)"; 2286 } 2287 import ietf-inet-types { 2288 prefix inet; 2289 reference 2290 "RFC 6991: Common YANG Data Types"; 2291 } 2292 import ietf-routing { 2293 prefix rt; 2294 reference 2295 "RFC 8349: A YANG Data Model for Routing Management 2296 (NMDA Version)"; 2297 } 2299 organization 2300 "IETF BFD Working Group"; 2301 contact 2302 "WG Web: 2303 WG List: 2305 Editor: Reshad Rahman 2306 2308 Editor: Lianshu Zheng 2309 2311 Editor: Mahesh Jethanandani 2312 "; 2313 description 2314 "This module contains the YANG definition for BFD parameters for 2315 MPLS LSPs as per RFC 5884. 2317 Copyright (c) 2021 IETF Trust and the persons identified as 2318 authors of the code. All rights reserved. 2320 Redistribution and use in source and binary forms, with or 2321 without modification, is permitted pursuant to, and subject to 2322 the license terms contained in, the Revised BSD License set 2323 forth in Section 4.c of the IETF Trust's Legal Provisions 2324 Relating to IETF Documents 2325 (https://trustee.ietf.org/license-info). 2327 This version of this YANG module is part of RFC XXXX; see the 2328 RFC itself for full legal notices."; 2329 reference 2330 "RFC 5884: Bidirectional Forwarding Detection (BFD) 2331 for MPLS Label Switched Paths (LSPs) 2332 RFC XXXX: YANG Data Model for Bidirectional Forwarding 2333 Detection (BFD)"; 2335 revision 2022-04-06 { 2336 description 2337 "Updates to use base-cfg-parms instead of client-cfg-parms, 2338 and add the enabled flag."; 2339 reference 2340 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2341 Detection (BFD)."; 2342 } 2343 revision 2021-10-21 { 2344 description 2345 "Initial revision."; 2346 reference 2347 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2348 Detection (BFD)"; 2349 } 2351 /* 2352 * Identity definitions 2353 */ 2355 identity encap-gach { 2356 base bfd-types:encap-type; 2357 description 2358 "BFD with G-ACh encapsulation as per RFC 5586."; 2359 reference 2360 "RFC 5586: MPLS Generic Associated Channel"; 2361 } 2363 identity encap-ip-gach { 2364 base bfd-types:encap-type; 2365 description 2366 "BFD with IP and G-ACh encapsulation as per RFC 5586."; 2367 } 2369 /* 2370 * Groupings 2371 */ 2373 grouping encap-cfg { 2374 description 2375 "Configuration for BFD encapsulation."; 2376 leaf encap { 2377 type identityref { 2378 base bfd-types:encap-type; 2379 } 2380 default "bfd-types:encap-ip"; 2381 description 2382 "BFD encapsulation."; 2383 } 2384 } 2386 grouping mpls-dest-address { 2387 description 2388 "Destination address as per RFC 5884."; 2389 reference 2390 "RFC 5884: Bidirectional Forwarding Detection (BFD) 2391 for MPLS Label Switched Paths (LSPs)"; 2392 leaf mpls-dest-address { 2393 type inet:ip-address; 2394 config false; 2395 description 2396 "Destination address as per RFC 5884. 2397 Needed if IP encapsulation is used."; 2398 } 2399 } 2401 /* 2402 * Augments 2403 */ 2405 augment "/rt:routing/rt:control-plane-protocols/" 2406 + "rt:control-plane-protocol/bfd:bfd" { 2407 description 2408 "BFD augmentation for MPLS."; 2409 container mpls { 2410 description 2411 "BFD MPLS top-level container."; 2412 uses bfd-types:session-statistics-summary; 2413 container egress { 2414 description 2415 "Egress configuration."; 2416 leaf enabled { 2417 type boolean; 2418 default "false"; 2419 description 2420 "Indicates whether BFD over MPLS is enabled."; 2421 } 2422 uses bfd-types:base-cfg-parms; 2423 uses bfd-types:auth-parms; 2424 } 2425 container session-groups { 2426 description 2427 "BFD-over-MPLS session groups."; 2428 list session-group { 2429 key "mpls-fec"; 2430 description 2431 "Group of BFD MPLS sessions (for ECMP). A group of 2432 sessions is for one FEC. Each session has a different 2433 field in the UDP/IP header for ECMP."; 2434 leaf mpls-fec { 2435 type inet:ip-prefix; 2436 description 2437 "MPLS FEC."; 2438 } 2439 uses bfd-types:common-cfg-parms; 2440 list sessions { 2441 config false; 2442 description 2443 "The BFD sessions for an MPLS FEC. The local 2444 discriminator is unique for each session in the 2445 group."; 2446 uses bfd-types:all-session; 2447 uses bfd-mpls:mpls-dest-address; 2448 } 2449 } 2450 } 2451 } 2452 } 2454 /* 2455 * Notifications 2456 */ 2458 notification mpls-notification { 2459 description 2460 "Notification for BFD-over-MPLS FEC session state change. 2461 An implementation may rate-limit notifications, e.g., when a 2462 session is continuously changing state."; 2463 uses bfd-types:notification-parms; 2464 leaf mpls-dest-address { 2465 type inet:ip-address; 2466 description 2467 "Destination address as per RFC 5884. 2468 Needed if IP encapsulation is used."; 2469 } 2470 } 2471 } 2472 2474 3. Data Model Examples 2476 This section presents some simple and illustrative examples of how to 2477 configure BFD. 2479 The examples are represented in XML [W3C.REC-xml-20081126]. 2481 3.1. IP Single-Hop 2483 The following is an example configuration for a BFD IP single-hop 2484 session. The desired transmit interval and the required receive 2485 interval are both set to 10 ms. 2487 2488 2489 2490 2491 eth0 2492 2493 ianaift:ethernetCsmacd 2494 2495 2496 2497 2498 2499 2500 2502 bfd-types:bfdv1 2503 2504 name:BFD 2505 2506 2507 2508 2509 eth0 2510 2001:db8:0:113::101 2511 2512 10000 2513 2514 2515 10000 2516 2517 2518 2519 2520 2521 2522 2523 2524 2526 3.2. IP Multihop 2528 The following is an example configuration for a BFD IP multihop 2529 session group. The desired transmit interval and the required 2530 receive interval are both set to 150 ms. 2532 2533 2534 2535 2536 2537 2539 bfd-types:bfdv1 2540 2541 name:BFD 2542 2543 2544 2545 2546 2001:db8:0:113::103 2547 2001:db8:0:114::100 2548 2549 150000 2550 2551 2552 150000 2553 2554 240 2555 2556 2557 2558 2559 2560 2561 2562 2564 3.3. LAG 2566 The following is an example of BFD configuration for a LAG session. 2567 In this case, an interface named "Bundle-Ether1" of interface type 2568 "ieee8023adLag" has a desired transmit interval and required receive 2569 interval set to 10 ms. 2571 2572 2573 2574 2575 Bundle-Ether1 2576 2577 ianaift:ieee8023adLag 2578 2579 2580 2581 2582 2583 2584 2586 bfd-types:bfdv1 2587 2588 name:BFD 2589 2590 2591 2592 2593 Bundle-Ether1 2594 2001:db8:112::16 2595 2596 10000 2597 2598 2599 10000 2600 2601 true 2602 2603 2604 2605 2606 2607 2608 2609 2611 3.4. MPLS 2613 The following is an example of BFD configured for an MPLS LSP. In 2614 this case, the desired transmit interval and required receive 2615 interval are both set to 250 ms. 2617 2618 2619 2620 2621 2622 2624 bfd-types:bfdv1 2625 2626 name:BFD 2627 2628 2629 2630 2631 2001:db8:114::/116 2632 2633 250000 2634 2635 2636 250000 2637 2638 2639 2640 2641 2642 2643 2644 2645 2647 4. Security Considerations 2649 The YANG modules specified in this document define a schema for data 2650 that is designed to be accessed via network management protocols such 2651 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2652 is the secure transport layer, and the mandatory-to-implement secure 2653 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2654 is HTTPS, and the mandatory-to-implement secure transport is TLS 2655 [RFC8446]. 2657 The Network Configuration Access Control Model (NACM) [RFC8341] 2658 provides the means to restrict access for particular NETCONF or 2659 RESTCONF users to a preconfigured subset of all available NETCONF or 2660 RESTCONF protocol operations and content. 2662 There are a number of data nodes defined in these YANG modules that 2663 are writable/creatable/deletable (i.e., config true, which is the 2664 default). These data nodes may be considered sensitive or vulnerable 2665 in some network environments. Write operations (e.g., edit-config) 2666 to these data nodes without proper protection can have a negative 2667 effect on network operations. These are the subtrees and data nodes 2668 and their sensitivity/vulnerability from a write access perspective: 2670 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2671 sessions: 2672 This list specifies the IP single-hop BFD sessions. 2674 Data nodes "local-multiplier", "desired-min-tx-interval", 2675 "required-min-rx-interval", and "min-interval" all impact the BFD 2676 IP single-hop session. The "source-addr" and "dest-addr" data 2677 nodes can be used to send BFD packets to unwitting recipients. 2678 [RFC5880] describes how BFD mitigates such threats. 2679 Authentication data nodes "key-chain" and "meticulous" impact the 2680 security of the BFD IP single-hop session. 2682 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2683 session-group: 2684 This list specifies the IP multihop BFD session groups. 2686 Data nodes "local-multiplier", "desired-min-tx-interval", 2687 "required-min-rx-interval", and "min-interval" all impact the BFD 2688 IP multihop session. The "source-addr" and "dest-addr" data nodes 2689 can be used to send BFD packets to unwitting recipients. 2690 [RFC5880] describes how BFD mitigates such threats. 2691 Authentication data nodes "key-chain" and "meticulous" impact the 2692 security of the BFD IP multihop session. 2694 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2695 sessions: 2696 This list specifies the BFD sessions over a LAG. 2698 Data nodes "local-multiplier", "desired-min-tx-interval", 2699 "required-min-rx-interval", and "min-interval" all impact the BFD- 2700 over-LAG session. The "ipv4-dest-addr" and "ipv6-dest-addr" data 2701 nodes can be used to send BFD packets to unwitting recipients. 2702 [RFC5880] describes how BFD mitigates such threats. 2703 Authentication data nodes "key-chain" and "meticulous" impact the 2704 security of the BFD-over-LAG session. 2706 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2707 session-group: 2708 This list specifies the session groups for BFD over MPLS. 2710 Data nodes "local-multiplier", "desired-min-tx-interval", 2711 "required-min-rx-interval", and "min-interval" all impact the BFD- 2712 over-MPLS-LSPs session. Authentication data nodes "key-chain" and 2713 "meticulous" impact the security of the BFD-over-MPLS-LSPs 2714 session. 2716 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2717 egress: 2718 Data nodes "local-multiplier", "desired-min-tx-interval", 2719 "required-min-rx-interval", and "min-interval" all impact the BFD- 2720 over-MPLS-LSPs sessions for which this device is an MPLS LSP 2721 egress node. Authentication data nodes "key-chain" and 2722 "meticulous" impact the security of the BFD-over-MPLS-LSPs 2723 sessions for which this device is an MPLS LSP egress node. 2725 The YANG modules have writable data nodes that can be used for the 2726 creation of BFD sessions and the modification of BFD session 2727 parameters. The system should "police" the creation of BFD sessions 2728 to prevent new sessions from causing existing BFD sessions to fail. 2729 In the case of BFD session modification, the BFD protocol has 2730 mechanisms in place that allow for in-service modification. 2732 When BFD clients are used to modify BFD configuration (as described 2733 in Section 2.1), the BFD clients need to be included in an analysis 2734 of the security properties of the system that uses BFD (e.g., when 2735 considering the authentication and authorization of control actions). 2736 In many cases, BFD is not the most vulnerable portion of such a 2737 composite system, since BFD is limited to generating well-defined 2738 traffic at a fixed rate on a given path; in the case of an IGP acting 2739 as a BFD client, attacking the IGP could cause more broad-scale 2740 disruption than would (de)configuring a BFD session. 2742 Some of the readable data nodes in these YANG modules may be 2743 considered sensitive or vulnerable in some network environments. It 2744 is thus important to control read access (e.g., via get, get-config, 2745 or notification) to these data nodes. These are the subtrees and 2746 data nodes and their sensitivity/vulnerability from a read access 2747 perspective: 2749 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2750 summary: 2751 Access to this information discloses the number of BFD IP single- 2752 hop sessions that are in the "up", "down", or "admin-down" state. 2753 The counters include BFD sessions for which the user does not have 2754 read access. 2756 /routing/control-plane-protocols/control-plane-protocol/bfd/ip- 2757 sh/sessions/session/: 2758 Access to data nodes "local-discriminator" and "remote- 2759 discriminator" (combined with the data nodes in the authentication 2760 container) provides the ability to spoof BFD IP single-hop 2761 packets. 2763 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2764 summary: 2765 Access to this information discloses the number of BFD IP multihop 2766 sessions that are in the "up", "down", or "admin-down" state. The 2767 counters include BFD sessions for which the user does not have 2768 read access. 2770 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2771 session-groups/session-group/sessions: 2772 Access to data nodes "local-discriminator" and "remote- 2773 discriminator" (combined with the data nodes in the session 2774 group's authentication container) provides the ability to spoof 2775 BFD IP multihop packets. 2777 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2778 micro-bfd-ipv4-session-statistics/summary: 2779 Access to this information discloses the number of micro-BFD IPv4 2780 LAG sessions that are in the "up", "down", or "admin-down" state. 2781 The counters include BFD sessions for which the user does not have 2782 read access. 2784 /routing/control-plane-protocols/control-plane- 2785 protocol/bfd/lag/sessions/session/member-links/member-link/micro- 2786 bfd-ipv4: 2787 Access to data nodes "local-discriminator" and "remote- 2788 discriminator" (combined with the data nodes in the session's 2789 authentication container) provides the ability to spoof BFD IPv4 2790 LAG packets. 2792 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2793 micro-bfd-ipv6-session-statistics/summary: 2794 Access to this information discloses the number of micro-BFD IPv6 2795 LAG sessions that are in the "up", "down", or "admin-down" state. 2796 The counters include BFD sessions for which the user does not have 2797 read access. 2799 /routing/control-plane-protocols/control-plane- 2800 protocol/bfd/lag/sessions/session/member-links/member-link/micro- 2801 bfd-ipv6: 2802 Access to data nodes "local-discriminator" and "remote- 2803 discriminator" (combined with the data nodes in the session's 2804 authentication container) provides the ability to spoof BFD IPv6 2805 LAG packets. 2807 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2808 summary: 2809 Access to this information discloses the number of BFD sessions 2810 over MPLS LSPs that are in the "up", "down", or "admin-down" 2811 state. The counters include BFD sessions for which the user does 2812 not have read access. 2814 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2815 session-groups/session-group/sessions: 2816 Access to data nodes "local-discriminator" and "remote- 2817 discriminator" (combined with the data nodes in the session 2818 group's authentication container) provides the ability to spoof 2819 BFD-over-MPLS-LSPs packets. 2821 This document does not define any RPC operations. 2823 5. IANA Considerations 2825 This document registers the following namespace URIs in the IETF XML 2826 in the "IETF XML Registry" [RFC3688]: 2828 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-types 2829 Registrant Contact: The IESG. 2830 XML: N/A; the requested URI is an XML namespace. 2832 URI: urn:ietf:params:xml:ns:yang:ietf-bfd 2833 Registrant Contact: The IESG. 2834 XML: N/A; the requested URI is an XML namespace. 2836 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2837 Registrant Contact: The IESG. 2838 XML: N/A; the requested URI is an XML namespace. 2840 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2841 Registrant Contact: The IESG. 2842 XML: N/A; the requested URI is an XML namespace. 2844 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2845 Registrant Contact: The IESG. 2846 XML: N/A; the requested URI is an XML namespace. 2848 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2849 Registrant Contact: The IESG. 2850 XML: N/A; the requested URI is an XML namespace. 2852 This document registers the following YANG modules in the "YANG 2853 Module Names" registry [RFC6020]: 2855 Name: ietf-bfd-types 2856 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-types 2857 Prefix: bfd-types 2858 Reference: RFC XXXX 2860 Name: ietf-bfd 2861 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd 2862 Prefix: bfd 2863 Reference: RFC XXXX 2865 Name: ietf-bfd-ip-sh 2866 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2867 Prefix: bfd-ip-sh 2868 Reference: RFC XXXX 2870 Name: ietf-bfd-ip-mh 2871 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2872 Prefix: bfd-ip-mh 2873 Reference: RFC XXXX 2875 Name: ietf-bfd-lag 2876 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2877 Prefix: bfd-lag 2878 Reference: RFC XXXX 2880 Name: ietf-bfd-mpls 2881 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2882 Prefix: bfd-mpls 2883 Reference: RFC XXXX 2885 6. References 2887 6.1. Normative References 2889 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2890 DOI 10.17487/RFC3688, January 2004, 2891 . 2893 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 2894 "MPLS Generic Associated Channel", RFC 5586, 2895 DOI 10.17487/RFC5586, June 2009, 2896 . 2898 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2899 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 2900 . 2902 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2903 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 2904 DOI 10.17487/RFC5881, June 2010, 2905 . 2907 [RFC5882] Katz, D. and D. Ward, "Generic Application of 2908 Bidirectional Forwarding Detection (BFD)", RFC 5882, 2909 DOI 10.17487/RFC5882, June 2010, 2910 . 2912 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2913 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 2914 June 2010, . 2916 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 2917 "Bidirectional Forwarding Detection (BFD) for MPLS Label 2918 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 2919 June 2010, . 2921 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 2922 Forwarding Detection (BFD) for the Pseudowire Virtual 2923 Circuit Connectivity Verification (VCCV)", RFC 5885, 2924 DOI 10.17487/RFC5885, June 2010, 2925 . 2927 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2928 the Network Configuration Protocol (NETCONF)", RFC 6020, 2929 DOI 10.17487/RFC6020, October 2010, 2930 . 2932 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2933 and A. Bierman, Ed., "Network Configuration Protocol 2934 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2935 . 2937 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2938 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2939 . 2941 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2942 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2943 . 2945 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 2946 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 2947 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 2948 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 2949 2014, . 2951 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2952 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2953 . 2955 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 2956 Zhang, "YANG Data Model for Key Chains", RFC 8177, 2957 DOI 10.17487/RFC8177, June 2017, 2958 . 2960 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2961 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2962 . 2964 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2965 Access Control Model", STD 91, RFC 8341, 2966 DOI 10.17487/RFC8341, March 2018, 2967 . 2969 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2970 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2971 . 2973 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 2974 RFC 8344, DOI 10.17487/RFC8344, March 2018, 2975 . 2977 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2978 Routing Management (NMDA Version)", RFC 8349, 2979 DOI 10.17487/RFC8349, March 2018, 2980 . 2982 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2983 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2984 . 2986 [RFC8960] Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A 2987 YANG Data Model for MPLS Base", RFC 8960, 2988 DOI 10.17487/RFC8960, December 2020, 2989 . 2991 [RFC9127] Rahman, R., Zheng, L., Jethanandani, M., Pallagatti, S., 2992 and G. Mirsky, "YANG Data Model for Bidirectional 2993 Forwarding Detection (BFD)", RFC 9127, 2994 DOI 10.17487/RFC9127, October 2021, 2995 . 2997 6.2. Informative References 2999 [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol 3000 Label Switching Architecture", RFC 3031, 3001 DOI 10.17487/RFC3031, January 2001, 3002 . 3004 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 3005 and R. Wilton, "Network Management Datastore Architecture 3006 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 3007 . 3009 [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3010 Liu, "YANG Data Model for Network Instances", RFC 8529, 3011 DOI 10.17487/RFC8529, March 2019, 3012 . 3014 [RFC8530] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3015 Liu, "YANG Model for Logical Network Elements", RFC 8530, 3016 DOI 10.17487/RFC8530, March 2019, 3017 . 3019 [RFC8532] Kumar, D., Wang, Z., Wu, Q., Ed., Rahman, R., and S. 3020 Raghavan, "Generic YANG Data Model for the Management of 3021 Operations, Administration, and Maintenance (OAM) 3022 Protocols That Use Connectionless Communications", 3023 RFC 8532, DOI 10.17487/RFC8532, April 2019, 3024 . 3026 [W3C.REC-xml-20081126] 3027 Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and 3028 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth 3029 Edition)", World Wide Web Consortium Recommendation REC- 3030 xml-20081126, November 2008, 3031 . 3033 Appendix A. Echo Function Configuration Example 3035 As mentioned in Section 2.1.2, the mechanism to start and stop the 3036 Echo function, as defined in [RFC5880] and discussed in [RFC5881], is 3037 implementation specific. In this appendix, we provide an example of 3038 how the Echo function can be implemented via configuration. 3040 module: example-bfd-echo 3041 augment /rt:routing/rt:control-plane-protocols 3042 /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh 3043 /bfd-ip-sh:sessions: 3044 +--rw echo {bfd-types:echo-mode}? 3045 +--rw desired-min-echo-tx-interval? uint32 3046 +--rw required-min-echo-rx-interval? uint32 3048 A.1. Example YANG Module for BFD Echo Function Configuration 3050 This appendix provides an example YANG module for configuration of 3051 the BFD Echo function. It imports and augments "/routing/control- 3052 plane-protocols/control-plane-protocol" from [RFC8349], and it 3053 references [RFC5880]. 3055 module example-bfd-echo { 3056 namespace "tag:example.com,2021:example-bfd-echo"; 3057 prefix example-bfd-echo; 3059 import ietf-bfd-types { 3060 prefix bfd-types; 3061 } 3062 import ietf-bfd { 3063 prefix bfd; 3064 } 3065 import ietf-bfd-ip-sh { 3066 prefix bfd-ip-sh; 3067 } 3068 import ietf-routing { 3069 prefix rt; 3070 } 3072 organization 3073 "IETF BFD Working Group"; 3074 contact 3075 "WG Web: 3076 WG List: 3078 Editor: Reshad Rahman 3079 3081 Editor: Lianshu Zheng 3082 3084 Editor: Mahesh Jethanandani 3085 "; 3086 description 3087 "This module contains an example YANG augmentation for 3088 configuration of the BFD Echo function. 3090 Copyright (c) 2021 IETF Trust and the persons identified as 3091 authors of the code. All rights reserved. 3093 Redistribution and use in source and binary forms, with or 3094 without modification, is permitted pursuant to, and subject to 3095 the license terms contained in, the Revised BSD License set 3096 forth in Section 4.c of the IETF Trust's Legal Provisions 3097 Relating to IETF Documents 3098 (https://trustee.ietf.org/license-info). 3100 This version of this YANG module is part of RFC 9127; see the 3101 RFC itself for full legal notices."; 3103 revision 2021-09-03 { 3104 description 3105 "Initial revision."; 3106 reference 3107 "RFC 9127: YANG Data Model for Bidirectional Forwarding 3108 Detection (BFD)"; 3109 } 3111 /* 3112 * Groupings 3113 */ 3115 grouping echo-cfg-parms { 3116 description 3117 "BFD grouping for Echo configuration parameters."; 3118 leaf desired-min-echo-tx-interval { 3119 type uint32; 3120 units "microseconds"; 3121 default "0"; 3122 description 3123 "This is the minimum interval that the local system would 3124 like to use when transmitting BFD Echo packets. If 0, 3125 the Echo function as defined in BFD (RFC 5880) is 3126 disabled."; 3127 } 3128 leaf required-min-echo-rx-interval { 3129 type uint32; 3130 units "microseconds"; 3131 default "0"; 3132 description 3133 "This is the Required Min Echo RX Interval as defined in BFD 3134 (RFC 5880)."; 3135 } 3136 } 3138 augment "/rt:routing/rt:control-plane-protocols/" 3139 + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" 3140 + "bfd-ip-sh:sessions" { 3141 description 3142 "Augmentation for the BFD Echo function."; 3143 container echo { 3144 if-feature "bfd-types:echo-mode"; 3145 description 3146 "BFD Echo function container."; 3147 uses echo-cfg-parms; 3148 } 3149 } 3150 } 3152 Acknowledgments 3154 We would like to thank Nobo Akiya and Jeff Haas for their 3155 encouragement on this work. We would also like to thank Tom Petch 3156 for his comments on the document. We would also like to thank Acee 3157 Lindem for his guidance. Thanks also to Jürgen Schönwälder, who was 3158 instrumental in improving the YANG modules. 3160 Updates since RFC 9127 3162 This version of the draft updates the 'ietf-bfd-types' module to 3163 define a new feature called 'client-base-cfg-parms and a 'if-feature' 3164 statement that conditionally includes definition of parameters such 3165 as 'multiplier' or 'desired-min-tx-interval'. The feature statement 3166 allows YANG implementations of protocol such as OSPF, ISIS, PIM and 3167 BGP, to support both a model where such parameters are not needed, 3168 such as when multiple BFD sessions are supported over a given 3169 interface, as well as when they need to be defined per session. As a 3170 result, the BFD MPLS module has to use the base-cfg-parms instead of 3171 client-cfg-parms to be able to include all the parameters 3172 unconditionally. 3174 The iana-bfd-types module, created in RFC 9127, was delegated to IANA 3175 for maintenance. No changes are requested from IANA as part of this 3176 update. 3178 Authors' Addresses 3180 Mahesh Jethanandani (editor) 3181 Xoriant Corporation 3182 1248 Reamwood Ave 3183 Sunnyvale, California 94089 3184 United States of America 3185 Email: mjethanandani@gmail.com 3187 Reshad Rahman (editor) 3188 Canada 3189 Email: reshad@yahoo.com 3191 Lianshu Zheng (editor) 3192 Huawei Technologies 3193 China 3194 Email: veronique_cheng@hotmail.com 3196 Santosh Pallagatti 3197 VMware 3198 India 3199 Email: santosh.pallagatti@gmail.com 3201 Greg Mirsky 3202 Ericsson 3203 Email: gregimirsky@gmail.com