idnits 2.17.00 (12 Aug 2021) /tmp/idnits15434/draft-ietf-bfd-rfc9127-bis-00.txt: -(3275): 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 document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (6 December 2021) is 165 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) -- Missing reference section? 'RFC5880' on line 3172 looks like a reference -- Missing reference section? 'RFC5881' on line 3155 looks like a reference -- Missing reference section? 'RFC5883' on line 3031 looks like a reference -- Missing reference section? 'RFC5884' on line 3035 looks like a reference -- Missing reference section? 'RFC7130' on line 3064 looks like a reference -- Missing reference section? 'RFC5885' on line 3040 looks like a reference -- Missing reference section? 'RFC5882' on line 3026 looks like a reference -- Missing reference section? 'RFC8342' on line 3123 looks like a reference -- Missing reference section? 'RFC8340' on line 3079 looks like a reference -- Missing reference section? 'RFC8349' on line 3171 looks like a reference -- Missing reference section? 'RFC8530' on line 3133 looks like a reference -- Missing reference section? 'RFC8529' on line 3128 looks like a reference -- Missing reference section? 'RFC8177' on line 3074 looks like a reference -- Missing reference section? 'RFC3031' on line 3112 looks like a reference -- Missing reference section? 'RFC8532' on line 3138 looks like a reference -- Missing reference section? 'RFC8343' on line 3088 looks like a reference -- Missing reference section? 'RFC8344' on line 3092 looks like a reference -- Missing reference section? 'RFC8960' on line 3105 looks like a reference -- Missing reference section? 'RFC6428' on line 3117 looks like a reference -- Missing reference section? 'RFC6991' on line 3060 looks like a reference -- Missing reference section? 'RFC5586' on line 3012 looks like a reference -- Missing reference section? 'RFC6241' on line 3051 looks like a reference -- Missing reference section? 'RFC8040' on line 3070 looks like a reference -- Missing reference section? 'RFC6242' on line 3056 looks like a reference -- Missing reference section? 'RFC8446' on line 3101 looks like a reference -- Missing reference section? 'RFC8341' on line 3083 looks like a reference -- Missing reference section? 'RFC3688' on line 3008 looks like a reference -- Missing reference section? 'RFC6020' on line 3046 looks like a reference Summary: 1 error (**), 0 flaws (~~), 2 warnings (==), 30 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group R. Rahman, Ed. 3 Internet-Draft 4 Intended status: Standards Track M. Jethanandani, Ed. 5 Expires: 9 June 2022 Xoriant Corporation 6 L. Zheng, Ed. 7 Huawei Technologies 8 S. Pallagatti 9 VMware 10 G. Mirsky 11 Ericsson 12 6 December 2021 14 YANG Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-rfc9127-bis-00 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). 25 Status of This Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at https://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on 9 June 2022. 42 Copyright Notice 44 Copyright (c) 2021 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 49 license-info) in effect on the date of publication of this document. 50 Please review these documents carefully, as they describe your rights 51 and restrictions with respect to this document. Code Components 52 extracted from this document must include Revised BSD License text as 53 described in Section 4.e of the Trust Legal Provisions and are 54 provided without warranty as described in the Revised BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 59 1.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 60 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 61 2.1. Design of the Configuration Model . . . . . . . . . . . . 5 62 2.1.1. Common BFD Configuration Parameters . . . . . . . . . 6 63 2.1.2. Single-Hop IP . . . . . . . . . . . . . . . . . . . . 6 64 2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 65 2.1.4. MPLS Label Switched Paths . . . . . . . . . . . . . . 7 66 2.1.5. Link Aggregation Groups . . . . . . . . . . . . . . . 8 67 2.2. Design of the Operational State Model . . . . . . . . . . 8 68 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 9 69 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 70 2.5. BFD Top-Level Hierarchy . . . . . . . . . . . . . . . . . 9 71 2.6. BFD IP Single-Hop Hierarchy . . . . . . . . . . . . . . . 9 72 2.7. BFD IP Multihop Hierarchy . . . . . . . . . . . . . . . . 11 73 2.8. BFD-over-LAG Hierarchy . . . . . . . . . . . . . . . . . 13 74 2.9. BFD-over-MPLS-LSPs Hierarchy . . . . . . . . . . . . . . 16 75 2.10. Interaction with Other YANG Modules . . . . . . . . . . . 19 76 2.10.1. "ietf-interfaces" Module . . . . . . . . . . . . . . 19 77 2.10.2. "ietf-ip" Module . . . . . . . . . . . . . . . . . . 19 78 2.10.3. "ietf-mpls" Module . . . . . . . . . . . . . . . . . 19 79 2.11. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 20 80 2.12. BFD Types YANG Module . . . . . . . . . . . . . . . . . . 23 81 2.13. BFD Top-Level YANG Module . . . . . . . . . . . . . . . . 38 82 2.14. BFD IP Single-Hop YANG Module . . . . . . . . . . . . . . 39 83 2.15. BFD IP Multihop YANG Module . . . . . . . . . . . . . . . 43 84 2.16. BFD-over-LAG YANG Module . . . . . . . . . . . . . . . . 46 85 2.17. BFD-over-MPLS YANG Module . . . . . . . . . . . . . . . . 50 86 3. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 54 87 3.1. IP Single-Hop . . . . . . . . . . . . . . . . . . . . . . 54 88 3.2. IP Multihop . . . . . . . . . . . . . . . . . . . . . . . 55 89 3.3. LAG . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 90 3.4. MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . 57 91 4. Security Considerations . . . . . . . . . . . . . . . . . . . 58 92 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 62 93 5.1. IANA-Maintained "iana-bfd-types" Module . . . . . . . . . 64 94 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 64 95 6.1. References . . . . . . . . . . . . . . . . . . . . . . . 64 96 6.2. References . . . . . . . . . . . . . . . . . . . . . . . 66 97 Appendix A. Echo Function Configuration Example . . . . . . . . 67 98 A.1. Example YANG Module for BFD Echo Function 99 Configuration . . . . . . . . . . . . . . . . . . . . . . 67 100 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 69 101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 70 102 Updates since RFC 9127 . . . . . . . . . . . . . . . . . . . . . 70 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.14) 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.15) 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.16) 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.17) 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.12 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.12), 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. IANA BFD YANG Module 917 This YANG module imports definitions from [RFC5880]. It references 918 [RFC5880] and [RFC6428]. 920 file "iana-bfd-types@2021-10-21.yang" 921 module iana-bfd-types { 922 yang-version 1.1; 923 namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; 924 prefix iana-bfd-types; 926 organization 927 "IANA"; 928 contact 929 "Internet Assigned Numbers Authority 931 Postal: ICANN 932 12025 Waterfront Drive, Suite 300 933 Los Angeles, CA 90094-2536 934 United States of America 935 Tel: +1 310 301 5800 936 "; 937 description 938 "This module defines YANG data types for IANA-registered 939 BFD parameters. 941 This YANG module is maintained by IANA and reflects the 942 'BFD Diagnostic Codes' and 'BFD Authentication Types' 943 registries. 945 Copyright (c) 2021 IETF Trust and the persons identified as 946 authors of the code. All rights reserved. 948 Redistribution and use in source and binary forms, with or 949 without modification, is permitted pursuant to, and subject to 950 the license terms contained in, the Simplified BSD License set 951 forth in Section 4.c of the IETF Trust's Legal Provisions 952 Relating to IETF Documents 953 (https://trustee.ietf.org/license-info). 955 This version of this YANG module is part of RFC 9127; see the 956 RFC itself for full legal notices."; 957 reference 958 "RFC 9127: YANG Data Model for Bidirectional Forwarding 959 Detection (BFD)"; 961 revision 2021-10-21 { 962 description 963 "Initial revision."; 964 reference 965 "RFC 9127: YANG Data Model for Bidirectional Forwarding 966 Detection (BFD)"; 967 } 969 /* 970 * Type definitions 971 */ 973 typedef diagnostic { 974 type enumeration { 975 enum none { 976 value 0; 977 description 978 "No Diagnostic."; 979 } 980 enum control-expiry { 981 value 1; 982 description 983 "Control Detection Time Expired."; 984 } 985 enum echo-failed { 986 value 2; 987 description 988 "Echo Function Failed."; 989 } 990 enum neighbor-down { 991 value 3; 992 description 993 "Neighbor Signaled Session Down."; 994 } 995 enum forwarding-reset { 996 value 4; 997 description 998 "Forwarding Plane Reset."; 999 } 1000 enum path-down { 1001 value 5; 1002 description 1003 "Path Down."; 1004 } 1005 enum concatenated-path-down { 1006 value 6; 1007 description 1008 "Concatenated Path Down."; 1009 } 1010 enum admin-down { 1011 value 7; 1012 description 1013 "Administratively Down."; 1014 } 1015 enum reverse-concatenated-path-down { 1016 value 8; 1017 description 1018 "Reverse Concatenated Path Down."; 1019 } 1020 enum mis-connectivity-defect { 1021 value 9; 1022 description 1023 "Mis-connectivity defect."; 1024 reference 1025 "RFC 5880: Bidirectional Forwarding Detection (BFD) 1026 RFC 6428: Proactive Connectivity Verification, Continuity 1027 Check, and Remote Defect Indication for the MPLS Transport 1028 Profile"; 1029 } 1030 } 1031 description 1032 "BFD diagnostic codes as defined in RFC 5880. Values are 1033 maintained in the 'BFD Diagnostic Codes' IANA registry. 1034 Range is 0 to 31."; 1035 reference 1036 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1037 } 1039 typedef auth-type { 1040 type enumeration { 1041 enum reserved { 1042 value 0; 1043 description 1044 "Reserved."; 1045 } 1046 enum simple-password { 1047 value 1; 1048 description 1049 "Simple Password."; 1050 } 1051 enum keyed-md5 { 1052 value 2; 1053 description 1054 "Keyed MD5."; 1055 } 1056 enum meticulous-keyed-md5 { 1057 value 3; 1058 description 1059 "Meticulous Keyed MD5."; 1060 } 1061 enum keyed-sha1 { 1062 value 4; 1063 description 1064 "Keyed SHA1."; 1065 } 1066 enum meticulous-keyed-sha1 { 1067 value 5; 1068 description 1069 "Meticulous Keyed SHA1."; 1070 } 1071 } 1072 description 1073 "BFD authentication type as defined in RFC 5880. Values are 1074 maintained in the 'BFD Authentication Types' IANA registry. 1075 Range is 0 to 255."; 1076 reference 1077 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1078 } 1079 } 1080 1082 2.12. BFD Types YANG Module 1084 This YANG module imports typedefs from [RFC6991] and [RFC8177]. It 1085 also imports definitions from [RFC5880], [RFC5881], [RFC5883], 1086 [RFC5884], and [RFC7130], as well as the "control-plane-protocol" 1087 identity from [RFC8349]. 1089 file "ietf-bfd-types@2021-12-06.yang" 1090 module ietf-bfd-types { 1091 yang-version 1.1; 1092 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; 1093 prefix bfd-types; 1095 import iana-bfd-types { 1096 prefix iana-bfd-types; 1097 reference 1098 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1099 Detection (BFD)"; 1100 } 1101 import ietf-inet-types { 1102 prefix inet; 1103 reference 1104 "RFC 6991: Common YANG Data Types"; 1105 } 1106 import ietf-yang-types { 1107 prefix yang; 1108 reference 1109 "RFC 6991: Common YANG Data Types"; 1110 } 1111 import ietf-routing { 1112 prefix rt; 1113 reference 1114 "RFC 8349: A YANG Data Model for Routing Management 1115 (NMDA Version)"; 1116 } 1117 import ietf-key-chain { 1118 prefix key-chain; 1119 reference 1120 "RFC 8177: YANG Data Model for Key Chains"; 1121 } 1123 organization 1124 "IETF BFD Working Group"; 1125 contact 1126 "WG Web: 1127 WG List: 1129 Editor: Reshad Rahman 1130 1132 Editor: Lianshu Zheng 1133 1135 Editor: Mahesh Jethanandani 1136 "; 1137 description 1138 "This module contains a collection of BFD-specific YANG data type 1139 definitions, as per RFC 5880, and also groupings that are common 1140 to other BFD YANG modules. 1142 Copyright (c) 2021 IETF Trust and the persons identified as 1143 authors of the code. All rights reserved. 1145 Redistribution and use in source and binary forms, with or 1146 without modification, is permitted pursuant to, and subject to 1147 the license terms contained in, the Simplified BSD License set 1148 forth in Section 4.c of the IETF Trust's Legal Provisions 1149 Relating to IETF Documents 1150 (https://trustee.ietf.org/license-info). 1152 This version of this YANG module is part of RFC 9127; see the 1153 RFC itself for full legal notices."; 1154 reference 1155 "RFC 5880: Bidirectional Forwarding Detection (BFD) 1156 RFC 9127: YANG Data Model for Bidirectional Forwarding 1157 Detection (BFD)"; 1159 revision 2021-12-06 { 1160 description 1161 "9127-bis."; 1162 reference 1163 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1164 Detection (BFD)."; 1165 } 1166 revision 2021-10-21 { 1167 description 1168 "Initial revision."; 1169 reference 1170 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1171 Detection (BFD)"; 1172 } 1174 /* 1175 * Feature definitions 1176 */ 1178 feature single-minimum-interval { 1179 description 1180 "This feature indicates that the server supports configuration 1181 of one minimum interval value that is used for both transmit 1182 and receive minimum intervals."; 1183 } 1185 feature authentication { 1186 description 1187 "This feature indicates that the server supports BFD 1188 authentication."; 1189 reference 1190 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1191 Section 6.7"; 1192 } 1194 feature demand-mode { 1195 description 1196 "This feature indicates that the server supports BFD Demand 1197 mode."; 1198 reference 1199 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1200 Section 6.6"; 1201 } 1203 feature echo-mode { 1204 description 1205 "This feature indicates that the server supports BFD Echo 1206 mode."; 1207 reference 1208 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1209 Section 6.4"; 1210 } 1212 feature client-base-cfg-parms { 1213 description 1214 "This feature allows protocol models to configure BFD client 1215 session parameters."; 1216 reference 1217 "RFC XXXX: YANG Data Model for Bidirectional Forwarding 1218 Detection (BFD)."; 1219 } 1221 /* 1222 * Identity definitions 1223 */ 1225 identity bfdv1 { 1226 base rt:control-plane-protocol; 1227 description 1228 "BFD protocol version 1."; 1229 reference 1230 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1231 } 1233 identity path-type { 1234 description 1235 "Base identity for the BFD path type. The path type indicates 1236 the type of path on which BFD is running."; 1237 } 1239 identity path-ip-sh { 1240 base path-type; 1241 description 1242 "BFD on IP single-hop."; 1243 reference 1244 "RFC 5881: Bidirectional Forwarding Detection (BFD) 1245 for IPv4 and IPv6 (Single Hop)"; 1246 } 1248 identity path-ip-mh { 1249 base path-type; 1250 description 1251 "BFD on IP multihop paths."; 1252 reference 1253 "RFC 5883: Bidirectional Forwarding Detection (BFD) for 1254 Multihop Paths"; 1255 } 1257 identity path-mpls-te { 1258 base path-type; 1259 description 1260 "BFD on MPLS Traffic Engineering."; 1261 reference 1262 "RFC 5884: Bidirectional Forwarding Detection (BFD) 1263 for MPLS Label Switched Paths (LSPs)"; 1264 } 1266 identity path-mpls-lsp { 1267 base path-type; 1268 description 1269 "BFD on an MPLS Label Switched Path."; 1270 reference 1271 "RFC 5884: Bidirectional Forwarding Detection (BFD) 1272 for MPLS Label Switched Paths (LSPs)"; 1273 } 1275 identity path-lag { 1276 base path-type; 1277 description 1278 "Micro-BFD on LAG member links."; 1279 reference 1280 "RFC 7130: Bidirectional Forwarding Detection (BFD) on 1281 Link Aggregation Group (LAG) Interfaces"; 1282 } 1284 identity encap-type { 1285 description 1286 "Base identity for BFD encapsulation type."; 1287 } 1289 identity encap-ip { 1290 base encap-type; 1291 description 1292 "BFD with IP encapsulation."; 1294 } 1296 /* 1297 * Type definitions 1298 */ 1300 typedef discriminator { 1301 type uint32; 1302 description 1303 "BFD Discriminator as described in RFC 5880."; 1304 reference 1305 "RFC 5880: Bidirectional Forwarding Detection (BFD)"; 1306 } 1308 typedef state { 1309 type enumeration { 1310 enum adminDown { 1311 value 0; 1312 description 1313 "'adminDown' state."; 1314 } 1315 enum down { 1316 value 1; 1317 description 1318 "'Down' state."; 1319 } 1320 enum init { 1321 value 2; 1322 description 1323 "'Init' state."; 1324 } 1325 enum up { 1326 value 3; 1327 description 1328 "'Up' state."; 1329 } 1330 } 1331 description 1332 "BFD states as defined in RFC 5880."; 1333 } 1335 typedef multiplier { 1336 type uint8 { 1337 range "1..255"; 1338 } 1339 description 1340 "BFD multiplier as described in RFC 5880."; 1341 } 1342 typedef hops { 1343 type uint8 { 1344 range "1..255"; 1345 } 1346 description 1347 "This corresponds to Time To Live for IPv4 and corresponds to 1348 the hop limit for IPv6."; 1349 } 1351 /* 1352 * Groupings 1353 */ 1355 grouping auth-parms { 1356 description 1357 "Grouping for BFD authentication parameters 1358 (see Section 6.7 of RFC 5880)."; 1359 container authentication { 1360 if-feature "authentication"; 1361 presence "Enables BFD authentication (see Section 6.7 1362 of RFC 5880)."; 1363 description 1364 "Parameters for BFD authentication."; 1365 reference 1366 "RFC 5880: Bidirectional Forwarding Detection (BFD), 1367 Section 6.7"; 1368 leaf key-chain { 1369 type key-chain:key-chain-ref; 1370 description 1371 "Name of the 'key-chain' as per RFC 8177."; 1372 } 1373 leaf meticulous { 1374 type boolean; 1375 description 1376 "Enables a meticulous mode as per Section 6.7 of 1377 RFC 5880."; 1378 } 1379 } 1380 } 1382 grouping base-cfg-parms { 1383 description 1384 "BFD grouping for base configuration parameters."; 1385 leaf local-multiplier { 1386 type multiplier; 1387 default "3"; 1388 description 1389 "Multiplier transmitted by the local system."; 1391 } 1392 choice interval-config-type { 1393 default "tx-rx-intervals"; 1394 description 1395 "Two interval values or one value used for both transmit and 1396 receive."; 1397 case tx-rx-intervals { 1398 leaf desired-min-tx-interval { 1399 type uint32; 1400 units "microseconds"; 1401 default "1000000"; 1402 description 1403 "Desired minimum transmit interval of control packets."; 1404 } 1405 leaf required-min-rx-interval { 1406 type uint32; 1407 units "microseconds"; 1408 default "1000000"; 1409 description 1410 "Required minimum receive interval of control packets."; 1411 } 1412 } 1413 case single-interval { 1414 if-feature "single-minimum-interval"; 1415 leaf min-interval { 1416 type uint32; 1417 units "microseconds"; 1418 default "1000000"; 1419 description 1420 "Desired minimum transmit interval and required 1421 minimum receive interval of control packets."; 1422 } 1423 } 1424 } 1425 } 1427 grouping client-cfg-parms { 1428 description 1429 "BFD grouping for configuration parameters 1430 used by BFD clients, e.g., IGP or MPLS."; 1431 leaf enabled { 1432 type boolean; 1433 default "false"; 1434 description 1435 "Indicates whether BFD is enabled."; 1436 } 1437 uses base-cfg-parms { 1438 if-feature "client-base-cfg-parms"; 1440 } 1441 } 1443 grouping common-cfg-parms { 1444 description 1445 "BFD grouping for common configuration parameters."; 1446 uses base-cfg-parms; 1447 leaf demand-enabled { 1448 if-feature "demand-mode"; 1449 type boolean; 1450 default "false"; 1451 description 1452 "To enable Demand mode."; 1453 } 1454 leaf admin-down { 1455 type boolean; 1456 default "false"; 1457 description 1458 "Indicates whether the BFD session is administratively 1459 down."; 1460 } 1461 uses auth-parms; 1462 } 1464 grouping all-session { 1465 description 1466 "BFD session operational information."; 1467 leaf path-type { 1468 type identityref { 1469 base path-type; 1470 } 1471 config false; 1472 description 1473 "BFD path type. This indicates the path type that BFD is 1474 running on."; 1475 } 1476 leaf ip-encapsulation { 1477 type boolean; 1478 config false; 1479 description 1480 "Indicates whether BFD encapsulation uses IP."; 1481 } 1482 leaf local-discriminator { 1483 type discriminator; 1484 config false; 1485 description 1486 "Local discriminator."; 1487 } 1488 leaf remote-discriminator { 1489 type discriminator; 1490 config false; 1491 description 1492 "Remote discriminator."; 1493 } 1494 leaf remote-multiplier { 1495 type multiplier; 1496 config false; 1497 description 1498 "Remote multiplier."; 1499 } 1500 leaf demand-capability { 1501 if-feature "demand-mode"; 1502 type boolean; 1503 config false; 1504 description 1505 "Local Demand mode capability."; 1506 } 1507 leaf source-port { 1508 when "../ip-encapsulation = 'true'" { 1509 description 1510 "Source port valid only when IP encapsulation is used."; 1511 } 1512 type inet:port-number; 1513 config false; 1514 description 1515 "Source UDP port."; 1516 } 1517 leaf dest-port { 1518 when "../ip-encapsulation = 'true'" { 1519 description 1520 "Destination port valid only when IP encapsulation 1521 is used."; 1522 } 1523 type inet:port-number; 1524 config false; 1525 description 1526 "Destination UDP port."; 1527 } 1528 container session-running { 1529 config false; 1530 description 1531 "BFD 'session-running' information."; 1532 leaf session-index { 1533 type uint32; 1534 description 1535 "An index used to uniquely identify BFD sessions."; 1537 } 1538 leaf local-state { 1539 type state; 1540 description 1541 "Local state."; 1542 } 1543 leaf remote-state { 1544 type state; 1545 description 1546 "Remote state."; 1547 } 1548 leaf local-diagnostic { 1549 type iana-bfd-types:diagnostic; 1550 description 1551 "Local diagnostic."; 1552 } 1553 leaf remote-diagnostic { 1554 type iana-bfd-types:diagnostic; 1555 description 1556 "Remote diagnostic."; 1557 } 1558 leaf remote-authenticated { 1559 type boolean; 1560 description 1561 "Indicates whether incoming BFD control packets are 1562 authenticated."; 1563 } 1564 leaf remote-authentication-type { 1565 when "../remote-authenticated = 'true'" { 1566 description 1567 "Only valid when incoming BFD control packets are 1568 authenticated."; 1569 } 1570 if-feature "authentication"; 1571 type iana-bfd-types:auth-type; 1572 description 1573 "Authentication type of incoming BFD control packets."; 1574 } 1575 leaf detection-mode { 1576 type enumeration { 1577 enum async-with-echo { 1578 value 1; 1579 description 1580 "Async with echo."; 1581 } 1582 enum async-without-echo { 1583 value 2; 1584 description 1585 "Async without echo."; 1586 } 1587 enum demand-with-echo { 1588 value 3; 1589 description 1590 "Demand with echo."; 1591 } 1592 enum demand-without-echo { 1593 value 4; 1594 description 1595 "Demand without echo."; 1596 } 1597 } 1598 description 1599 "Detection mode."; 1600 } 1601 leaf negotiated-tx-interval { 1602 type uint32; 1603 units "microseconds"; 1604 description 1605 "Negotiated transmit interval."; 1606 } 1607 leaf negotiated-rx-interval { 1608 type uint32; 1609 units "microseconds"; 1610 description 1611 "Negotiated receive interval."; 1612 } 1613 leaf detection-time { 1614 type uint32; 1615 units "microseconds"; 1616 description 1617 "Detection time."; 1618 } 1619 leaf echo-tx-interval-in-use { 1620 when "../../path-type = 'bfd-types:path-ip-sh'" { 1621 description 1622 "Echo is supported for IP single-hop only."; 1623 } 1624 if-feature "echo-mode"; 1625 type uint32; 1626 units "microseconds"; 1627 description 1628 "Echo transmit interval in use."; 1629 } 1630 } 1631 container session-statistics { 1632 config false; 1633 description 1634 "BFD per-session statistics."; 1635 leaf create-time { 1636 type yang:date-and-time; 1637 description 1638 "Time and date when this session was created."; 1639 } 1640 leaf last-down-time { 1641 type yang:date-and-time; 1642 description 1643 "Time and date of the last time this session went down."; 1644 } 1645 leaf last-up-time { 1646 type yang:date-and-time; 1647 description 1648 "Time and date of the last time this session went up."; 1649 } 1650 leaf down-count { 1651 type yang:counter32; 1652 description 1653 "The number of times this session has transitioned to the 1654 'down' state."; 1655 } 1656 leaf admin-down-count { 1657 type yang:counter32; 1658 description 1659 "The number of times this session has transitioned to the 1660 'admin-down' state."; 1661 } 1662 leaf receive-packet-count { 1663 type yang:counter64; 1664 description 1665 "Count of received packets in this session. This includes 1666 valid and invalid received packets."; 1667 } 1668 leaf send-packet-count { 1669 type yang:counter64; 1670 description 1671 "Count of sent packets in this session."; 1672 } 1673 leaf receive-invalid-packet-count { 1674 type yang:counter64; 1675 description 1676 "Count of invalid received packets in this session."; 1677 } 1678 leaf send-failed-packet-count { 1679 type yang:counter64; 1680 description 1681 "Count of packets that failed to be sent in this session."; 1682 } 1683 } 1684 } 1686 grouping session-statistics-summary { 1687 description 1688 "Grouping for session statistics summary."; 1689 container summary { 1690 config false; 1691 description 1692 "BFD session statistics summary."; 1693 leaf number-of-sessions { 1694 type yang:gauge32; 1695 description 1696 "Number of BFD sessions."; 1697 } 1698 leaf number-of-sessions-up { 1699 type yang:gauge32; 1700 description 1701 "Number of BFD sessions currently in the 'Up' state 1702 (as defined in RFC 5880)."; 1703 } 1704 leaf number-of-sessions-down { 1705 type yang:gauge32; 1706 description 1707 "Number of BFD sessions currently in the 'Down' or 'Init' 1708 state but not 'adminDown' (as defined in RFC 5880)."; 1709 } 1710 leaf number-of-sessions-admin-down { 1711 type yang:gauge32; 1712 description 1713 "Number of BFD sessions currently in the 'adminDown' state 1714 (as defined in RFC 5880)."; 1715 } 1716 } 1717 } 1719 grouping notification-parms { 1720 description 1721 "This group describes common parameters that will be sent 1722 as part of BFD notifications."; 1723 leaf local-discr { 1724 type discriminator; 1725 description 1726 "BFD local discriminator."; 1727 } 1728 leaf remote-discr { 1729 type discriminator; 1730 description 1731 "BFD remote discriminator."; 1732 } 1733 leaf new-state { 1734 type state; 1735 description 1736 "Current BFD state."; 1737 } 1738 leaf state-change-reason { 1739 type iana-bfd-types:diagnostic; 1740 description 1741 "Reason for the BFD state change."; 1742 } 1743 leaf time-of-last-state-change { 1744 type yang:date-and-time; 1745 description 1746 "Calendar time of the most recent previous state change."; 1747 } 1748 leaf dest-addr { 1749 type inet:ip-address; 1750 description 1751 "BFD peer address."; 1752 } 1753 leaf source-addr { 1754 type inet:ip-address; 1755 description 1756 "BFD local address."; 1757 } 1758 leaf session-index { 1759 type uint32; 1760 description 1761 "An index used to uniquely identify BFD sessions."; 1762 } 1763 leaf path-type { 1764 type identityref { 1765 base path-type; 1766 } 1767 description 1768 "BFD path type."; 1769 } 1770 } 1771 } 1772 1774 2.13. BFD Top-Level YANG Module 1776 This YANG module imports and augments "/routing/control-plane- 1777 protocols/control-plane-protocol" from [RFC8349]. It also references 1778 [RFC5880]. 1780 file "ietf-bfd@2021-10-21.yang" 1781 module ietf-bfd { 1782 yang-version 1.1; 1783 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 1784 prefix bfd; 1786 import ietf-bfd-types { 1787 prefix bfd-types; 1788 reference 1789 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1790 Detection (BFD)"; 1791 } 1792 import ietf-routing { 1793 prefix rt; 1794 reference 1795 "RFC 8349: A YANG Data Model for Routing Management 1796 (NMDA Version)"; 1797 } 1799 organization 1800 "IETF BFD Working Group"; 1801 contact 1802 "WG Web: 1803 WG List: 1805 Editor: Reshad Rahman 1806 1808 Editor: Lianshu Zheng 1809 1811 Editor: Mahesh Jethanandani 1812 "; 1813 description 1814 "This module contains the YANG definition for BFD parameters as 1815 per RFC 5880. 1817 Copyright (c) 2021 IETF Trust and the persons identified as 1818 authors of the code. All rights reserved. 1820 Redistribution and use in source and binary forms, with or 1821 without modification, is permitted pursuant to, and subject to 1822 the license terms contained in, the Simplified BSD License set 1823 forth in Section 4.c of the IETF Trust's Legal Provisions 1824 Relating to IETF Documents 1825 (https://trustee.ietf.org/license-info). 1827 This version of this YANG module is part of RFC 9127; see the 1828 RFC itself for full legal notices."; 1829 reference 1830 "RFC 5880: Bidirectional Forwarding Detection (BFD) 1831 RFC 9127: YANG Data Model for Bidirectional Forwarding 1832 Detection (BFD)"; 1834 revision 2021-10-21 { 1835 description 1836 "Initial revision."; 1837 reference 1838 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1839 Detection (BFD)"; 1840 } 1842 augment "/rt:routing/rt:control-plane-protocols/" 1843 + "rt:control-plane-protocol" { 1844 when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { 1845 description 1846 "This augmentation is only valid for a control-plane protocol 1847 instance of BFD (type 'bfdv1')."; 1848 } 1849 description 1850 "BFD augmentation."; 1851 container bfd { 1852 description 1853 "BFD top-level container."; 1854 uses bfd-types:session-statistics-summary; 1855 } 1856 } 1857 } 1858 1860 2.14. BFD IP Single-Hop YANG Module 1862 This YANG module imports "interface-ref" from [RFC8343] and typedefs 1863 from [RFC6991]. It also imports and augments "/routing/control- 1864 plane-protocols/control-plane-protocol" from [RFC8349], and it 1865 references [RFC5881]. 1867 file "ietf-bfd-ip-sh@2021-10-21.yang" 1868 module ietf-bfd-ip-sh { 1869 yang-version 1.1; 1870 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1871 prefix bfd-ip-sh; 1873 import ietf-bfd-types { 1874 prefix bfd-types; 1875 reference 1876 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1877 Detection (BFD)"; 1878 } 1879 import ietf-bfd { 1880 prefix bfd; 1881 reference 1882 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1883 Detection (BFD)"; 1884 } 1885 import ietf-interfaces { 1886 prefix if; 1887 reference 1888 "RFC 8343: A YANG Data Model for Interface Management"; 1889 } 1890 import ietf-inet-types { 1891 prefix inet; 1892 reference 1893 "RFC 6991: Common YANG Data Types"; 1894 } 1895 import ietf-routing { 1896 prefix rt; 1897 reference 1898 "RFC 8349: A YANG Data Model for Routing Management 1899 (NMDA Version)"; 1900 } 1902 organization 1903 "IETF BFD Working Group"; 1904 contact 1905 "WG Web: 1906 WG List: 1908 Editor: Reshad Rahman 1909 1911 Editor: Lianshu Zheng 1912 1914 Editor: Mahesh Jethanandani 1915 "; 1916 description 1917 "This module contains the YANG definition for BFD IP single-hop 1918 as per RFC 5881. 1920 Copyright (c) 2021 IETF Trust and the persons identified as 1921 authors of the code. All rights reserved. 1923 Redistribution and use in source and binary forms, with or 1924 without modification, is permitted pursuant to, and subject to 1925 the license terms contained in, the Simplified BSD License set 1926 forth in Section 4.c of the IETF Trust's Legal Provisions 1927 Relating to IETF Documents 1928 (https://trustee.ietf.org/license-info). 1930 This version of this YANG module is part of RFC 9127; see the 1931 RFC itself for full legal notices."; 1932 reference 1933 "RFC 5881: Bidirectional Forwarding Detection (BFD) 1934 for IPv4 and IPv6 (Single Hop) 1935 RFC 9127: YANG Data Model for Bidirectional Forwarding 1936 Detection (BFD)"; 1938 revision 2021-10-21 { 1939 description 1940 "Initial revision."; 1941 reference 1942 "RFC 9127: YANG Data Model for Bidirectional Forwarding 1943 Detection (BFD)"; 1944 } 1946 /* 1947 * Augments 1948 */ 1950 augment "/rt:routing/rt:control-plane-protocols/" 1951 + "rt:control-plane-protocol/bfd:bfd" { 1952 description 1953 "BFD augmentation for IP single-hop."; 1954 container ip-sh { 1955 description 1956 "BFD IP single-hop top-level container."; 1957 uses bfd-types:session-statistics-summary; 1958 container sessions { 1959 description 1960 "BFD IP single-hop sessions."; 1961 list session { 1962 key "interface dest-addr"; 1963 description 1964 "List of IP single-hop sessions."; 1965 leaf interface { 1966 type if:interface-ref; 1967 description 1968 "Interface on which the BFD session is running."; 1969 } 1970 leaf dest-addr { 1971 type inet:ip-address; 1972 description 1973 "IP address of the peer."; 1974 } 1975 leaf source-addr { 1976 type inet:ip-address; 1977 description 1978 "Local IP address."; 1979 } 1980 uses bfd-types:common-cfg-parms; 1981 uses bfd-types:all-session; 1982 } 1983 } 1984 list interfaces { 1985 key "interface"; 1986 description 1987 "List of interfaces."; 1988 leaf interface { 1989 type if:interface-ref; 1990 description 1991 "BFD information for this interface."; 1992 } 1993 uses bfd-types:auth-parms; 1994 } 1995 } 1996 } 1998 /* 1999 * Notifications 2000 */ 2002 notification singlehop-notification { 2003 description 2004 "Notification for BFD single-hop session state change. An 2005 implementation may rate-limit notifications, e.g., when a 2006 session is continuously changing state."; 2007 uses bfd-types:notification-parms; 2008 leaf interface { 2009 type if:interface-ref; 2010 description 2011 "Interface to which this BFD session belongs."; 2012 } 2013 leaf echo-enabled { 2014 type boolean; 2015 description 2016 "Indicates whether Echo was enabled for BFD."; 2017 } 2018 } 2019 } 2020 2022 2.15. BFD IP Multihop YANG Module 2024 This YANG module imports typedefs from [RFC6991]. It also imports 2025 and augments "/routing/control-plane-protocols/control-plane- 2026 protocol" from [RFC8349], and it references [RFC5883]. 2028 file "ietf-bfd-ip-mh@2021-10-21.yang" 2029 module ietf-bfd-ip-mh { 2030 yang-version 1.1; 2031 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 2032 prefix bfd-ip-mh; 2034 import ietf-bfd-types { 2035 prefix bfd-types; 2036 reference 2037 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2038 Detection (BFD)"; 2039 } 2040 import ietf-bfd { 2041 prefix bfd; 2042 reference 2043 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2044 Detection (BFD)"; 2045 } 2046 import ietf-inet-types { 2047 prefix inet; 2048 reference 2049 "RFC 6991: Common YANG Data Types"; 2050 } 2051 import ietf-routing { 2052 prefix rt; 2053 reference 2054 "RFC 8349: A YANG Data Model for Routing Management 2055 (NMDA Version)"; 2056 } 2058 organization 2059 "IETF BFD Working Group"; 2060 contact 2061 "WG Web: 2062 WG List: 2064 Editor: Reshad Rahman 2065 2067 Editor: Lianshu Zheng 2068 2070 Editor: Mahesh Jethanandani 2071 "; 2072 description 2073 "This module contains the YANG definition for BFD IP multihop 2074 as per RFC 5883. 2076 Copyright (c) 2021 IETF Trust and the persons identified as 2077 authors of the code. All rights reserved. 2079 Redistribution and use in source and binary forms, with or 2080 without modification, is permitted pursuant to, and subject to 2081 the license terms contained in, the Simplified BSD License set 2082 forth in Section 4.c of the IETF Trust's Legal Provisions 2083 Relating to IETF Documents 2084 (https://trustee.ietf.org/license-info). 2086 This version of this YANG module is part of RFC 9127; see the 2087 RFC itself for full legal notices."; 2088 reference 2089 "RFC 5883: Bidirectional Forwarding Detection (BFD) for 2090 Multihop Paths 2091 RFC 9127: YANG Data Model for Bidirectional Forwarding 2092 Detection (BFD)"; 2094 revision 2021-10-21 { 2095 description 2096 "Initial revision."; 2097 reference 2098 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2099 Detection (BFD)"; 2100 } 2102 /* 2103 * Augments 2104 */ 2106 augment "/rt:routing/rt:control-plane-protocols/" 2107 + "rt:control-plane-protocol/bfd:bfd" { 2108 description 2109 "BFD augmentation for IP multihop."; 2110 container ip-mh { 2111 description 2112 "BFD IP multihop top-level container."; 2113 uses bfd-types:session-statistics-summary; 2114 container session-groups { 2115 description 2116 "BFD IP multihop session groups."; 2117 list session-group { 2118 key "source-addr dest-addr"; 2119 description 2120 "Group of BFD IP multihop sessions (for ECMP). A 2121 group of sessions is between one source and one 2122 destination. Each session has a different field 2123 in the UDP/IP header for ECMP."; 2124 leaf source-addr { 2125 type inet:ip-address; 2126 description 2127 "Local IP address."; 2128 } 2129 leaf dest-addr { 2130 type inet:ip-address; 2131 description 2132 "IP address of the peer."; 2133 } 2134 uses bfd-types:common-cfg-parms; 2135 leaf tx-ttl { 2136 type bfd-types:hops; 2137 default "255"; 2138 description 2139 "Hop count of outgoing BFD control packets."; 2140 } 2141 leaf rx-ttl { 2142 type bfd-types:hops; 2143 mandatory true; 2144 description 2145 "Minimum allowed hop count value for incoming BFD 2146 control packets. Control packets whose hop count is 2147 lower than this value are dropped."; 2148 } 2149 list sessions { 2150 config false; 2151 description 2152 "The multiple BFD sessions between a source and a 2153 destination."; 2154 uses bfd-types:all-session; 2156 } 2157 } 2158 } 2159 } 2160 } 2162 /* 2163 * Notifications 2164 */ 2166 notification multihop-notification { 2167 description 2168 "Notification for BFD multihop session state change. An 2169 implementation may rate-limit notifications, e.g., when a 2170 session is continuously changing state."; 2171 uses bfd-types:notification-parms; 2172 } 2173 } 2174 2176 2.16. BFD-over-LAG YANG Module 2178 This YANG module imports "interface-ref" from [RFC8343] and typedefs 2179 from [RFC6991]. It also imports and augments "/routing/control- 2180 plane-protocols/control-plane-protocol" from [RFC8349]. 2181 Additionally, it references [RFC7130]. 2183 file "ietf-bfd-lag@2021-10-21.yang" 2184 module ietf-bfd-lag { 2185 yang-version 1.1; 2186 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 2187 prefix bfd-lag; 2189 import ietf-bfd-types { 2190 prefix bfd-types; 2191 reference 2192 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2193 Detection (BFD)"; 2194 } 2195 import ietf-bfd { 2196 prefix bfd; 2197 reference 2198 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2199 Detection (BFD)"; 2200 } 2201 import ietf-interfaces { 2202 prefix if; 2203 reference 2204 "RFC 8343: A YANG Data Model for Interface Management"; 2205 } 2206 import ietf-inet-types { 2207 prefix inet; 2208 reference 2209 "RFC 6991: Common YANG Data Types"; 2210 } 2211 import ietf-routing { 2212 prefix rt; 2213 reference 2214 "RFC 8349: A YANG Data Model for Routing Management 2215 (NMDA Version)"; 2216 } 2218 organization 2219 "IETF BFD Working Group"; 2220 contact 2221 "WG Web: 2222 WG List: 2224 Editor: Reshad Rahman 2225 2227 Editor: Lianshu Zheng 2228 2230 Editor: Mahesh Jethanandani 2231 "; 2232 description 2233 "This module contains the YANG definition for BFD-over-LAG 2234 interfaces as per RFC 7130. 2236 Copyright (c) 2021 IETF Trust and the persons identified as 2237 authors of the code. All rights reserved. 2239 Redistribution and use in source and binary forms, with or 2240 without modification, is permitted pursuant to, and subject to 2241 the license terms contained in, the Simplified BSD License set 2242 forth in Section 4.c of the IETF Trust's Legal Provisions 2243 Relating to IETF Documents 2244 (https://trustee.ietf.org/license-info). 2246 This version of this YANG module is part of RFC 9127; see the 2247 RFC itself for full legal notices."; 2248 reference 2249 "RFC 7130: Bidirectional Forwarding Detection (BFD) on 2250 Link Aggregation Group (LAG) Interfaces 2251 RFC 9127: YANG Data Model for Bidirectional Forwarding 2252 Detection (BFD)"; 2254 revision 2021-10-21 { 2255 description 2256 "Initial revision."; 2257 reference 2258 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2259 Detection (BFD)"; 2260 } 2262 /* 2263 * Augments 2264 */ 2266 augment "/rt:routing/rt:control-plane-protocols/" 2267 + "rt:control-plane-protocol/bfd:bfd" { 2268 description 2269 "BFD augmentation for a LAG."; 2270 container lag { 2271 description 2272 "BFD-over-LAG top-level container."; 2273 container micro-bfd-ipv4-session-statistics { 2274 description 2275 "Micro-BFD IPv4 session counters."; 2276 uses bfd-types:session-statistics-summary; 2277 } 2278 container micro-bfd-ipv6-session-statistics { 2279 description 2280 "Micro-BFD IPv6 session counters."; 2281 uses bfd-types:session-statistics-summary; 2282 } 2283 container sessions { 2284 description 2285 "BFD-over-LAG sessions."; 2286 list session { 2287 key "lag-name"; 2288 description 2289 "List of BFD-over-LAG sessions."; 2290 leaf lag-name { 2291 type if:interface-ref; 2292 description 2293 "Name of the LAG."; 2294 } 2295 leaf ipv4-dest-addr { 2296 type inet:ipv4-address; 2297 description 2298 "IPv4 address of the peer, for IPv4 micro-BFD."; 2299 } 2300 leaf ipv6-dest-addr { 2301 type inet:ipv6-address; 2302 description 2303 "IPv6 address of the peer, for IPv6 micro-BFD."; 2304 } 2305 uses bfd-types:common-cfg-parms; 2306 leaf use-ipv4 { 2307 type boolean; 2308 description 2309 "Using IPv4 micro-BFD."; 2310 } 2311 leaf use-ipv6 { 2312 type boolean; 2313 description 2314 "Using IPv6 micro-BFD."; 2315 } 2316 list member-links { 2317 key "member-link"; 2318 config false; 2319 description 2320 "Micro-BFD over a LAG. This represents one 2321 member link."; 2322 leaf member-link { 2323 type if:interface-ref; 2324 description 2325 "Member link on which micro-BFD is running."; 2326 } 2327 container micro-bfd-ipv4 { 2328 when "../../use-ipv4 = 'true'" { 2329 description 2330 "Needed only if IPv4 is used."; 2331 } 2332 description 2333 "Micro-BFD IPv4 session state on a member link."; 2334 uses bfd-types:all-session; 2335 } 2336 container micro-bfd-ipv6 { 2337 when "../../use-ipv6 = 'true'" { 2338 description 2339 "Needed only if IPv6 is used."; 2340 } 2341 description 2342 "Micro-BFD IPv6 session state on a member link."; 2343 uses bfd-types:all-session; 2344 } 2345 } 2346 } 2347 } 2349 } 2350 } 2352 /* 2353 * Notifications 2354 */ 2356 notification lag-notification { 2357 description 2358 "Notification for BFD-over-LAG session state change. 2359 An implementation may rate-limit notifications, e.g., when a 2360 session is continuously changing state."; 2361 uses bfd-types:notification-parms; 2362 leaf lag-name { 2363 type if:interface-ref; 2364 description 2365 "LAG interface name."; 2366 } 2367 leaf member-link { 2368 type if:interface-ref; 2369 description 2370 "Member link on which BFD is running."; 2371 } 2372 } 2373 } 2374 2376 2.17. BFD-over-MPLS YANG Module 2378 This YANG module imports typedefs from [RFC6991]. It also imports 2379 and augments "/routing/control-plane-protocols/control-plane- 2380 protocol" from [RFC8349]. Additionally, it references [RFC5586] and 2381 [RFC5884]. 2383 file "ietf-bfd-mpls@2021-10-21.yang" 2384 module ietf-bfd-mpls { 2385 yang-version 1.1; 2386 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 2387 prefix bfd-mpls; 2389 import ietf-bfd-types { 2390 prefix bfd-types; 2391 reference 2392 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2393 Detection (BFD)"; 2394 } 2395 import ietf-bfd { 2396 prefix bfd; 2397 reference 2398 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2399 Detection (BFD)"; 2400 } 2401 import ietf-inet-types { 2402 prefix inet; 2403 reference 2404 "RFC 6991: Common YANG Data Types"; 2405 } 2406 import ietf-routing { 2407 prefix rt; 2408 reference 2409 "RFC 8349: A YANG Data Model for Routing Management 2410 (NMDA Version)"; 2411 } 2413 organization 2414 "IETF BFD Working Group"; 2415 contact 2416 "WG Web: 2417 WG List: 2419 Editor: Reshad Rahman 2420 2422 Editor: Lianshu Zheng 2423 2425 Editor: Mahesh Jethanandani 2426 "; 2427 description 2428 "This module contains the YANG definition for BFD parameters for 2429 MPLS LSPs as per RFC 5884. 2431 Copyright (c) 2021 IETF Trust and the persons identified as 2432 authors of the code. All rights reserved. 2434 Redistribution and use in source and binary forms, with or 2435 without modification, is permitted pursuant to, and subject to 2436 the license terms contained in, the Simplified BSD License set 2437 forth in Section 4.c of the IETF Trust's Legal Provisions 2438 Relating to IETF Documents 2439 (https://trustee.ietf.org/license-info). 2441 This version of this YANG module is part of RFC 9127; see the 2442 RFC itself for full legal notices."; 2443 reference 2444 "RFC 5884: Bidirectional Forwarding Detection (BFD) 2445 for MPLS Label Switched Paths (LSPs) 2446 RFC 9127: YANG Data Model for Bidirectional Forwarding 2447 Detection (BFD)"; 2449 revision 2021-10-21 { 2450 description 2451 "Initial revision."; 2452 reference 2453 "RFC 9127: YANG Data Model for Bidirectional Forwarding 2454 Detection (BFD)"; 2455 } 2457 /* 2458 * Identity definitions 2459 */ 2461 identity encap-gach { 2462 base bfd-types:encap-type; 2463 description 2464 "BFD with G-ACh encapsulation as per RFC 5586."; 2465 reference 2466 "RFC 5586: MPLS Generic Associated Channel"; 2467 } 2469 identity encap-ip-gach { 2470 base bfd-types:encap-type; 2471 description 2472 "BFD with IP and G-ACh encapsulation as per RFC 5586."; 2473 } 2475 /* 2476 * Groupings 2477 */ 2479 grouping encap-cfg { 2480 description 2481 "Configuration for BFD encapsulation."; 2482 leaf encap { 2483 type identityref { 2484 base bfd-types:encap-type; 2485 } 2486 default "bfd-types:encap-ip"; 2487 description 2488 "BFD encapsulation."; 2489 } 2490 } 2492 grouping mpls-dest-address { 2493 description 2494 "Destination address as per RFC 5884."; 2495 reference 2496 "RFC 5884: Bidirectional Forwarding Detection (BFD) 2497 for MPLS Label Switched Paths (LSPs)"; 2498 leaf mpls-dest-address { 2499 type inet:ip-address; 2500 config false; 2501 description 2502 "Destination address as per RFC 5884. 2503 Needed if IP encapsulation is used."; 2504 } 2505 } 2507 /* 2508 * Augments 2509 */ 2511 augment "/rt:routing/rt:control-plane-protocols/" 2512 + "rt:control-plane-protocol/bfd:bfd" { 2513 description 2514 "BFD augmentation for MPLS."; 2515 container mpls { 2516 description 2517 "BFD MPLS top-level container."; 2518 uses bfd-types:session-statistics-summary; 2519 container egress { 2520 description 2521 "Egress configuration."; 2522 uses bfd-types:client-cfg-parms; 2523 uses bfd-types:auth-parms; 2524 } 2525 container session-groups { 2526 description 2527 "BFD-over-MPLS session groups."; 2528 list session-group { 2529 key "mpls-fec"; 2530 description 2531 "Group of BFD MPLS sessions (for ECMP). A group of 2532 sessions is for one FEC. Each session has a different 2533 field in the UDP/IP header for ECMP."; 2534 leaf mpls-fec { 2535 type inet:ip-prefix; 2536 description 2537 "MPLS FEC."; 2538 } 2539 uses bfd-types:common-cfg-parms; 2540 list sessions { 2541 config false; 2542 description 2543 "The BFD sessions for an MPLS FEC. The local 2544 discriminator is unique for each session in the 2545 group."; 2546 uses bfd-types:all-session; 2547 uses bfd-mpls:mpls-dest-address; 2548 } 2549 } 2550 } 2551 } 2552 } 2554 /* 2555 * Notifications 2556 */ 2558 notification mpls-notification { 2559 description 2560 "Notification for BFD-over-MPLS FEC session state change. 2561 An implementation may rate-limit notifications, e.g., when a 2562 session is continuously changing state."; 2563 uses bfd-types:notification-parms; 2564 leaf mpls-dest-address { 2565 type inet:ip-address; 2566 description 2567 "Destination address as per RFC 5884. 2568 Needed if IP encapsulation is used."; 2569 } 2570 } 2571 } 2572 2574 3. Data Model Examples 2576 This section presents some simple and illustrative examples of how to 2577 configure BFD. 2579 The examples are represented in XML [W3C.REC-xml-20081126]. 2581 3.1. IP Single-Hop 2583 The following is an example configuration for a BFD IP single-hop 2584 session. The desired transmit interval and the required receive 2585 interval are both set to 10 ms. 2587 2588 2589 2590 2591 eth0 2592 2593 ianaift:ethernetCsmacd 2594 2595 2596 2597 2598 2599 2600 2602 bfd-types:bfdv1 2603 2604 name:BFD 2605 2606 2607 2608 2609 eth0 2610 2001:db8:0:113::101 2611 2612 10000 2613 2614 2615 10000 2616 2617 2618 2619 2620 2621 2622 2623 2624 2626 3.2. IP Multihop 2628 The following is an example configuration for a BFD IP multihop 2629 session group. The desired transmit interval and the required 2630 receive interval are both set to 150 ms. 2632 2633 2634 2635 2636 2637 2639 bfd-types:bfdv1 2640 2641 name:BFD 2642 2643 2644 2645 2646 2001:db8:0:113::103 2647 2001:db8:0:114::100 2648 2649 150000 2650 2651 2652 150000 2653 2654 240 2655 2656 2657 2658 2659 2660 2661 2662 2664 3.3. LAG 2666 The following is an example of BFD configuration for a LAG session. 2667 In this case, an interface named "Bundle-Ether1" of interface type 2668 "ieee8023adLag" has a desired transmit interval and required receive 2669 interval set to 10 ms. 2671 2672 2673 2674 2675 Bundle-Ether1 2676 2677 ianaift:ieee8023adLag 2678 2679 2680 2681 2682 2683 2684 2686 bfd-types:bfdv1 2687 2688 name:BFD 2689 2690 2691 2692 2693 Bundle-Ether1 2694 2001:db8:112::16 2695 2696 100000 2697 2698 2699 100000 2700 2701 true 2702 2703 2704 2705 2706 2707 2708 2709 2711 3.4. MPLS 2713 The following is an example of BFD configured for an MPLS LSP. In 2714 this case, the desired transmit interval and required receive 2715 interval are both set to 250 ms. 2717 2718 2719 2720 2721 2722 2724 bfd-types:bfdv1 2725 2726 name:BFD 2727 2728 2729 2730 2731 2001:db8:114::/116 2732 2733 250000 2734 2735 2736 250000 2737 2738 2739 2740 2741 2742 2743 2744 2745 2747 4. Security Considerations 2749 The YANG modules specified in this document define a schema for data 2750 that is designed to be accessed via network management protocols such 2751 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2752 is the secure transport layer, and the mandatory-to-implement secure 2753 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2754 is HTTPS, and the mandatory-to-implement secure transport is TLS 2755 [RFC8446]. 2757 The Network Configuration Access Control Model (NACM) [RFC8341] 2758 provides the means to restrict access for particular NETCONF or 2759 RESTCONF users to a preconfigured subset of all available NETCONF or 2760 RESTCONF protocol operations and content. 2762 There are a number of data nodes defined in these YANG modules that 2763 are writable/creatable/deletable (i.e., config true, which is the 2764 default). These data nodes may be considered sensitive or vulnerable 2765 in some network environments. Write operations (e.g., edit-config) 2766 to these data nodes without proper protection can have a negative 2767 effect on network operations. These are the subtrees and data nodes 2768 and their sensitivity/vulnerability from a write access perspective: 2770 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2771 sessions: 2772 This list specifies the IP single-hop BFD sessions. 2774 Data nodes "local-multiplier", "desired-min-tx-interval", 2775 "required-min-rx-interval", and "min-interval" all impact the BFD 2776 IP single-hop session. The "source-addr" and "dest-addr" data 2777 nodes can be used to send BFD packets to unwitting recipients. 2778 [RFC5880] describes how BFD mitigates such threats. 2779 Authentication data nodes "key-chain" and "meticulous" impact the 2780 security of the BFD IP single-hop session. 2782 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2783 session-group: 2784 This list specifies the IP multihop BFD session groups. 2786 Data nodes "local-multiplier", "desired-min-tx-interval", 2787 "required-min-rx-interval", and "min-interval" all impact the BFD 2788 IP multihop session. The "source-addr" and "dest-addr" data nodes 2789 can be used to send BFD packets to unwitting recipients. 2790 [RFC5880] describes how BFD mitigates such threats. 2791 Authentication data nodes "key-chain" and "meticulous" impact the 2792 security of the BFD IP multihop session. 2794 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2795 sessions: 2796 This list specifies the BFD sessions over a LAG. 2798 Data nodes "local-multiplier", "desired-min-tx-interval", 2799 "required-min-rx-interval", and "min-interval" all impact the BFD- 2800 over-LAG session. The "ipv4-dest-addr" and "ipv6-dest-addr" data 2801 nodes can be used to send BFD packets to unwitting recipients. 2802 [RFC5880] describes how BFD mitigates such threats. 2803 Authentication data nodes "key-chain" and "meticulous" impact the 2804 security of the BFD-over-LAG session. 2806 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2807 session-group: 2808 This list specifies the session groups for BFD over MPLS. 2810 Data nodes "local-multiplier", "desired-min-tx-interval", 2811 "required-min-rx-interval", and "min-interval" all impact the BFD- 2812 over-MPLS-LSPs session. Authentication data nodes "key-chain" and 2813 "meticulous" impact the security of the BFD-over-MPLS-LSPs 2814 session. 2816 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2817 egress: 2818 Data nodes "local-multiplier", "desired-min-tx-interval", 2819 "required-min-rx-interval", and "min-interval" all impact the BFD- 2820 over-MPLS-LSPs sessions for which this device is an MPLS LSP 2821 egress node. Authentication data nodes "key-chain" and 2822 "meticulous" impact the security of the BFD-over-MPLS-LSPs 2823 sessions for which this device is an MPLS LSP egress node. 2825 The YANG modules have writable data nodes that can be used for the 2826 creation of BFD sessions and the modification of BFD session 2827 parameters. The system should "police" the creation of BFD sessions 2828 to prevent new sessions from causing existing BFD sessions to fail. 2829 In the case of BFD session modification, the BFD protocol has 2830 mechanisms in place that allow for in-service modification. 2832 When BFD clients are used to modify BFD configuration (as described 2833 in Section 2.1), the BFD clients need to be included in an analysis 2834 of the security properties of the system that uses BFD (e.g., when 2835 considering the authentication and authorization of control actions). 2836 In many cases, BFD is not the most vulnerable portion of such a 2837 composite system, since BFD is limited to generating well-defined 2838 traffic at a fixed rate on a given path; in the case of an IGP acting 2839 as a BFD client, attacking the IGP could cause more broad-scale 2840 disruption than would (de)configuring a BFD session. 2842 Some of the readable data nodes in these YANG modules may be 2843 considered sensitive or vulnerable in some network environments. It 2844 is thus important to control read access (e.g., via get, get-config, 2845 or notification) to these data nodes. These are the subtrees and 2846 data nodes and their sensitivity/vulnerability from a read access 2847 perspective: 2849 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2850 summary: 2851 Access to this information discloses the number of BFD IP single- 2852 hop sessions that are in the "up", "down", or "admin-down" state. 2853 The counters include BFD sessions for which the user does not have 2854 read access. 2856 /routing/control-plane-protocols/control-plane-protocol/bfd/ip- 2857 sh/sessions/session/: 2858 Access to data nodes "local-discriminator" and "remote- 2859 discriminator" (combined with the data nodes in the authentication 2860 container) provides the ability to spoof BFD IP single-hop 2861 packets. 2863 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2864 summary: 2865 Access to this information discloses the number of BFD IP multihop 2866 sessions that are in the "up", "down", or "admin-down" state. The 2867 counters include BFD sessions for which the user does not have 2868 read access. 2870 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2871 session-groups/session-group/sessions: 2872 Access to data nodes "local-discriminator" and "remote- 2873 discriminator" (combined with the data nodes in the session 2874 group's authentication container) provides the ability to spoof 2875 BFD IP multihop packets. 2877 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2878 micro-bfd-ipv4-session-statistics/summary: 2879 Access to this information discloses the number of micro-BFD IPv4 2880 LAG sessions that are in the "up", "down", or "admin-down" state. 2881 The counters include BFD sessions for which the user does not have 2882 read access. 2884 /routing/control-plane-protocols/control-plane- 2885 protocol/bfd/lag/sessions/session/member-links/member-link/micro- 2886 bfd-ipv4: 2887 Access to data nodes "local-discriminator" and "remote- 2888 discriminator" (combined with the data nodes in the session's 2889 authentication container) provides the ability to spoof BFD IPv4 2890 LAG packets. 2892 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2893 micro-bfd-ipv6-session-statistics/summary: 2894 Access to this information discloses the number of micro-BFD IPv6 2895 LAG sessions that are in the "up", "down", or "admin-down" state. 2896 The counters include BFD sessions for which the user does not have 2897 read access. 2899 /routing/control-plane-protocols/control-plane- 2900 protocol/bfd/lag/sessions/session/member-links/member-link/micro- 2901 bfd-ipv6: 2902 Access to data nodes "local-discriminator" and "remote- 2903 discriminator" (combined with the data nodes in the session's 2904 authentication container) provides the ability to spoof BFD IPv6 2905 LAG packets. 2907 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2908 summary: 2909 Access to this information discloses the number of BFD sessions 2910 over MPLS LSPs that are in the "up", "down", or "admin-down" 2911 state. The counters include BFD sessions for which the user does 2912 not have read access. 2914 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2915 session-groups/session-group/sessions: 2916 Access to data nodes "local-discriminator" and "remote- 2917 discriminator" (combined with the data nodes in the session 2918 group's authentication container) provides the ability to spoof 2919 BFD-over-MPLS-LSPs packets. 2921 This document does not define any RPC operations. 2923 5. IANA Considerations 2925 IANA has registered the following namespace URIs in the "IETF XML 2926 Registry" [RFC3688]: 2928 URI: urn:ietf:params:xml:ns:yang:iana-bfd-types 2929 Registrant Contact: The IESG. 2930 XML: N/A; the requested URI is an XML namespace. 2932 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-types 2933 Registrant Contact: The IESG. 2934 XML: N/A; the requested URI is an XML namespace. 2936 URI: urn:ietf:params:xml:ns:yang:ietf-bfd 2937 Registrant Contact: The IESG. 2938 XML: N/A; the requested URI is an XML namespace. 2940 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2941 Registrant Contact: The IESG. 2942 XML: N/A; the requested URI is an XML namespace. 2944 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2945 Registrant Contact: The IESG. 2946 XML: N/A; the requested URI is an XML namespace. 2948 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2949 Registrant Contact: The IESG. 2950 XML: N/A; the requested URI is an XML namespace. 2952 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2953 Registrant Contact: The IESG. 2954 XML: N/A; the requested URI is an XML namespace. 2956 IANA has registered the following YANG modules in the "YANG Module 2957 Names" registry [RFC6020]: 2959 Name: iana-bfd-types 2960 Namespace: urn:ietf:params:xml:ns:yang:iana-bfd-types 2961 Prefix: iana-bfd-types 2962 Reference: RFC 9127 2964 Name: ietf-bfd-types 2965 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-types 2966 Prefix: bfd-types 2967 Reference: RFC 9127 2969 Name: ietf-bfd 2970 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd 2971 Prefix: bfd 2972 Reference: RFC 9127 2974 Name: ietf-bfd-ip-sh 2975 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2976 Prefix: bfd-ip-sh 2977 Reference: RFC 9127 2979 Name: ietf-bfd-ip-mh 2980 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2981 Prefix: bfd-ip-mh 2982 Reference: RFC 9127 2984 Name: ietf-bfd-lag 2985 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2986 Prefix: bfd-lag 2987 Reference: RFC 9127 2989 Name: ietf-bfd-mpls 2990 Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2991 Prefix: bfd-mpls 2992 Reference: RFC 9127 2994 5.1. IANA-Maintained "iana-bfd-types" Module 2996 This document defines the initial version of the IANA-maintained 2997 "iana-bfd-types" YANG module. 2999 The "iana-bfd-types" YANG module mirrors the "BFD Diagnostic Codes" 3000 and "BFD Authentication Types" registries at 3001 . Whenever these 3002 registries change, IANA must update the "iana-bfd-types" YANG module. 3004 6. References 3006 6.1. References 3008 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3009 DOI 10.17487/RFC3688, January 2004, 3010 . 3012 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 3013 "MPLS Generic Associated Channel", RFC 5586, 3014 DOI 10.17487/RFC5586, June 2009, 3015 . 3017 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 3018 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 3019 . 3021 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 3022 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 3023 DOI 10.17487/RFC5881, June 2010, 3024 . 3026 [RFC5882] Katz, D. and D. Ward, "Generic Application of 3027 Bidirectional Forwarding Detection (BFD)", RFC 5882, 3028 DOI 10.17487/RFC5882, June 2010, 3029 . 3031 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 3032 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 3033 June 2010, . 3035 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 3036 "Bidirectional Forwarding Detection (BFD) for MPLS Label 3037 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 3038 June 2010, . 3040 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 3041 Forwarding Detection (BFD) for the Pseudowire Virtual 3042 Circuit Connectivity Verification (VCCV)", RFC 5885, 3043 DOI 10.17487/RFC5885, June 2010, 3044 . 3046 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3047 the Network Configuration Protocol (NETCONF)", RFC 6020, 3048 DOI 10.17487/RFC6020, October 2010, 3049 . 3051 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3052 and A. Bierman, Ed., "Network Configuration Protocol 3053 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3054 . 3056 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3057 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3058 . 3060 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 3061 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3062 . 3064 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 3065 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 3066 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 3067 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 3068 2014, . 3070 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 3071 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 3072 . 3074 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 3075 Zhang, "YANG Data Model for Key Chains", RFC 8177, 3076 DOI 10.17487/RFC8177, June 2017, 3077 . 3079 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 3080 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 3081 . 3083 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 3084 Access Control Model", STD 91, RFC 8341, 3085 DOI 10.17487/RFC8341, March 2018, 3086 . 3088 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 3089 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 3090 . 3092 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 3093 RFC 8344, DOI 10.17487/RFC8344, March 2018, 3094 . 3096 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 3097 Routing Management (NMDA Version)", RFC 8349, 3098 DOI 10.17487/RFC8349, March 2018, 3099 . 3101 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 3102 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 3103 . 3105 [RFC8960] Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A 3106 YANG Data Model for MPLS Base", RFC 8960, 3107 DOI 10.17487/RFC8960, December 2020, 3108 . 3110 6.2. References 3112 [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol 3113 Label Switching Architecture", RFC 3031, 3114 DOI 10.17487/RFC3031, January 2001, 3115 . 3117 [RFC6428] Allan, D., Ed., Swallow, G., Ed., and J. Drake, Ed., 3118 "Proactive Connectivity Verification, Continuity Check, 3119 and Remote Defect Indication for the MPLS Transport 3120 Profile", RFC 6428, DOI 10.17487/RFC6428, November 2011, 3121 . 3123 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 3124 and R. Wilton, "Network Management Datastore Architecture 3125 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 3126 . 3128 [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3129 Liu, "YANG Data Model for Network Instances", RFC 8529, 3130 DOI 10.17487/RFC8529, March 2019, 3131 . 3133 [RFC8530] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3134 Liu, "YANG Model for Logical Network Elements", RFC 8530, 3135 DOI 10.17487/RFC8530, March 2019, 3136 . 3138 [RFC8532] Kumar, D., Wang, Z., Wu, Q., Ed., Rahman, R., and S. 3139 Raghavan, "Generic YANG Data Model for the Management of 3140 Operations, Administration, and Maintenance (OAM) 3141 Protocols That Use Connectionless Communications", 3142 RFC 8532, DOI 10.17487/RFC8532, April 2019, 3143 . 3145 [W3C.REC-xml-20081126] 3146 Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and 3147 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth 3148 Edition)", World Wide Web Consortium Recommendation REC- 3149 xml-20081126, November 2008, 3150 . 3152 Appendix A. Echo Function Configuration Example 3154 As mentioned in Section 2.1.2, the mechanism to start and stop the 3155 Echo function, as defined in [RFC5880] and discussed in [RFC5881], is 3156 implementation specific. In this appendix, we provide an example of 3157 how the Echo function can be implemented via configuration. 3159 module: example-bfd-echo 3160 augment /rt:routing/rt:control-plane-protocols 3161 /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh 3162 /bfd-ip-sh:sessions: 3163 +--rw echo {bfd-types:echo-mode}? 3164 +--rw desired-min-echo-tx-interval? uint32 3165 +--rw required-min-echo-rx-interval? uint32 3167 A.1. Example YANG Module for BFD Echo Function Configuration 3169 This appendix provides an example YANG module for configuration of 3170 the BFD Echo function. It imports and augments "/routing/control- 3171 plane-protocols/control-plane-protocol" from [RFC8349], and it 3172 references [RFC5880]. 3174 module example-bfd-echo { 3175 namespace "tag:example.com,2021:example-bfd-echo"; 3176 prefix example-bfd-echo; 3178 import ietf-bfd-types { 3179 prefix bfd-types; 3180 } 3181 import ietf-bfd { 3182 prefix bfd; 3183 } 3184 import ietf-bfd-ip-sh { 3185 prefix bfd-ip-sh; 3186 } 3187 import ietf-routing { 3188 prefix rt; 3189 } 3191 organization 3192 "IETF BFD Working Group"; 3193 contact 3194 "WG Web: 3195 WG List: 3197 Editor: Reshad Rahman 3198 3200 Editor: Lianshu Zheng 3201 3203 Editor: Mahesh Jethanandani 3204 "; 3205 description 3206 "This module contains an example YANG augmentation for 3207 configuration of the BFD Echo function. 3209 Copyright (c) 2021 IETF Trust and the persons identified as 3210 authors of the code. All rights reserved. 3212 Redistribution and use in source and binary forms, with or 3213 without modification, is permitted pursuant to, and subject to 3214 the license terms contained in, the Simplified BSD License set 3215 forth in Section 4.c of the IETF Trust's Legal Provisions 3216 Relating to IETF Documents 3217 (https://trustee.ietf.org/license-info). 3219 This version of this YANG module is part of RFC 9127; see the 3220 RFC itself for full legal notices."; 3222 revision 2021-09-03 { 3223 description 3224 "Initial revision."; 3225 reference 3226 "RFC 9127: YANG Data Model for Bidirectional Forwarding 3227 Detection (BFD)"; 3228 } 3229 /* 3230 * Groupings 3231 */ 3233 grouping echo-cfg-parms { 3234 description 3235 "BFD grouping for Echo configuration parameters."; 3236 leaf desired-min-echo-tx-interval { 3237 type uint32; 3238 units "microseconds"; 3239 default "0"; 3240 description 3241 "This is the minimum interval that the local system would 3242 like to use when transmitting BFD Echo packets. If 0, 3243 the Echo function as defined in BFD (RFC 5880) is 3244 disabled."; 3245 } 3246 leaf required-min-echo-rx-interval { 3247 type uint32; 3248 units "microseconds"; 3249 default "0"; 3250 description 3251 "This is the Required Min Echo RX Interval as defined in BFD 3252 (RFC 5880)."; 3253 } 3254 } 3256 augment "/rt:routing/rt:control-plane-protocols/" 3257 + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" 3258 + "bfd-ip-sh:sessions" { 3259 description 3260 "Augmentation for the BFD Echo function."; 3261 container echo { 3262 if-feature "bfd-types:echo-mode"; 3263 description 3264 "BFD Echo function container."; 3265 uses echo-cfg-parms; 3266 } 3267 } 3268 } 3270 Acknowledgments 3272 We would like to thank Nobo Akiya and Jeff Haas for their 3273 encouragement on this work. We would also like to thank Tom Petch 3274 for his comments on the document. We would also like to thank Acee 3275 Lindem for his guidance. Thanks also to Jürgen Schönwälder, who was 3276 instrumental in improving the YANG modules. 3278 Authors' Addresses 3280 Reshad Rahman (editor) 3281 Canada 3283 Email: reshad@yahoo.com 3285 Lianshu Zheng (editor) 3286 Huawei Technologies 3287 China 3289 Email: veronique_cheng@hotmail.com 3291 Mahesh Jethanandani (editor) 3292 Xoriant Corporation 3293 1248 Reamwood Ave 3294 Sunnyvale, California 94089 3295 United States of America 3297 Email: mjethanandani@gmail.com 3299 Santosh Pallagatti 3300 VMware 3301 India 3303 Email: santosh.pallagatti@gmail.com 3305 Greg Mirsky 3306 Ericsson 3308 Email: gregimirsky@gmail.com 3310 Updates since RFC 9127 3312 This version of the draft updates the 'ietf-bfd-types' module to 3313 define a new feature called 'client-base-cfg-parms and a 'if-feature' 3314 statement that conditionally includes definition of parameters such 3315 as 'multiplier' or 'desired-min-tx-interval'. The feature statement 3316 allows YANG implementations of protocol such as OSPF, ISIS, PIM and 3317 BGP, to support both a model where such parameters are not needed, 3318 such as when multiple BFD sessions are supported over a given 3319 interface, as well as when they need to be defined per session.