idnits 2.17.00 (12 Aug 2021) /tmp/idnits16152/draft-ietf-bfd-rfc9127-bis-02.txt: -(3140): 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 (11 February 2022) is 98 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: 15 August 2022 L. Zheng, Ed. 7 Huawei Technologies 8 S. Pallagatti 9 VMware 10 G. Mirsky 11 Ericsson 12 11 February 2022 14 YANG Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-rfc9127-bis-02 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 15 August 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 . . . . . . . . . . . . . . . 40 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-02-11.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-02-11 { 993 description 994 "This revision is non-backwards compatible with the 995 previous version of this model. 997 This revision adds an 'if-feature' statement called 998 'client-base-cfg-parms' for client configuration parameters. 999 Clients expecting to use those parameters now need to 1000 verify that the server declares support of the feature 1001 before depending on the presence of the parameters. 1003 The change was introduced for clients that do not need 1004 them, and have to deviate to prevent them from being 1005 included."; 1006 reference 1007 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1008 Detection (BFD)."; 1009 } 1010 revision 2021-10-21 { 1011 description 1012 "Initial revision."; 1013 reference 1014 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1015 Detection (BFD)"; 1016 } 1018 /* 1019 * Feature definitions 1020 */ 1022 feature single-minimum-interval { 1023 description 1024 "This feature indicates that the server supports configuration 1025 of one minimum interval value that is used for both transmit 1026 and receive minimum intervals."; 1027 } 1029 feature authentication { 1030 description 1031 "This feature indicates that the server supports BFD 1032 authentication."; 1033 reference 1034 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1035 Section 6.7"; 1036 } 1038 feature demand-mode { 1039 description 1040 "This feature indicates that the server supports BFD Demand 1041 mode."; 1042 reference 1043 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1044 Section 6.6"; 1045 } 1047 feature echo-mode { 1048 description 1049 "This feature indicates that the server supports BFD Echo 1050 mode."; 1051 reference 1052 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1053 Section 6.4"; 1054 } 1056 feature client-base-cfg-parms { 1057 description 1058 "This feature allows protocol models to configure BFD client 1059 session parameters."; 1060 reference 1061 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1062 Detection (BFD)."; 1063 } 1065 /* 1066 * Identity definitions 1067 */ 1069 identity bfdv1 { 1070 base rt:control-plane-protocol; 1071 description 1072 "BFD protocol version 1."; 1073 reference 1074 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1075 } 1077 identity path-type { 1078 description 1079 "Base identity for the BFD path type. The path type indicates 1080 the type of path on which BFD is running."; 1081 } 1083 identity path-ip-sh { 1084 base path-type; 1085 description 1086 "BFD on IP single-hop."; 1087 reference 1088 "RFC 5881: Bidirectional Forwarding Detection (BFD) 1089 for IPv4 and IPv6 (Single Hop)"; 1090 } 1092 identity path-ip-mh { 1093 base path-type; 1094 description 1095 "BFD on IP multihop paths."; 1096 reference 1097 "RFC 5883: Bidirectional Forwarding Detection (BFD) for 1098 Multihop Paths"; 1099 } 1100 identity path-mpls-te { 1101 base path-type; 1102 description 1103 "BFD on MPLS Traffic Engineering."; 1104 reference 1105 "RFC 5884: Bidirectional Forwarding Detection (BFD) 1106 for MPLS Label Switched Paths (LSPs)"; 1107 } 1109 identity path-mpls-lsp { 1110 base path-type; 1111 description 1112 "BFD on an MPLS Label Switched Path."; 1113 reference 1114 "RFC 5884: Bidirectional Forwarding Detection (BFD) 1115 for MPLS Label Switched Paths (LSPs)"; 1116 } 1118 identity path-lag { 1119 base path-type; 1120 description 1121 "Micro-BFD on LAG member links."; 1122 reference 1123 "RFC 7130: Bidirectional Forwarding Detection (BFD) on 1124 Link Aggregation Group (LAG) Interfaces"; 1125 } 1127 identity encap-type { 1128 description 1129 "Base identity for BFD encapsulation type."; 1130 } 1132 identity encap-ip { 1133 base encap-type; 1134 description 1135 "BFD with IP encapsulation."; 1136 } 1138 /* 1139 * Type definitions 1140 */ 1142 typedef discriminator { 1143 type uint32; 1144 description 1145 "BFD Discriminator as described in RFC 5880."; 1146 reference 1147 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1149 } 1151 typedef state { 1152 type enumeration { 1153 enum adminDown { 1154 value 0; 1155 description 1156 "'adminDown' state."; 1157 } 1158 enum down { 1159 value 1; 1160 description 1161 "'Down' state."; 1162 } 1163 enum init { 1164 value 2; 1165 description 1166 "'Init' state."; 1167 } 1168 enum up { 1169 value 3; 1170 description 1171 "'Up' state."; 1172 } 1173 } 1174 description 1175 "BFD states as defined in RFC 5880."; 1176 } 1178 typedef multiplier { 1179 type uint8 { 1180 range "1..255"; 1181 } 1182 description 1183 "BFD multiplier as described in RFC 5880."; 1184 } 1186 typedef hops { 1187 type uint8 { 1188 range "1..255"; 1189 } 1190 description 1191 "This corresponds to Time To Live for IPv4 and corresponds to 1192 the hop limit for IPv6."; 1193 } 1195 /* 1196 * Groupings 1197 */ 1199 grouping auth-parms { 1200 description 1201 "Grouping for BFD authentication parameters 1202 (see Section 6.7 of RFC 5880)."; 1203 container authentication { 1204 if-feature "authentication"; 1205 presence "Enables BFD authentication (see Section 6.7 1206 of RFC 5880)."; 1207 description 1208 "Parameters for BFD authentication."; 1209 reference 1210 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1211 Section 6.7"; 1212 leaf key-chain { 1213 type key-chain:key-chain-ref; 1214 description 1215 "Name of the 'key-chain' as per RFC 8177."; 1216 } 1217 leaf meticulous { 1218 type boolean; 1219 description 1220 "Enables a meticulous mode as per Section 6.7 of 1221 RFC 5880."; 1222 } 1223 } 1224 } 1226 grouping base-cfg-parms { 1227 description 1228 "BFD grouping for base configuration parameters."; 1229 leaf local-multiplier { 1230 type multiplier; 1231 default "3"; 1232 description 1233 "Multiplier transmitted by the local system."; 1234 } 1235 choice interval-config-type { 1236 default "tx-rx-intervals"; 1237 description 1238 "Two interval values or one value used for both transmit and 1239 receive."; 1240 case tx-rx-intervals { 1241 leaf desired-min-tx-interval { 1242 type uint32; 1243 units "microseconds"; 1244 default "1000000"; 1245 description 1246 "Desired minimum transmit interval of control packets."; 1247 } 1248 leaf required-min-rx-interval { 1249 type uint32; 1250 units "microseconds"; 1251 default "1000000"; 1252 description 1253 "Required minimum receive interval of control packets."; 1254 } 1255 } 1256 case single-interval { 1257 if-feature "single-minimum-interval"; 1258 leaf min-interval { 1259 type uint32; 1260 units "microseconds"; 1261 default "1000000"; 1262 description 1263 "Desired minimum transmit interval and required 1264 minimum receive interval of control packets."; 1265 } 1266 } 1267 } 1268 } 1270 grouping client-cfg-parms { 1271 description 1272 "BFD grouping for configuration parameters 1273 used by BFD clients, e.g., IGP or MPLS."; 1274 leaf enabled { 1275 type boolean; 1276 default "false"; 1277 description 1278 "Indicates whether BFD is enabled."; 1279 } 1280 uses base-cfg-parms { 1281 if-feature "client-base-cfg-parms"; 1282 } 1283 } 1285 grouping common-cfg-parms { 1286 description 1287 "BFD grouping for common configuration parameters."; 1288 uses base-cfg-parms; 1289 leaf demand-enabled { 1290 if-feature "demand-mode"; 1291 type boolean; 1292 default "false"; 1293 description 1294 "To enable Demand mode."; 1295 } 1296 leaf admin-down { 1297 type boolean; 1298 default "false"; 1299 description 1300 "Indicates whether the BFD session is administratively 1301 down."; 1302 } 1303 uses auth-parms; 1304 } 1306 grouping all-session { 1307 description 1308 "BFD session operational information."; 1309 leaf path-type { 1310 type identityref { 1311 base path-type; 1312 } 1313 config false; 1314 description 1315 "BFD path type. This indicates the path type that BFD is 1316 running on."; 1317 } 1318 leaf ip-encapsulation { 1319 type boolean; 1320 config false; 1321 description 1322 "Indicates whether BFD encapsulation uses IP."; 1323 } 1324 leaf local-discriminator { 1325 type discriminator; 1326 config false; 1327 description 1328 "Local discriminator."; 1329 } 1330 leaf remote-discriminator { 1331 type discriminator; 1332 config false; 1333 description 1334 "Remote discriminator."; 1335 } 1336 leaf remote-multiplier { 1337 type multiplier; 1338 config false; 1339 description 1340 "Remote multiplier."; 1342 } 1343 leaf demand-capability { 1344 if-feature "demand-mode"; 1345 type boolean; 1346 config false; 1347 description 1348 "Local Demand mode capability."; 1349 } 1350 leaf source-port { 1351 when "../ip-encapsulation = 'true'" { 1352 description 1353 "Source port valid only when IP encapsulation is used."; 1354 } 1355 type inet:port-number; 1356 config false; 1357 description 1358 "Source UDP port."; 1359 } 1360 leaf dest-port { 1361 when "../ip-encapsulation = 'true'" { 1362 description 1363 "Destination port valid only when IP encapsulation 1364 is used."; 1365 } 1366 type inet:port-number; 1367 config false; 1368 description 1369 "Destination UDP port."; 1370 } 1371 container session-running { 1372 config false; 1373 description 1374 "BFD 'session-running' information."; 1375 leaf session-index { 1376 type uint32; 1377 description 1378 "An index used to uniquely identify BFD sessions."; 1379 } 1380 leaf local-state { 1381 type state; 1382 description 1383 "Local state."; 1384 } 1385 leaf remote-state { 1386 type state; 1387 description 1388 "Remote state."; 1389 } 1390 leaf local-diagnostic { 1391 type iana-bfd-types:diagnostic; 1392 description 1393 "Local diagnostic."; 1394 } 1395 leaf remote-diagnostic { 1396 type iana-bfd-types:diagnostic; 1397 description 1398 "Remote diagnostic."; 1399 } 1400 leaf remote-authenticated { 1401 type boolean; 1402 description 1403 "Indicates whether incoming BFD control packets are 1404 authenticated."; 1405 } 1406 leaf remote-authentication-type { 1407 when "../remote-authenticated = 'true'" { 1408 description 1409 "Only valid when incoming BFD control packets are 1410 authenticated."; 1411 } 1412 if-feature "authentication"; 1413 type iana-bfd-types:auth-type; 1414 description 1415 "Authentication type of incoming BFD control packets."; 1416 } 1417 leaf detection-mode { 1418 type enumeration { 1419 enum async-with-echo { 1420 value 1; 1421 description 1422 "Async with echo."; 1423 } 1424 enum async-without-echo { 1425 value 2; 1426 description 1427 "Async without echo."; 1428 } 1429 enum demand-with-echo { 1430 value 3; 1431 description 1432 "Demand with echo."; 1433 } 1434 enum demand-without-echo { 1435 value 4; 1436 description 1437 "Demand without echo."; 1439 } 1440 } 1441 description 1442 "Detection mode."; 1443 } 1444 leaf negotiated-tx-interval { 1445 type uint32; 1446 units "microseconds"; 1447 description 1448 "Negotiated transmit interval."; 1449 } 1450 leaf negotiated-rx-interval { 1451 type uint32; 1452 units "microseconds"; 1453 description 1454 "Negotiated receive interval."; 1455 } 1456 leaf detection-time { 1457 type uint32; 1458 units "microseconds"; 1459 description 1460 "Detection time."; 1461 } 1462 leaf echo-tx-interval-in-use { 1463 when "../../path-type = 'bfd-types:path-ip-sh'" { 1464 description 1465 "Echo is supported for IP single-hop only."; 1466 } 1467 if-feature "echo-mode"; 1468 type uint32; 1469 units "microseconds"; 1470 description 1471 "Echo transmit interval in use."; 1472 } 1473 } 1474 container session-statistics { 1475 config false; 1476 description 1477 "BFD per-session statistics."; 1478 leaf create-time { 1479 type yang:date-and-time; 1480 description 1481 "Time and date when this session was created."; 1482 } 1483 leaf last-down-time { 1484 type yang:date-and-time; 1485 description 1486 "Time and date of the last time this session went down."; 1488 } 1489 leaf last-up-time { 1490 type yang:date-and-time; 1491 description 1492 "Time and date of the last time this session went up."; 1493 } 1494 leaf down-count { 1495 type yang:counter32; 1496 description 1497 "The number of times this session has transitioned to the 1498 'down' state."; 1499 } 1500 leaf admin-down-count { 1501 type yang:counter32; 1502 description 1503 "The number of times this session has transitioned to the 1504 'admin-down' state."; 1505 } 1506 leaf receive-packet-count { 1507 type yang:counter64; 1508 description 1509 "Count of received packets in this session. This includes 1510 valid and invalid received packets."; 1511 } 1512 leaf send-packet-count { 1513 type yang:counter64; 1514 description 1515 "Count of sent packets in this session."; 1516 } 1517 leaf receive-invalid-packet-count { 1518 type yang:counter64; 1519 description 1520 "Count of invalid received packets in this session."; 1521 } 1522 leaf send-failed-packet-count { 1523 type yang:counter64; 1524 description 1525 "Count of packets that failed to be sent in this session."; 1526 } 1527 } 1528 } 1530 grouping session-statistics-summary { 1531 description 1532 "Grouping for session statistics summary."; 1533 container summary { 1534 config false; 1535 description 1536 "BFD session statistics summary."; 1537 leaf number-of-sessions { 1538 type yang:gauge32; 1539 description 1540 "Number of BFD sessions."; 1541 } 1542 leaf number-of-sessions-up { 1543 type yang:gauge32; 1544 description 1545 "Number of BFD sessions currently in the 'Up' state 1546 (as defined in RFC 5880)."; 1547 } 1548 leaf number-of-sessions-down { 1549 type yang:gauge32; 1550 description 1551 "Number of BFD sessions currently in the 'Down' or 'Init' 1552 state but not 'adminDown' (as defined in RFC 5880)."; 1553 } 1554 leaf number-of-sessions-admin-down { 1555 type yang:gauge32; 1556 description 1557 "Number of BFD sessions currently in the 'adminDown' state 1558 (as defined in RFC 5880)."; 1559 } 1560 } 1561 } 1563 grouping notification-parms { 1564 description 1565 "This group describes common parameters that will be sent 1566 as part of BFD notifications."; 1567 leaf local-discr { 1568 type discriminator; 1569 description 1570 "BFD local discriminator."; 1571 } 1572 leaf remote-discr { 1573 type discriminator; 1574 description 1575 "BFD remote discriminator."; 1576 } 1577 leaf new-state { 1578 type state; 1579 description 1580 "Current BFD state."; 1581 } 1582 leaf state-change-reason { 1583 type iana-bfd-types:diagnostic; 1584 description 1585 "Reason for the BFD state change."; 1586 } 1587 leaf time-of-last-state-change { 1588 type yang:date-and-time; 1589 description 1590 "Calendar time of the most recent previous state change."; 1591 } 1592 leaf dest-addr { 1593 type inet:ip-address; 1594 description 1595 "BFD peer address."; 1596 } 1597 leaf source-addr { 1598 type inet:ip-address; 1599 description 1600 "BFD local address."; 1601 } 1602 leaf session-index { 1603 type uint32; 1604 description 1605 "An index used to uniquely identify BFD sessions."; 1606 } 1607 leaf path-type { 1608 type identityref { 1609 base path-type; 1610 } 1611 description 1612 "BFD path type."; 1613 } 1614 } 1615 } 1616 1618 2.12. BFD Top-Level YANG Module 1620 This YANG module imports and augments "/routing/control-plane- 1621 protocols/control-plane-protocol" from [RFC8349]. It also references 1622 [RFC5880]. 1624 file "ietf-bfd@2022-02-11.yang" 1625 module ietf-bfd { 1626 yang-version 1.1; 1627 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 1628 prefix bfd; 1630 import ietf-bfd-types { 1631 prefix bfd-types; 1632 reference 1633 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1634 Detection (BFD)"; 1635 } 1636 import ietf-routing { 1637 prefix rt; 1638 reference 1639 "RFC 8349: A YANG Data Model for Routing Management 1640 (NMDA Version)"; 1641 } 1643 organization 1644 "IETF BFD Working Group"; 1645 contact 1646 "WG Web: 1647 WG List: 1649 Editor: Reshad Rahman 1650 1652 Editor: Lianshu Zheng 1653 1655 Editor: Mahesh Jethanandani 1656 "; 1657 description 1658 "This module contains the YANG definition for BFD parameters as 1659 per RFC 5880. 1661 Copyright (c) 2021 IETF Trust and the persons identified as 1662 authors of the code. All rights reserved. 1664 Redistribution and use in source and binary forms, with or 1665 without modification, is permitted pursuant to, and subject to 1666 the license terms contained in, the Simplified BSD License set 1667 forth in Section 4.c of the IETF Trust's Legal Provisions 1668 Relating to IETF Documents 1669 (https://trustee.ietf.org/license-info). 1671 This version of this YANG module is part of RFC 9127; see the 1672 RFC itself for full legal notices."; 1673 reference 1674 "RFC 5880: Bidirectional Forwarding Detection (BFD) 1675 RFC 9127: YANG Data Model for Bidirectional Forwarding 1676 Detection (BFD)"; 1678 revision 2022-02-11 { 1679 description 1680 "Updating reference to RFC XXXX."; 1681 reference 1682 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1683 Detection (BFD)."; 1684 } 1685 revision 2021-10-21 { 1686 description 1687 "Initial revision."; 1688 reference 1689 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1690 Detection (BFD)"; 1691 } 1693 augment "/rt:routing/rt:control-plane-protocols/" 1694 + "rt:control-plane-protocol" { 1695 when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { 1696 description 1697 "This augmentation is only valid for a control-plane protocol 1698 instance of BFD (type 'bfdv1')."; 1699 } 1700 description 1701 "BFD augmentation."; 1702 container bfd { 1703 description 1704 "BFD top-level container."; 1705 uses bfd-types:session-statistics-summary; 1706 } 1707 } 1708 } 1709 1711 2.13. BFD IP Single-Hop YANG Module 1713 This YANG module imports "interface-ref" from [RFC8343] and typedefs 1714 from [RFC6991]. It also imports and augments "/routing/control- 1715 plane-protocols/control-plane-protocol" from [RFC8349], and it 1716 references [RFC5881]. 1718 file "ietf-bfd-ip-sh@2022-02-11.yang" 1719 module ietf-bfd-ip-sh { 1720 yang-version 1.1; 1721 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1722 prefix bfd-ip-sh; 1724 import ietf-bfd-types { 1725 prefix bfd-types; 1726 reference 1727 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1728 Detection (BFD)"; 1729 } 1730 import ietf-bfd { 1731 prefix bfd; 1732 reference 1733 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1734 Detection (BFD)"; 1735 } 1736 import ietf-interfaces { 1737 prefix if; 1738 reference 1739 "RFC 8343: A YANG Data Model for Interface Management"; 1740 } 1741 import ietf-inet-types { 1742 prefix inet; 1743 reference 1744 "RFC 6991: Common YANG Data Types"; 1745 } 1746 import ietf-routing { 1747 prefix rt; 1748 reference 1749 "RFC 8349: A YANG Data Model for Routing Management 1750 (NMDA Version)"; 1751 } 1753 organization 1754 "IETF BFD Working Group"; 1755 contact 1756 "WG Web: 1757 WG List: 1759 Editor: Reshad Rahman 1760 1762 Editor: Lianshu Zheng 1763 1765 Editor: Mahesh Jethanandani 1766 "; 1767 description 1768 "This module contains the YANG definition for BFD IP single-hop 1769 as per RFC 5881. 1771 Copyright (c) 2021 IETF Trust and the persons identified as 1772 authors of the code. All rights reserved. 1774 Redistribution and use in source and binary forms, with or 1775 without modification, is permitted pursuant to, and subject to 1776 the license terms contained in, the Simplified BSD License set 1777 forth in Section 4.c of the IETF Trust's Legal Provisions 1778 Relating to IETF Documents 1779 (https://trustee.ietf.org/license-info). 1781 This version of this YANG module is part of RFC 9127; see the 1782 RFC itself for full legal notices."; 1783 reference 1784 "RFC 5881: Bidirectional Forwarding Detection (BFD) 1785 for IPv4 and IPv6 (Single Hop) 1786 RFC 9127: YANG Data Model for Bidirectional Forwarding 1787 Detection (BFD)"; 1789 revision 2022-02-11 { 1790 description 1791 "Updating reference to RFC XXXX."; 1792 reference 1793 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1794 Detection (BFD)."; 1795 } 1796 revision 2021-10-21 { 1797 description 1798 "Initial revision."; 1799 reference 1800 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1801 Detection (BFD)"; 1802 } 1804 /* 1805 * Augments 1806 */ 1808 augment "/rt:routing/rt:control-plane-protocols/" 1809 + "rt:control-plane-protocol/bfd:bfd" { 1810 description 1811 "BFD augmentation for IP single-hop."; 1812 container ip-sh { 1813 description 1814 "BFD IP single-hop top-level container."; 1815 uses bfd-types:session-statistics-summary; 1816 container sessions { 1817 description 1818 "BFD IP single-hop sessions."; 1819 list session { 1820 key "interface dest-addr"; 1821 description 1822 "List of IP single-hop sessions."; 1823 leaf interface { 1824 type if:interface-ref; 1825 description 1826 "Interface on which the BFD session is running."; 1827 } 1828 leaf dest-addr { 1829 type inet:ip-address; 1830 description 1831 "IP address of the peer."; 1832 } 1833 leaf source-addr { 1834 type inet:ip-address; 1835 description 1836 "Local IP address."; 1837 } 1838 uses bfd-types:common-cfg-parms; 1839 uses bfd-types:all-session; 1840 } 1841 } 1842 list interfaces { 1843 key "interface"; 1844 description 1845 "List of interfaces."; 1846 leaf interface { 1847 type if:interface-ref; 1848 description 1849 "BFD information for this interface."; 1850 } 1851 uses bfd-types:auth-parms; 1852 } 1853 } 1854 } 1856 /* 1857 * Notifications 1858 */ 1860 notification singlehop-notification { 1861 description 1862 "Notification for BFD single-hop session state change. An 1863 implementation may rate-limit notifications, e.g., when a 1864 session is continuously changing state."; 1865 uses bfd-types:notification-parms; 1866 leaf interface { 1867 type if:interface-ref; 1868 description 1869 "Interface to which this BFD session belongs."; 1871 } 1872 leaf echo-enabled { 1873 type boolean; 1874 description 1875 "Indicates whether Echo was enabled for BFD."; 1876 } 1877 } 1878 } 1879 1881 2.14. BFD IP Multihop YANG Module 1883 This YANG module imports typedefs from [RFC6991]. It also imports 1884 and augments "/routing/control-plane-protocols/control-plane- 1885 protocol" from [RFC8349], and it references [RFC5883]. 1887 file "ietf-bfd-ip-mh@2022-02-11.yang" 1888 module ietf-bfd-ip-mh { 1889 yang-version 1.1; 1890 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 1891 prefix bfd-ip-mh; 1893 import ietf-bfd-types { 1894 prefix bfd-types; 1895 reference 1896 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1897 Detection (BFD)"; 1898 } 1899 import ietf-bfd { 1900 prefix bfd; 1901 reference 1902 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1903 Detection (BFD)"; 1904 } 1905 import ietf-inet-types { 1906 prefix inet; 1907 reference 1908 "RFC 6991: Common YANG Data Types"; 1909 } 1910 import ietf-routing { 1911 prefix rt; 1912 reference 1913 "RFC 8349: A YANG Data Model for Routing Management 1914 (NMDA Version)"; 1915 } 1917 organization 1918 "IETF BFD Working Group"; 1919 contact 1920 "WG Web: 1921 WG List: 1923 Editor: Reshad Rahman 1924 1926 Editor: Lianshu Zheng 1927 1929 Editor: Mahesh Jethanandani 1930 "; 1931 description 1932 "This module contains the YANG definition for BFD IP multihop 1933 as per RFC 5883. 1935 Copyright (c) 2021 IETF Trust and the persons identified as 1936 authors of the code. All rights reserved. 1938 Redistribution and use in source and binary forms, with or 1939 without modification, is permitted pursuant to, and subject to 1940 the license terms contained in, the Simplified BSD License set 1941 forth in Section 4.c of the IETF Trust's Legal Provisions 1942 Relating to IETF Documents 1943 (https://trustee.ietf.org/license-info). 1945 This version of this YANG module is part of RFC 9127; see the 1946 RFC itself for full legal notices."; 1947 reference 1948 "RFC 5883: Bidirectional Forwarding Detection (BFD) for 1949 Multihop Paths 1950 RFC 9127: YANG Data Model for Bidirectional Forwarding 1951 Detection (BFD)"; 1953 revision 2022-02-11 { 1954 description 1955 "Updating reference to RFC XXXX."; 1956 reference 1957 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1958 Detection (BFD)."; 1959 } 1960 revision 2021-10-21 { 1961 description 1962 "Initial revision."; 1963 reference 1964 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1965 Detection (BFD)"; 1967 } 1969 /* 1970 * Augments 1971 */ 1973 augment "/rt:routing/rt:control-plane-protocols/" 1974 + "rt:control-plane-protocol/bfd:bfd" { 1975 description 1976 "BFD augmentation for IP multihop."; 1977 container ip-mh { 1978 description 1979 "BFD IP multihop top-level container."; 1980 uses bfd-types:session-statistics-summary; 1981 container session-groups { 1982 description 1983 "BFD IP multihop session groups."; 1984 list session-group { 1985 key "source-addr dest-addr"; 1986 description 1987 "Group of BFD IP multihop sessions (for ECMP). A 1988 group of sessions is between one source and one 1989 destination. Each session has a different field 1990 in the UDP/IP header for ECMP."; 1991 leaf source-addr { 1992 type inet:ip-address; 1993 description 1994 "Local IP address."; 1995 } 1996 leaf dest-addr { 1997 type inet:ip-address; 1998 description 1999 "IP address of the peer."; 2000 } 2001 uses bfd-types:common-cfg-parms; 2002 leaf tx-ttl { 2003 type bfd-types:hops; 2004 default "255"; 2005 description 2006 "Hop count of outgoing BFD control packets."; 2007 } 2008 leaf rx-ttl { 2009 type bfd-types:hops; 2010 mandatory true; 2011 description 2012 "Minimum allowed hop count value for incoming BFD 2013 control packets. Control packets whose hop count is 2014 lower than this value are dropped."; 2016 } 2017 list sessions { 2018 config false; 2019 description 2020 "The multiple BFD sessions between a source and a 2021 destination."; 2022 uses bfd-types:all-session; 2023 } 2024 } 2025 } 2026 } 2027 } 2029 /* 2030 * Notifications 2031 */ 2033 notification multihop-notification { 2034 description 2035 "Notification for BFD multihop session state change. An 2036 implementation may rate-limit notifications, e.g., when a 2037 session is continuously changing state."; 2038 uses bfd-types:notification-parms; 2039 } 2040 } 2041 2043 2.15. BFD-over-LAG YANG Module 2045 This YANG module imports "interface-ref" from [RFC8343] and typedefs 2046 from [RFC6991]. It also imports and augments "/routing/control- 2047 plane-protocols/control-plane-protocol" from [RFC8349]. 2048 Additionally, it references [RFC7130]. 2050 file "ietf-bfd-lag@2022-02-11.yang" 2051 module ietf-bfd-lag { 2052 yang-version 1.1; 2053 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 2054 prefix bfd-lag; 2056 import ietf-bfd-types { 2057 prefix bfd-types; 2058 reference 2059 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2060 Detection (BFD)"; 2061 } 2062 import ietf-bfd { 2063 prefix bfd; 2064 reference 2065 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2066 Detection (BFD)"; 2067 } 2068 import ietf-interfaces { 2069 prefix if; 2070 reference 2071 "RFC 8343: A YANG Data Model for Interface Management"; 2072 } 2073 import ietf-inet-types { 2074 prefix inet; 2075 reference 2076 "RFC 6991: Common YANG Data Types"; 2077 } 2078 import ietf-routing { 2079 prefix rt; 2080 reference 2081 "RFC 8349: A YANG Data Model for Routing Management 2082 (NMDA Version)"; 2083 } 2085 organization 2086 "IETF BFD Working Group"; 2087 contact 2088 "WG Web: 2089 WG List: 2091 Editor: Reshad Rahman 2092 2094 Editor: Lianshu Zheng 2095 2097 Editor: Mahesh Jethanandani 2098 "; 2099 description 2100 "This module contains the YANG definition for BFD-over-LAG 2101 interfaces as per RFC 7130. 2103 Copyright (c) 2021 IETF Trust and the persons identified as 2104 authors of the code. All rights reserved. 2106 Redistribution and use in source and binary forms, with or 2107 without modification, is permitted pursuant to, and subject to 2108 the license terms contained in, the Simplified BSD License set 2109 forth in Section 4.c of the IETF Trust's Legal Provisions 2110 Relating to IETF Documents 2111 (https://trustee.ietf.org/license-info). 2113 This version of this YANG module is part of RFC 9127; see the 2114 RFC itself for full legal notices."; 2115 reference 2116 "RFC 7130: Bidirectional Forwarding Detection (BFD) on 2117 Link Aggregation Group (LAG) Interfaces 2118 RFC 9127: YANG Data Model for Bidirectional Forwarding 2119 Detection (BFD)"; 2121 revision 2022-02-11 { 2122 description 2123 "Updating reference to RFC XXXX."; 2124 reference 2125 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2126 Detection (BFD)."; 2127 } 2128 revision 2021-10-21 { 2129 description 2130 "Initial revision."; 2131 reference 2132 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2133 Detection (BFD)"; 2134 } 2136 /* 2137 * Augments 2138 */ 2140 augment "/rt:routing/rt:control-plane-protocols/" 2141 + "rt:control-plane-protocol/bfd:bfd" { 2142 description 2143 "BFD augmentation for a LAG."; 2144 container lag { 2145 description 2146 "BFD-over-LAG top-level container."; 2147 container micro-bfd-ipv4-session-statistics { 2148 description 2149 "Micro-BFD IPv4 session counters."; 2150 uses bfd-types:session-statistics-summary; 2151 } 2152 container micro-bfd-ipv6-session-statistics { 2153 description 2154 "Micro-BFD IPv6 session counters."; 2155 uses bfd-types:session-statistics-summary; 2156 } 2157 container sessions { 2158 description 2159 "BFD-over-LAG sessions."; 2160 list session { 2161 key "lag-name"; 2162 description 2163 "List of BFD-over-LAG sessions."; 2164 leaf lag-name { 2165 type if:interface-ref; 2166 description 2167 "Name of the LAG."; 2168 } 2169 leaf ipv4-dest-addr { 2170 type inet:ipv4-address; 2171 description 2172 "IPv4 address of the peer, for IPv4 micro-BFD."; 2173 } 2174 leaf ipv6-dest-addr { 2175 type inet:ipv6-address; 2176 description 2177 "IPv6 address of the peer, for IPv6 micro-BFD."; 2178 } 2179 uses bfd-types:common-cfg-parms; 2180 leaf use-ipv4 { 2181 type boolean; 2182 description 2183 "Using IPv4 micro-BFD."; 2184 } 2185 leaf use-ipv6 { 2186 type boolean; 2187 description 2188 "Using IPv6 micro-BFD."; 2189 } 2190 list member-links { 2191 key "member-link"; 2192 config false; 2193 description 2194 "Micro-BFD over a LAG. This represents one 2195 member link."; 2196 leaf member-link { 2197 type if:interface-ref; 2198 description 2199 "Member link on which micro-BFD is running."; 2200 } 2201 container micro-bfd-ipv4 { 2202 when "../../use-ipv4 = 'true'" { 2203 description 2204 "Needed only if IPv4 is used."; 2205 } 2206 description 2207 "Micro-BFD IPv4 session state on a member link."; 2208 uses bfd-types:all-session; 2209 } 2210 container micro-bfd-ipv6 { 2211 when "../../use-ipv6 = 'true'" { 2212 description 2213 "Needed only if IPv6 is used."; 2214 } 2215 description 2216 "Micro-BFD IPv6 session state on a member link."; 2217 uses bfd-types:all-session; 2218 } 2219 } 2220 } 2221 } 2222 } 2223 } 2225 /* 2226 * Notifications 2227 */ 2229 notification lag-notification { 2230 description 2231 "Notification for BFD-over-LAG session state change. 2232 An implementation may rate-limit notifications, e.g., when a 2233 session is continuously changing state."; 2234 uses bfd-types:notification-parms; 2235 leaf lag-name { 2236 type if:interface-ref; 2237 description 2238 "LAG interface name."; 2239 } 2240 leaf member-link { 2241 type if:interface-ref; 2242 description 2243 "Member link on which BFD is running."; 2244 } 2245 } 2246 } 2247 2249 2.16. BFD-over-MPLS YANG Module 2251 This YANG module imports typedefs from [RFC6991]. It also imports 2252 and augments "/routing/control-plane-protocols/control-plane- 2253 protocol" from [RFC8349]. Additionally, it references [RFC5586] and 2254 [RFC5884]. 2256 file "ietf-bfd-mpls@2022-02-11.yang" 2257 module ietf-bfd-mpls { 2258 yang-version 1.1; 2259 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 2260 prefix bfd-mpls; 2262 import ietf-bfd-types { 2263 prefix bfd-types; 2264 reference 2265 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2266 Detection (BFD)"; 2267 } 2268 import ietf-bfd { 2269 prefix bfd; 2270 reference 2271 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2272 Detection (BFD)"; 2273 } 2274 import ietf-inet-types { 2275 prefix inet; 2276 reference 2277 "RFC 6991: Common YANG Data Types"; 2278 } 2279 import ietf-routing { 2280 prefix rt; 2281 reference 2282 "RFC 8349: A YANG Data Model for Routing Management 2283 (NMDA Version)"; 2284 } 2286 organization 2287 "IETF BFD Working Group"; 2288 contact 2289 "WG Web: 2290 WG List: 2292 Editor: Reshad Rahman 2293 2295 Editor: Lianshu Zheng 2296 2298 Editor: Mahesh Jethanandani 2299 "; 2300 description 2301 "This module contains the YANG definition for BFD parameters for 2302 MPLS LSPs as per RFC 5884. 2304 Copyright (c) 2021 IETF Trust and the persons identified as 2305 authors of the code. All rights reserved. 2307 Redistribution and use in source and binary forms, with or 2308 without modification, is permitted pursuant to, and subject to 2309 the license terms contained in, the Simplified BSD License set 2310 forth in Section 4.c of the IETF Trust's Legal Provisions 2311 Relating to IETF Documents 2312 (https://trustee.ietf.org/license-info). 2314 This version of this YANG module is part of RFC 9127; see the 2315 RFC itself for full legal notices."; 2316 reference 2317 "RFC 5884: Bidirectional Forwarding Detection (BFD) 2318 for MPLS Label Switched Paths (LSPs) 2319 RFC XXXX: YANG Data Model for Bidirectional Forwarding 2320 Detection (BFD)"; 2322 revision 2022-02-11 { 2323 description 2324 "Updates to use base-cfg-parms instead of client-cfg-parms, 2325 and add the enabled flag."; 2326 reference 2327 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 2328 Detection (BFD)."; 2329 } 2330 revision 2021-10-21 { 2331 description 2332 "Initial revision."; 2333 reference 2334 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2335 Detection (BFD)"; 2336 } 2338 /* 2339 * Identity definitions 2340 */ 2342 identity encap-gach { 2343 base bfd-types:encap-type; 2344 description 2345 "BFD with G-ACh encapsulation as per RFC 5586."; 2346 reference 2347 "RFC 5586: MPLS Generic Associated Channel"; 2348 } 2350 identity encap-ip-gach { 2351 base bfd-types:encap-type; 2352 description 2353 "BFD with IP and G-ACh encapsulation as per RFC 5586."; 2354 } 2356 /* 2357 * Groupings 2358 */ 2360 grouping encap-cfg { 2361 description 2362 "Configuration for BFD encapsulation."; 2363 leaf encap { 2364 type identityref { 2365 base bfd-types:encap-type; 2366 } 2367 default "bfd-types:encap-ip"; 2368 description 2369 "BFD encapsulation."; 2370 } 2371 } 2373 grouping mpls-dest-address { 2374 description 2375 "Destination address as per RFC 5884."; 2376 reference 2377 "RFC 5884: Bidirectional Forwarding Detection (BFD) 2378 for MPLS Label Switched Paths (LSPs)"; 2379 leaf mpls-dest-address { 2380 type inet:ip-address; 2381 config false; 2382 description 2383 "Destination address as per RFC 5884. 2384 Needed if IP encapsulation is used."; 2385 } 2386 } 2388 /* 2389 * Augments 2390 */ 2392 augment "/rt:routing/rt:control-plane-protocols/" 2393 + "rt:control-plane-protocol/bfd:bfd" { 2394 description 2395 "BFD augmentation for MPLS."; 2396 container mpls { 2397 description 2398 "BFD MPLS top-level container."; 2399 uses bfd-types:session-statistics-summary; 2400 container egress { 2401 description 2402 "Egress configuration."; 2403 leaf enabled { 2404 type boolean; 2405 default "false"; 2406 description 2407 "Indicates whether BFD over MPLS is enabled."; 2408 } 2409 uses bfd-types:base-cfg-parms; 2410 uses bfd-types:auth-parms; 2411 } 2412 container session-groups { 2413 description 2414 "BFD-over-MPLS session groups."; 2415 list session-group { 2416 key "mpls-fec"; 2417 description 2418 "Group of BFD MPLS sessions (for ECMP). A group of 2419 sessions is for one FEC. Each session has a different 2420 field in the UDP/IP header for ECMP."; 2421 leaf mpls-fec { 2422 type inet:ip-prefix; 2423 description 2424 "MPLS FEC."; 2425 } 2426 uses bfd-types:common-cfg-parms; 2427 list sessions { 2428 config false; 2429 description 2430 "The BFD sessions for an MPLS FEC. The local 2431 discriminator is unique for each session in the 2432 group."; 2433 uses bfd-types:all-session; 2434 uses bfd-mpls:mpls-dest-address; 2435 } 2436 } 2437 } 2438 } 2439 } 2441 /* 2442 * Notifications 2443 */ 2445 notification mpls-notification { 2446 description 2447 "Notification for BFD-over-MPLS FEC session state change. 2449 An implementation may rate-limit notifications, e.g., when a 2450 session is continuously changing state."; 2451 uses bfd-types:notification-parms; 2452 leaf mpls-dest-address { 2453 type inet:ip-address; 2454 description 2455 "Destination address as per RFC 5884. 2456 Needed if IP encapsulation is used."; 2457 } 2458 } 2459 } 2460 2462 3. Data Model Examples 2464 This section presents some simple and illustrative examples of how to 2465 configure BFD. 2467 The examples are represented in XML [W3C.REC-xml-20081126]. 2469 3.1. IP Single-Hop 2471 The following is an example configuration for a BFD IP single-hop 2472 session. The desired transmit interval and the required receive 2473 interval are both set to 10 ms. 2475 2476 2477 2478 2479 eth0 2480 2481 ianaift:ethernetCsmacd 2482 2483 2484 2485 2486 2487 2488 2490 bfd-types:bfdv1 2491 2492 name:BFD 2493 2494 2495 2496 2497 eth0 2498 2001:db8:0:113::101 2499 2500 10000 2501 2502 2503 10000 2504 2505 2506 2507 2508 2509 2510 2511 2512 2514 3.2. IP Multihop 2516 The following is an example configuration for a BFD IP multihop 2517 session group. The desired transmit interval and the required 2518 receive interval are both set to 150 ms. 2520 2521 2522 2523 2524 2525 2527 bfd-types:bfdv1 2528 2529 name:BFD 2530 2531 2532 2533 2534 2001:db8:0:113::103 2535 2001:db8:0:114::100 2536 2537 150000 2538 2539 2540 150000 2541 2542 240 2543 2544 2545 2546 2547 2548 2549 2550 2552 3.3. LAG 2554 The following is an example of BFD configuration for a LAG session. 2555 In this case, an interface named "Bundle-Ether1" of interface type 2556 "ieee8023adLag" has a desired transmit interval and required receive 2557 interval set to 10 ms. 2559 2560 2561 2562 2563 Bundle-Ether1 2564 2565 ianaift:ieee8023adLag 2566 2567 2568 2569 2570 2571 2572 2574 bfd-types:bfdv1 2575 2576 name:BFD 2577 2578 2579 2580 2581 Bundle-Ether1 2582 2001:db8:112::16 2583 2584 100000 2585 2586 2587 100000 2588 2589 true 2590 2591 2592 2593 2594 2595 2596 2597 2599 3.4. MPLS 2601 The following is an example of BFD configured for an MPLS LSP. In 2602 this case, the desired transmit interval and required receive 2603 interval are both set to 250 ms. 2605 2606 2607 2608 2609 2610 2612 bfd-types:bfdv1 2613 2614 name:BFD 2615 2616 2617 2618 2619 2001:db8:114::/116 2620 2621 250000 2622 2623 2624 250000 2625 2626 2627 2628 2629 2630 2631 2632 2633 2635 4. Security Considerations 2637 The YANG modules specified in this document define a schema for data 2638 that is designed to be accessed via network management protocols such 2639 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2640 is the secure transport layer, and the mandatory-to-implement secure 2641 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2642 is HTTPS, and the mandatory-to-implement secure transport is TLS 2643 [RFC8446]. 2645 The Network Configuration Access Control Model (NACM) [RFC8341] 2646 provides the means to restrict access for particular NETCONF or 2647 RESTCONF users to a preconfigured subset of all available NETCONF or 2648 RESTCONF protocol operations and content. 2650 There are a number of data nodes defined in these YANG modules that 2651 are writable/creatable/deletable (i.e., config true, which is the 2652 default). These data nodes may be considered sensitive or vulnerable 2653 in some network environments. Write operations (e.g., edit-config) 2654 to these data nodes without proper protection can have a negative 2655 effect on network operations. These are the subtrees and data nodes 2656 and their sensitivity/vulnerability from a write access perspective: 2658 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2659 sessions: 2660 This list specifies the IP single-hop BFD sessions. 2662 Data nodes "local-multiplier", "desired-min-tx-interval", 2663 "required-min-rx-interval", and "min-interval" all impact the BFD 2664 IP single-hop session. The "source-addr" and "dest-addr" data 2665 nodes can be used to send BFD packets to unwitting recipients. 2666 [RFC5880] describes how BFD mitigates such threats. 2667 Authentication data nodes "key-chain" and "meticulous" impact the 2668 security of the BFD IP single-hop session. 2670 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2671 session-group: 2672 This list specifies the IP multihop BFD session groups. 2674 Data nodes "local-multiplier", "desired-min-tx-interval", 2675 "required-min-rx-interval", and "min-interval" all impact the BFD 2676 IP multihop session. The "source-addr" and "dest-addr" data nodes 2677 can be used to send BFD packets to unwitting recipients. 2678 [RFC5880] describes how BFD mitigates such threats. 2679 Authentication data nodes "key-chain" and "meticulous" impact the 2680 security of the BFD IP multihop session. 2682 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2683 sessions: 2684 This list specifies the BFD sessions over a LAG. 2686 Data nodes "local-multiplier", "desired-min-tx-interval", 2687 "required-min-rx-interval", and "min-interval" all impact the BFD- 2688 over-LAG session. The "ipv4-dest-addr" and "ipv6-dest-addr" data 2689 nodes can be used to send BFD packets to unwitting recipients. 2690 [RFC5880] describes how BFD mitigates such threats. 2691 Authentication data nodes "key-chain" and "meticulous" impact the 2692 security of the BFD-over-LAG session. 2694 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2695 session-group: 2696 This list specifies the session groups for BFD over MPLS. 2698 Data nodes "local-multiplier", "desired-min-tx-interval", 2699 "required-min-rx-interval", and "min-interval" all impact the BFD- 2700 over-MPLS-LSPs session. Authentication data nodes "key-chain" and 2701 "meticulous" impact the security of the BFD-over-MPLS-LSPs 2702 session. 2704 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2705 egress: 2706 Data nodes "local-multiplier", "desired-min-tx-interval", 2707 "required-min-rx-interval", and "min-interval" all impact the BFD- 2708 over-MPLS-LSPs sessions for which this device is an MPLS LSP 2709 egress node. Authentication data nodes "key-chain" and 2710 "meticulous" impact the security of the BFD-over-MPLS-LSPs 2711 sessions for which this device is an MPLS LSP egress node. 2713 The YANG modules have writable data nodes that can be used for the 2714 creation of BFD sessions and the modification of BFD session 2715 parameters. The system should "police" the creation of BFD sessions 2716 to prevent new sessions from causing existing BFD sessions to fail. 2717 In the case of BFD session modification, the BFD protocol has 2718 mechanisms in place that allow for in-service modification. 2720 When BFD clients are used to modify BFD configuration (as described 2721 in Section 2.1), the BFD clients need to be included in an analysis 2722 of the security properties of the system that uses BFD (e.g., when 2723 considering the authentication and authorization of control actions). 2724 In many cases, BFD is not the most vulnerable portion of such a 2725 composite system, since BFD is limited to generating well-defined 2726 traffic at a fixed rate on a given path; in the case of an IGP acting 2727 as a BFD client, attacking the IGP could cause more broad-scale 2728 disruption than would (de)configuring a BFD session. 2730 Some of the readable data nodes in these YANG modules may be 2731 considered sensitive or vulnerable in some network environments. It 2732 is thus important to control read access (e.g., via get, get-config, 2733 or notification) to these data nodes. These are the subtrees and 2734 data nodes and their sensitivity/vulnerability from a read access 2735 perspective: 2737 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2738 summary: 2739 Access to this information discloses the number of BFD IP single- 2740 hop sessions that are in the "up", "down", or "admin-down" state. 2741 The counters include BFD sessions for which the user does not have 2742 read access. 2744 /routing/control-plane-protocols/control-plane-protocol/bfd/ip- 2745 sh/sessions/session/: 2746 Access to data nodes "local-discriminator" and "remote- 2747 discriminator" (combined with the data nodes in the authentication 2748 container) provides the ability to spoof BFD IP single-hop 2749 packets. 2751 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2752 summary: 2753 Access to this information discloses the number of BFD IP multihop 2754 sessions that are in the "up", "down", or "admin-down" state. The 2755 counters include BFD sessions for which the user does not have 2756 read access. 2758 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2759 session-groups/session-group/sessions: 2760 Access to data nodes "local-discriminator" and "remote- 2761 discriminator" (combined with the data nodes in the session 2762 group's authentication container) provides the ability to spoof 2763 BFD IP multihop packets. 2765 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2766 micro-bfd-ipv4-session-statistics/summary: 2767 Access to this information discloses the number of micro-BFD IPv4 2768 LAG sessions that are in the "up", "down", or "admin-down" state. 2769 The counters include BFD sessions for which the user does not have 2770 read access. 2772 /routing/control-plane-protocols/control-plane- 2773 protocol/bfd/lag/sessions/session/member-links/member-link/micro- 2774 bfd-ipv4: 2775 Access to data nodes "local-discriminator" and "remote- 2776 discriminator" (combined with the data nodes in the session's 2777 authentication container) provides the ability to spoof BFD IPv4 2778 LAG packets. 2780 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2781 micro-bfd-ipv6-session-statistics/summary: 2782 Access to this information discloses the number of micro-BFD IPv6 2783 LAG sessions that are in the "up", "down", or "admin-down" state. 2784 The counters include BFD sessions for which the user does not have 2785 read access. 2787 /routing/control-plane-protocols/control-plane- 2788 protocol/bfd/lag/sessions/session/member-links/member-link/micro- 2789 bfd-ipv6: 2790 Access to data nodes "local-discriminator" and "remote- 2791 discriminator" (combined with the data nodes in the session's 2792 authentication container) provides the ability to spoof BFD IPv6 2793 LAG packets. 2795 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2796 summary: 2797 Access to this information discloses the number of BFD sessions 2798 over MPLS LSPs that are in the "up", "down", or "admin-down" 2799 state. The counters include BFD sessions for which the user does 2800 not have read access. 2802 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2803 session-groups/session-group/sessions: 2804 Access to data nodes "local-discriminator" and "remote- 2805 discriminator" (combined with the data nodes in the session 2806 group's authentication container) provides the ability to spoof 2807 BFD-over-MPLS-LSPs packets. 2809 This document does not define any RPC operations. 2811 5. IANA Considerations 2813 This document registers the following namespace URIs in the IETF XML 2814 in the "IETF XML Registry" [RFC3688]: 2816 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-types 2817 Registrant Contact: The IESG. 2818 XML: N/A; the requested URI is an XML namespace. 2820 URI: urn:ietf:params:xml:ns:yang:ietf-bfd 2821 Registrant Contact: The IESG. 2822 XML: N/A; the requested URI is an XML namespace. 2824 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2825 Registrant Contact: The IESG. 2826 XML: N/A; the requested URI is an XML namespace. 2828 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2829 Registrant Contact: The IESG. 2830 XML: N/A; the requested URI is an XML namespace. 2832 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2833 Registrant Contact: The IESG. 2834 XML: N/A; the requested URI is an XML namespace. 2836 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2837 Registrant Contact: The IESG. 2838 XML: N/A; the requested URI is an XML namespace. 2840 This document registers the following YANG modules in the "YANG 2841 Module Names" registry [RFC6020]: 2843 Name: ietf-bfd-types 2844 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-types 2845 Prefix: bfd-types 2846 Reference: RFC XXXX 2848 Name: ietf-bfd 2849 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd 2850 Prefix: bfd 2851 Reference: RFC XXXX 2853 Name: ietf-bfd-ip-sh 2854 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2855 Prefix: bfd-ip-sh 2856 Reference: RFC XXXX 2858 Name: ietf-bfd-ip-mh 2859 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2860 Prefix: bfd-ip-mh 2861 Reference: RFC XXXX 2863 Name: ietf-bfd-lag 2864 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2865 Prefix: bfd-lag 2866 Reference: RFC XXXX 2868 Name: ietf-bfd-mpls 2869 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2870 Prefix: bfd-mpls 2871 Reference: RFC XXXX 2873 6. References 2875 6.1. Normative References 2877 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2878 DOI 10.17487/RFC3688, January 2004, 2879 . 2881 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 2882 "MPLS Generic Associated Channel", RFC 5586, 2883 DOI 10.17487/RFC5586, June 2009, 2884 . 2886 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2887 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 2888 . 2890 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2891 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 2892 DOI 10.17487/RFC5881, June 2010, 2893 . 2895 [RFC5882] Katz, D. and D. Ward, "Generic Application of 2896 Bidirectional Forwarding Detection (BFD)", RFC 5882, 2897 DOI 10.17487/RFC5882, June 2010, 2898 . 2900 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2901 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 2902 June 2010, . 2904 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 2905 "Bidirectional Forwarding Detection (BFD) for MPLS Label 2906 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 2907 June 2010, . 2909 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 2910 Forwarding Detection (BFD) for the Pseudowire Virtual 2911 Circuit Connectivity Verification (VCCV)", RFC 5885, 2912 DOI 10.17487/RFC5885, June 2010, 2913 . 2915 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2916 the Network Configuration Protocol (NETCONF)", RFC 6020, 2917 DOI 10.17487/RFC6020, October 2010, 2918 . 2920 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2921 and A. Bierman, Ed., "Network Configuration Protocol 2922 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2923 . 2925 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2926 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2927 . 2929 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2930 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2931 . 2933 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 2934 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 2935 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 2936 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 2937 2014, . 2939 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2940 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2941 . 2943 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 2944 Zhang, "YANG Data Model for Key Chains", RFC 8177, 2945 DOI 10.17487/RFC8177, June 2017, 2946 . 2948 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2949 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2950 . 2952 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2953 Access Control Model", STD 91, RFC 8341, 2954 DOI 10.17487/RFC8341, March 2018, 2955 . 2957 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2958 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2959 . 2961 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 2962 RFC 8344, DOI 10.17487/RFC8344, March 2018, 2963 . 2965 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2966 Routing Management (NMDA Version)", RFC 8349, 2967 DOI 10.17487/RFC8349, March 2018, 2968 . 2970 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2971 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2972 . 2974 [RFC8960] Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A 2975 YANG Data Model for MPLS Base", RFC 8960, 2976 DOI 10.17487/RFC8960, December 2020, 2977 . 2979 6.2. Informative References 2981 [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol 2982 Label Switching Architecture", RFC 3031, 2983 DOI 10.17487/RFC3031, January 2001, 2984 . 2986 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 2987 and R. Wilton, "Network Management Datastore Architecture 2988 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 2989 . 2991 [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 2992 Liu, "YANG Data Model for Network Instances", RFC 8529, 2993 DOI 10.17487/RFC8529, March 2019, 2994 . 2996 [RFC8530] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 2997 Liu, "YANG Model for Logical Network Elements", RFC 8530, 2998 DOI 10.17487/RFC8530, March 2019, 2999 . 3001 [RFC8532] Kumar, D., Wang, Z., Wu, Q., Ed., Rahman, R., and S. 3002 Raghavan, "Generic YANG Data Model for the Management of 3003 Operations, Administration, and Maintenance (OAM) 3004 Protocols That Use Connectionless Communications", 3005 RFC 8532, DOI 10.17487/RFC8532, April 2019, 3006 . 3008 [W3C.REC-xml-20081126] 3009 Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and 3010 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth 3011 Edition)", World Wide Web Consortium Recommendation REC- 3012 xml-20081126, November 2008, 3013 . 3015 Appendix A. Echo Function Configuration Example 3017 As mentioned in Section 2.1.2, the mechanism to start and stop the 3018 Echo function, as defined in [RFC5880] and discussed in [RFC5881], is 3019 implementation specific. In this appendix, we provide an example of 3020 how the Echo function can be implemented via configuration. 3022 module: example-bfd-echo 3023 augment /rt:routing/rt:control-plane-protocols 3024 /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh 3025 /bfd-ip-sh:sessions: 3026 +--rw echo {bfd-types:echo-mode}? 3027 +--rw desired-min-echo-tx-interval? uint32 3028 +--rw required-min-echo-rx-interval? uint32 3030 A.1. Example YANG Module for BFD Echo Function Configuration 3032 This appendix provides an example YANG module for configuration of 3033 the BFD Echo function. It imports and augments "/routing/control- 3034 plane-protocols/control-plane-protocol" from [RFC8349], and it 3035 references [RFC5880]. 3037 module example-bfd-echo { 3038 namespace "tag:example.com,2021:example-bfd-echo"; 3039 prefix example-bfd-echo; 3041 import ietf-bfd-types { 3042 prefix bfd-types; 3043 } 3044 import ietf-bfd { 3045 prefix bfd; 3046 } 3047 import ietf-bfd-ip-sh { 3048 prefix bfd-ip-sh; 3049 } 3050 import ietf-routing { 3051 prefix rt; 3052 } 3054 organization 3055 "IETF BFD Working Group"; 3056 contact 3057 "WG Web: 3058 WG List: 3060 Editor: Reshad Rahman 3061 3063 Editor: Lianshu Zheng 3064 3066 Editor: Mahesh Jethanandani 3067 "; 3068 description 3069 "This module contains an example YANG augmentation for 3070 configuration of the BFD Echo function. 3072 Copyright (c) 2021 IETF Trust and the persons identified as 3073 authors of the code. All rights reserved. 3075 Redistribution and use in source and binary forms, with or 3076 without modification, is permitted pursuant to, and subject to 3077 the license terms contained in, the Simplified BSD License set 3078 forth in Section 4.c of the IETF Trust's Legal Provisions 3079 Relating to IETF Documents 3080 (https://trustee.ietf.org/license-info). 3082 This version of this YANG module is part of RFC 9127; see the 3083 RFC itself for full legal notices."; 3085 revision 2021-09-03 { 3086 description 3087 "Initial revision."; 3088 reference 3089 "RFC 9127: YANG Data Model for Bidirectional Forwarding 3090 Detection (BFD)"; 3091 } 3093 /* 3094 * Groupings 3095 */ 3097 grouping echo-cfg-parms { 3098 description 3099 "BFD grouping for Echo configuration parameters."; 3100 leaf desired-min-echo-tx-interval { 3101 type uint32; 3102 units "microseconds"; 3103 default "0"; 3104 description 3105 "This is the minimum interval that the local system would 3106 like to use when transmitting BFD Echo packets. If 0, 3107 the Echo function as defined in BFD (RFC 5880) is 3108 disabled."; 3109 } 3110 leaf required-min-echo-rx-interval { 3111 type uint32; 3112 units "microseconds"; 3113 default "0"; 3114 description 3115 "This is the Required Min Echo RX Interval as defined in BFD 3116 (RFC 5880)."; 3117 } 3119 } 3121 augment "/rt:routing/rt:control-plane-protocols/" 3122 + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" 3123 + "bfd-ip-sh:sessions" { 3124 description 3125 "Augmentation for the BFD Echo function."; 3126 container echo { 3127 if-feature "bfd-types:echo-mode"; 3128 description 3129 "BFD Echo function container."; 3130 uses echo-cfg-parms; 3131 } 3132 } 3133 } 3135 Acknowledgments 3137 We would like to thank Nobo Akiya and Jeff Haas for their 3138 encouragement on this work. We would also like to thank Tom Petch 3139 for his comments on the document. We would also like to thank Acee 3140 Lindem for his guidance. Thanks also to Jürgen Schönwälder, who was 3141 instrumental in improving the YANG modules. 3143 Updates since RFC 9127 3145 This version of the draft updates the 'ietf-bfd-types' module to 3146 define a new feature called 'client-base-cfg-parms and a 'if-feature' 3147 statement that conditionally includes definition of parameters such 3148 as 'multiplier' or 'desired-min-tx-interval'. The feature statement 3149 allows YANG implementations of protocol such as OSPF, ISIS, PIM and 3150 BGP, to support both a model where such parameters are not needed, 3151 such as when multiple BFD sessions are supported over a given 3152 interface, as well as when they need to be defined per session. As a 3153 result, the BFD MPLS module has to use the base-cfg-parms instead of 3154 client-cfg-parms to be able to include all the parameters 3155 unconditionally. 3157 The iana-bfd-types module, created in RFC 9127, was delegated to IANA 3158 for maintenance. No changes are requested from IANA as part of this 3159 update. 3161 Authors' Addresses 3162 Mahesh Jethanandani (editor) 3163 Xoriant Corporation 3164 1248 Reamwood Ave 3165 Sunnyvale, California 94089 3166 United States of America 3168 Email: mjethanandani@gmail.com 3170 Reshad Rahman (editor) 3171 Canada 3173 Email: reshad@yahoo.com 3175 Lianshu Zheng (editor) 3176 Huawei Technologies 3177 China 3179 Email: veronique_cheng@hotmail.com 3181 Santosh Pallagatti 3182 VMware 3183 India 3185 Email: santosh.pallagatti@gmail.com 3187 Greg Mirsky 3188 Ericsson 3190 Email: gregimirsky@gmail.com