idnits 2.17.1 draft-ietf-bfd-yang-11.txt: 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: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document doesn't use any RFC 2119 keywords, yet has text resembling RFC 2119 boilerplate text. -- The document date (March 3, 2018) is 2245 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) == Outdated reference: A later version (-17) exists of draft-ietf-mpls-base-yang-06 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-12 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-12) exists of draft-ietf-netmod-schema-mount-08 == Outdated reference: A later version (-10) exists of draft-ietf-rtgwg-lne-model-07 == Outdated reference: A later version (-12) exists of draft-ietf-rtgwg-ni-model-10 Summary: 2 errors (**), 0 flaws (~~), 7 warnings (==), 2 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 Cisco Systems 4 Intended status: Standards Track L. Zheng, Ed. 5 Expires: September 4, 2018 Huawei Technologies 6 M. Jethanandani, Ed. 8 S. Pallagatti 10 G. Mirsky 11 ZTE Corporation 12 March 3, 2018 14 YANG Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-yang-11.txt 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). 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 http://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 September 4, 2018. 42 Copyright Notice 44 Copyright (c) 2018 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 49 (http://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 60 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 61 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 62 2.1. Design of Configuration Model . . . . . . . . . . . . . . 5 63 2.1.1. Common BFD configuration parameters . . . . . . . . . 6 64 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 7 65 2.1.3. Multihop IP . . . . . . . . . . . . . . . . . . . . . 7 66 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 8 67 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 8 68 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 9 69 2.2. Design of Operational State Model . . . . . . . . . . . . 9 70 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 10 71 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 10 72 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 10 73 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 10 74 2.7. BFD IP multihop hierarchy . . . . . . . . . . . . . . . . 12 75 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 14 76 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 17 77 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 19 78 2.11. Interaction with other YANG modules . . . . . . . . . . . 21 79 2.11.1. Module ietf-interfaces . . . . . . . . . . . . . . . 21 80 2.11.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 22 81 2.11.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 22 82 2.11.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 22 83 2.12. IANA BFD YANG Module . . . . . . . . . . . . . . . . . . 22 84 2.13. BFD types YANG Module . . . . . . . . . . . . . . . . . . 25 85 2.14. BFD top-level YANG Module . . . . . . . . . . . . . . . . 38 86 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 39 87 2.16. BFD IP multihop YANG Module . . . . . . . . . . . . . . . 43 88 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 46 89 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 50 90 2.19. BFD over MPLS-TE YANG Module . . . . . . . . . . . . . . 53 91 3. Data Model examples . . . . . . . . . . . . . . . . . . . . . 56 92 3.1. IP single-hop . . . . . . . . . . . . . . . . . . . . . . 56 93 3.2. IP multihop . . . . . . . . . . . . . . . . . . . . . . . 57 94 3.3. LAG . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 95 3.4. MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . 59 96 4. Security Considerations . . . . . . . . . . . . . . . . . . . 60 97 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 63 98 5.1. IANA-Maintained iana-bfd-types module . . . . . . . . . . 64 99 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 64 100 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 65 101 7.1. Normative References . . . . . . . . . . . . . . . . . . 65 102 7.2. Informative References . . . . . . . . . . . . . . . . . 67 103 Appendix A. Echo function configuration example . . . . . . . . 68 104 A.1. Example YANG module for BFD echo function configuration . 68 105 Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 70 106 B.1. Changes between versions -10 and -11 . . . . . . . . . . 70 107 B.2. Changes between versions -09 and -10 . . . . . . . . . . 70 108 B.3. Changes between versions -08 and -09 . . . . . . . . . . 70 109 B.4. Changes between versions -07 and -08 . . . . . . . . . . 71 110 B.5. Changes between versions -06 and -07 . . . . . . . . . . 71 111 B.6. Changes between versions -05 and -06 . . . . . . . . . . 71 112 B.7. Changes between versions -04 and -05 . . . . . . . . . . 71 113 B.8. Changes between versions -03 and -04 . . . . . . . . . . 71 114 B.9. Changes between versions -02 and -03 . . . . . . . . . . 72 115 B.10. Changes between versions -01 and -02 . . . . . . . . . . 72 116 B.11. Changes between versions -00 and -01 . . . . . . . . . . 72 117 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 72 119 1. Introduction 121 This document defines a YANG data model that can be used to configure 122 and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD 123 is a network protocol which is used for liveness detection of 124 arbitrary paths between systems. Some examples of different types of 125 paths over which we have BFD: 127 1) Two systems directly connected via IP. This is known as BFD over 128 single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881] 130 2) Two systems connected via multiple hops as described in BFD for 131 Multiple Hops. [RFC5883] 133 3) Two systems connected via MPLS Label Switched Paths (LSPs) as 134 described in BFD for MPLS LSP [RFC5884] 136 4) Two systems connected via a Link Aggregation Group (LAG) interface 137 as described in BFD on LAG Interfaces [RFC7130] 139 5) Two systems connected via pseudowires (PWs), this is known as 140 Virtual Circuit Connectivity Verification (VCCV) as described in BFD 141 for PW VCCV [RFC5885]. This is not addressed in this document. 143 BFD typically does not operate on its own. Various control 144 protocols, also known as BFD clients, use the services provided by 145 BFD for their own operation as described in Generic Application of 146 BFD [RFC5882]. The obvious candidates which use BFD are those which 147 do not have "hellos" to detect failures, e.g. static routes, and 148 routing protocols whose "hellos" do not support sub-second failure 149 detection, e.g. OSPF and IS-IS. 151 The YANG modules in this document conform to the Network Management 152 Datastore Architecture (NMDA) Network Management Datastore 153 Architecture [I-D.ietf-netmod-revised-datastores]. This means that 154 the data models do not have separate top-level or sibling containers 155 for configuration and operational state data. 157 1.1. Requirements Language 159 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 160 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 161 document are to be interpreted as described in BCP 14 [RFC2119] 162 [RFC8174] when, and only when, they appear in all capitals, as shown 163 here. 165 2. Design of the Data Model 167 Since BFD is used for liveliness detection of various forwarding 168 paths, there is no uniform key to identify a BFD session. So the BFD 169 data model is split in multiple YANG modules where each module 170 corresponds to one type of forwarding path. For example, BFD for IP 171 single-hop is in one YANG module and BFD for MPLS-TE is in another 172 YANG module. The main difference between these modules is how a BFD 173 session is uniquely identified, i.e the key for the list containing 174 the BFD sessions for that forwarding path. To avoid duplication of 175 BFD definitions, we have common types and groupings which are used by 176 all the modules. 178 A new control-plane protocol "bfdv1" is defined and a "bfd" container 179 is created under control-plane-protocol as specified in "A YANG Data 180 Model for Routing Management (NMDA Version)" 181 [I-D.ietf-netmod-rfc8022bis]. This new "bfd" container is augmented 182 by all the YANG modules for their respective specific information: 184 1. ietf-bfd-ip-sh.yang augments "/routing/control-plane-protocols/ 185 control-plane-protocol/bfd/" with the "ip-sh" container for BFD 186 sessions over IP single-hop. 188 2. ietf-bfd-ip-mh.yang augments "/routing/control-plane-protocols/ 189 control-plane-protocol/bfd/" with the "ip-mh" container for BFD 190 sessions over IP multi-hop. 192 3. ietf-bfd-lag.yang augments "/routing/control-plane-protocols/ 193 control-plane-protocol/bfd/" with the "lag" container for BFD 194 sessions over LAG. 196 4. ietf-bfd-mpls.yang augments "/routing/control-plane-protocols/ 197 control-plane-protocol/bfd/" with the "mpls" container for BFD 198 over MPLS LSPs. 200 5. ietf-bfd-mpls-te.yang augments "/routing/control-plane-protocols/ 201 control-plane-protocol/bfd/" with the "mpls-te" container for BFD 202 over MPLS-TE. 204 BFD can operate in the following contexts: 206 1. At the network device level 208 2. In Logical Network Elements as described in YANG Logical Network 209 Element [I-D.ietf-rtgwg-lne-model] 211 3. In Network Instances as described in YANG Logical Network Element 212 [I-D.ietf-rtgwg-ni-model] 214 When used at the network device level, the BFD YANG model is used 215 "as-is". When the BFD model is to be used in a Logical Network 216 Element or in a Network Instance, the approach taken is to do a 217 schema-mount (see Schema Mount [I-D.ietf-netmod-schema-mount]) of the 218 BFD model in the appropriate location. For example, if an 219 implementation supports BFD IP multihop in network instances, the 220 implementation would do schema-mount of the BFD IP multihop model in 221 a mount-point which resides in a network instance. 223 2.1. Design of Configuration Model 225 The configuration model consists mainly of the parameters specified 226 in BFD [RFC5880]. Some examples are desired minimum transmit 227 interval, required minimum receive interval, detection multiplier, 228 etc 230 BFD clients are applications that use BFD for fast detection of 231 failures. Some implementations have BFD session configuration under 232 the BFD clients. For example, BFD session configuration under 233 routing applications such as OSPF, IS-IS, BGP etc. Other 234 implementations have BFD session configuration centralized under BFD, 235 i.e. outside the multiple BFD clients. 237 The BFD parameters of interest to a BFD client are mainly the 238 multiplier and interval(s) since those parameters impact the 239 convergence time of the BFD clients when a failure occurs. Other 240 parameters such as BFD authentication are not specific to the 241 requirements of the BFD client. Ideally all configuration should be 242 centralized under BFD. However, this is a problem for clients of BFD 243 which auto-discover their peers. For example, IGPs do not have the 244 peer address configured, instead the IGP is enabled on an interface 245 and the IGP peers are auto-discovered. So for an operator to 246 configure BFD to an IGP peer, the operator would first have to 247 determine the peer addresses. And when a new peer is discovered, BFD 248 configuration would need to be added. To avoid this issue, we define 249 grouping client-cfg-parms in Section 2.13 for BFD clients to 250 configure BFD: this allows BFD clients such as the IGPs to have 251 configuration (multiplier and intervals) for the BFD sessions they 252 need. For example, when a new IGP peer is discovered, the IGP would 253 create a BFD session to the newly discovered peer and similarly when 254 an IGP peer goes away, the IGP would remove the BFD session to that 255 peer. The mechanism how the BFD sessions are created and removed by 256 the BFD clients is outside the scope of this document, but typically 257 this would be done by use of an API implemented by the BFD module on 258 the system. For BFD clients which create BFD sessions via their own 259 configuration, authentication parameters (if required) are still 260 specified in BFD. 262 2.1.1. Common BFD configuration parameters 264 The basic BFD configuration parameters are: 266 local-multiplier 267 This is the detection time multiplier as defined in BFD 268 [RFC5880]. 270 desired-min-tx-interval 271 This is the Desired Min TX Interval as defined in BFD 272 [RFC5880]. 274 required-min-rx-interval 275 This is the Required Min RX Interval as defined in BFD 276 [RFC5880]. 278 Although BFD [RFC5880] allows for different values for transmit and 279 receive intervals, some implementations allow users to specify just 280 one interval which is used for both transmit and receive intervals or 281 separate values for transmit and receive intervals. The BFD YANG 282 model supports this: there is a choice between "min-interval", used 283 for both transmit and receive intervals, and "desired-min-tx- 284 interval" and "required-min-rx-interval". This is supported via a 285 grouping which is used by the YANG modules for the various forwarding 286 paths. 288 For BFD authentication we have: 290 key-chain 291 This is a reference to key-chain defined in YANG Data Model 292 for Key Chains [RFC8177]. The keys, cryptographic 293 algorithms, key lifetime etc are all defined in the key-chain 294 model. 296 meticulous 297 This enables meticulous mode as per BFD [RFC5880]. 299 2.1.2. Single-hop IP 301 For single-hop IP, there is an augment of the "bfd" data node in 302 Section 2. The "ip-sh" node contains a list of IP single-hop 303 sessions where each session is uniquely identified by the interface 304 and destination address pair. For the configuration parameters we 305 use what is defined in Section 2.1.1. The "ip-sh" node also contains 306 a list of interfaces, this is used to specify authentication 307 parameters for BFD sessions which are created by BFD clients, see 308 Section 2.1. 310 [RFC5880] and [RFC5881] do not specify whether echo function is 311 continuous or on demand. Therefore the mechanism used to start and 312 stop echo function is implementation specific and should be done by 313 augmentation: 315 1) Configuration. This is suitable for continuous echo function. 316 An example is provided in Appendix A. 318 2) RPC. This is suitable for on-demand echo function. 320 2.1.3. Multihop IP 322 For multihop IP, there is an augment of the "bfd" data node in 323 Section 2. 325 Because of multiple paths, there could be multiple multihop IP 326 sessions between a source and a destination address. We identify 327 this as a "session-group". The key for each "session-group" consists 328 of: 330 source address 331 Address belonging to the local system as per BFD for Multiple 332 Hops [RFC5883] 334 destination address 335 Address belonging to the remote system as per BFD for 336 Multiple Hops [RFC5883] 338 For the configuration parameters we use what is defined in 339 Section 2.1.1 341 Here are some extra parameters: 343 tx-ttl 344 TTL of outgoing BFD control packets. 346 rx-ttl 347 Minimum TTL of incoming BFD control packets. 349 2.1.4. MPLS Traffic Engineering Tunnels 351 For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel since 352 the desired failure detection parameters is a property of the MPLS-TE 353 tunnel. This is achieved by augmenting the MPLS-TE data model in 354 YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te]. For BFD 355 parameters which are specific to the TE application, e.g. whether to 356 tear down the tunnel in the event of a BFD session failure, these 357 parameters will be defined in the YANG model of the MPLS-TE 358 application. 360 On top of the usual BFD parameters, we have the following per MPLS-TE 361 tunnel: 363 encap 364 Encapsulation for the BFD packets: choice between IP, G-ACh 365 and IP with G-ACh as per MPLS Generic Associated Channel 366 [RFC5586] 368 For general MPLS-TE data, "mpls-te" data node is added under the 369 "bfd" node in Section 2. Since some MPLS-TE tunnels are uni- 370 directional there is no MPLS-TE configuration for these tunnels on 371 the egress node (note that this does not apply to bi-directional 372 MPLS-TP tunnels). The BFD parameters for the egress node are added 373 under "mpls-te". 375 2.1.5. MPLS Label Switched Paths 377 Here we address MPLS LSPs whose FEC is an IP address. The "bfd" node 378 in Section 2 is augmented with "mpls" which contains a list of 379 sessions uniquely identified by an IP prefix. Because of multiple 380 paths, there could be multiple MPLS sessions to an MPLS FEC. We 381 identify this as a "session-group". 383 Since these LSPs are uni-directional there is no LSP configuration on 384 the egress node. 386 The BFD parameters for the egress node are added under "mpls". 388 2.1.6. Link Aggregation Groups 390 Per BFD on LAG Interfaces [RFC7130], configuring BFD on LAG consists 391 of having micro-BFD sessions on each LAG member link. Since the BFD 392 parameters are an attribute of the LAG, they should be under the LAG. 393 However there is no LAG YANG model which we can augment. So a "lag" 394 data node is added to the "bfd" node in Section 2, the configuration 395 is per-LAG: we have a list of LAGs. The destination IP address of 396 the micro-BFD sessions is configured per-LAG and per address-family 397 (IPv4 and IPv6) 399 2.2. Design of Operational State Model 401 The operational state model contains both the overall statistics of 402 BFD sessions running on the device and the per session operational 403 information. 405 The overall statistics of BFD sessions consist of number of BFD 406 sessions, number of BFD sessions up etc. This information is 407 available globally (i.e. for all BFD sessions) under the "bfd" node 408 in Section 2 and also per type of forwarding path. 410 For each BFD session, mainly three categories of operational state 411 data are shown. The fundamental information of a BFD session such as 412 the local discriminator, remote discriminator and the capability of 413 supporting demand detect mode are shown in the first category. The 414 second category includes a BFD session running information, e.g. the 415 remote BFD state and the diagnostic code received. Another example 416 is the actual transmit interval between the control packets, which 417 may be different from the desired minimum transmit interval 418 configured, is shown in this category. Similar examples are actual 419 received interval between the control packets and the actual transmit 420 interval between the echo packets. The third category contains the 421 detailed statistics of the session, e.g. when the session 422 transitioned up/down and how long it has been in that state. 424 For some path types, there may be more than 1 session on the virtual 425 path to the destination. For example, with IP multihop and MPLS 426 LSPs, there could be multiple BFD sessions from the source to the 427 same destination to test the various paths (ECMP) to the destination. 428 This is represented by having multiple "sessions" under each 429 "session-group". 431 2.3. Notifications 433 This YANG model defines notifications to inform end-users of 434 important events detected during the protocol operation. Pair of 435 local and remote discriminator identifies a BFD session on local 436 system. Notifications also give more important details about BFD 437 sessions; e.g. new state, time in previous state, network-instance 438 and the reason that the BFD session state changed. The notifications 439 are defined for each type of forwarding path but use groupings for 440 common information. 442 2.4. RPC Operations 444 None. 446 2.5. BFD top level hierarchy 448 At the "bfd" node under control-plane-protocol, there is no 449 configuration data, only operational state data. The operational 450 state data consist of overall BFD session statistics, i.e. for BFD on 451 all types of forwarding paths. The "bfd" node under control-plane- 452 protocol can be used in a network device (top-level), or mounted in 453 an LNE or in a network instance. 455 module: ietf-bfd 456 augment /rt:routing/rt:control-plane-protocols 457 /rt:control-plane-protocol: 458 +--rw bfd 459 +--ro summary 460 +--ro number-of-sessions? yang:gauge32 461 +--ro number-of-sessions-up? yang:gauge32 462 +--ro number-of-sessions-down? yang:gauge32 463 +--ro number-of-sessions-admin-down? yang:gauge32 465 2.6. BFD IP single-hop hierarchy 467 An "ip-sh" node is added under "bfd" node in control-plane-protocol. 468 The configuration and operational state data for each BFD IP single- 469 hop session is under this "ip-sh" node. The "ip-sh" node can be used 470 in a network device (top-level), or mounted in an LNE or in a network 471 instance. 473 module: ietf-bfd-ip-sh 474 augment /rt:routing/rt:control-plane-protocols 475 /rt:control-plane-protocol/bfd:bfd: 476 +--rw ip-sh 477 +--ro summary 478 | +--ro number-of-sessions? yang:gauge32 479 | +--ro number-of-sessions-up? yang:gauge32 480 | +--ro number-of-sessions-down? yang:gauge32 481 | +--ro number-of-sessions-admin-down? yang:gauge32 482 +--rw sessions 483 | +--rw session* [interface dest-addr] 484 | +--rw interface if:interface-ref 485 | +--rw dest-addr inet:ip-address 486 | +--rw source-addr? inet:ip-address 487 | +--rw local-multiplier? multiplier 488 | +--rw (interval-config-type)? 489 | | +--:(tx-rx-intervals) 490 | | | +--rw desired-min-tx-interval? uint32 491 | | | +--rw required-min-rx-interval? uint32 492 | | +--:(single-interval) {single-minimum-interval}? 493 | | +--rw min-interval? uint32 494 | +--rw demand-enabled? boolean {demand-mode}? 495 | +--rw admin-down? boolean 496 | +--rw authentication! {authentication}? 497 | | +--rw key-chain? kc:key-chain-ref 498 | | +--rw meticulous? boolean 499 | +--ro path-type? identityref 500 | +--ro ip-encapsulation? boolean 501 | +--ro local-discriminator? discriminator 502 | +--ro remote-discriminator? discriminator 503 | +--ro remote-multiplier? multiplier 504 | +--ro demand-capability? boolean {demand-mode}? 505 | +--ro source-port? inet:port-number 506 | +--ro dest-port? inet:port-number 507 | +--ro session-running 508 | | +--ro session-index? uint32 509 | | +--ro local-state? state 510 | | +--ro remote-state? state 511 | | +--ro local-diagnostic? 512 | | | iana-bfd-types:diagnostic 513 | | +--ro remote-diagnostic? 514 | | | iana-bfd-types:diagnostic 515 | | +--ro remote-authenticated? boolean 516 | | +--ro remote-authentication-type? 517 | | | iana-bfd-types:auth-type {authentication}? 518 | | +--ro detection-mode? enumeration 519 | | +--ro negotiated-tx-interval? uint32 520 | | +--ro negotiated-rx-interval? uint32 521 | | +--ro detection-time? uint32 522 | | +--ro echo-tx-interval-in-use? uint32 523 | | {echo-mode}? 524 | +--ro session-statistics 525 | +--ro create-time? yang:date-and-time 526 | +--ro last-down-time? yang:date-and-time 527 | +--ro last-up-time? yang:date-and-time 528 | +--ro down-count? yang:counter32 529 | +--ro admin-down-count? yang:counter32 530 | +--ro receive-packet-count? yang:counter64 531 | +--ro send-packet-count? yang:counter64 532 | +--ro receive-invalid-packet-count? yang:counter64 533 | +--ro send-failed-packet-count? yang:counter64 534 +--rw interfaces* [interface] 535 +--rw interface if:interface-ref 536 +--rw authentication! {authentication}? 537 +--rw key-chain? kc:key-chain-ref 538 +--rw meticulous? boolean 540 notifications: 541 +---n singlehop-notification 542 +--ro local-discr? discriminator 543 +--ro remote-discr? discriminator 544 +--ro new-state? state 545 +--ro state-change-reason? iana-bfd-types:diagnostic 546 +--ro time-of-last-state-change? yang:date-and-time 547 +--ro dest-addr? inet:ip-address 548 +--ro source-addr? inet:ip-address 549 +--ro session-index? uint32 550 +--ro path-type? identityref 551 +--ro interface? if:interface-ref 552 +--ro echo-enabled? boolean 554 2.7. BFD IP multihop hierarchy 556 An "ip-mh" node is added under the "bfd" node in cntrol-plane- 557 protocol. The configuration and operational state data for each BFD 558 IP multihop session is under this "ip-mh" node. In the operational 559 state model we support multiple BFD multihop sessions per remote 560 address (ECMP), the local discriminator is used as key. The "ip-mh" 561 node can be used in a network device (top-level), or mounted in an 562 LNE or in a network instance. 564 module: ietf-bfd-ip-mh 565 augment /rt:routing/rt:control-plane-protocols 566 /rt:control-plane-protocol/bfd:bfd: 567 +--rw ip-mh 568 +--ro summary 569 | +--ro number-of-sessions? yang:gauge32 570 | +--ro number-of-sessions-up? yang:gauge32 571 | +--ro number-of-sessions-down? yang:gauge32 572 | +--ro number-of-sessions-admin-down? yang:gauge32 573 +--rw session-groups 574 +--rw session-group* [source-addr dest-addr] 575 +--rw source-addr inet:ip-address 576 +--rw dest-addr inet:ip-address 577 +--rw local-multiplier? multiplier 578 +--rw (interval-config-type)? 579 | +--:(tx-rx-intervals) 580 | | +--rw desired-min-tx-interval? uint32 581 | | +--rw required-min-rx-interval? uint32 582 | +--:(single-interval) {single-minimum-interval}? 583 | +--rw min-interval? uint32 584 +--rw demand-enabled? boolean {demand-mode}? 585 +--rw admin-down? boolean 586 +--rw authentication! {authentication}? 587 | +--rw key-chain? kc:key-chain-ref 588 | +--rw meticulous? boolean 589 +--rw tx-ttl? bfd-types:hops 590 +--rw rx-ttl bfd-types:hops 591 +--ro sessions* 592 +--ro path-type? identityref 593 +--ro ip-encapsulation? boolean 594 +--ro local-discriminator? discriminator 595 +--ro remote-discriminator? discriminator 596 +--ro remote-multiplier? multiplier 597 +--ro demand-capability? boolean {demand-mode}? 598 +--ro source-port? inet:port-number 599 +--ro dest-port? inet:port-number 600 +--ro session-running 601 | +--ro session-index? uint32 602 | +--ro local-state? state 603 | +--ro remote-state? state 604 | +--ro local-diagnostic? 605 | | iana-bfd-types:diagnostic 606 | +--ro remote-diagnostic? 607 | | iana-bfd-types:diagnostic 608 | +--ro remote-authenticated? boolean 609 | +--ro remote-authentication-type? 610 | | iana-bfd-types:auth-type {authentication}? 611 | +--ro detection-mode? enumeration 612 | +--ro negotiated-tx-interval? uint32 613 | +--ro negotiated-rx-interval? uint32 614 | +--ro detection-time? uint32 615 | +--ro echo-tx-interval-in-use? uint32 616 | {echo-mode}? 617 +--ro session-statistics 618 +--ro create-time? 619 | yang:date-and-time 620 +--ro last-down-time? 621 | yang:date-and-time 622 +--ro last-up-time? 623 | yang:date-and-time 624 +--ro down-count? yang:counter32 625 +--ro admin-down-count? yang:counter32 626 +--ro receive-packet-count? yang:counter64 627 +--ro send-packet-count? yang:counter64 628 +--ro receive-invalid-packet-count? yang:counter64 629 +--ro send-failed-packet-count? yang:counter64 631 notifications: 632 +---n multihop-notification 633 +--ro local-discr? discriminator 634 +--ro remote-discr? discriminator 635 +--ro new-state? state 636 +--ro state-change-reason? iana-bfd-types:diagnostic 637 +--ro time-of-last-state-change? yang:date-and-time 638 +--ro dest-addr? inet:ip-address 639 +--ro source-addr? inet:ip-address 640 +--ro session-index? uint32 641 +--ro path-type? identityref 643 2.8. BFD over LAG hierarchy 645 A "lag" node is added under the "bfd" node in control-plane-protocol. 646 The configuration and operational state data for each BFD LAG session 647 is under this "lag" node. The "lag" node can be used in a network 648 device (top-level), or mounted in an LNE or in a network instance. 650 module: ietf-bfd-lag 651 augment /rt:routing/rt:control-plane-protocols 652 /rt:control-plane-protocol/bfd:bfd: 653 +--rw lag 654 +--rw micro-bfd-ipv4-session-statistics 655 | +--ro summary 656 | +--ro number-of-sessions? yang:gauge32 657 | +--ro number-of-sessions-up? yang:gauge32 658 | +--ro number-of-sessions-down? yang:gauge32 659 | +--ro number-of-sessions-admin-down? yang:gauge32 660 +--rw micro-bfd-ipv6-session-statistics 661 | +--ro summary 662 | +--ro number-of-sessions? yang:gauge32 663 | +--ro number-of-sessions-up? yang:gauge32 664 | +--ro number-of-sessions-down? yang:gauge32 665 | +--ro number-of-sessions-admin-down? yang:gauge32 666 +--rw sessions 667 +--rw session* [lag-name] 668 +--rw lag-name if:interface-ref 669 +--rw ipv4-dest-addr? inet:ipv4-address 670 +--rw ipv6-dest-addr? inet:ipv6-address 671 +--rw local-multiplier? multiplier 672 +--rw (interval-config-type)? 673 | +--:(tx-rx-intervals) 674 | | +--rw desired-min-tx-interval? uint32 675 | | +--rw required-min-rx-interval? uint32 676 | +--:(single-interval) {single-minimum-interval}? 677 | +--rw min-interval? uint32 678 +--rw demand-enabled? boolean {demand-mode}? 679 +--rw admin-down? boolean 680 +--rw authentication! {authentication}? 681 | +--rw key-chain? kc:key-chain-ref 682 | +--rw meticulous? boolean 683 +--rw use-ipv4? boolean 684 +--rw use-ipv6? boolean 685 +--ro member-links* [member-link] 686 +--ro member-link if:interface-ref 687 +--ro micro-bfd-ipv4 688 | +--ro path-type? identityref 689 | +--ro ip-encapsulation? boolean 690 | +--ro local-discriminator? discriminator 691 | +--ro remote-discriminator? discriminator 692 | +--ro remote-multiplier? multiplier 693 | +--ro demand-capability? boolean 694 | | {demand-mode}? 695 | +--ro source-port? inet:port-number 696 | +--ro dest-port? inet:port-number 697 | +--ro session-running 698 | | +--ro session-index? uint32 699 | | +--ro local-state? state 700 | | +--ro remote-state? state 701 | | +--ro local-diagnostic? 702 | | | iana-bfd-types:diagnostic 703 | | +--ro remote-diagnostic? 704 | | | iana-bfd-types:diagnostic 705 | | +--ro remote-authenticated? boolean 706 | | +--ro remote-authentication-type? 707 | | | iana-bfd-types:auth-type 708 | | | {authentication}? 709 | | +--ro detection-mode? enumeration 710 | | +--ro negotiated-tx-interval? uint32 711 | | +--ro negotiated-rx-interval? uint32 712 | | +--ro detection-time? uint32 713 | | +--ro echo-tx-interval-in-use? uint32 714 | | {echo-mode}? 715 | +--ro session-statistics 716 | +--ro create-time? 717 | | yang:date-and-time 718 | +--ro last-down-time? 719 | | yang:date-and-time 720 | +--ro last-up-time? 721 | | yang:date-and-time 722 | +--ro down-count? 723 | | yang:counter32 724 | +--ro admin-down-count? 725 | | yang:counter32 726 | +--ro receive-packet-count? 727 | | yang:counter64 728 | +--ro send-packet-count? 729 | | yang:counter64 730 | +--ro receive-invalid-packet-count? 731 | | yang:counter64 732 | +--ro send-failed-packet-count? 733 | yang:counter64 734 +--ro micro-bfd-ipv6 735 +--ro path-type? identityref 736 +--ro ip-encapsulation? boolean 737 +--ro local-discriminator? discriminator 738 +--ro remote-discriminator? discriminator 739 +--ro remote-multiplier? multiplier 740 +--ro demand-capability? boolean 741 | {demand-mode}? 742 +--ro source-port? inet:port-number 743 +--ro dest-port? inet:port-number 744 +--ro session-running 745 | +--ro session-index? uint32 746 | +--ro local-state? state 747 | +--ro remote-state? state 748 | +--ro local-diagnostic? 749 | | iana-bfd-types:diagnostic 750 | +--ro remote-diagnostic? 751 | | iana-bfd-types:diagnostic 752 | +--ro remote-authenticated? boolean 753 | +--ro remote-authentication-type? 754 | | iana-bfd-types:auth-type 755 | | {authentication}? 756 | +--ro detection-mode? enumeration 757 | +--ro negotiated-tx-interval? uint32 758 | +--ro negotiated-rx-interval? uint32 759 | +--ro detection-time? uint32 760 | +--ro echo-tx-interval-in-use? uint32 761 | {echo-mode}? 762 +--ro session-statistics 763 +--ro create-time? 764 | yang:date-and-time 765 +--ro last-down-time? 766 | yang:date-and-time 767 +--ro last-up-time? 768 | yang:date-and-time 769 +--ro down-count? 770 | yang:counter32 771 +--ro admin-down-count? 772 | yang:counter32 773 +--ro receive-packet-count? 774 | yang:counter64 775 +--ro send-packet-count? 776 | yang:counter64 777 +--ro receive-invalid-packet-count? 778 | yang:counter64 779 +--ro send-failed-packet-count? 780 yang:counter64 782 notifications: 783 +---n lag-notification 784 +--ro local-discr? discriminator 785 +--ro remote-discr? discriminator 786 +--ro new-state? state 787 +--ro state-change-reason? iana-bfd-types:diagnostic 788 +--ro time-of-last-state-change? yang:date-and-time 789 +--ro dest-addr? inet:ip-address 790 +--ro source-addr? inet:ip-address 791 +--ro session-index? uint32 792 +--ro path-type? identityref 793 +--ro lag-name? if:interface-ref 794 +--ro member-link? if:interface-ref 796 2.9. BFD over MPLS LSPs hierarchy 798 An "mpls" node is added under the "bfd" node in control-plane- 799 protocol. The configuration is per MPLS FEC under this "mpls" node. 800 In the operational state model we support multiple BFD sessions per 801 MPLS FEC (ECMP), the local discriminator is used as key. The "mpls" 802 node can be used in a network device (top-level), or mounted in an 803 LNE or in a network instance. 805 module: ietf-bfd-mpls 806 augment /rt:routing/rt:control-plane-protocols 807 /rt:control-plane-protocol/bfd:bfd: 808 +--rw mpls 809 +--ro summary 810 | +--ro number-of-sessions? yang:gauge32 811 | +--ro number-of-sessions-up? yang:gauge32 812 | +--ro number-of-sessions-down? yang:gauge32 813 | +--ro number-of-sessions-admin-down? yang:gauge32 814 +--rw egress 815 | +--rw enable? boolean 816 | +--rw local-multiplier? multiplier 817 | +--rw (interval-config-type)? 818 | | +--:(tx-rx-intervals) 819 | | | +--rw desired-min-tx-interval? uint32 820 | | | +--rw required-min-rx-interval? uint32 821 | | +--:(single-interval) {single-minimum-interval}? 822 | | +--rw min-interval? uint32 823 | +--rw authentication! {authentication}? 824 | +--rw key-chain? kc:key-chain-ref 825 | +--rw meticulous? boolean 826 +--rw session-groups 827 +--rw session-group* [mpls-fec] 828 +--rw mpls-fec inet:ip-prefix 829 +--rw local-multiplier? multiplier 830 +--rw (interval-config-type)? 831 | +--:(tx-rx-intervals) 832 | | +--rw desired-min-tx-interval? uint32 833 | | +--rw required-min-rx-interval? uint32 834 | +--:(single-interval) {single-minimum-interval}? 835 | +--rw min-interval? uint32 836 +--rw demand-enabled? boolean {demand-mode}? 837 +--rw admin-down? boolean 838 +--rw authentication! {authentication}? 839 | +--rw key-chain? kc:key-chain-ref 840 | +--rw meticulous? boolean 841 +--ro sessions* 842 +--ro path-type? identityref 843 +--ro ip-encapsulation? boolean 844 +--ro local-discriminator? discriminator 845 +--ro remote-discriminator? discriminator 846 +--ro remote-multiplier? multiplier 847 +--ro demand-capability? boolean {demand-mode}? 848 +--ro source-port? inet:port-number 849 +--ro dest-port? inet:port-number 850 +--ro session-running 851 | +--ro session-index? uint32 852 | +--ro local-state? state 853 | +--ro remote-state? state 854 | +--ro local-diagnostic? 855 | | iana-bfd-types:diagnostic 856 | +--ro remote-diagnostic? 857 | | iana-bfd-types:diagnostic 858 | +--ro remote-authenticated? boolean 859 | +--ro remote-authentication-type? 860 | | iana-bfd-types:auth-type {authentication}? 861 | +--ro detection-mode? enumeration 862 | +--ro negotiated-tx-interval? uint32 863 | +--ro negotiated-rx-interval? uint32 864 | +--ro detection-time? uint32 865 | +--ro echo-tx-interval-in-use? uint32 866 | {echo-mode}? 867 +--ro session-statistics 868 | +--ro create-time? 869 | | yang:date-and-time 870 | +--ro last-down-time? 871 | | yang:date-and-time 872 | +--ro last-up-time? 873 | | yang:date-and-time 874 | +--ro down-count? yang:counter32 875 | +--ro admin-down-count? yang:counter32 876 | +--ro receive-packet-count? yang:counter64 877 | +--ro send-packet-count? yang:counter64 878 | +--ro receive-invalid-packet-count? yang:counter64 879 | +--ro send-failed-packet-count? yang:counter64 880 +--ro mpls-dest-address? inet:ip-address 882 notifications: 883 +---n mpls-notification 884 +--ro local-discr? discriminator 885 +--ro remote-discr? discriminator 886 +--ro new-state? state 887 +--ro state-change-reason? iana-bfd-types:diagnostic 888 +--ro time-of-last-state-change? yang:date-and-time 889 +--ro dest-addr? inet:ip-address 890 +--ro source-addr? inet:ip-address 891 +--ro session-index? uint32 892 +--ro path-type? identityref 893 +--ro mpls-dest-address? inet:ip-address 895 2.10. BFD over MPLS-TE hierarchy 897 YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is 898 augmented. BFD is configured per MPLS-TE tunnel, and BFD session 899 operational state data is provided per MPLS-TE LSP. 901 module: ietf-bfd-mpls-te 902 augment /rt:routing/rt:control-plane-protocols 903 /rt:control-plane-protocol/bfd:bfd: 904 +--rw mpls-te 905 +--rw egress 906 | +--rw enable? boolean 907 | +--rw local-multiplier? multiplier 908 | +--rw (interval-config-type)? 909 | | +--:(tx-rx-intervals) 910 | | | +--rw desired-min-tx-interval? uint32 911 | | | +--rw required-min-rx-interval? uint32 912 | | +--:(single-interval) {single-minimum-interval}? 913 | | +--rw min-interval? uint32 914 | +--rw authentication! {authentication}? 915 | +--rw key-chain? kc:key-chain-ref 916 | +--rw meticulous? boolean 917 +--ro summary 918 +--ro number-of-sessions? yang:gauge32 919 +--ro number-of-sessions-up? yang:gauge32 920 +--ro number-of-sessions-down? yang:gauge32 921 +--ro number-of-sessions-admin-down? yang:gauge32 922 augment /te:te/te:tunnels/te:tunnel: 923 +--rw local-multiplier? multiplier 924 +--rw (interval-config-type)? 925 | +--:(tx-rx-intervals) 926 | | +--rw desired-min-tx-interval? uint32 927 | | +--rw required-min-rx-interval? uint32 928 | +--:(single-interval) {single-minimum-interval}? 929 | +--rw min-interval? uint32 930 +--rw demand-enabled? boolean {demand-mode}? 931 +--rw admin-down? boolean 932 +--rw authentication! {authentication}? 933 | +--rw key-chain? kc:key-chain-ref 934 | +--rw meticulous? boolean 935 +--rw encap? identityref 936 augment /te:te/te:lsps-state/te:lsp: 937 +--ro path-type? identityref 938 +--ro ip-encapsulation? boolean 939 +--ro local-discriminator? discriminator 940 +--ro remote-discriminator? discriminator 941 +--ro remote-multiplier? multiplier 942 +--ro demand-capability? boolean {demand-mode}? 943 +--ro source-port? inet:port-number 944 +--ro dest-port? inet:port-number 945 +--ro session-running 946 | +--ro session-index? uint32 947 | +--ro local-state? state 948 | +--ro remote-state? state 949 | +--ro local-diagnostic? iana-bfd-types:diagnostic 950 | +--ro remote-diagnostic? iana-bfd-types:diagnostic 951 | +--ro remote-authenticated? boolean 952 | +--ro remote-authentication-type? iana-bfd-types:auth-type 953 | | {authentication}? 954 | +--ro detection-mode? enumeration 955 | +--ro negotiated-tx-interval? uint32 956 | +--ro negotiated-rx-interval? uint32 957 | +--ro detection-time? uint32 958 | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? 959 +--ro session-statistics 960 | +--ro create-time? yang:date-and-time 961 | +--ro last-down-time? yang:date-and-time 962 | +--ro last-up-time? yang:date-and-time 963 | +--ro down-count? yang:counter32 964 | +--ro admin-down-count? yang:counter32 965 | +--ro receive-packet-count? yang:counter64 966 | +--ro send-packet-count? yang:counter64 967 | +--ro receive-invalid-packet-count? yang:counter64 968 | +--ro send-failed-packet-count? yang:counter64 969 +--ro mpls-dest-address? inet:ip-address 971 notifications: 972 +---n mpls-te-notification 973 +--ro local-discr? discriminator 974 +--ro remote-discr? discriminator 975 +--ro new-state? state 976 +--ro state-change-reason? iana-bfd-types:diagnostic 977 +--ro time-of-last-state-change? yang:date-and-time 978 +--ro dest-addr? inet:ip-address 979 +--ro source-addr? inet:ip-address 980 +--ro session-index? uint32 981 +--ro path-type? identityref 982 +--ro mpls-dest-address? inet:ip-address 983 +--ro tunnel-name? string 985 2.11. Interaction with other YANG modules 987 Generic YANG Data Model for Connectionless OAM protocols 988 [I-D.ietf-lime-yang-connectionless-oam] describes how the LIME 989 connectionless OAM model could be extended to support BFD. 991 Also, the operation of the BFD data model depends on configuration 992 parameters that are defined in other YANG modules. 994 2.11.1. Module ietf-interfaces 996 The following boolean configuration is defined in A YANG Data Model 997 for Interface Management [I-D.ietf-netmod-rfc7223bis]: 999 /if:interfaces/if:interface/if:enabled 1000 If this configuration is set to "false", no BFD packets can 1001 be transmitted or received on that interface. 1003 2.11.2. Module ietf-ip 1005 The following boolean configuration is defined in A YANG Data Model 1006 for IP Management [I-D.ietf-netmod-rfc7277bis]: 1008 /if:interfaces/if:interface/ip:ipv4/ip:enabled 1009 If this configuration is set to "false", no BFD IPv4 packets 1010 can be transmitted or received on that interface. 1012 /if:interfaces/if:interface/ip:ipv4/ip:forwarding 1013 If this configuration is set to "false", no BFD IPv4 packets 1014 can be transmitted or received on that interface. 1016 /if:interfaces/if:interface/ip:ipv6/ip:enabled 1017 If this configuration is set to "false", no BFD IPv6 packets 1018 can be transmitted or received on that interface. 1020 /if:interfaces/if:interface/ip:ipv6/ip:forwarding 1021 If this configuration is set to "false", no BFD IPv6 packets 1022 can be transmitted or received on that interface. 1024 2.11.3. Module ietf-mpls 1026 The following boolean configuration is defined in A YANG Data Model 1027 for MPLS Base [I-D.ietf-mpls-base-yang]: 1029 /rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:enabled 1030 If this configuration is set to "false", no BFD MPLS packets 1031 can be transmitted or received on that interface. 1033 2.11.4. Module ietf-te 1035 The following configuration is defined in the "ietf-te" YANG module 1036 YANG Data Model for TE Topology [I-D.ietf-teas-yang-te]: 1038 /ietf-te:te/ietf-te:tunnels/ietf-te:tunnel/ietf-te:config/ietf- 1039 te:admin-status 1040 If this configuration is not set to "state-up", no BFD MPLS 1041 packets can be transmitted or received on that tunnel. 1043 2.12. IANA BFD YANG Module 1045 file "iana-bfd-types@2018-03-03.yang" 1047 module iana-bfd-types { 1049 yang-version 1.1; 1050 namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; 1052 prefix "iana-bfd-types"; 1054 organization "IANA"; 1056 contact 1057 " Internet Assigned Numbers Authority 1059 Postal: ICANN 1060 4676 Admiralty Way, Suite 330 1061 Marina del Rey, CA 90292 1063 Tel: +1 310 823 9358 1064 "; 1066 description 1067 "This module defines YANG data types for IANA-registered 1068 BFD parameters. 1070 This YANG module is maintained by IANA and reflects the 1071 'BFD Diagnostic Codes' and 'BFD Authentication Types' registries. 1073 Copyright (c) 2018 IETF Trust and the persons 1074 identified as authors of the code. All rights reserved. 1076 Redistribution and use in source and binary forms, with or 1077 without modification, is permitted pursuant to, and subject 1078 to the license terms contained in, the Simplified BSD License 1079 set forth in Section 4.c of the IETF Trust's Legal Provisions 1080 Relating to IETF Documents 1081 (http://trustee.ietf.org/license-info). 1083 This version of this YANG module is part of RFC XXXX; see 1084 the RFC itself for full legal notices."; 1086 // RFC Ed.: replace XXXX with actual RFC number and remove 1087 // this note 1089 reference "RFC XXXX"; 1091 revision 2018-03-03 { 1092 description "Initial revision."; 1093 reference "RFC XXXX: IANA BFD YANG Data Types."; 1094 } 1096 /* 1097 * Type Definitions 1098 */ 1099 typedef diagnostic { 1100 type enumeration { 1101 enum none { 1102 value 0; 1103 description "None"; 1104 } 1105 enum control-expiry { 1106 value 1; 1107 description "Control timer expiry"; 1108 } 1109 enum echo-failed { 1110 value 2; 1111 description "Echo failure"; 1112 } 1113 enum neighbor-down { 1114 value 3; 1115 description "Neighbor down"; 1116 } 1117 enum forwarding-reset { 1118 value 4; 1119 description "Forwarding reset"; 1120 } 1121 enum path-down { 1122 value 5; 1123 description "Path down"; 1124 } 1125 enum concatenated-path-down { 1126 value 6; 1127 description "Concatenated path down"; 1128 } 1129 enum admin-down { 1130 value 7; 1131 description "Admin down"; 1132 } 1133 enum reverse-concatenated-path-down { 1134 value 8; 1135 description "Reverse concatenated path down"; 1136 } 1137 enum mis-connectivity-defect { 1138 value 9; 1139 description "Mis-connectivity defect as specified in RFC6428"; 1140 } 1141 } 1142 description 1143 "BFD diagnostic as defined in RFC 5880, values are maintained in 1144 the 'BFD Diagnostic Codes' IANA registry. Range is 0 to 31."; 1145 } 1146 typedef auth-type { 1147 type enumeration { 1148 enum reserved { 1149 value 0; 1150 description "Reserved"; 1151 } 1152 enum simple-password { 1153 value 1; 1154 description "Simple password"; 1155 } 1156 enum keyed-md5 { 1157 value 2; 1158 description "Keyed MD5"; 1159 } 1160 enum meticulous-keyed-md5 { 1161 value 3; 1162 description "Meticulous keyed MD5"; 1163 } 1164 enum keyed-sha1 { 1165 value 4; 1166 description "Keyed SHA1"; 1167 } 1168 enum meticulous-keyed-sha1 { 1169 value 5; 1170 description "Meticulous keyed SHA1"; 1171 } 1172 } 1173 description 1174 "BFD authentication type as defined in RFC 5880, values are 1175 maintained in the 'BFD Authentication Types' IANA registry. 1176 Range is 0 to 255."; 1177 } 1178 } 1180 1182 2.13. BFD types YANG Module 1184 This YANG module imports typedefs from [RFC6991] and the "control- 1185 plane-protocol" identity from [I-D.ietf-netmod-rfc8022bis]. 1187 file "ietf-bfd-types@2018-03-03.yang" 1189 module ietf-bfd-types { 1191 yang-version 1.1; 1193 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; 1194 prefix "bfd-types"; 1196 import iana-bfd-types { 1197 prefix "iana-bfd-types"; 1198 } 1200 import ietf-inet-types { 1201 prefix "inet"; 1202 reference "RFC 6991: Common YANG Data Types"; 1203 } 1205 import ietf-yang-types { 1206 prefix "yang"; 1207 reference "RFC 6991: Common YANG Data Types"; 1208 } 1210 import ietf-routing { 1211 prefix "rt"; 1212 // RFC Ed.: replace XXXX with actual RFC number of 1213 // draft-ietf-netmod-rfc8022bis and remove this note. 1214 reference 1215 "RFC XXXX: A YANG Data Model for Routing Management"; 1216 } 1218 import ietf-key-chain { 1219 prefix "kc"; 1220 reference "RFC 8177: YANG Data Model for Key Chains"; 1221 } 1223 organization "IETF BFD Working Group"; 1225 contact 1226 "WG Web: 1227 WG List: 1229 Editors: Reshad Rahman (rrahman@cisco.com), 1230 Lianshu Zheng (vero.zheng@huawei.com), 1231 Mahesh Jethanandani (mjethanandani@gmail.com)"; 1233 description 1234 "This module contains a collection of BFD specific YANG data type 1235 definitions, as per RFC 5880, and also groupings which are common 1236 to other BFD YANG modules. 1238 Copyright (c) 2018 IETF Trust and the persons 1239 identified as authors of the code. All rights reserved. 1241 Redistribution and use in source and binary forms, with or 1242 without modification, is permitted pursuant to, and subject 1243 to the license terms contained in, the Simplified BSD License 1244 set forth in Section 4.c of the IETF Trust's Legal Provisions 1245 Relating to IETF Documents 1246 (http://trustee.ietf.org/license-info). 1248 This version of this YANG module is part of RFC XXXX; see 1249 the RFC itself for full legal notices."; 1251 // RFC Ed.: replace XXXX with actual RFC number and remove this 1252 // note 1254 reference "RFC XXXX"; 1256 revision 2018-03-03 { 1257 description "Initial revision."; 1258 reference "RFC XXXX: YANG Data Model for BFD"; 1259 } 1261 /* 1262 * Feature definitions 1263 */ 1264 feature single-minimum-interval { 1265 description 1266 "This feature indicates that the server supports configuration 1267 of one minimum interval value which is used for both transmit and 1268 receive minimum intervals."; 1269 } 1271 feature authentication { 1272 description 1273 "This feature indicates that the server supports BFD 1274 authentication as defined in RFC 5880."; 1275 } 1277 feature demand-mode { 1278 description 1279 "This feature indicates that the server supports BFD demand mode 1280 as defined in RFC 5880."; 1281 } 1283 feature echo-mode { 1284 description 1285 "This feature indicates that the server supports BFD echo mode 1286 as defined in RFC 5880."; 1287 } 1289 /* 1290 * Identity definitions 1291 */ 1292 identity bfdv1 { 1293 base "rt:control-plane-protocol"; 1294 description "BFD protocol version 1 as per RFC 5880."; 1295 } 1297 identity path-type { 1298 description 1299 "Base identity for BFD path type. The path type indicates 1300 the type of path on which BFD is running."; 1301 } 1302 identity path-ip-sh { 1303 base path-type; 1304 description "BFD on IP single hop as described in RFC 5881."; 1305 } 1306 identity path-ip-mh { 1307 base path-type; 1308 description "BFD on IP multihop paths as described in RFC 5883."; 1309 } 1310 identity path-mpls-te { 1311 base path-type; 1312 description 1313 "BFD on MPLS Traffic Engineering as described in RFC 5884."; 1314 } 1315 identity path-mpls-lsp { 1316 base path-type; 1317 description 1318 "BFD on MPLS Label Switched Path as described in RFC 5884."; 1319 } 1320 identity path-lag { 1321 base path-type; 1322 description 1323 "Micro-BFD on LAG member links as described in RFC 7130."; 1324 } 1326 identity encap-type { 1327 description 1328 "Base identity for BFD encapsulation type."; 1329 } 1330 identity encap-ip { 1331 base encap-type; 1332 description "BFD with IP encapsulation."; 1333 } 1335 /* 1336 * Type Definitions 1337 */ 1339 typedef discriminator { 1340 type uint32; 1341 description "BFD discriminator as described in RFC 5880."; 1342 } 1344 typedef state { 1345 type enumeration { 1346 enum adminDown { 1347 value 0; 1348 description "admindown"; 1349 } 1350 enum down { 1351 value 1; 1352 description "down"; 1353 } 1354 enum init { 1355 value 2; 1356 description "init"; 1357 } 1358 enum up { 1359 value 3; 1360 description "up"; 1361 } 1362 } 1363 description "BFD state as defined in RFC 5880."; 1364 } 1366 typedef multiplier { 1367 type uint8 { 1368 range 1..255; 1369 } 1370 description "BFD multiplier as described in RFC 5880."; 1371 } 1373 typedef hops { 1374 type uint8 { 1375 range 1..255; 1376 } 1377 description 1378 "This corresponds to Time To Live for IPv4 and corresponds to hop 1379 limit for IPv6."; 1380 } 1382 /* 1383 * Groupings 1384 */ 1385 grouping auth-parms { 1386 description 1387 "Grouping for BFD authentication parameters 1388 (see section 6.7 of RFC 5880)."; 1389 container authentication { 1390 if-feature authentication; 1391 presence 1392 "Enables BFD authentication (see section 6.7 of RFC 5880)."; 1393 description "Parameters for BFD authentication."; 1395 leaf key-chain { 1396 type kc:key-chain-ref; 1397 description "Name of the key-chain as per RFC 8177."; 1398 } 1400 leaf meticulous { 1401 type boolean; 1402 description 1403 "Enables meticulous mode as described in section 6.7 " + 1404 "of RFC 5880."; 1405 } 1406 } 1407 } 1409 grouping base-cfg-parms { 1410 description "BFD grouping for base config parameters."; 1411 leaf local-multiplier { 1412 type multiplier; 1413 default 3; 1414 description "Multiplier transmitted by local system."; 1415 } 1417 choice interval-config-type { 1418 description 1419 "Two interval values or one value used for both transmit and 1420 receive."; 1421 case tx-rx-intervals { 1422 leaf desired-min-tx-interval { 1423 type uint32; 1424 units microseconds; 1425 default 1000000; 1426 description 1427 "Desired minimum transmit interval of control packets."; 1428 } 1430 leaf required-min-rx-interval { 1431 type uint32; 1432 units microseconds; 1433 default 1000000; 1434 description 1435 "Required minimum receive interval of control packets."; 1436 } 1437 } 1438 case single-interval { 1439 if-feature single-minimum-interval; 1441 leaf min-interval { 1442 type uint32; 1443 units microseconds; 1444 default 1000000; 1445 description 1446 "Desired minimum transmit interval and required " + 1447 "minimum receive interval of control packets."; 1448 } 1449 } 1450 } 1451 } 1453 grouping client-cfg-parms { 1454 description 1455 "BFD grouping for configuration parameters 1456 used by clients of BFD, e.g. IGP or MPLS."; 1458 leaf enable { 1459 type boolean; 1460 default false; 1461 description 1462 "Indicates whether the BFD is enabled."; 1463 } 1464 uses base-cfg-parms; 1465 } 1467 grouping common-cfg-parms { 1468 description 1469 "BFD grouping for common configuration parameters."; 1471 uses base-cfg-parms; 1473 leaf demand-enabled { 1474 if-feature demand-mode; 1475 type boolean; 1476 default false; 1477 description 1478 "To enable demand mode."; 1479 } 1481 leaf admin-down { 1482 type boolean; 1483 default false; 1484 description 1485 "Is the BFD session administratively down."; 1486 } 1487 uses auth-parms; 1488 } 1490 grouping all-session { 1491 description "BFD session operational information"; 1492 leaf path-type { 1493 type identityref { 1494 base path-type; 1495 } 1496 config "false"; 1497 description 1498 "BFD path type, this indicates the path type that BFD is 1499 running on."; 1500 } 1501 leaf ip-encapsulation { 1502 type boolean; 1503 config "false"; 1504 description "Whether BFD encapsulation uses IP."; 1505 } 1506 leaf local-discriminator { 1507 type discriminator; 1508 config "false"; 1509 description "Local discriminator."; 1510 } 1511 leaf remote-discriminator { 1512 type discriminator; 1513 config "false"; 1514 description "Remote discriminator."; 1515 } 1516 leaf remote-multiplier { 1517 type multiplier; 1518 config "false"; 1519 description "Remote multiplier."; 1520 } 1521 leaf demand-capability { 1522 if-feature demand-mode; 1523 type boolean; 1524 config "false"; 1525 description "Local demand mode capability."; 1526 } 1527 leaf source-port { 1528 when "../ip-encapsulation = 'true'" { 1529 description 1530 "Source port valid only when IP encapsulation is used."; 1532 } 1533 type inet:port-number; 1534 config "false"; 1535 description "Source UDP port"; 1536 } 1537 leaf dest-port { 1538 when "../ip-encapsulation = 'true'" { 1539 description 1540 "Destination port valid only when IP encapsulation is used."; 1541 } 1542 type inet:port-number; 1543 config "false"; 1544 description "Destination UDP port."; 1545 } 1547 container session-running { 1548 config "false"; 1549 description "BFD session running information."; 1550 leaf session-index { 1551 type uint32; 1552 description 1553 "An index used to uniquely identify BFD sessions."; 1554 } 1555 leaf local-state { 1556 type state; 1557 description "Local state."; 1558 } 1559 leaf remote-state { 1560 type state; 1561 description "Remote state."; 1562 } 1563 leaf local-diagnostic { 1564 type iana-bfd-types:diagnostic; 1565 description "Local diagnostic."; 1566 } 1567 leaf remote-diagnostic { 1568 type iana-bfd-types:diagnostic; 1569 description "Remote diagnostic."; 1570 } 1571 leaf remote-authenticated { 1572 type boolean; 1573 description 1574 "Indicates whether incoming BFD control packets are 1575 authenticated."; 1576 } 1577 leaf remote-authentication-type { 1578 when "../remote-authenticated = 'true'" { 1579 description 1580 "Only valid when incoming BFD control packets are 1581 authenticated."; 1582 } 1583 if-feature authentication; 1584 type iana-bfd-types:auth-type; 1585 description 1586 "Authentication type of incoming BFD control packets."; 1587 } 1588 leaf detection-mode { 1589 type enumeration { 1590 enum async-with-echo { 1591 value "1"; 1592 description "Async with echo."; 1593 } 1594 enum async-without-echo { 1595 value "2"; 1596 description "Async without echo."; 1597 } 1598 enum demand-with-echo { 1599 value "3"; 1600 description "Demand with echo."; 1601 } 1602 enum demand-without-echo { 1603 value "4"; 1604 description "Demand without echo."; 1605 } 1606 } 1607 description "Detection mode."; 1608 } 1609 leaf negotiated-tx-interval { 1610 type uint32; 1611 units microseconds; 1612 description "Negotiated transmit interval."; 1613 } 1614 leaf negotiated-rx-interval { 1615 type uint32; 1616 units microseconds; 1617 description "Negotiated receive interval."; 1618 } 1619 leaf detection-time { 1620 type uint32; 1621 units microseconds; 1622 description "Detection time."; 1623 } 1624 leaf echo-tx-interval-in-use { 1625 when "../../path-type = 'bfd-types:path-ip-sh'" { 1626 description 1627 "Echo is supported for IP single-hop only."; 1629 } 1630 if-feature echo-mode; 1631 type uint32; 1632 units microseconds; 1633 description "Echo transmit interval in use."; 1634 } 1635 } 1637 container session-statistics { 1638 config "false"; 1639 description "BFD per-session statistics."; 1641 leaf create-time { 1642 type yang:date-and-time; 1643 description 1644 "Time and date when this session was created."; 1645 } 1646 leaf last-down-time { 1647 type yang:date-and-time; 1648 description 1649 "Time and date of last time this session went down."; 1650 } 1651 leaf last-up-time { 1652 type yang:date-and-time; 1653 description 1654 "Time and date of last time this session went up."; 1655 } 1656 leaf down-count { 1657 type yang:counter32; 1658 description 1659 "The number of times this session has transitioned in the 1660 down state."; 1661 } 1662 leaf admin-down-count { 1663 type yang:counter32; 1664 description 1665 "The number of times this session has transitioned in the 1666 admin-down state."; 1667 } 1668 leaf receive-packet-count { 1669 type yang:counter64; 1670 description 1671 "Count of received packets in this session. This includes 1672 valid and invalid received packets."; 1673 } 1674 leaf send-packet-count { 1675 type yang:counter64; 1676 description "Count of sent packets in this session."; 1678 } 1679 leaf receive-invalid-packet-count { 1680 type yang:counter64; 1681 description 1682 "Count of invalid received packets in this session."; 1683 } 1684 leaf send-failed-packet-count { 1685 type yang:counter64; 1686 description 1687 "Count of packets which failed to be sent in this session."; 1688 } 1689 } 1690 } 1692 grouping session-statistics-summary { 1693 description "Grouping for session statistics summary."; 1694 container summary { 1695 config false; 1696 description "BFD session statistics summary."; 1697 leaf number-of-sessions { 1698 type yang:gauge32; 1699 description "Number of BFD sessions."; 1700 } 1701 leaf number-of-sessions-up { 1702 type yang:gauge32; 1703 description "Number of BFD sessions currently in up state."; 1704 } 1705 leaf number-of-sessions-down { 1706 type yang:gauge32; 1707 description "Number of BFD sessions currently in down state."; 1708 } 1709 leaf number-of-sessions-admin-down { 1710 type yang:gauge32; 1711 description 1712 "Number of BFD sessions currently in admin-down state."; 1713 } 1714 } 1715 } 1717 grouping notification-parms { 1718 description 1719 "This group describes common parameters that will be sent " + 1720 "as part of BFD notification."; 1722 leaf local-discr { 1723 type discriminator; 1724 description "BFD local discriminator."; 1725 } 1726 leaf remote-discr { 1727 type discriminator; 1728 description "BFD remote discriminator."; 1729 } 1731 leaf new-state { 1732 type state; 1733 description "Current BFD state."; 1734 } 1736 leaf state-change-reason { 1737 type iana-bfd-types:diagnostic; 1738 description "BFD state change reason."; 1739 } 1741 leaf time-of-last-state-change { 1742 type yang:date-and-time; 1743 description 1744 "Calendar time of previous state change."; 1745 } 1747 leaf dest-addr { 1748 type inet:ip-address; 1749 description "BFD peer address."; 1750 } 1752 leaf source-addr { 1753 type inet:ip-address; 1754 description "BFD local address."; 1755 } 1757 leaf session-index { 1758 type uint32; 1759 description "An index used to uniquely identify BFD sessions."; 1760 } 1762 leaf path-type { 1763 type identityref { 1764 base path-type; 1765 } 1766 description "BFD path type."; 1767 } 1768 } 1769 } 1771 1772 2.14. BFD top-level YANG Module 1774 This YANG module imports and augments "/routing/control-plane- 1775 protocols/control-plane-protocol" from [I-D.ietf-netmod-rfc8022bis]. 1777 file "ietf-bfd@2018-03-03.yang" 1779 module ietf-bfd { 1781 yang-version 1.1; 1783 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 1785 prefix "bfd"; 1787 import ietf-bfd-types { 1788 prefix "bfd-types"; 1789 // RFC Ed.: replace XXXX with actual RFC number and remove this 1790 // note 1791 reference "RFC XXXX: YANG Data Model for BFD"; 1792 } 1794 import ietf-routing { 1795 prefix "rt"; 1796 // RFC Ed.: replace XXXX with actual RFC number of 1797 // draft-ietf-netmod-rfc8022bis and remove this note. 1798 reference 1799 "RFC XXXX: A YANG Data Model for Routing Management"; 1800 } 1802 organization "IETF BFD Working Group"; 1804 contact 1805 "WG Web: 1806 WG List: 1808 Editors: Reshad Rahman (rrahman@cisco.com), 1809 Lianshu Zheng (vero.zheng@huawei.com), 1810 Mahesh Jethanandani (mjethanandani@gmail.com)"; 1812 description 1813 "This module contains the YANG definition for BFD parameters as 1814 per RFC 5880. 1816 Copyright (c) 2018 IETF Trust and the persons 1817 identified as authors of the code. All rights reserved. 1819 Redistribution and use in source and binary forms, with or 1820 without modification, is permitted pursuant to, and subject 1821 to the license terms contained in, the Simplified BSD License 1822 set forth in Section 4.c of the IETF Trust's Legal Provisions 1823 Relating to IETF Documents 1824 (http://trustee.ietf.org/license-info). 1826 This version of this YANG module is part of RFC XXXX; see 1827 the RFC itself for full legal notices."; 1829 // RFC Ed.: replace XXXX with actual RFC number and remove this 1830 // note 1832 reference "RFC XXXX"; 1834 revision 2018-03-03 { 1835 description "Initial revision."; 1836 reference "RFC XXXX: YANG Data Model for BFD"; 1837 } 1839 augment "/rt:routing/rt:control-plane-protocols/" 1840 + "rt:control-plane-protocol" { 1841 when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { 1842 description 1843 "This augmentation is only valid for a control-plane protocol 1844 instance of BFD (type 'bfdv1')."; 1845 } 1846 description "BFD augmentation."; 1848 container bfd { 1849 description "BFD top level container."; 1851 uses bfd-types:session-statistics-summary; 1852 } 1853 } 1854 } 1856 1858 2.15. BFD IP single-hop YANG Module 1860 This YANG module imports "interface-ref" from 1861 [I-D.ietf-netmod-rfc7223bis]. 1863 file "ietf-bfd-ip-sh@2018-03-03.yang" 1865 module ietf-bfd-ip-sh { 1867 yang-version 1.1; 1868 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1870 prefix "bfd-ip-sh"; 1872 import ietf-bfd-types { 1873 prefix "bfd-types"; 1874 } 1876 import ietf-bfd { 1877 prefix "bfd"; 1878 } 1880 import ietf-interfaces { 1881 prefix "if"; 1882 // RFC Ed.: replace XXXX with actual RFC number of 1883 // draft-ietf-netmod-rfc7223bis and remove this note. 1884 reference 1885 "RFC XXXX: A YANG Data Model for Interface Management"; 1886 } 1888 import ietf-inet-types { 1889 prefix "inet"; 1890 reference "RFC 6991: Common YANG Data Types"; 1891 } 1893 import ietf-routing { 1894 prefix "rt"; 1895 // RFC Ed.: replace XXXX with actual RFC number of 1896 // draft-ietf-netmod-rfc8022bis and remove this note. 1897 reference 1898 "RFC XXXX: A YANG Data Model for Routing Management"; 1899 } 1901 organization "IETF BFD Working Group"; 1903 contact 1904 "WG Web: 1905 WG List: 1907 Editors: Reshad Rahman (rrahman@cisco.com), 1908 Lianshu Zheng (vero.zheng@huawei.com), 1909 Mahesh Jethanandani (mjethanandani@gmail.com)"; 1911 description 1912 "This module contains the YANG definition for BFD IP single-hop 1913 as per RFC 5881. 1915 Copyright (c) 2018 IETF Trust and the persons 1916 identified as authors of the code. All rights reserved. 1918 Redistribution and use in source and binary forms, with or 1919 without modification, is permitted pursuant to, and subject 1920 to the license terms contained in, the Simplified BSD License 1921 set forth in Section 4.c of the IETF Trust's Legal Provisions 1922 Relating to IETF Documents 1923 (http://trustee.ietf.org/license-info). 1925 This version of this YANG module is part of RFC XXXX; see 1926 the RFC itself for full legal notices."; 1928 // RFC Ed.: replace XXXX with actual RFC number and remove this 1929 // note 1931 reference "RFC XXXX"; 1933 revision 2018-03-03 { 1934 description "Initial revision."; 1935 reference "RFC XXXX: A YANG data model for BFD IP single-hop"; 1936 } 1938 /* 1939 * Augments 1940 */ 1941 augment "/rt:routing/rt:control-plane-protocols/" 1942 + "rt:control-plane-protocol/bfd:bfd" { 1943 description "BFD augmentation for IP single-hop"; 1944 container ip-sh { 1945 description "BFD IP single-hop top level container"; 1947 uses bfd-types:session-statistics-summary; 1949 container sessions { 1950 description 1951 "BFD IP single-hop sessions."; 1952 list session { 1953 key "interface dest-addr"; 1954 description "List of IP single-hop sessions."; 1955 leaf interface { 1956 type if:interface-ref; 1957 description 1958 "Interface on which the BFD session is running."; 1959 } 1960 leaf dest-addr { 1961 type inet:ip-address; 1962 description "IP address of the peer."; 1963 } 1964 leaf source-addr { 1965 type inet:ip-address; 1966 description "Local IP address."; 1967 } 1969 uses bfd-types:common-cfg-parms; 1971 uses bfd-types:all-session; 1972 } 1973 } 1974 list interfaces { 1975 key "interface"; 1976 description "List of interfaces."; 1977 leaf interface { 1978 type if:interface-ref; 1979 description 1980 "BFD information for this interface."; 1981 } 1983 uses bfd-types:auth-parms; 1984 } 1985 } 1986 } 1988 /* 1989 * Notifications 1990 */ 1991 notification singlehop-notification { 1992 description 1993 "Notification for BFD single-hop session state change. An " + 1994 "implementation may rate-limit notifications, e.g. when a" + 1995 "session is continuously changing state."; 1997 uses bfd-types:notification-parms; 1999 leaf interface { 2000 type if:interface-ref; 2001 description "Interface to which this BFD session belongs to."; 2002 } 2004 leaf echo-enabled { 2005 type boolean; 2006 description "Was echo enabled for BFD."; 2007 } 2008 } 2010 } 2011 2013 2.16. BFD IP multihop YANG Module 2015 This YANG module imports typedefs from [RFC6991]. 2017 file "ietf-bfd-ip-mh@2018-03-03.yang" 2019 module ietf-bfd-ip-mh { 2021 yang-version 1.1; 2023 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 2025 prefix "bfd-ip-mh"; 2027 import ietf-bfd-types { 2028 prefix "bfd-types"; 2029 } 2031 import ietf-bfd { 2032 prefix "bfd"; 2033 } 2035 import ietf-inet-types { 2036 prefix "inet"; 2037 reference "RFC 6991: Common YANG Data Types"; 2038 } 2040 import ietf-routing { 2041 prefix "rt"; 2042 // RFC Ed.: replace XXXX with actual RFC number of 2043 // draft-ietf-netmod-rfc8022bis and remove this note. 2044 reference 2045 "RFC XXXX: A YANG Data Model for Routing Management"; 2046 } 2048 organization "IETF BFD Working Group"; 2050 contact 2051 "WG Web: 2052 WG List: 2054 Editors: Reshad Rahman (rrahman@cisco.com), 2055 Lianshu Zheng (vero.zheng@huawei.com), 2056 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2058 description 2059 "This module contains the YANG definition for BFD IP multi-hop 2060 as per RFC 5883. 2062 Copyright (c) 2018 IETF Trust and the persons 2063 identified as authors of the code. All rights reserved. 2065 Redistribution and use in source and binary forms, with or 2066 without modification, is permitted pursuant to, and subject 2067 to the license terms contained in, the Simplified BSD License 2068 set forth in Section 4.c of the IETF Trust's Legal Provisions 2069 Relating to IETF Documents 2070 (http://trustee.ietf.org/license-info). 2072 This version of this YANG module is part of RFC XXXX; see 2073 the RFC itself for full legal notices."; 2075 // RFC Ed.: replace XXXX with actual RFC number and remove this 2076 // note 2078 reference "RFC XXXX"; 2080 revision 2018-03-03 { 2081 description "Initial revision."; 2082 reference "RFC XXXX: A YANG data model for BFD IP multihop."; 2083 } 2085 /* 2086 * Augments 2087 */ 2088 augment "/rt:routing/rt:control-plane-protocols/" 2089 + "rt:control-plane-protocol/bfd:bfd" { 2090 description "BFD augmentation for IP multihop."; 2091 container ip-mh { 2092 description "BFD IP multihop top level container."; 2094 uses bfd-types:session-statistics-summary; 2096 container session-groups { 2097 description 2098 "BFD IP multi-hop session groups."; 2099 list session-group { 2100 key "source-addr dest-addr"; 2101 description 2102 "Group of BFD IP multi-hop sessions (for ECMP). A " + 2103 "group of sessions is between 1 source and 1 " + 2104 "destination, each session has a different field " + 2105 "in UDP/IP hdr for ECMP."; 2107 leaf source-addr { 2108 type inet:ip-address; 2109 description 2110 "Local IP address."; 2111 } 2112 leaf dest-addr { 2113 type inet:ip-address; 2114 description 2115 "IP address of the peer."; 2116 } 2117 uses bfd-types:common-cfg-parms; 2119 leaf tx-ttl { 2120 type bfd-types:hops; 2121 default 255; 2122 description "Hop count of outgoing BFD control packets."; 2123 } 2124 leaf rx-ttl { 2125 type bfd-types:hops; 2126 mandatory true; 2127 description 2128 "Minimum allowed hop count value for incoming BFD control 2129 packets. Control packets whose hop count is lower than 2130 this value are dropped."; 2131 } 2132 list sessions { 2133 config false; 2134 description 2135 "The multiple BFD sessions between a source and a " + 2136 "destination."; 2137 uses bfd-types:all-session; 2138 } 2139 } 2140 } 2141 } 2142 } 2144 /* 2145 * Notifications 2146 */ 2147 notification multihop-notification { 2148 description 2149 "Notification for BFD multi-hop session state change. An " + 2150 "implementation may rate-limit notifications, e.g. when a" + 2151 "session is continuously changing state."; 2153 uses bfd-types:notification-parms; 2154 } 2156 } 2158 2160 2.17. BFD over LAG YANG Module 2162 This YANG module imports "interface-ref" from 2163 [I-D.ietf-netmod-rfc7223bis]. 2165 file "ietf-bfd-lag@2018-03-03.yang" 2167 module ietf-bfd-lag { 2169 yang-version 1.1; 2171 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 2173 prefix "bfd-lag"; 2175 import ietf-bfd-types { 2176 prefix "bfd-types"; 2177 } 2179 import ietf-bfd { 2180 prefix "bfd"; 2181 } 2183 import ietf-interfaces { 2184 prefix "if"; 2185 // RFC Ed.: replace XXXX with actual RFC number of 2186 // draft-ietf-netmod-rfc7223bis and remove this note. 2187 reference 2188 "RFC XXXX: A YANG Data Model for Interface Management"; 2189 } 2191 import ietf-inet-types { 2192 prefix "inet"; 2193 reference "RFC 6991: Common YANG Data Types"; 2194 } 2196 import ietf-routing { 2197 prefix "rt"; 2198 // RFC Ed.: replace XXXX with actual RFC number of 2199 // draft-ietf-netmod-rfc8022bis and remove this note. 2200 reference 2201 "RFC XXXX: A YANG Data Model for Routing Management"; 2202 } 2203 organization "IETF BFD Working Group"; 2205 contact 2206 "WG Web: 2207 WG List: 2209 Editors: Reshad Rahman (rrahman@cisco.com), 2210 Lianshu Zheng vero.zheng@huawei.com), 2211 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2213 description 2214 "This module contains the YANG definition for BFD over LAG 2215 interfaces as per RFC7130. 2217 Copyright (c) 2018 IETF Trust and the persons 2218 identified as authors of the code. All rights reserved. 2220 Redistribution and use in source and binary forms, with or 2221 without modification, is permitted pursuant to, and subject 2222 to the license terms contained in, the Simplified BSD License 2223 set forth in Section 4.c of the IETF Trust's Legal Provisions 2224 Relating to IETF Documents 2225 (http://trustee.ietf.org/license-info). 2227 This version of this YANG module is part of RFC XXXX; see 2228 the RFC itself for full legal notices."; 2230 // RFC Ed.: replace XXXX with actual RFC number and remove this 2231 // note 2233 reference "RFC XXXX"; 2235 revision 2018-03-03 { 2236 description "Initial revision."; 2237 reference "RFC XXXX: A YANG data model for BFD over LAG"; 2238 } 2240 /* 2241 * Augments 2242 */ 2243 augment "/rt:routing/rt:control-plane-protocols/" 2244 + "rt:control-plane-protocol/bfd:bfd" { 2245 description "BFD augmentation for LAG"; 2246 container lag { 2247 description "BFD over LAG top level container"; 2249 container micro-bfd-ipv4-session-statistics { 2250 description "Micro-BFD IPv4 session counters."; 2251 uses bfd-types:session-statistics-summary; 2252 } 2253 container micro-bfd-ipv6-session-statistics { 2254 description "Micro-BFD IPv6 session counters."; 2255 uses bfd-types:session-statistics-summary; 2256 } 2258 container sessions { 2259 description 2260 "BFD over LAG sessions"; 2261 list session { 2262 key "lag-name"; 2263 description "List of BFD over LAG sessions."; 2264 leaf lag-name { 2265 type if:interface-ref ; 2266 description "Name of the LAG"; 2267 } 2268 leaf ipv4-dest-addr { 2269 type inet:ipv4-address; 2270 description 2271 "IPv4 address of the peer, for IPv4 micro-BFD."; 2272 } 2273 leaf ipv6-dest-addr { 2274 type inet:ipv6-address; 2275 description 2276 "IPv6 address of the peer, for IPv6 micro-BFD."; 2277 } 2278 uses bfd-types:common-cfg-parms; 2280 leaf use-ipv4 { 2281 type boolean; 2282 description "Using IPv4 micro-BFD."; 2283 } 2284 leaf use-ipv6 { 2285 type boolean; 2286 description "Using IPv6 micro-BFD."; 2287 } 2289 list member-links { 2290 key "member-link"; 2291 config false; 2292 description 2293 "Micro-BFD over LAG. This represents one member link."; 2295 leaf member-link { 2296 type if:interface-ref; 2297 description 2298 "Member link on which micro-BFD is running."; 2300 } 2301 container micro-bfd-ipv4 { 2302 when "../../use-ipv4 = 'true'" { 2303 description "Needed only if IPv4 is used."; 2304 } 2305 description 2306 "Micro-BFD IPv4 session state on member link."; 2307 uses bfd-types:all-session; 2308 } 2309 container micro-bfd-ipv6 { 2310 when "../../use-ipv6 = 'true'" { 2311 description "Needed only if IPv6 is used."; 2312 } 2313 description 2314 "Micro-BFD IPv6 session state on member link."; 2315 uses bfd-types:all-session; 2316 } 2317 } 2318 } 2319 } 2320 } 2321 } 2323 /* 2324 * Notifications 2325 */ 2326 notification lag-notification { 2327 description 2328 "Notification for BFD over LAG session state change. " + 2329 "An implementation may rate-limit notifications, e.g. when a" + 2330 "session is continuously changing state."; 2332 uses bfd-types:notification-parms; 2334 leaf lag-name { 2335 type if:interface-ref; 2336 description "LAG interface name."; 2337 } 2339 leaf member-link { 2340 type if:interface-ref; 2341 description "Member link on which BFD is running."; 2342 } 2343 } 2344 } 2346 2348 2.18. BFD over MPLS YANG Module 2350 This YANG module imports typedefs from [RFC6991]. 2352 file "ietf-bfd-mpls@2018-03-03.yang" 2354 module ietf-bfd-mpls { 2356 yang-version 1.1; 2358 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 2360 prefix "bfd-mpls"; 2362 import ietf-bfd-types { 2363 prefix "bfd-types"; 2364 } 2366 import ietf-bfd { 2367 prefix "bfd"; 2368 } 2370 import ietf-inet-types { 2371 prefix "inet"; 2372 reference "RFC 6991: Common YANG Data Types"; 2373 } 2375 import ietf-routing { 2376 prefix "rt"; 2377 // RFC Ed.: replace XXXX with actual RFC number of 2378 // draft-ietf-netmod-rfc8022bis and remove this note. 2379 reference 2380 "RFC XXXX: A YANG Data Model for Routing Management"; 2381 } 2383 organization "IETF BFD Working Group"; 2385 contact 2386 "WG Web: 2387 WG List: 2389 Editors: Reshad Rahman (rrahman@cisco.com), 2390 Lianshu Zheng (vero.zheng@huawei.com), 2391 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2393 description 2394 "This module contains the YANG definition for BFD parameters for 2395 MPLS LSPs as per RFC 5884. 2397 Copyright (c) 2018 IETF Trust and the persons 2398 identified as authors of the code. All rights reserved. 2400 Redistribution and use in source and binary forms, with or 2401 without modification, is permitted pursuant to, and subject 2402 to the license terms contained in, the Simplified BSD License 2403 set forth in Section 4.c of the IETF Trust's Legal Provisions 2404 Relating to IETF Documents 2405 (http://trustee.ietf.org/license-info). 2407 This version of this YANG module is part of RFC XXXX; see 2408 the RFC itself for full legal notices."; 2410 // RFC Ed.: replace XXXX with actual RFC number and remove this 2411 // note 2413 reference "RFC XXXX"; 2415 revision 2018-03-03 { 2416 description "Initial revision."; 2417 reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; 2418 } 2420 /* 2421 * Identity definitions 2422 */ 2423 identity encap-gach { 2424 base bfd-types:encap-type; 2425 description 2426 "BFD with G-ACh encapsulation as per RFC 5586."; 2427 } 2429 identity encap-ip-gach { 2430 base bfd-types:encap-type; 2431 description 2432 "BFD with IP and G-ACh encapsulation as per RFC 5586."; 2433 } 2435 /* 2436 * Groupings 2437 */ 2438 grouping encap-cfg { 2439 description "Configuration for BFD encapsulation"; 2441 leaf encap { 2442 type identityref { 2443 base bfd-types:encap-type; 2444 } 2445 default bfd-types:encap-ip; 2446 description "BFD encapsulation"; 2447 } 2448 } 2450 grouping mpls-dest-address { 2451 description "Destination address as per RFC 5884."; 2453 leaf mpls-dest-address { 2454 type inet:ip-address; 2455 config "false"; 2456 description 2457 "Destination address as per RFC 5884. 2458 Needed if IP encapsulation is used."; 2459 } 2460 } 2462 /* 2463 * Augments 2464 */ 2465 augment "/rt:routing/rt:control-plane-protocols/" 2466 + "rt:control-plane-protocol/bfd:bfd" { 2467 description "BFD augmentation for MPLS."; 2468 container mpls { 2469 description "BFD MPLS top level container."; 2471 uses bfd-types:session-statistics-summary; 2473 container egress { 2474 description "Egress configuration."; 2476 uses bfd-types:client-cfg-parms; 2478 uses bfd-types:auth-parms; 2479 } 2481 container session-groups { 2482 description 2483 "BFD over MPLS session groups."; 2484 list session-group { 2485 key "mpls-fec"; 2486 description 2487 "Group of BFD MPLS sessions (for ECMP). A group of " + 2488 "sessions is for 1 FEC, each session has a different " + 2489 "field in UDP/IP hdr for ECMP."; 2490 leaf mpls-fec { 2491 type inet:ip-prefix; 2492 description "MPLS FEC."; 2494 } 2496 uses bfd-types:common-cfg-parms; 2498 list sessions { 2499 config false; 2500 description 2501 "The BFD sessions for an MPLS FEC. Local " + 2502 "discriminator is unique for each session in the " + 2503 "group."; 2504 uses bfd-types:all-session; 2506 uses bfd-mpls:mpls-dest-address; 2507 } 2508 } 2509 } 2510 } 2511 } 2513 /* 2514 * Notifications 2515 */ 2516 notification mpls-notification { 2517 description 2518 "Notification for BFD over MPLS FEC session state change. " + 2519 "An implementation may rate-limit notifications, e.g. when a" + 2520 "session is continuously changing state."; 2522 uses bfd-types:notification-parms; 2524 leaf mpls-dest-address { 2525 type inet:ip-address; 2526 description 2527 "Destination address as per RFC 5884. 2528 Needed if IP encapsulation is used."; 2529 } 2530 } 2531 } 2533 2535 2.19. BFD over MPLS-TE YANG Module 2537 This YANG module imports and augments "/te/tunnels/tunnel" from 2538 [I-D.ietf-teas-yang-te]. 2540 file "ietf-bfd-mpls-te@2018-03-03.yang" 2541 module ietf-bfd-mpls-te { 2543 yang-version 1.1; 2545 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; 2547 prefix "bfd-mpls-te"; 2549 import ietf-bfd-types { 2550 prefix "bfd-types"; 2551 } 2553 import ietf-bfd { 2554 prefix "bfd"; 2555 } 2557 import ietf-bfd-mpls { 2558 prefix "bfd-mpls"; 2559 } 2561 import ietf-te { 2562 prefix "te"; 2563 } 2565 import ietf-routing { 2566 prefix "rt"; 2567 // RFC Ed.: replace XXXX with actual RFC number of 2568 // draft-ietf-netmod-rfc8022bis and remove this note. 2569 reference 2570 "RFC XXXX: A YANG Data Model for Routing Management"; 2571 } 2573 organization "IETF BFD Working Group"; 2575 contact 2576 "WG Web: 2577 WG List: 2579 Editors: Reshad Rahman (rrahman@cisco.com), 2580 Lianshu Zheng (vero.zheng@huawei.com), 2581 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2583 description 2584 "This module contains the YANG definition for BFD parameters for 2585 MPLS Traffic Engineering as per RFC 5884. 2587 Copyright (c) 2018 IETF Trust and the persons 2588 identified as authors of the code. All rights reserved. 2590 Redistribution and use in source and binary forms, with or 2591 without modification, is permitted pursuant to, and subject 2592 to the license terms contained in, the Simplified BSD License 2593 set forth in Section 4.c of the IETF Trust's Legal Provisions 2594 Relating to IETF Documents 2595 (http://trustee.ietf.org/license-info). 2597 This version of this YANG module is part of RFC XXXX; see 2598 the RFC itself for full legal notices."; 2600 // RFC Ed.: replace XXXX with actual RFC number and remove this 2601 // note 2603 reference "RFC XXXX"; 2605 revision 2018-03-03 { 2606 description "Initial revision."; 2607 reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; 2608 } 2610 /* 2611 * Augments 2612 */ 2613 augment "/rt:routing/rt:control-plane-protocols/" 2614 + "rt:control-plane-protocol/bfd:bfd" { 2615 description "BFD augmentation for MPLS-TE."; 2616 container mpls-te { 2617 description "BFD MPLS-TE top level container."; 2619 container egress { 2620 description "Egress configuration."; 2622 uses bfd-types:client-cfg-parms; 2624 uses bfd-types:auth-parms; 2625 } 2627 uses bfd-types:session-statistics-summary; 2628 } 2629 } 2631 augment "/te:te/te:tunnels/te:tunnel" { 2632 description "BFD configuration on MPLS-TE tunnel."; 2634 uses bfd-types:common-cfg-parms; 2636 uses bfd-mpls:encap-cfg; 2637 } 2638 augment "/te:te/te:lsps-state/te:lsp" { 2639 when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { 2640 description "BFD information not needed at transit points."; 2641 } 2642 description "BFD state information on MPLS-TE LSP."; 2644 uses bfd-types:all-session; 2646 uses bfd-mpls:mpls-dest-address; 2647 } 2649 /* 2650 * Notifications 2651 */ 2652 notification mpls-te-notification { 2653 description 2654 "Notification for BFD over MPLS-TE session state change. " + 2655 "An implementation may rate-limit notifications, e.g. when a" + 2656 "session is continuously changing state."; 2658 uses bfd-types:notification-parms; 2660 uses bfd-mpls:mpls-dest-address; 2662 leaf tunnel-name { 2663 type string; 2664 description "MPLS-TE tunnel on which BFD was running."; 2665 } 2666 } 2667 } 2669 2671 3. Data Model examples 2673 This section presents some simple and illustrative examples on how to 2674 configure BFD. 2676 3.1. IP single-hop 2678 The following is an example configuration for a BFD IP single-hop 2679 session. The desired transmit interval and the required receive 2680 interval are both set to 10ms. 2682 2683 2684 2685 2686 eth0 2687 2688 ianaift:ethernetCsmacd 2689 2690 2691 2692 2693 2694 2695 2697 bfd-types:bfdv1 2698 2699 name:BFD 2700 2701 2702 2703 2704 eth0 2705 2001:db8:0:113::101 2706 10000 2707 2708 10000 2709 2710 2711 2712 2713 2714 2715 2716 2717 2719 3.2. IP multihop 2721 The following is an example configuration for a BFD IP multihop 2722 session group. The desired transmit interval and the required 2723 receive interval are both set to 150ms. 2725 2726 2727 2728 2729 2730 2732 bfd-types:bfdv1 2733 2734 name:BFD 2735 2736 2737 2738 2739 2001:db8:0:113::103 2740 2001:db8:0:114::100 2741 2742 150000 2743 2744 2745 150000 2746 2747 240 2748 2749 2750 2751 2752 2753 2754 2755 2757 3.3. LAG 2759 The following is an example of BFD configuration for a LAG session. 2760 In this case, an interface named "Bundle-Ether1" of interface type 2761 "ieee802eadLag" has a desired transmit and required receive interval 2762 set to 10ms. 2764 2765 2766 2767 2768 Bundle-Ether1 2769 2770 ianaift:ieee8023adLag 2771 2772 2773 2774 2775 2776 2777 2779 bfd-types:bfdv1 2780 2781 name:BFD 2782 2783 2784 2785 2786 Bundle-Ether1 2787 2001:db8:112::16 2788 2789 100000 2790 2791 2792 100000 2793 2794 true 2795 2796 2797 2798 2799 2800 2801 2802 2804 3.4. MPLS 2806 The following is an example of BFD configured for an MPLS LSP. In 2807 this case, the desired transmit and required receive interval set to 2808 250ms. 2810 2811 2812 2813 2814 2815 2817 bfd-types:bfdv1 2818 2819 name:BFD 2820 2821 2822 2823 2824 2001:db8:114::/116 2825 2826 250000 2827 2828 2829 250000 2830 2831 2832 2833 2834 2835 2836 2837 2838 2840 4. Security Considerations 2842 The YANG module specified in this document defines a schema for data 2843 that is designed to be accessed via network management protocols such 2844 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2845 is the secure transport layer, and the mandatory-to-implement secure 2846 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2847 is HTTPS, and the mandatory-to-implement secure transport is TLS 2848 [RFC5246]. 2850 The NETCONF access control model [RFC6536] provides the means to 2851 restrict access for particular NETCONF or RESTCONF users to a 2852 preconfigured subset of all available NETCONF or RESTCONF protocol 2853 operations and content. 2855 There are a number of data nodes defined in this YANG module that are 2856 writable/creatable/deletable (i.e., config true, which is the 2857 default). These data nodes may be considered sensitive or vulnerable 2858 in some network environments. Write operations (e.g., edit-config) 2859 to these data nodes without proper protection can have a negative 2860 effect on network operations. These are the subtrees and data nodes 2861 and their sensitivity/vulnerability: 2863 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2864 sessions: the list specifies the IP single-hop BFD sessions. 2866 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2867 sessions: data nodes local-multiplier, desired-min-tx-interval, 2868 required-min-rx-interval, min-interval and authentication all impact 2869 the BFD IP single-hop session. 2871 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2872 session-group: the list specifies the IP multi-hop BFD session 2873 groups. 2875 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2876 session-group: data nodes local-multiplier, desired-min-tx-interval, 2877 required-min-rx-interval, min-interval and authentication all impact 2878 the BFD IP multi-hop session. 2880 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2881 sessions: the list specifies the BFD sessions over LAG. 2883 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2884 sessions: data nodes local-multiplier, desired-min-tx-interval, 2885 required-min-rx-interval, min-interval and authentication all impact 2886 the BFD over LAG session. 2888 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2889 session-group: the list specifies the session groups for BFD over 2890 MPLS. 2892 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2893 session-group: data nodes local-multiplier, desired-min-tx-interval, 2894 required-min-rx-interval, min-interval and authentication all impact 2895 the BFD over MPLS LSPs session. 2897 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2898 egress: data nodes local-multiplier, desired-min-tx-interval, 2899 required-min-rx-interval, min-interval and authentication all impact 2900 the BFD over MPLS LSPs sessions for which this device is an MPLS LSP 2901 egress node. 2903 /te/tunnels/tunnel: data nodes local-multiplier, desired-min-tx- 2904 interval, required-min-rx-interval, min-interval and authentication 2905 all impact the BFD session over the MPLS-TE tunnel. 2907 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ 2908 egress: data nodes local-multiplier, desired-min-tx-interval, 2909 required-min-rx-interval, min-interval and authentication all impact 2910 the BFD over MPLS-TE sessions for which this device is an MPLS-TE 2911 egress node. 2913 The YANG module has writeable data nodes which can be used for 2914 creation of BFD sessions and modification of BFD session parameters. 2915 The system should "police" creation of BFD sessions to prevent new 2916 sessions from causing existing BFD sessions to fail. For BFD session 2917 modification, the BFD protocol has mechanisms in place which allow 2918 for in service modification. 2920 Some of the readable data nodes in this YANG module may be considered 2921 sensitive or vulnerable in some network environments. It is thus 2922 important to control read access (e.g., via get, get-config, or 2923 notification) to these data nodes. These are the subtrees and data 2924 nodes and their sensitivity/vulnerability: 2926 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2927 summary: access to this information discloses the number of BFD IP 2928 single-hop sessions which are up, down and admin-down. The counters 2929 include BFD sessions for which the user does not have read-access. 2931 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2932 summary: access to this information discloses the number of BFD IP 2933 multi-hop sessions which are up, down and admin-down. The counters 2934 include BFD sessions for which the user does not have read-access. 2936 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2937 micro-bfd-ipv4-session-statistics/summary: access to this information 2938 discloses the number of micro BFD IPv4 LAG sessions which are up, 2939 down and admin-down. The counters include BFD sessions for which the 2940 user does not have read-access. 2942 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2943 micro-bfd-ipv6-session-statistics/summary: access to this information 2944 discloses the number of micro BFD IPv6 LAG sessions which are up, 2945 down and admin-down. The counters include BFD sessions for which the 2946 user does not have read-access. 2948 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2949 summary: access to this information discloses the number of BFD 2950 sessions over MPLS LSPs which are up, down and admin-down. The 2951 counters include BFD sessions for which the user does not have read- 2952 access. 2954 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ 2955 summary: access to this information discloses the number of BFD 2956 sessions over MPLS-TE which are up, down and admin-down. The 2957 counters include BFD sessions for which the user does not have read- 2958 access. 2960 5. IANA Considerations 2962 The IANA is requested to as assign a new namespace URI from the IETF 2963 XML registry. 2965 This document registers the following namesace URIs in the IETF XML 2966 registry [RFC3688]: 2968 -------------------------------------------------------------------- 2970 URI: urn:ietf:params:xml:ns:yang:ietf-bfd 2972 Registrant Contact: The IESG. 2974 XML: N/A, the requested URI is an XML namespace. 2976 -------------------------------------------------------------------- 2978 -------------------------------------------------------------------- 2980 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2982 Registrant Contact: The IESG. 2984 XML: N/A, the requested URI is an XML namespace. 2986 -------------------------------------------------------------------- 2988 -------------------------------------------------------------------- 2990 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mh 2992 Registrant Contact: The IESG. 2994 XML: N/A, the requested URI is an XML namespace. 2996 -------------------------------------------------------------------- 2998 -------------------------------------------------------------------- 2999 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 3001 Registrant Contact: The IESG. 3003 XML: N/A, the requested URI is an XML namespace. 3005 -------------------------------------------------------------------- 3007 -------------------------------------------------------------------- 3009 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 3011 Registrant Contact: The IESG. 3013 XML: N/A, the requested URI is an XML namespace. 3015 -------------------------------------------------------------------- 3017 -------------------------------------------------------------------- 3019 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te 3021 Registrant Contact: The IESG. 3023 XML: N/A, the requested URI is an XML namespace. 3025 -------------------------------------------------------------------- 3027 5.1. IANA-Maintained iana-bfd-types module 3029 This document defines the initial version of the IANA-maintained 3030 iana-bfd-types YANG module. 3032 The iana-bfd-types YANG module is intended to reflect the "BFD 3033 Diagnostic Codes" registry and "BFD Authentication Types" registry at 3034 https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml 3036 6. Acknowledgements 3038 We would also like to thank Nobo Akiya and Jeff Haas for their 3039 encouragement on this work. We would also like to thank Rakesh 3040 Gandhi and Tarek Saad for their help on the MPLS-TE model. We would 3041 also like to thank Acee Lindem for his guidance. 3043 7. References 3045 7.1. Normative References 3047 [I-D.ietf-mpls-base-yang] 3048 Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A 3049 YANG Data Model for MPLS Base", draft-ietf-mpls-base- 3050 yang-06 (work in progress), February 2018. 3052 [I-D.ietf-netmod-rfc7223bis] 3053 Bjorklund, M., "A YANG Data Model for Interface 3054 Management", draft-ietf-netmod-rfc7223bis-03 (work in 3055 progress), January 2018. 3057 [I-D.ietf-netmod-rfc7277bis] 3058 Bjorklund, M., "A YANG Data Model for IP Management", 3059 draft-ietf-netmod-rfc7277bis-03 (work in progress), 3060 January 2018. 3062 [I-D.ietf-netmod-rfc8022bis] 3063 Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 3064 Routing Management (NMDA Version)", draft-ietf-netmod- 3065 rfc8022bis-11 (work in progress), January 2018. 3067 [I-D.ietf-teas-yang-te] 3068 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 3069 I. Bryskin, "A YANG Data Model for Traffic Engineering 3070 Tunnels and Interfaces", draft-ietf-teas-yang-te-12 (work 3071 in progress), February 2018. 3073 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3074 Requirement Levels", BCP 14, RFC 2119, 3075 DOI 10.17487/RFC2119, March 1997, . 3078 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3079 DOI 10.17487/RFC3688, January 2004, . 3082 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 3083 (TLS) Protocol Version 1.2", RFC 5246, 3084 DOI 10.17487/RFC5246, August 2008, . 3087 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 3088 "MPLS Generic Associated Channel", RFC 5586, 3089 DOI 10.17487/RFC5586, June 2009, . 3092 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 3093 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 3094 . 3096 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 3097 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 3098 DOI 10.17487/RFC5881, June 2010, . 3101 [RFC5882] Katz, D. and D. Ward, "Generic Application of 3102 Bidirectional Forwarding Detection (BFD)", RFC 5882, 3103 DOI 10.17487/RFC5882, June 2010, . 3106 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 3107 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 3108 June 2010, . 3110 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 3111 "Bidirectional Forwarding Detection (BFD) for MPLS Label 3112 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 3113 June 2010, . 3115 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 3116 Forwarding Detection (BFD) for the Pseudowire Virtual 3117 Circuit Connectivity Verification (VCCV)", RFC 5885, 3118 DOI 10.17487/RFC5885, June 2010, . 3121 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3122 and A. Bierman, Ed., "Network Configuration Protocol 3123 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3124 . 3126 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3127 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3128 . 3130 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 3131 Protocol (NETCONF) Access Control Model", RFC 6536, 3132 DOI 10.17487/RFC6536, March 2012, . 3135 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 3136 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3137 . 3139 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 3140 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 3141 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 3142 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 3143 2014, . 3145 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 3146 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 3147 . 3149 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 3150 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 3151 May 2017, . 3153 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 3154 Zhang, "YANG Data Model for Key Chains", RFC 8177, 3155 DOI 10.17487/RFC8177, June 2017, . 3158 7.2. Informative References 3160 [I-D.ietf-lime-yang-connectionless-oam] 3161 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 3162 "Generic YANG Data Model for the Management of Operations, 3163 Administration, and Maintenance (OAM) Protocols that use 3164 Connectionless Communications", draft-ietf-lime-yang- 3165 connectionless-oam-18 (work in progress), November 2017. 3167 [I-D.ietf-netmod-revised-datastores] 3168 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 3169 and R. Wilton, "Network Management Datastore 3170 Architecture", draft-ietf-netmod-revised-datastores-10 3171 (work in progress), January 2018. 3173 [I-D.ietf-netmod-schema-mount] 3174 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 3175 ietf-netmod-schema-mount-08 (work in progress), October 3176 2017. 3178 [I-D.ietf-rtgwg-lne-model] 3179 Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3180 Liu, "YANG Model for Logical Network Elements", draft- 3181 ietf-rtgwg-lne-model-07 (work in progress), February 2018. 3183 [I-D.ietf-rtgwg-ni-model] 3184 Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3185 Liu, "YANG Model for Network Instances", draft-ietf-rtgwg- 3186 ni-model-10 (work in progress), February 2018. 3188 Appendix A. Echo function configuration example 3190 As mentioned in Section 2.1.2, the mechanism to start and stop the 3191 echo function, as defined in [RFC5880] and [RFC5881], is 3192 implementation specific. In this section we provide an example of 3193 how the echo function can be implemented via configuration. 3195 module: example-bfd-echo 3196 augment /rt:routing/rt:control-plane-protocols 3197 /rt:control-plane-protocol/bfd:bfd 3198 /bfd-ip-sh:ip-sh/bfd-ip-sh:sessions: 3199 +--rw echo {bfd-types:echo-mode}? 3200 +--rw desired-min-echo-tx-interval? uint32 3201 +--rw required-min-echo-rx-interval? uint32 3203 A.1. Example YANG module for BFD echo function configuration 3205 module example-bfd-echo { 3206 namespace "tag:example.com,2018:example-bfd-echo"; 3208 prefix "example-bfd-echo"; 3210 import ietf-bfd-types { 3211 prefix "bfd-types"; 3212 } 3214 import ietf-bfd { 3215 prefix "bfd"; 3216 } 3218 import ietf-bfd-ip-sh { 3219 prefix "bfd-ip-sh"; 3220 } 3222 import ietf-routing { 3223 prefix "rt"; 3224 } 3226 organization "IETF BFD Working Group"; 3228 contact 3229 "WG Web: 3230 WG List: 3232 Editors: Reshad Rahman (rrahman@cisco.com), 3233 Lianshu Zheng (vero.zheng@huawei.com), 3234 Mahesh Jethanandani (mjethanandani@gmail.com)"; 3236 description 3237 "This module contains an example YANG augmentation for configuration 3238 of BFD echo function. 3240 Copyright (c) 2018 IETF Trust and the persons 3241 identified as authors of the code. All rights reserved. 3243 Redistribution and use in source and binary forms, with or 3244 without modification, is permitted pursuant to, and subject 3245 to the license terms contained in, the Simplified BSD License 3246 set forth in Section 4.c of the IETF Trust's Legal Provisions 3247 Relating to IETF Documents 3248 (http://trustee.ietf.org/license-info). 3250 This version of this YANG module is part of RFC XXXX; see 3251 the RFC itself for full legal notices."; 3253 revision 2018-03-03 { 3254 description "Initial revision."; 3255 reference 3256 "RFC XXXX: A YANG data model example augmentation for BFD echo 3257 function"; 3258 } 3260 // RFC Ed.: replace XXXX with actual RFC number and remove this 3261 // note 3263 /* 3264 * Groupings 3265 */ 3266 grouping echo-cfg-parms { 3267 description "BFD grouping for echo config parameters"; 3268 leaf desired-min-echo-tx-interval { 3269 type uint32; 3270 units microseconds; 3271 default 0; 3272 description 3273 "This is the minimum interval that the local system would like 3274 to use when transmitting BFD echo packets. If 0, the echo 3275 function as defined in BFD [RFC5880] is disabled."; 3276 } 3278 leaf required-min-echo-rx-interval { 3279 type uint32; 3280 units microseconds; 3281 default 0; 3282 description 3283 "This is the Required Min Echo RX Interval as defined in BFD 3285 [RFC5880]."; 3286 } 3287 } 3289 augment "/rt:routing/rt:control-plane-protocols/" 3290 + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" 3291 + "bfd-ip-sh:sessions" { 3292 description "Augmentation for BFD echo function."; 3294 container echo { 3295 if-feature bfd-types:echo-mode; 3297 description "BFD echo function container"; 3299 uses echo-cfg-parms; 3300 } 3301 } 3302 } 3304 Appendix B. Change log 3306 RFC Editor: Remove this section upon publication as an RFC. 3308 B.1. Changes between versions -10 and -11 3310 o Added 2 examples. 3312 o Added a container around some lists. 3314 o Fixed some indentation nits. 3316 B.2. Changes between versions -09 and -10 3318 o Addressed comments from YANG Doctor review. 3320 o Addressed comments from WGLC. 3322 B.3. Changes between versions -08 and -09 3324 o Mostly cosmetic changes to abide by draft-ietf-netmod-rfc6087bis. 3326 o Specified yang-version 1.1. 3328 o Added data model examples. 3330 o Some minor changes. 3332 B.4. Changes between versions -07 and -08 3334 o Timer intervals in client-cfg-parms are not mandatory anymore. 3336 o Added list of interfaces under "ip-sh" node for authentication 3337 parameters. 3339 o Renamed replay-protection to meticulous. 3341 B.5. Changes between versions -06 and -07 3343 o New ietf-bfd-types module. 3345 o Grouping for BFD clients to have BFD multiplier and interval 3346 values. 3348 o Change in ietf-bfd-mpls-te since MPLS-TE model changed. 3350 o Removed bfd- prefix from many names. 3352 B.6. Changes between versions -05 and -06 3354 o Adhere to NMDA-guidelines. 3356 o Echo function config moved to appendix as example. 3358 o Added IANA YANG modules. 3360 o Addressed various comments. 3362 B.7. Changes between versions -04 and -05 3364 o "bfd" node in augment of control-plane-protocol. 3366 o Removed augment of network-instance. Replaced by schema-mount. 3368 o Added information on interaction with other YANG modules. 3370 B.8. Changes between versions -03 and -04 3372 o Updated author information. 3374 o Fixed YANG compile error in ietf-bfd-lag.yang which was due to 3375 incorrect when statement. 3377 B.9. Changes between versions -02 and -03 3379 o Fixed YANG compilation warning due to incorrect revision date in 3380 ietf-bfd-ip-sh module. 3382 B.10. Changes between versions -01 and -02 3384 o Replace routing-instance with network-instance from YANG Network 3385 Instances [I-D.ietf-rtgwg-ni-model] 3387 B.11. Changes between versions -00 and -01 3389 o Remove BFD configuration parameters from BFD clients, all BFD 3390 configuration parameters in BFD 3392 o YANG module split in multiple YANG modules (one per type of 3393 forwarding path) 3395 o For BFD over MPLS-TE we augment MPLS-TE model 3397 o For BFD authentication we now use YANG Data Model for Key Chains 3398 [RFC8177] 3400 Authors' Addresses 3402 Reshad Rahman (editor) 3403 Cisco Systems 3404 Canada 3406 Email: rrahman@cisco.com 3408 Lianshu Zheng (editor) 3409 Huawei Technologies 3410 China 3412 Email: vero.zheng@huawei.com 3414 Mahesh Jethanandani (editor) 3416 Email: mjethanandani@gmail.com 3418 Santosh Pallagatti 3419 India 3421 Email: santosh.pallagatti@gmail.com 3422 Greg Mirsky 3423 ZTE Corporation 3425 Email: gregimirsky@gmail.com