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