idnits 2.17.1 draft-ietf-bfd-yang-10.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 : ---------------------------------------------------------------------------- ** There are 4 instances of too long lines in the document, the longest one being 26 characters in excess of 72. 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 2, 2018) is 2247 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: 3 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 3, 2018 Huawei Technologies 6 M. Jethanandani, Ed. 8 S. Pallagatti 10 G. Mirsky 11 ZTE Corporation 12 March 2, 2018 14 YANG Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-yang-10.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 https://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on September 3, 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 (https://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 . . . . . . . . . . . . . . . . . . . 21 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 . . . . . . . . . . . . . . . . 37 86 2.15. BFD IP single-hop YANG Module . . . . . . . . . . . . . . 39 87 2.16. BFD IP multihop YANG Module . . . . . . . . . . . . . . . 42 88 2.17. BFD over LAG YANG Module . . . . . . . . . . . . . . . . 45 89 2.18. BFD over MPLS YANG Module . . . . . . . . . . . . . . . . 49 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 . . . . . . . . . . . . . . . . . . . . . . . 56 94 4. Security Considerations . . . . . . . . . . . . . . . . . . . 57 95 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 60 96 5.1. IANA-Maintained iana-bfd-types module . . . . . . . . . . 61 98 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 61 99 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 61 100 7.1. Normative References . . . . . . . . . . . . . . . . . . 61 101 7.2. Informative References . . . . . . . . . . . . . . . . . 64 102 Appendix A. Echo function configuration example . . . . . . . . 64 103 A.1. Example YANG module for BFD echo function configuration . 65 104 Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 67 105 B.1. Changes between versions -09 and -10 . . . . . . . . . . 67 106 B.2. Changes between versions -08 and -09 . . . . . . . . . . 67 107 B.3. Changes between versions -07 and -08 . . . . . . . . . . 67 108 B.4. Changes between versions -06 and -07 . . . . . . . . . . 67 109 B.5. Changes between versions -05 and -06 . . . . . . . . . . 68 110 B.6. Changes between versions -04 and -05 . . . . . . . . . . 68 111 B.7. Changes between versions -03 and -04 . . . . . . . . . . 68 112 B.8. Changes between versions -02 and -03 . . . . . . . . . . 68 113 B.9. Changes between versions -01 and -02 . . . . . . . . . . 68 114 B.10. Changes between versions -00 and -01 . . . . . . . . . . 68 115 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 69 117 1. Introduction 119 This document defines a YANG data model that can be used to configure 120 and manage Bidirectional Forwarding Detection (BFD) [RFC5880]. BFD 121 is a network protocol which is used for liveness detection of 122 arbitrary paths between systems. Some examples of different types of 123 paths over which we have BFD: 125 1) Two systems directly connected via IP. This is known as BFD over 126 single-hop IP, a.k.a. BFD for IPv4 and IPv6 [RFC5881] 128 2) Two systems connected via multiple hops as described in BFD for 129 Multiple Hops. [RFC5883] 131 3) Two systems connected via MPLS Label Switched Paths (LSPs) as 132 described in BFD for MPLS LSP [RFC5884] 134 4) Two systems connected via a Link Aggregation Group (LAG) interface 135 as described in BFD on LAG Interfaces [RFC7130] 137 5) Two systems connected via pseudowires (PWs), this is known as 138 Virtual Circuit Connectivity Verification (VCCV) as described in BFD 139 for PW VCCV [RFC5885]. This is not addressed in this document. 141 BFD typically does not operate on its own. Various control 142 protocols, also known as BFD clients, use the services provided by 143 BFD for their own operation as described in Generic Application of 144 BFD [RFC5882]. The obvious candidates which use BFD are those which 145 do not have "hellos" to detect failures, e.g. static routes, and 146 routing protocols whose "hellos" do not support sub-second failure 147 detection, e.g. OSPF and IS-IS. 149 The YANG modules in this document conform to the Network Management 150 Datastore Architecture (NMDA) Network Management Datastore 151 Architecture [I-D.ietf-netmod-revised-datastores]. This means that 152 the data models do not have separate top-level or sibling containers 153 for configuration and operational state data. 155 1.1. Requirements Language 157 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 158 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 159 document are to be interpreted as described in BCP 14 [RFC2119] 160 [RFC8174] when, and only when, they appear in all capitals, as shown 161 here. 163 2. Design of the Data Model 165 Since BFD is used for liveliness detection of various forwarding 166 paths, there is no uniform key to identify a BFD session. So the BFD 167 data model is split in multiple YANG modules where each module 168 corresponds to one type of forwarding path. For example, BFD for IP 169 single-hop is in one YANG module and BFD for MPLS-TE is in another 170 YANG module. The main difference between these modules is how a BFD 171 session is uniquely identified, i.e the key for the list containing 172 the BFD sessions for that forwarding path. To avoid duplication of 173 BFD definitions, we have common types and groupings which are used by 174 all the modules. 176 A new control-plane protocol "bfdv1" is defined and a "bfd" container 177 is created under control-plane-protocol as specified in "A YANG Data 178 Model for Routing Management (NMDA Version)" 179 [I-D.ietf-netmod-rfc8022bis]. This new "bfd" container is augmented 180 by all the YANG modules for their respective specific information: 182 1. ietf-bfd-ip-sh.yang augments "/routing/control-plane-protocols/ 183 control-plane-protocol/bfd/" with the "ip-sh" container for BFD 184 sessions over IP single-hop. 186 2. ietf-bfd-ip-mh.yang augments "/routing/control-plane-protocols/ 187 control-plane-protocol/bfd/" with the "ip-mh" container for BFD 188 sessions over IP multi-hop. 190 3. ietf-bfd-lag.yang augments "/routing/control-plane-protocols/ 191 control-plane-protocol/bfd/" with the "lag" container for BFD 192 sessions over LAG. 194 4. ietf-bfd-mpls.yang augments "/routing/control-plane-protocols/ 195 control-plane-protocol/bfd/" with the "mpls" container for BFD 196 over MPLS LSPs. 198 5. ietf-bfd-mpls-te.yang augments "/routing/control-plane-protocols/ 199 control-plane-protocol/bfd/" with the "mpls-te" container for BFD 200 over MPLS-TE. 202 BFD can operate in the following contexts: 204 1. At the network device level 206 2. In Logical Network Elements as described in YANG Logical Network 207 Element [I-D.ietf-rtgwg-lne-model] 209 3. In Network Instances as described in YANG Logical Network Element 210 [I-D.ietf-rtgwg-ni-model] 212 When used at the network device level, the BFD YANG model is used 213 "as-is". When the BFD model is to be used in a Logical Network 214 Element or in a Network Instance, the approach taken is to do a 215 schema-mount (see Schema Mount [I-D.ietf-netmod-schema-mount]) of the 216 BFD model in the appropriate location. For example, if an 217 implementation supports BFD IP multihop in network instances, the 218 implementation would do schema-mount of the BFD IP multihop model in 219 a mount-point which resides in a network instance. 221 2.1. Design of Configuration Model 223 The configuration model consists mainly of the parameters specified 224 in BFD [RFC5880]. Some examples are desired minimum transmit 225 interval, required minimum receive interval, detection multiplier, 226 etc 228 BFD clients are applications that use BFD for fast detection of 229 failures. Some implementations have BFD session configuration under 230 the BFD clients. For example, BFD session configuration under 231 routing applications such as OSPF, IS-IS, BGP etc. Other 232 implementations have BFD session configuration centralized under BFD, 233 i.e. outside the multiple BFD clients. 235 The BFD parameters of interest to a BFD client are mainly the 236 multiplier and interval(s) since those parameters impact the 237 convergence time of the BFD clients when a failure occurs. Other 238 parameters such as BFD authentication are not specific to the 239 requirements of the BFD client. Ideally all configuration should be 240 centralized under BFD. However, this is a problem for clients of BFD 241 which auto-discover their peers. For example, IGPs do not have the 242 peer address configured, instead the IGP is enabled on an interface 243 and the IGP peers are auto-discovered. So for an operator to 244 configure BFD to an IGP peer, the operator would first have to 245 determine the peer addresses. And when a new peer is discovered, BFD 246 configuration would need to be added. To avoid this issue, we define 247 grouping client-cfg-parms in Section 2.13 for BFD clients to 248 configure BFD: this allows BFD clients such as the IGPs to have 249 configuration (multiplier and intervals) for the BFD sessions they 250 need. For example, when a new IGP peer is discovered, the IGP would 251 create a BFD session to the newly discovered peer and similarly when 252 an IGP peer goes away, the IGP would remove the BFD session to that 253 peer. The mechanism how the BFD sessions are created and removed by 254 the BFD clients is outside the scope of this document, but typically 255 this would be done by use of an API implemented by the BFD module on 256 the system. For BFD clients which create BFD sessions via their own 257 configuration, authentication parameters (if required) are still 258 specified in BFD. 260 2.1.1. Common BFD configuration parameters 262 The basic BFD configuration parameters are: 264 local-multiplier 265 This is the detection time multiplier as defined in BFD 266 [RFC5880]. 268 desired-min-tx-interval 269 This is the Desired Min TX Interval as defined in BFD 270 [RFC5880]. 272 required-min-rx-interval 273 This is the Required Min RX Interval as defined in BFD 274 [RFC5880]. 276 Although BFD [RFC5880] allows for different values for transmit and 277 receive intervals, some implementations allow users to specify just 278 one interval which is used for both transmit and receive intervals or 279 separate values for transmit and receive intervals. The BFD YANG 280 model supports this: there is a choice between "min-interval", used 281 for both transmit and receive intervals, and "desired-min-tx- 282 interval" and "required-min-rx-interval". This is supported via a 283 grouping which is used by the YANG modules for the various forwarding 284 paths. 286 For BFD authentication we have: 288 key-chain 289 This is a reference to key-chain defined in YANG Data Model 290 for Key Chains [RFC8177]. The keys, cryptographic 291 algorithms, key lifetime etc are all defined in the key-chain 292 model. 294 meticulous 295 This enables meticulous mode as per BFD [RFC5880]. 297 2.1.2. Single-hop IP 299 For single-hop IP, there is an augment of the "bfd" data node in 300 Section 2. The "ip-sh" node contains a list of IP single-hop 301 sessions where each session is uniquely identified by the interface 302 and destination address pair. For the configuration parameters we 303 use what is defined in Section 2.1.1. The "ip-sh" node also contains 304 a list of interfaces, this is used to specify authentication 305 parameters for BFD sessions which are created by BFD clients, see 306 Section 2.1. 308 [RFC5880] and [RFC5881] do not specify whether echo function is 309 continuous or on demand. Therefore the mechanism used to start and 310 stop echo function is implementation specific and should be done by 311 augmentation: 313 1) Configuration. This is suitable for continuous echo function. 314 An example is provided in Appendix A. 316 2) RPC. This is suitable for on-demand echo function. 318 2.1.3. Multihop IP 320 For multihop IP, there is an augment of the "bfd" data node in 321 Section 2. 323 Because of multiple paths, there could be multiple multihop IP 324 sessions between a source and a destination address. We identify 325 this as a "session-group". The key for each "session-group" consists 326 of: 328 source address 329 Address belonging to the local system as per BFD for Multiple 330 Hops [RFC5883] 332 destination address 333 Address belonging to the remote system as per BFD for 334 Multiple Hops [RFC5883] 336 For the configuration parameters we use what is defined in 337 Section 2.1.1 339 Here are some extra parameters: 341 tx-ttl 342 TTL of outgoing BFD control packets. 344 rx-ttl 345 Minimum TTL of incoming BFD control packets. 347 2.1.4. MPLS Traffic Engineering Tunnels 349 For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel since 350 the desired failure detection parameters is a property of the MPLS-TE 351 tunnel. This is achieved by augmenting the MPLS-TE data model in 352 YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te]. For BFD 353 parameters which are specific to the TE application, e.g. whether to 354 tear down the tunnel in the event of a BFD session failure, these 355 parameters will be defined in the YANG model of the MPLS-TE 356 application. 358 On top of the usual BFD parameters, we have the following per MPLS-TE 359 tunnel: 361 encap 362 Encapsulation for the BFD packets: choice between IP, G-ACh 363 and IP with G-ACh as per MPLS Generic Associated Channel 364 [RFC5586] 366 For general MPLS-TE data, "mpls-te" data node is added under the 367 "bfd" node in Section 2. Since some MPLS-TE tunnels are uni- 368 directional there is no MPLS-TE configuration for these tunnels on 369 the egress node (note that this does not apply to bi-directional 370 MPLS-TP tunnels). The BFD parameters for the egress node are added 371 under "mpls-te". 373 2.1.5. MPLS Label Switched Paths 375 Here we address MPLS LSPs whose FEC is an IP address. The "bfd" node 376 in Section 2 is augmented with "mpls" which contains a list of 377 sessions uniquely identified by an IP prefix. Because of multiple 378 paths, there could be multiple MPLS sessions to an MPLS FEC. We 379 identify this as a "session-group". 381 Since these LSPs are uni-directional there is no LSP configuration on 382 the egress node. 384 The BFD parameters for the egress node are added under "mpls". 386 2.1.6. Link Aggregation Groups 388 Per BFD on LAG Interfaces [RFC7130], configuring BFD on LAG consists 389 of having micro-BFD sessions on each LAG member link. Since the BFD 390 parameters are an attribute of the LAG, they should be under the LAG. 391 However there is no LAG YANG model which we can augment. So a "lag" 392 data node is added to the "bfd" node in Section 2, the configuration 393 is per-LAG: we have a list of LAGs. The destination IP address of 394 the micro-BFD sessions is configured per-LAG and per address-family 395 (IPv4 and IPv6) 397 2.2. Design of Operational State Model 399 The operational state model contains both the overall statistics of 400 BFD sessions running on the device and the per session operational 401 information. 403 The overall statistics of BFD sessions consist of number of BFD 404 sessions, number of BFD sessions up etc. This information is 405 available globally (i.e. for all BFD sessions) under the "bfd" node 406 in Section 2 and also per type of forwarding path. 408 For each BFD session, mainly three categories of operational state 409 data are shown. The fundamental information of a BFD session such as 410 the local discriminator, remote discriminator and the capability of 411 supporting demand detect mode are shown in the first category. The 412 second category includes a BFD session running information, e.g. the 413 remote BFD state and the diagnostic code received. Another example 414 is the actual transmit interval between the control packets, which 415 may be different from the desired minimum transmit interval 416 configured, is shown in this category. Similar examples are actual 417 received interval between the control packets and the actual transmit 418 interval between the echo packets. The third category contains the 419 detailed statistics of the session, e.g. when the session 420 transitioned up/down and how long it has been in that state. 422 For some path types, there may be more than 1 session on the virtual 423 path to the destination. For example, with IP multihop and MPLS 424 LSPs, there could be multiple BFD sessions from the source to the 425 same destination to test the various paths (ECMP) to the destination. 426 This is represented by having multiple "sessions" under each 427 "session-group". 429 2.3. Notifications 431 This YANG model defines notifications to inform end-users of 432 important events detected during the protocol operation. Pair of 433 local and remote discriminator identifies a BFD session on local 434 system. Notifications also give more important details about BFD 435 sessions; e.g. new state, time in previous state, network-instance 436 and the reason that the BFD session state changed. The notifications 437 are defined for each type of forwarding path but use groupings for 438 common information. 440 2.4. RPC Operations 442 None. 444 2.5. BFD top level hierarchy 446 At the "bfd" node under control-plane-protocol, there is no 447 configuration data, only operational state data. The operational 448 state data consist of overall BFD session statistics, i.e. for BFD on 449 all types of forwarding paths. The "bfd" node under control-plane- 450 protocol can be used in a network device (top-level), or mounted in 451 an LNE or in a network instance. 453 module: ietf-bfd 454 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 455 col: 456 +--rw bfd 457 +--ro summary 458 +--ro number-of-sessions? yang:gauge32 459 +--ro number-of-sessions-up? yang:gauge32 460 +--ro number-of-sessions-down? yang:gauge32 461 +--ro number-of-sessions-admin-down? yang:gauge32 463 2.6. BFD IP single-hop hierarchy 465 An "ip-sh" node is added under "bfd" node in control-plane-protocol. 466 The configuration and operational state data for each BFD IP single- 467 hop session is under this "ip-sh" node. The "ip-sh" node can be used 468 in a network device (top-level), or mounted in an LNE or in a network 469 instance. 471 module: ietf-bfd-ip-sh 472 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 473 col/bfd:bfd: 474 +--rw ip-sh 475 +--ro summary 476 | +--ro number-of-sessions? yang:gauge32 477 | +--ro number-of-sessions-up? yang:gauge32 478 | +--ro number-of-sessions-down? yang:gauge32 479 | +--ro number-of-sessions-admin-down? yang:gauge32 480 +--rw sessions* [interface dest-addr] 481 | +--rw interface if:interface-ref 482 | +--rw dest-addr inet:ip-address 483 | +--rw source-addr? inet:ip-address 484 | +--rw local-multiplier? multiplier 485 | +--rw (interval-config-type)? 486 | | +--:(tx-rx-intervals) 487 | | | +--rw desired-min-tx-interval? uint32 488 | | | +--rw required-min-rx-interval? uint32 489 | | +--:(single-interval) {single-minimum-interval}? 490 | | +--rw min-interval? uint32 491 | +--rw demand-enabled? boolean {demand-mode}? 492 | +--rw admin-down? boolean 493 | +--rw authentication! {authentication}? 494 | | +--rw key-chain? kc:key-chain-ref 495 | | +--rw meticulous? boolean 496 | +--ro path-type? identityref 497 | +--ro ip-encapsulation? boolean 498 | +--ro local-discriminator? discriminator 499 | +--ro remote-discriminator? discriminator 500 | +--ro remote-multiplier? multiplier 501 | +--ro demand-capability? boolean {demand-mode}? 502 | +--ro source-port? inet:port-number 503 | +--ro dest-port? inet:port-number 504 | +--ro session-running 505 | | +--ro session-index? uint32 506 | | +--ro local-state? state 507 | | +--ro remote-state? state 508 | | +--ro local-diagnostic? 509 | | | iana-bfd-types:diagnostic 510 | | +--ro remote-diagnostic? 511 | | | iana-bfd-types:diagnostic 512 | | +--ro remote-authenticated? boolean 513 | | +--ro remote-authentication-type? iana-bfd-types:auth-ty 514 pe 515 | | | {authentication}? 516 | | +--ro detection-mode? enumeration 517 | | +--ro negotiated-tx-interval? uint32 518 | | +--ro negotiated-rx-interval? uint32 519 | | +--ro detection-time? uint32 520 | | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? 521 | +--ro session-statistics 522 | +--ro create-time? yang:date-and-time 523 | +--ro last-down-time? yang:date-and-time 524 | +--ro last-up-time? yang:date-and-time 525 | +--ro down-count? yang:counter32 526 | +--ro admin-down-count? yang:counter32 527 | +--ro receive-packet-count? yang:counter64 528 | +--ro send-packet-count? yang:counter64 529 | +--ro receive-invalid-packet-count? yang:counter64 530 | +--ro send-failed-packet-count? yang:counter64 531 +--rw interfaces* [interface] 532 +--rw interface if:interface-ref 533 +--rw authentication! {authentication}? 534 +--rw key-chain? kc:key-chain-ref 535 +--rw meticulous? boolean 537 notifications: 538 +---n singlehop-notification 539 +--ro local-discr? discriminator 540 +--ro remote-discr? discriminator 541 +--ro new-state? state 542 +--ro state-change-reason? iana-bfd-types:diagnostic 543 +--ro time-of-last-state-change? yang:date-and-time 544 +--ro dest-addr? inet:ip-address 545 +--ro source-addr? inet:ip-address 546 +--ro session-index? uint32 547 +--ro path-type? identityref 548 +--ro interface? if:interface-ref 549 +--ro echo-enabled? boolean 551 2.7. BFD IP multihop hierarchy 553 An "ip-mh" node is added under the "bfd" node in cntrol-plane- 554 protocol. The configuration and operational state data for each BFD 555 IP multihop session is under this "ip-mh" node. In the operational 556 state model we support multiple BFD multihop sessions per remote 557 address (ECMP), the local discriminator is used as key. The "ip-mh" 558 node can be used in a network device (top-level), or mounted in an 559 LNE or in a network instance. 561 module: ietf-bfd-ip-mh 562 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 563 col/bfd:bfd: 564 +--rw ip-mh 565 +--ro summary 566 | +--ro number-of-sessions? yang:gauge32 567 | +--ro number-of-sessions-up? yang:gauge32 568 | +--ro number-of-sessions-down? yang:gauge32 569 | +--ro number-of-sessions-admin-down? yang:gauge32 570 +--rw session-group* [source-addr dest-addr] 571 +--rw source-addr inet:ip-address 572 +--rw dest-addr inet:ip-address 573 +--rw local-multiplier? multiplier 574 +--rw (interval-config-type)? 575 | +--:(tx-rx-intervals) 576 | | +--rw desired-min-tx-interval? uint32 577 | | +--rw required-min-rx-interval? uint32 578 | +--:(single-interval) {single-minimum-interval}? 579 | +--rw min-interval? uint32 580 +--rw demand-enabled? boolean {demand-mode}? 581 +--rw admin-down? boolean 582 +--rw authentication! {authentication}? 583 | +--rw key-chain? kc:key-chain-ref 584 | +--rw meticulous? boolean 585 +--rw tx-ttl? bfd-types:hops 586 +--rw rx-ttl bfd-types:hops 587 +--ro sessions* 588 +--ro path-type? identityref 589 +--ro ip-encapsulation? boolean 590 +--ro local-discriminator? discriminator 591 +--ro remote-discriminator? discriminator 592 +--ro remote-multiplier? multiplier 593 +--ro demand-capability? boolean {demand-mode}? 594 +--ro source-port? inet:port-number 595 +--ro dest-port? inet:port-number 596 +--ro session-running 597 | +--ro session-index? uint32 598 | +--ro local-state? state 599 | +--ro remote-state? state 600 | +--ro local-diagnostic? 601 | | iana-bfd-types:diagnostic 602 | +--ro remote-diagnostic? 603 | | iana-bfd-types:diagnostic 604 | +--ro remote-authenticated? boolean 605 | +--ro remote-authentication-type? 606 | | iana-bfd-types:auth-type {authentication}? 607 | +--ro detection-mode? enumeration 608 | +--ro negotiated-tx-interval? uint32 609 | +--ro negotiated-rx-interval? uint32 610 | +--ro detection-time? uint32 611 | +--ro echo-tx-interval-in-use? uint32 612 | {echo-mode}? 613 +--ro session-statistics 614 +--ro create-time? yang:date-and-tim 615 e 616 +--ro last-down-time? yang:date-and-tim 617 e 618 +--ro last-up-time? yang:date-and-tim 619 e 620 +--ro down-count? yang:counter32 621 +--ro admin-down-count? yang:counter32 622 +--ro receive-packet-count? yang:counter64 623 +--ro send-packet-count? yang:counter64 624 +--ro receive-invalid-packet-count? yang:counter64 625 +--ro send-failed-packet-count? yang:counter64 627 notifications: 628 +---n multihop-notification 629 +--ro local-discr? discriminator 630 +--ro remote-discr? discriminator 631 +--ro new-state? state 632 +--ro state-change-reason? iana-bfd-types:diagnostic 633 +--ro time-of-last-state-change? yang:date-and-time 634 +--ro dest-addr? inet:ip-address 635 +--ro source-addr? inet:ip-address 636 +--ro session-index? uint32 637 +--ro path-type? identityref 639 2.8. BFD over LAG hierarchy 641 A "lag" node is added under the "bfd" node in control-plane-protocol. 642 The configuration and operational state data for each BFD LAG session 643 is under this "lag" node. The "lag" node can be used in a network 644 device (top-level), or mounted in an LNE or in a network instance. 646 module: ietf-bfd-lag 647 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 648 col/bfd:bfd: 649 +--rw lag 650 +--rw micro-bfd-ipv4-session-statistics 651 | +--ro summary 652 | +--ro number-of-sessions? yang:gauge32 653 | +--ro number-of-sessions-up? yang:gauge32 654 | +--ro number-of-sessions-down? yang:gauge32 655 | +--ro number-of-sessions-admin-down? yang:gauge32 656 +--rw micro-bfd-ipv6-session-statistics 657 | +--ro summary 658 | +--ro number-of-sessions? yang:gauge32 659 | +--ro number-of-sessions-up? yang:gauge32 660 | +--ro number-of-sessions-down? yang:gauge32 661 | +--ro number-of-sessions-admin-down? yang:gauge32 662 +--rw sessions* [lag-name] 663 +--rw lag-name if:interface-ref 664 +--rw ipv4-dest-addr? inet:ipv4-address 665 +--rw ipv6-dest-addr? inet:ipv6-address 666 +--rw local-multiplier? multiplier 667 +--rw (interval-config-type)? 668 | +--:(tx-rx-intervals) 669 | | +--rw desired-min-tx-interval? uint32 670 | | +--rw required-min-rx-interval? uint32 671 | +--:(single-interval) {single-minimum-interval}? 672 | +--rw min-interval? uint32 673 +--rw demand-enabled? boolean {demand-mode}? 674 +--rw admin-down? boolean 675 +--rw authentication! {authentication}? 676 | +--rw key-chain? kc:key-chain-ref 677 | +--rw meticulous? boolean 678 +--rw use-ipv4? boolean 679 +--rw use-ipv6? boolean 680 +--ro member-links* [member-link] 681 +--ro member-link if:interface-ref 682 +--ro micro-bfd-ipv4 683 | +--ro path-type? identityref 684 | +--ro ip-encapsulation? boolean 685 | +--ro local-discriminator? discriminator 686 | +--ro remote-discriminator? discriminator 687 | +--ro remote-multiplier? multiplier 688 | +--ro demand-capability? boolean {demand-mode}? 689 | +--ro source-port? inet:port-number 690 | +--ro dest-port? inet:port-number 691 | +--ro session-running 692 | | +--ro session-index? uint32 693 | | +--ro local-state? state 694 | | +--ro remote-state? state 695 | | +--ro local-diagnostic? 696 | | | iana-bfd-types:diagnostic 697 | | +--ro remote-diagnostic? 698 | | | iana-bfd-types:diagnostic 699 | | +--ro remote-authenticated? boolean 700 | | +--ro remote-authentication-type? 701 | | | iana-bfd-types:auth-type {authentication}? 702 | | +--ro detection-mode? enumeration 703 | | +--ro negotiated-tx-interval? uint32 704 | | +--ro negotiated-rx-interval? uint32 705 | | +--ro detection-time? uint32 706 | | +--ro echo-tx-interval-in-use? uint32 707 | | {echo-mode}? 708 | +--ro session-statistics 709 | +--ro create-time? 710 | | yang:date-and-time 711 | +--ro last-down-time? 712 | | yang:date-and-time 713 | +--ro last-up-time? 714 | | yang:date-and-time 715 | +--ro down-count? yang:counter32 716 | +--ro admin-down-count? yang:counter32 717 | +--ro receive-packet-count? yang:counter64 718 | +--ro send-packet-count? yang:counter64 719 | +--ro receive-invalid-packet-count? yang:counter64 720 | +--ro send-failed-packet-count? yang:counter64 721 +--ro micro-bfd-ipv6 722 +--ro path-type? identityref 723 +--ro ip-encapsulation? boolean 724 +--ro local-discriminator? discriminator 725 +--ro remote-discriminator? discriminator 726 +--ro remote-multiplier? multiplier 727 +--ro demand-capability? boolean {demand-mode}? 728 +--ro source-port? inet:port-number 729 +--ro dest-port? inet:port-number 730 +--ro session-running 731 | +--ro session-index? uint32 732 | +--ro local-state? state 733 | +--ro remote-state? state 734 | +--ro local-diagnostic? 735 | | iana-bfd-types:diagnostic 736 | +--ro remote-diagnostic? 737 | | iana-bfd-types:diagnostic 738 | +--ro remote-authenticated? boolean 739 | +--ro remote-authentication-type? 740 | | iana-bfd-types:auth-type {authentication}? 741 | +--ro detection-mode? enumeration 742 | +--ro negotiated-tx-interval? uint32 743 | +--ro negotiated-rx-interval? uint32 744 | +--ro detection-time? uint32 745 | +--ro echo-tx-interval-in-use? uint32 746 | {echo-mode}? 747 +--ro session-statistics 748 +--ro create-time? 749 | yang:date-and-time 750 +--ro last-down-time? 751 | yang:date-and-time 752 +--ro last-up-time? 753 | yang:date-and-time 754 +--ro down-count? yang:counter32 755 +--ro admin-down-count? yang:counter32 756 +--ro receive-packet-count? yang:counter64 757 +--ro send-packet-count? yang:counter64 758 +--ro receive-invalid-packet-count? yang:counter64 759 +--ro send-failed-packet-count? yang:counter64 761 notifications: 762 +---n lag-notification 763 +--ro local-discr? discriminator 764 +--ro remote-discr? discriminator 765 +--ro new-state? state 766 +--ro state-change-reason? iana-bfd-types:diagnostic 767 +--ro time-of-last-state-change? yang:date-and-time 768 +--ro dest-addr? inet:ip-address 769 +--ro source-addr? inet:ip-address 770 +--ro session-index? uint32 771 +--ro path-type? identityref 772 +--ro lag-name? if:interface-ref 773 +--ro member-link? if:interface-ref 775 2.9. BFD over MPLS LSPs hierarchy 777 An "mpls" node is added under the "bfd" node in control-plane- 778 protocol. The configuration is per MPLS FEC under this "mpls" node. 779 In the operational state model we support multiple BFD sessions per 780 MPLS FEC (ECMP), the local discriminator is used as key. The "mpls" 781 node can be used in a network device (top-level), or mounted in an 782 LNE or in a network instance. 784 module: ietf-bfd-mpls 785 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 786 col/bfd:bfd: 787 +--rw mpls 788 +--ro summary 789 | +--ro number-of-sessions? yang:gauge32 790 | +--ro number-of-sessions-up? yang:gauge32 791 | +--ro number-of-sessions-down? yang:gauge32 792 | +--ro number-of-sessions-admin-down? yang:gauge32 793 +--rw egress 794 | +--rw enable? boolean 795 | +--rw local-multiplier? multiplier 796 | +--rw (interval-config-type)? 797 | | +--:(tx-rx-intervals) 798 | | | +--rw desired-min-tx-interval? uint32 799 | | | +--rw required-min-rx-interval? uint32 800 | | +--:(single-interval) {single-minimum-interval}? 801 | | +--rw min-interval? uint32 802 | +--rw authentication! {authentication}? 803 | +--rw key-chain? kc:key-chain-ref 804 | +--rw meticulous? boolean 805 +--rw session-group* [mpls-fec] 806 +--rw mpls-fec inet:ip-prefix 807 +--rw local-multiplier? multiplier 808 +--rw (interval-config-type)? 809 | +--:(tx-rx-intervals) 810 | | +--rw desired-min-tx-interval? uint32 811 | | +--rw required-min-rx-interval? uint32 812 | +--:(single-interval) {single-minimum-interval}? 813 | +--rw min-interval? uint32 814 +--rw demand-enabled? boolean {demand-mode}? 815 +--rw admin-down? boolean 816 +--rw authentication! {authentication}? 817 | +--rw key-chain? kc:key-chain-ref 818 | +--rw meticulous? boolean 819 +--ro sessions* 820 +--ro path-type? identityref 821 +--ro ip-encapsulation? boolean 822 +--ro local-discriminator? discriminator 823 +--ro remote-discriminator? discriminator 824 +--ro remote-multiplier? multiplier 825 +--ro demand-capability? boolean {demand-mode}? 826 +--ro source-port? inet:port-number 827 +--ro dest-port? inet:port-number 828 +--ro session-running 829 | +--ro session-index? uint32 830 | +--ro local-state? state 831 | +--ro remote-state? state 832 | +--ro local-diagnostic? 833 | | iana-bfd-types:diagnostic 834 | +--ro remote-diagnostic? 835 | | iana-bfd-types:diagnostic 836 | +--ro remote-authenticated? boolean 837 | +--ro remote-authentication-type? 838 | | iana-bfd-types:auth-type {authentication}? 839 | +--ro detection-mode? enumeration 840 | +--ro negotiated-tx-interval? uint32 841 | +--ro negotiated-rx-interval? uint32 842 | +--ro detection-time? uint32 843 | +--ro echo-tx-interval-in-use? uint32 844 | {echo-mode}? 845 +--ro session-statistics 846 | +--ro create-time? yang:date-and-tim 847 e 848 | +--ro last-down-time? yang:date-and-tim 849 e 850 | +--ro last-up-time? yang:date-and-tim 851 e 852 | +--ro down-count? yang:counter32 853 | +--ro admin-down-count? yang:counter32 854 | +--ro receive-packet-count? yang:counter64 855 | +--ro send-packet-count? yang:counter64 856 | +--ro receive-invalid-packet-count? yang:counter64 857 | +--ro send-failed-packet-count? yang:counter64 858 +--ro mpls-dest-address? inet:ip-address 860 notifications: 861 +---n mpls-notification 862 +--ro local-discr? discriminator 863 +--ro remote-discr? discriminator 864 +--ro new-state? state 865 +--ro state-change-reason? iana-bfd-types:diagnostic 866 +--ro time-of-last-state-change? yang:date-and-time 867 +--ro dest-addr? inet:ip-address 868 +--ro source-addr? inet:ip-address 869 +--ro session-index? uint32 870 +--ro path-type? identityref 871 +--ro mpls-dest-address? inet:ip-address 873 2.10. BFD over MPLS-TE hierarchy 875 YANG Data Model for TE Topologies [I-D.ietf-teas-yang-te] is 876 augmented. BFD is configured per MPLS-TE tunnel, and BFD session 877 operational state data is provided per MPLS-TE LSP. 879 module: ietf-bfd-mpls-te 880 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 881 col/bfd:bfd: 882 +--rw mpls-te 883 +--rw egress 884 | +--rw enable? boolean 885 | +--rw local-multiplier? multiplier 886 | +--rw (interval-config-type)? 887 | | +--:(tx-rx-intervals) 888 | | | +--rw desired-min-tx-interval? uint32 889 | | | +--rw required-min-rx-interval? uint32 890 | | +--:(single-interval) {single-minimum-interval}? 891 | | +--rw min-interval? uint32 892 | +--rw authentication! {authentication}? 893 | +--rw key-chain? kc:key-chain-ref 894 | +--rw meticulous? boolean 895 +--ro summary 896 +--ro number-of-sessions? yang:gauge32 897 +--ro number-of-sessions-up? yang:gauge32 898 +--ro number-of-sessions-down? yang:gauge32 899 +--ro number-of-sessions-admin-down? yang:gauge32 900 augment /te:te/te:tunnels/te:tunnel: 901 +--rw local-multiplier? multiplier 902 +--rw (interval-config-type)? 903 | +--:(tx-rx-intervals) 904 | | +--rw desired-min-tx-interval? uint32 905 | | +--rw required-min-rx-interval? uint32 906 | +--:(single-interval) {single-minimum-interval}? 907 | +--rw min-interval? uint32 908 +--rw demand-enabled? boolean {demand-mode}? 909 +--rw admin-down? boolean 910 +--rw authentication! {authentication}? 911 | +--rw key-chain? kc:key-chain-ref 912 | +--rw meticulous? boolean 913 +--rw encap? identityref 914 augment /te:te/te:lsps-state/te:lsp: 915 +--ro path-type? identityref 916 +--ro ip-encapsulation? boolean 917 +--ro local-discriminator? discriminator 918 +--ro remote-discriminator? discriminator 919 +--ro remote-multiplier? multiplier 920 +--ro demand-capability? boolean {demand-mode}? 921 +--ro source-port? inet:port-number 922 +--ro dest-port? inet:port-number 923 +--ro session-running 924 | +--ro session-index? uint32 925 | +--ro local-state? state 926 | +--ro remote-state? state 927 | +--ro local-diagnostic? iana-bfd-types:diagnostic 928 | +--ro remote-diagnostic? iana-bfd-types:diagnostic 929 | +--ro remote-authenticated? boolean 930 | +--ro remote-authentication-type? iana-bfd-types:auth-type 931 | | {authentication}? 932 | +--ro detection-mode? enumeration 933 | +--ro negotiated-tx-interval? uint32 934 | +--ro negotiated-rx-interval? uint32 935 | +--ro detection-time? uint32 936 | +--ro echo-tx-interval-in-use? uint32 {echo-mode}? 937 +--ro session-statistics 938 | +--ro create-time? yang:date-and-time 939 | +--ro last-down-time? yang:date-and-time 940 | +--ro last-up-time? yang:date-and-time 941 | +--ro down-count? yang:counter32 942 | +--ro admin-down-count? yang:counter32 943 | +--ro receive-packet-count? yang:counter64 944 | +--ro send-packet-count? yang:counter64 945 | +--ro receive-invalid-packet-count? yang:counter64 946 | +--ro send-failed-packet-count? yang:counter64 947 +--ro mpls-dest-address? inet:ip-address 949 notifications: 950 +---n mpls-te-notification 951 +--ro local-discr? discriminator 952 +--ro remote-discr? discriminator 953 +--ro new-state? state 954 +--ro state-change-reason? iana-bfd-types:diagnostic 955 +--ro time-of-last-state-change? yang:date-and-time 956 +--ro dest-addr? inet:ip-address 957 +--ro source-addr? inet:ip-address 958 +--ro session-index? uint32 959 +--ro path-type? identityref 960 +--ro mpls-dest-address? inet:ip-address 961 +--ro tunnel-name? string 963 2.11. Interaction with other YANG modules 965 Generic YANG Data Model for Connectionless OAM protocols 966 [I-D.ietf-lime-yang-connectionless-oam] describes how the LIME 967 connectionless OAM model could be extended to support BFD. 969 Also, the operation of the BFD data model depends on configuration 970 parameters that are defined in other YANG modules. 972 2.11.1. Module ietf-interfaces 974 The following boolean configuration is defined in A YANG Data Model 975 for Interface Management [I-D.ietf-netmod-rfc7223bis]: 977 /if:interfaces/if:interface/if:enabled 978 If this configuration is set to "false", no BFD packets can 979 be transmitted or received on that interface. 981 2.11.2. Module ietf-ip 983 The following boolean configuration is defined in A YANG Data Model 984 for IP Management [I-D.ietf-netmod-rfc7277bis]: 986 /if:interfaces/if:interface/ip:ipv4/ip:enabled 987 If this configuration is set to "false", no BFD IPv4 packets 988 can be transmitted or received on that interface. 990 /if:interfaces/if:interface/ip:ipv4/ip:forwarding 991 If this configuration is set to "false", no BFD IPv4 packets 992 can be transmitted or received on that interface. 994 /if:interfaces/if:interface/ip:ipv6/ip:enabled 995 If this configuration is set to "false", no BFD IPv6 packets 996 can be transmitted or received on that interface. 998 /if:interfaces/if:interface/ip:ipv6/ip:forwarding 999 If this configuration is set to "false", no BFD IPv6 packets 1000 can be transmitted or received on that interface. 1002 2.11.3. Module ietf-mpls 1004 The following boolean configuration is defined in A YANG Data Model 1005 for MPLS Base [I-D.ietf-mpls-base-yang]: 1007 /rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:enabled 1008 If this configuration is set to "false", no BFD MPLS packets 1009 can be transmitted or received on that interface. 1011 2.11.4. Module ietf-te 1013 The following configuration is defined in the "ietf-te" YANG module 1014 YANG Data Model for TE Topology [I-D.ietf-teas-yang-te]: 1016 /ietf-te:te/ietf-te:tunnels/ietf-te:tunnel/ietf-te:config/ietf- 1017 te:admin-status 1018 If this configuration is not set to "state-up", no BFD MPLS 1019 packets can be transmitted or received on that tunnel. 1021 2.12. IANA BFD YANG Module 1023 file "iana-bfd-types@2018-03-01.yang" 1025 module iana-bfd-types { 1027 yang-version 1.1; 1029 namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; 1031 prefix "iana-bfd-types"; 1033 organization "IANA"; 1035 contact 1036 " Internet Assigned Numbers Authority 1038 Postal: ICANN 1039 4676 Admiralty Way, Suite 330 1040 Marina del Rey, CA 90292 1042 Tel: +1 310 823 9358 1043 "; 1045 description 1046 "This module defines YANG data types for IANA-registered 1047 BFD parameters. 1049 This YANG module is maintained by IANA and reflects the 1050 'BFD Diagnostic Codes' and 'BFD Authentication Types' registries. 1052 Copyright (c) 2018 IETF Trust and the persons 1053 identified as authors of the code. All rights reserved. 1055 Redistribution and use in source and binary forms, with or 1056 without modification, is permitted pursuant to, and subject 1057 to the license terms contained in, the Simplified BSD License 1058 set forth in Section 4.c of the IETF Trust's Legal Provisions 1059 Relating to IETF Documents 1060 (http://trustee.ietf.org/license-info). 1062 This version of this YANG module is part of RFC XXXX; see 1063 the RFC itself for full legal notices."; 1065 // RFC Ed.: replace XXXX with actual RFC number and remove 1066 // this note 1068 reference "RFC XXXX"; 1070 revision 2018-03-01 { 1071 description "Initial revision."; 1072 reference "RFC XXXX: IANA BFD YANG Data Types."; 1073 } 1075 /* 1076 * Type Definitions 1077 */ 1078 typedef diagnostic { 1079 type enumeration { 1080 enum none { 1081 value 0; 1082 description "None"; 1083 } 1084 enum control-expiry { 1085 value 1; 1086 description "Control timer expiry"; 1087 } 1088 enum echo-failed { 1089 value 2; 1090 description "Echo failure"; 1091 } 1092 enum neighbor-down { 1093 value 3; 1094 description "Neighbor down"; 1095 } 1096 enum forwarding-reset { 1097 value 4; 1098 description "Forwarding reset"; 1099 } 1100 enum path-down { 1101 value 5; 1102 description "Path down"; 1103 } 1104 enum concatenated-path-down { 1105 value 6; 1106 description "Concatenated path down"; 1107 } 1108 enum admin-down { 1109 value 7; 1110 description "Admin down"; 1111 } 1112 enum reverse-concatenated-path-down { 1113 value 8; 1114 description "Reverse concatenated path down"; 1115 } 1116 enum mis-connectivity-defect { 1117 value 9; 1118 description "Mis-connectivity defect as specified in RFC6428"; 1119 } 1120 } 1121 description 1122 "BFD diagnostic as defined in RFC 5880, values are maintained in 1123 the 'BFD Diagnostic Codes' IANA registry. Range is 0 to 31."; 1124 } 1126 typedef auth-type { 1127 type enumeration { 1128 enum reserved { 1129 value 0; 1130 description "Reserved"; 1131 } 1132 enum simple-password { 1133 value 1; 1134 description "Simple password"; 1135 } 1136 enum keyed-md5 { 1137 value 2; 1138 description "Keyed MD5"; 1139 } 1140 enum meticulous-keyed-md5 { 1141 value 3; 1142 description "Meticulous keyed MD5"; 1143 } 1144 enum keyed-sha1 { 1145 value 4; 1146 description "Keyed SHA1"; 1147 } 1148 enum meticulous-keyed-sha1 { 1149 value 5; 1150 description "Meticulous keyed SHA1"; 1151 } 1152 } 1153 description 1154 "BFD authentication type as defined in RFC 5880, values are 1155 maintained in the 'BFD Authentication Types' IANA registry. 1156 Range is 0 to 255."; 1157 } 1158 } 1160 1162 2.13. BFD types YANG Module 1164 This YANG module imports typedefs from [RFC6991] and the "control- 1165 plane-protocol" identity from [I-D.ietf-netmod-rfc8022bis]. 1167 file "ietf-bfd-types@2018-03-01.yang" 1169 module ietf-bfd-types { 1171 yang-version 1.1; 1173 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; 1175 prefix "bfd-types"; 1177 import iana-bfd-types { 1178 prefix "iana-bfd-types"; 1179 } 1181 import ietf-inet-types { 1182 prefix "inet"; 1183 reference "RFC 6991: Common YANG Data Types"; 1184 } 1186 import ietf-yang-types { 1187 prefix "yang"; 1188 reference "RFC 6991: Common YANG Data Types"; 1189 } 1191 import ietf-routing { 1192 prefix "rt"; 1193 // RFC Ed.: replace XXXX with actual RFC number of 1194 // draft-ietf-netmod-rfc8022bis and remove this note. 1195 reference 1196 "RFC XXXX: A YANG Data Model for Routing Management"; 1197 } 1199 import ietf-key-chain { 1200 prefix "kc"; 1201 reference "RFC 8177: YANG Data Model for Key Chains"; 1202 } 1204 organization "IETF BFD Working Group"; 1206 contact 1207 "WG Web: 1208 WG List: 1210 Editors: Reshad Rahman (rrahman@cisco.com), 1211 Lianshu Zheng (vero.zheng@huawei.com), 1212 Mahesh Jethanandani (mjethanandani@gmail.com)"; 1214 description 1215 "This module contains a collection of BFD specific YANG data type 1216 definitions, as per RFC 5880, and also groupings which are common 1217 to other BFD YANG modules. 1219 Copyright (c) 2018 IETF Trust and the persons 1220 identified as authors of the code. All rights reserved. 1222 Redistribution and use in source and binary forms, with or 1223 without modification, is permitted pursuant to, and subject 1224 to the license terms contained in, the Simplified BSD License 1225 set forth in Section 4.c of the IETF Trust's Legal Provisions 1226 Relating to IETF Documents 1227 (http://trustee.ietf.org/license-info). 1229 This version of this YANG module is part of RFC XXXX; see 1230 the RFC itself for full legal notices."; 1232 // RFC Ed.: replace XXXX with actual RFC number and remove this 1233 // note 1235 reference "RFC XXXX"; 1237 revision 2018-03-01 { 1238 description "Initial revision."; 1239 reference "RFC XXXX: YANG Data Model for BFD"; 1240 } 1241 /* 1242 * Feature definitions 1243 */ 1244 feature single-minimum-interval { 1245 description 1246 "This feature indicates that the server supports configuration 1247 of one minimum interval value which is used for both transmit and 1248 receive minimum intervals."; 1249 } 1251 feature authentication { 1252 description 1253 "This feature indicates that the server supports BFD 1254 authentication as defined in RFC 5880."; 1255 } 1257 feature demand-mode { 1258 description 1259 "This feature indicates that the server supports BFD demand mode 1260 as defined in RFC 5880."; 1261 } 1263 feature echo-mode { 1264 description 1265 "This feature indicates that the server supports BFD echo mode 1266 as defined in RFC 5880."; 1267 } 1269 /* 1270 * Identity definitions 1271 */ 1272 identity bfdv1 { 1273 base "rt:control-plane-protocol"; 1274 description "BFD protocol version 1 as per RFC 5880."; 1275 } 1277 identity path-type { 1278 description 1279 "Base identity for BFD path type. The path type indicates 1280 the type of path on which BFD is running."; 1281 } 1282 identity path-ip-sh { 1283 base path-type; 1284 description "BFD on IP single hop as described in RFC 5881."; 1285 } 1286 identity path-ip-mh { 1287 base path-type; 1288 description "BFD on IP multihop paths as described in RFC 5883."; 1290 } 1291 identity path-mpls-te { 1292 base path-type; 1293 description 1294 "BFD on MPLS Traffic Engineering as described in RFC 5884."; 1295 } 1296 identity path-mpls-lsp { 1297 base path-type; 1298 description 1299 "BFD on MPLS Label Switched Path as described in RFC 5884."; 1300 } 1301 identity path-lag { 1302 base path-type; 1303 description 1304 "Micro-BFD on LAG member links as described in RFC 7130."; 1305 } 1307 identity encap-type { 1308 description 1309 "Base identity for BFD encapsulation type."; 1310 } 1311 identity encap-ip { 1312 base encap-type; 1313 description "BFD with IP encapsulation."; 1314 } 1316 /* 1317 * Type Definitions 1318 */ 1319 typedef discriminator { 1320 type uint32; 1321 description "BFD discriminator as described in RFC 5880."; 1322 } 1324 typedef state { 1325 type enumeration { 1326 enum adminDown { 1327 value 0; 1328 description "admindown"; 1329 } 1330 enum down { 1331 value 1; 1332 description "down"; 1333 } 1334 enum init { 1335 value 2; 1336 description "init"; 1337 } 1338 enum up { 1339 value 3; 1340 description "up"; 1341 } 1342 } 1343 description "BFD state as defined in RFC 5880."; 1344 } 1346 typedef multiplier { 1347 type uint8 { 1348 range 1..255; 1349 } 1350 description "BFD multiplier as described in RFC 5880."; 1351 } 1353 typedef hops { 1354 type uint8 { 1355 range 1..255; 1356 } 1357 description 1358 "This corresponds to Time To Live for IPv4 and corresponds to hop 1359 limit for IPv6."; 1360 } 1362 /* 1363 * Groupings 1364 */ 1365 grouping auth-parms { 1366 description 1367 "Grouping for BFD authentication parameters 1368 (see section 6.7 of RFC 5880)."; 1369 container authentication { 1370 if-feature authentication; 1371 presence 1372 "Enables BFD authentication (see section 6.7 of RFC 5880)."; 1373 description "Parameters for BFD authentication."; 1375 leaf key-chain { 1376 type kc:key-chain-ref; 1377 description "Name of the key-chain as per RFC 8177."; 1378 } 1380 leaf meticulous { 1381 type boolean; 1382 description 1383 "Enables meticulous mode as described in section 6.7 " + 1384 "of RFC 5880."; 1385 } 1387 } 1388 } 1390 grouping base-cfg-parms { 1391 description "BFD grouping for base config parameters."; 1392 leaf local-multiplier { 1393 type multiplier; 1394 default 3; 1395 description "Multiplier transmitted by local system."; 1396 } 1398 choice interval-config-type { 1399 description 1400 "Two interval values or one value used for both transmit and 1401 receive."; 1402 case tx-rx-intervals { 1403 leaf desired-min-tx-interval { 1404 type uint32; 1405 units microseconds; 1406 default 1000000; 1407 description 1408 "Desired minimum transmit interval of control packets."; 1409 } 1411 leaf required-min-rx-interval { 1412 type uint32; 1413 units microseconds; 1414 default 1000000; 1415 description 1416 "Required minimum receive interval of control packets."; 1417 } 1418 } 1419 case single-interval { 1420 if-feature single-minimum-interval; 1422 leaf min-interval { 1423 type uint32; 1424 units microseconds; 1425 default 1000000; 1426 description 1427 "Desired minimum transmit interval and required " + 1428 "minimum receive interval of control packets."; 1429 } 1430 } 1431 } 1432 } 1434 grouping client-cfg-parms { 1435 description 1436 "BFD grouping for configuration parameters 1437 used by clients of BFD, e.g. IGP or MPLS."; 1439 leaf enable { 1440 type boolean; 1441 default false; 1442 description 1443 "Indicates whether the BFD is enabled."; 1444 } 1445 uses base-cfg-parms; 1446 } 1448 grouping common-cfg-parms { 1449 description 1450 "BFD grouping for common configuration parameters."; 1452 uses base-cfg-parms; 1454 leaf demand-enabled { 1455 if-feature demand-mode; 1456 type boolean; 1457 default false; 1458 description 1459 "To enable demand mode."; 1460 } 1462 leaf admin-down { 1463 type boolean; 1464 default false; 1465 description 1466 "Is the BFD session administratively down."; 1467 } 1468 uses auth-parms; 1469 } 1471 grouping all-session { 1472 description "BFD session operational information"; 1473 leaf path-type { 1474 type identityref { 1475 base path-type; 1476 } 1477 config "false"; 1478 description 1479 "BFD path type, this indicates the path type that BFD is 1480 running on."; 1481 } 1482 leaf ip-encapsulation { 1483 type boolean; 1484 config "false"; 1485 description "Whether BFD encapsulation uses IP."; 1486 } 1487 leaf local-discriminator { 1488 type discriminator; 1489 config "false"; 1490 description "Local discriminator."; 1491 } 1492 leaf remote-discriminator { 1493 type discriminator; 1494 config "false"; 1495 description "Remote discriminator."; 1496 } 1497 leaf remote-multiplier { 1498 type multiplier; 1499 config "false"; 1500 description "Remote multiplier."; 1501 } 1502 leaf demand-capability { 1503 if-feature demand-mode; 1504 type boolean; 1505 config "false"; 1506 description "Local demand mode capability."; 1507 } 1508 leaf source-port { 1509 when "../ip-encapsulation = 'true'" { 1510 description 1511 "Source port valid only when IP encapsulation is used."; 1512 } 1513 type inet:port-number; 1514 config "false"; 1515 description "Source UDP port"; 1516 } 1517 leaf dest-port { 1518 when "../ip-encapsulation = 'true'" { 1519 description 1520 "Destination port valid only when IP encapsulation is used."; 1521 } 1522 type inet:port-number; 1523 config "false"; 1524 description "Destination UDP port."; 1525 } 1527 container session-running { 1528 config "false"; 1529 description "BFD session running information."; 1530 leaf session-index { 1531 type uint32; 1532 description 1533 "An index used to uniquely identify BFD sessions."; 1534 } 1535 leaf local-state { 1536 type state; 1537 description "Local state."; 1538 } 1539 leaf remote-state { 1540 type state; 1541 description "Remote state."; 1542 } 1543 leaf local-diagnostic { 1544 type iana-bfd-types:diagnostic; 1545 description "Local diagnostic."; 1546 } 1547 leaf remote-diagnostic { 1548 type iana-bfd-types:diagnostic; 1549 description "Remote diagnostic."; 1550 } 1551 leaf remote-authenticated { 1552 type boolean; 1553 description 1554 "Indicates whether incoming BFD control packets are 1555 authenticated."; 1556 } 1557 leaf remote-authentication-type { 1558 when "../remote-authenticated = 'true'" { 1559 description 1560 "Only valid when incoming BFD control packets are 1561 authenticated."; 1562 } 1563 if-feature authentication; 1564 type iana-bfd-types:auth-type; 1565 description 1566 "Authentication type of incoming BFD control packets."; 1567 } 1568 leaf detection-mode { 1569 type enumeration { 1570 enum async-with-echo { 1571 value "1"; 1572 description "Async with echo."; 1573 } 1574 enum async-without-echo { 1575 value "2"; 1576 description "Async without echo."; 1577 } 1578 enum demand-with-echo { 1579 value "3"; 1580 description "Demand with echo."; 1581 } 1582 enum demand-without-echo { 1583 value "4"; 1584 description "Demand without echo."; 1585 } 1586 } 1587 description "Detection mode."; 1588 } 1589 leaf negotiated-tx-interval { 1590 type uint32; 1591 units microseconds; 1592 description "Negotiated transmit interval."; 1593 } 1594 leaf negotiated-rx-interval { 1595 type uint32; 1596 units microseconds; 1597 description "Negotiated receive interval."; 1598 } 1599 leaf detection-time { 1600 type uint32; 1601 units microseconds; 1602 description "Detection time."; 1603 } 1604 leaf echo-tx-interval-in-use { 1605 when "../../path-type = 'bfd-types:path-ip-sh'" { 1606 description 1607 "Echo is supported for IP single-hop only."; 1608 } 1609 if-feature echo-mode; 1610 type uint32; 1611 units microseconds; 1612 description "Echo transmit interval in use."; 1613 } 1614 } 1616 container session-statistics { 1617 config "false"; 1618 description "BFD per-session statistics."; 1620 leaf create-time { 1621 type yang:date-and-time; 1622 description 1623 "Time and date when this session was created."; 1624 } 1625 leaf last-down-time { 1626 type yang:date-and-time; 1627 description 1628 "Time and date of last time this session went down."; 1629 } 1630 leaf last-up-time { 1631 type yang:date-and-time; 1632 description 1633 "Time and date of last time this session went up."; 1634 } 1635 leaf down-count { 1636 type yang:counter32; 1637 description 1638 "The number of times this session has transitioned in the 1639 down state."; 1640 } 1641 leaf admin-down-count { 1642 type yang:counter32; 1643 description 1644 "The number of times this session has transitioned in the 1645 admin-down state."; 1646 } 1647 leaf receive-packet-count { 1648 type yang:counter64; 1649 description 1650 "Count of received packets in this session. This includes 1651 valid and invalid received packets."; 1652 } 1653 leaf send-packet-count { 1654 type yang:counter64; 1655 description "Count of sent packets in this session."; 1656 } 1657 leaf receive-invalid-packet-count { 1658 type yang:counter64; 1659 description 1660 "Count of invalid received packets in this session."; 1661 } 1662 leaf send-failed-packet-count { 1663 type yang:counter64; 1664 description 1665 "Count of packets which failed to be sent in this session."; 1666 } 1667 } 1668 } 1670 grouping session-statistics-summary { 1671 description "Grouping for session statistics summary."; 1672 container summary { 1673 config false; 1674 description "BFD session statistics summary."; 1675 leaf number-of-sessions { 1676 type yang:gauge32; 1677 description "Number of BFD sessions."; 1678 } 1679 leaf number-of-sessions-up { 1680 type yang:gauge32; 1681 description "Number of BFD sessions currently in up state."; 1682 } 1683 leaf number-of-sessions-down { 1684 type yang:gauge32; 1685 description "Number of BFD sessions currently in down state."; 1686 } 1687 leaf number-of-sessions-admin-down { 1688 type yang:gauge32; 1689 description 1690 "Number of BFD sessions currently in admin-down state."; 1691 } 1692 } 1693 } 1695 grouping notification-parms { 1696 description 1697 "This group describes common parameters that will be sent " + 1698 "as part of BFD notification."; 1700 leaf local-discr { 1701 type discriminator; 1702 description "BFD local discriminator."; 1703 } 1705 leaf remote-discr { 1706 type discriminator; 1707 description "BFD remote discriminator."; 1708 } 1710 leaf new-state { 1711 type state; 1712 description "Current BFD state."; 1713 } 1715 leaf state-change-reason { 1716 type iana-bfd-types:diagnostic; 1717 description "BFD state change reason."; 1718 } 1720 leaf time-of-last-state-change { 1721 type yang:date-and-time; 1722 description 1723 "Calendar time of previous state change."; 1724 } 1726 leaf dest-addr { 1727 type inet:ip-address; 1728 description "BFD peer address."; 1729 } 1731 leaf source-addr { 1732 type inet:ip-address; 1733 description "BFD local address."; 1734 } 1736 leaf session-index { 1737 type uint32; 1738 description "An index used to uniquely identify BFD sessions."; 1739 } 1741 leaf path-type { 1742 type identityref { 1743 base path-type; 1744 } 1745 description "BFD path type."; 1746 } 1747 } 1748 } 1750 1752 2.14. BFD top-level YANG Module 1754 This YANG module imports and augments "/routing/control-plane- 1755 protocols/control-plane-protocol" from [I-D.ietf-netmod-rfc8022bis]. 1757 file "ietf-bfd@2018-03-01.yang" 1759 module ietf-bfd { 1761 yang-version 1.1; 1763 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 1765 prefix "bfd"; 1767 import ietf-bfd-types { 1768 prefix "bfd-types"; 1769 // RFC Ed.: replace XXXX with actual RFC number and remove this 1770 // note 1771 reference "RFC XXXX: YANG Data Model for BFD"; 1772 } 1774 import ietf-routing { 1775 prefix "rt"; 1776 // RFC Ed.: replace XXXX with actual RFC number of 1777 // draft-ietf-netmod-rfc8022bis and remove this note. 1778 reference 1779 "RFC XXXX: A YANG Data Model for Routing Management"; 1780 } 1782 organization "IETF BFD Working Group"; 1784 contact 1785 "WG Web: 1786 WG List: 1788 Editors: Reshad Rahman (rrahman@cisco.com), 1789 Lianshu Zheng (vero.zheng@huawei.com), 1790 Mahesh Jethanandani (mjethanandani@gmail.com)"; 1792 description 1793 "This module contains the YANG definition for BFD parameters as 1794 per RFC 5880. 1796 Copyright (c) 2018 IETF Trust and the persons 1797 identified as authors of the code. All rights reserved. 1799 Redistribution and use in source and binary forms, with or 1800 without modification, is permitted pursuant to, and subject 1801 to the license terms contained in, the Simplified BSD License 1802 set forth in Section 4.c of the IETF Trust's Legal Provisions 1803 Relating to IETF Documents 1804 (http://trustee.ietf.org/license-info). 1806 This version of this YANG module is part of RFC XXXX; see 1807 the RFC itself for full legal notices."; 1809 // RFC Ed.: replace XXXX with actual RFC number and remove this 1810 // note 1812 reference "RFC XXXX"; 1814 revision 2018-03-01 { 1815 description "Initial revision."; 1816 reference "RFC XXXX: YANG Data Model for BFD"; 1817 } 1818 augment "/rt:routing/rt:control-plane-protocols/" 1819 + "rt:control-plane-protocol" { 1820 when "derived-from-or-self(rt:type, 'bfd-types:bfdv1')" { 1821 description 1822 "This augmentation is only valid for a control-plane protocol 1823 instance of BFD (type 'bfdv1')."; 1824 } 1825 description "BFD augmentation."; 1827 container bfd { 1828 description "BFD top level container."; 1830 uses bfd-types:session-statistics-summary; 1831 } 1832 } 1833 } 1835 1837 2.15. BFD IP single-hop YANG Module 1839 This YANG module imports "interface-ref" from 1840 [I-D.ietf-netmod-rfc7223bis]. 1842 file "ietf-bfd-ip-sh@2018-03-01.yang" 1844 module ietf-bfd-ip-sh { 1846 yang-version 1.1; 1848 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1850 prefix "bfd-ip-sh"; 1852 import ietf-bfd-types { 1853 prefix "bfd-types"; 1854 } 1856 import ietf-bfd { 1857 prefix "bfd"; 1858 } 1860 import ietf-interfaces { 1861 prefix "if"; 1862 // RFC Ed.: replace XXXX with actual RFC number of 1863 // draft-ietf-netmod-rfc7223bis and remove this note. 1864 reference 1865 "RFC XXXX: A YANG Data Model for Interface Management"; 1867 } 1869 import ietf-inet-types { 1870 prefix "inet"; 1871 reference "RFC 6991: Common YANG Data Types"; 1872 } 1874 import ietf-routing { 1875 prefix "rt"; 1876 // RFC Ed.: replace XXXX with actual RFC number of 1877 // draft-ietf-netmod-rfc8022bis and remove this note. 1878 reference 1879 "RFC XXXX: A YANG Data Model for Routing Management"; 1880 } 1882 organization "IETF BFD Working Group"; 1884 contact 1885 "WG Web: 1886 WG List: 1888 Editors: Reshad Rahman (rrahman@cisco.com), 1889 Lianshu Zheng (vero.zheng@huawei.com), 1890 Mahesh Jethanandani (mjethanandani@gmail.com)"; 1892 description 1893 "This module contains the YANG definition for BFD IP single-hop 1894 as per RFC 5881. 1896 Copyright (c) 2018 IETF Trust and the persons 1897 identified as authors of the code. All rights reserved. 1899 Redistribution and use in source and binary forms, with or 1900 without modification, is permitted pursuant to, and subject 1901 to the license terms contained in, the Simplified BSD License 1902 set forth in Section 4.c of the IETF Trust's Legal Provisions 1903 Relating to IETF Documents 1904 (http://trustee.ietf.org/license-info). 1906 This version of this YANG module is part of RFC XXXX; see 1907 the RFC itself for full legal notices."; 1909 // RFC Ed.: replace XXXX with actual RFC number and remove this 1910 // note 1912 reference "RFC XXXX"; 1914 revision 2018-03-01 { 1915 description "Initial revision."; 1916 reference "RFC XXXX: A YANG data model for BFD IP single-hop"; 1917 } 1919 /* 1920 * Augments 1921 */ 1922 augment "/rt:routing/rt:control-plane-protocols/" 1923 + "rt:control-plane-protocol/bfd:bfd" { 1924 description "BFD augmentation for IP single-hop"; 1925 container ip-sh { 1926 description "BFD IP single-hop top level container"; 1928 uses bfd-types:session-statistics-summary; 1930 list sessions { 1931 key "interface dest-addr"; 1932 description "List of IP single-hop sessions"; 1933 leaf interface { 1934 type if:interface-ref; 1935 description 1936 "Interface on which the BFD session is running."; 1937 } 1938 leaf dest-addr { 1939 type inet:ip-address; 1940 description "IP address of the peer."; 1941 } 1942 leaf source-addr { 1943 type inet:ip-address; 1944 description "Local IP address."; 1945 } 1947 uses bfd-types:common-cfg-parms; 1949 uses bfd-types:all-session; 1950 } 1951 list interfaces { 1952 key "interface"; 1953 description "List of interfaces."; 1954 leaf interface { 1955 type if:interface-ref; 1956 description 1957 "BFD information for this interface."; 1958 } 1960 uses bfd-types:auth-parms; 1961 } 1962 } 1964 } 1966 /* 1967 * Notifications 1968 */ 1969 notification singlehop-notification { 1970 description 1971 "Notification for BFD single-hop session state change. An " + 1972 "implementation may rate-limit notifications, e.g. when a" + 1973 "session is continuously changing state."; 1975 uses bfd-types:notification-parms; 1977 leaf interface { 1978 type if:interface-ref; 1979 description "Interface to which this BFD session belongs to."; 1980 } 1982 leaf echo-enabled { 1983 type boolean; 1984 description "Was echo enabled for BFD."; 1985 } 1986 } 1988 } 1990 1992 2.16. BFD IP multihop YANG Module 1994 This YANG module imports typedefs from [RFC6991]. 1996 file "ietf-bfd-ip-mh@2018-03-01.yang" 1998 module ietf-bfd-ip-mh { 2000 yang-version 1.1; 2002 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 2004 prefix "bfd-ip-mh"; 2006 import ietf-bfd-types { 2007 prefix "bfd-types"; 2008 } 2010 import ietf-bfd { 2011 prefix "bfd"; 2013 } 2015 import ietf-inet-types { 2016 prefix "inet"; 2017 reference "RFC 6991: Common YANG Data Types"; 2018 } 2020 import ietf-routing { 2021 prefix "rt"; 2022 // RFC Ed.: replace XXXX with actual RFC number of 2023 // draft-ietf-netmod-rfc8022bis and remove this note. 2024 reference 2025 "RFC XXXX: A YANG Data Model for Routing Management"; 2026 } 2028 organization "IETF BFD Working Group"; 2030 contact 2031 "WG Web: 2032 WG List: 2034 Editors: Reshad Rahman (rrahman@cisco.com), 2035 Lianshu Zheng (vero.zheng@huawei.com), 2036 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2038 description 2039 "This module contains the YANG definition for BFD IP multi-hop 2040 as per RFC 5883. 2042 Copyright (c) 2018 IETF Trust and the persons 2043 identified as authors of the code. All rights reserved. 2045 Redistribution and use in source and binary forms, with or 2046 without modification, is permitted pursuant to, and subject 2047 to the license terms contained in, the Simplified BSD License 2048 set forth in Section 4.c of the IETF Trust's Legal Provisions 2049 Relating to IETF Documents 2050 (http://trustee.ietf.org/license-info). 2052 This version of this YANG module is part of RFC XXXX; see 2053 the RFC itself for full legal notices."; 2055 // RFC Ed.: replace XXXX with actual RFC number and remove this 2056 // note 2058 reference "RFC XXXX"; 2060 revision 2018-03-01 { 2061 description "Initial revision."; 2062 reference "RFC XXXX: A YANG data model for BFD IP multihop."; 2063 } 2065 /* 2066 * Augments 2067 */ 2068 augment "/rt:routing/rt:control-plane-protocols/" 2069 + "rt:control-plane-protocol/bfd:bfd" { 2070 description "BFD augmentation for IP multihop."; 2071 container ip-mh { 2072 description "BFD IP multihop top level container."; 2074 uses bfd-types:session-statistics-summary; 2076 list session-group { 2077 key "source-addr dest-addr"; 2078 description 2079 "Group of BFD IP multi-hop sessions (for ECMP). A " + 2080 "group of sessions is between 1 source and 1 " + 2081 "destination, each session has a different field " + 2082 "in UDP/IP hdr for ECMP."; 2084 leaf source-addr { 2085 type inet:ip-address; 2086 description 2087 "Local IP address."; 2088 } 2089 leaf dest-addr { 2090 type inet:ip-address; 2091 description 2092 "IP address of the peer."; 2093 } 2094 uses bfd-types:common-cfg-parms; 2096 leaf tx-ttl { 2097 type bfd-types:hops; 2098 default 255; 2099 description "Hop count of outgoing BFD control packets."; 2100 } 2101 leaf rx-ttl { 2102 type bfd-types:hops; 2103 mandatory true; 2104 description 2105 "Minimum allowed hop count value for incoming BFD control 2106 packets. Control packets whose hop count is lower than this 2107 value are dropped."; 2108 } 2109 list sessions { 2110 config false; 2111 description 2112 "The multiple BFD sessions between a source and a " + 2113 "destination."; 2114 uses bfd-types:all-session; 2115 } 2116 } 2117 } 2118 } 2120 /* 2121 * Notifications 2122 */ 2123 notification multihop-notification { 2124 description 2125 "Notification for BFD multi-hop session state change. An " + 2126 "implementation may rate-limit notifications, e.g. when a" + 2127 "session is continuously changing state."; 2129 uses bfd-types:notification-parms; 2130 } 2131 } 2133 2135 2.17. BFD over LAG YANG Module 2137 This YANG module imports "interface-ref" from 2138 [I-D.ietf-netmod-rfc7223bis]. 2140 file "ietf-bfd-lag@2018-03-01.yang" 2142 module ietf-bfd-lag { 2144 yang-version 1.1; 2146 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 2148 prefix "bfd-lag"; 2150 import ietf-bfd-types { 2151 prefix "bfd-types"; 2152 } 2154 import ietf-bfd { 2155 prefix "bfd"; 2156 } 2157 import ietf-interfaces { 2158 prefix "if"; 2159 // RFC Ed.: replace XXXX with actual RFC number of 2160 // draft-ietf-netmod-rfc7223bis and remove this note. 2161 reference 2162 "RFC XXXX: A YANG Data Model for Interface Management"; 2163 } 2165 import ietf-inet-types { 2166 prefix "inet"; 2167 reference "RFC 6991: Common YANG Data Types"; 2168 } 2170 import ietf-routing { 2171 prefix "rt"; 2172 // RFC Ed.: replace XXXX with actual RFC number of 2173 // draft-ietf-netmod-rfc8022bis and remove this note. 2174 reference 2175 "RFC XXXX: A YANG Data Model for Routing Management"; 2176 } 2178 organization "IETF BFD Working Group"; 2180 contact 2181 "WG Web: 2182 WG List: 2184 Editors: Reshad Rahman (rrahman@cisco.com), 2185 Lianshu Zheng vero.zheng@huawei.com), 2186 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2188 description 2189 "This module contains the YANG definition for BFD over LAG 2190 interfaces as per RFC7130. 2192 Copyright (c) 2018 IETF Trust and the persons 2193 identified as authors of the code. All rights reserved. 2195 Redistribution and use in source and binary forms, with or 2196 without modification, is permitted pursuant to, and subject 2197 to the license terms contained in, the Simplified BSD License 2198 set forth in Section 4.c of the IETF Trust's Legal Provisions 2199 Relating to IETF Documents 2200 (http://trustee.ietf.org/license-info). 2202 This version of this YANG module is part of RFC XXXX; see 2203 the RFC itself for full legal notices."; 2205 // RFC Ed.: replace XXXX with actual RFC number and remove this 2206 // note 2208 reference "RFC XXXX"; 2210 revision 2018-03-01 { 2211 description "Initial revision."; 2212 reference "RFC XXXX: A YANG data model for BFD over LAG"; 2213 } 2215 /* 2216 * Augments 2217 */ 2218 augment "/rt:routing/rt:control-plane-protocols/" 2219 + "rt:control-plane-protocol/bfd:bfd" { 2220 description "BFD augmentation for LAG"; 2221 container lag { 2222 description "BFD over LAG top level container"; 2224 container micro-bfd-ipv4-session-statistics { 2225 description "Micro-BFD IPv4 session counters."; 2226 uses bfd-types:session-statistics-summary; 2227 } 2228 container micro-bfd-ipv6-session-statistics { 2229 description "Micro-BFD IPv6 session counters."; 2230 uses bfd-types:session-statistics-summary; 2231 } 2233 list sessions { 2234 key "lag-name"; 2235 description "A LAG interface on which BFD is running."; 2236 leaf lag-name { 2237 type if:interface-ref ; 2238 description "Name of the LAG"; 2239 } 2240 leaf ipv4-dest-addr { 2241 type inet:ipv4-address; 2242 description 2243 "IPv4 address of the peer, for IPv4 micro-BFD."; 2244 } 2245 leaf ipv6-dest-addr { 2246 type inet:ipv6-address; 2247 description 2248 "IPv6 address of the peer, for IPv6 micro-BFD."; 2249 } 2250 uses bfd-types:common-cfg-parms; 2252 leaf use-ipv4 { 2253 type boolean; 2254 description "Using IPv4 micro-BFD."; 2255 } 2256 leaf use-ipv6 { 2257 type boolean; 2258 description "Using IPv6 micro-BFD."; 2259 } 2261 list member-links { 2262 key "member-link"; 2263 config false; 2264 description 2265 "Micro-BFD over LAG. This represents one member link."; 2267 leaf member-link { 2268 type if:interface-ref; 2269 description 2270 "Member link on which micro-BFD is running."; 2271 } 2272 container micro-bfd-ipv4 { 2273 when "../../use-ipv4 = 'true'" { 2274 description "Needed only if IPv4 is used."; 2275 } 2276 description 2277 "Micro-BFD IPv4 session state on member link."; 2278 uses bfd-types:all-session; 2279 } 2280 container micro-bfd-ipv6 { 2281 when "../../use-ipv6 = 'true'" { 2282 description "Needed only if IPv6 is used."; 2283 } 2284 description 2285 "Micro-BFD IPv6 session state on member link."; 2286 uses bfd-types:all-session; 2287 } 2288 } 2289 } 2290 } 2291 } 2293 /* 2294 * Notifications 2295 */ 2296 notification lag-notification { 2297 description 2298 "Notification for BFD over LAG session state change. " + 2299 "An implementation may rate-limit notifications, e.g. when a" + 2300 "session is continuously changing state."; 2302 uses bfd-types:notification-parms; 2304 leaf lag-name { 2305 type if:interface-ref; 2306 description "LAG interface name."; 2307 } 2309 leaf member-link { 2310 type if:interface-ref; 2311 description "Member link on which BFD is running."; 2312 } 2313 } 2314 } 2316 2318 2.18. BFD over MPLS YANG Module 2320 This YANG module imports typedefs from [RFC6991]. 2322 file "ietf-bfd-mpls@2018-03-01.yang" 2324 module ietf-bfd-mpls { 2326 yang-version 1.1; 2328 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 2330 prefix "bfd-mpls"; 2332 import ietf-bfd-types { 2333 prefix "bfd-types"; 2334 } 2336 import ietf-bfd { 2337 prefix "bfd"; 2338 } 2340 import ietf-inet-types { 2341 prefix "inet"; 2342 reference "RFC 6991: Common YANG Data Types"; 2343 } 2345 import ietf-routing { 2346 prefix "rt"; 2347 // RFC Ed.: replace XXXX with actual RFC number of 2348 // draft-ietf-netmod-rfc8022bis and remove this note. 2349 reference 2350 "RFC XXXX: A YANG Data Model for Routing Management"; 2351 } 2353 organization "IETF BFD Working Group"; 2355 contact 2356 "WG Web: 2357 WG List: 2359 Editors: Reshad Rahman (rrahman@cisco.com), 2360 Lianshu Zheng (vero.zheng@huawei.com), 2361 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2363 description 2364 "This module contains the YANG definition for BFD parameters for 2365 MPLS LSPs as per RFC 5884. 2367 Copyright (c) 2018 IETF Trust and the persons 2368 identified as authors of the code. All rights reserved. 2370 Redistribution and use in source and binary forms, with or 2371 without modification, is permitted pursuant to, and subject 2372 to the license terms contained in, the Simplified BSD License 2373 set forth in Section 4.c of the IETF Trust's Legal Provisions 2374 Relating to IETF Documents 2375 (http://trustee.ietf.org/license-info). 2377 This version of this YANG module is part of RFC XXXX; see 2378 the RFC itself for full legal notices."; 2380 // RFC Ed.: replace XXXX with actual RFC number and remove this 2381 // note 2383 reference "RFC XXXX"; 2385 revision 2018-03-01 { 2386 description "Initial revision."; 2387 reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; 2388 } 2390 /* 2391 * Identity definitions 2392 */ 2393 identity encap-gach { 2394 base bfd-types:encap-type; 2395 description 2396 "BFD with G-ACh encapsulation as per RFC 5586."; 2397 } 2398 identity encap-ip-gach { 2399 base bfd-types:encap-type; 2400 description 2401 "BFD with IP and G-ACh encapsulation as per RFC 5586."; 2402 } 2404 /* 2405 * Groupings 2406 */ 2407 grouping encap-cfg { 2408 description "Configuration for BFD encapsulation"; 2410 leaf encap { 2411 type identityref { 2412 base bfd-types:encap-type; 2413 } 2414 default bfd-types:encap-ip; 2415 description "BFD encapsulation"; 2416 } 2417 } 2419 grouping mpls-dest-address { 2420 description "Destination address as per RFC 5884."; 2422 leaf mpls-dest-address { 2423 type inet:ip-address; 2424 config "false"; 2425 description 2426 "Destination address as per RFC 5884. 2427 Needed if IP encapsulation is used."; 2428 } 2429 } 2431 /* 2432 * Augments 2433 */ 2434 augment "/rt:routing/rt:control-plane-protocols/" 2435 + "rt:control-plane-protocol/bfd:bfd" { 2436 description "BFD augmentation for MPLS."; 2437 container mpls { 2438 description "BFD MPLS top level container."; 2440 uses bfd-types:session-statistics-summary; 2442 container egress { 2443 description "Egress configuration."; 2445 uses bfd-types:client-cfg-parms; 2446 uses bfd-types:auth-parms; 2447 } 2449 list session-group { 2450 key "mpls-fec"; 2451 description 2452 "Group of BFD MPLS sessions (for ECMP). A group of " + 2453 "sessions is for 1 FEC, each session has a different " + 2454 "field in UDP/IP hdr for ECMP."; 2455 leaf mpls-fec { 2456 type inet:ip-prefix; 2457 description "MPLS FEC."; 2458 } 2460 uses bfd-types:common-cfg-parms; 2462 list sessions { 2463 config false; 2464 description 2465 "The BFD sessions for an MPLS FEC. Local " + 2466 "discriminator is unique for each session in the " + 2467 "group."; 2468 uses bfd-types:all-session; 2470 uses bfd-mpls:mpls-dest-address; 2471 } 2472 } 2473 } 2474 } 2476 /* 2477 * Notifications 2478 */ 2479 notification mpls-notification { 2480 description 2481 "Notification for BFD over MPLS FEC session state change. " + 2482 "An implementation may rate-limit notifications, e.g. when a" + 2483 "session is continuously changing state."; 2485 uses bfd-types:notification-parms; 2487 leaf mpls-dest-address { 2488 type inet:ip-address; 2489 description 2490 "Destination address as per RFC 5884. 2491 Needed if IP encapsulation is used."; 2492 } 2493 } 2495 } 2497 2499 2.19. BFD over MPLS-TE YANG Module 2501 This YANG module imports and augments "/te/tunnels/tunnel" from 2502 [I-D.ietf-teas-yang-te]. 2504 file "ietf-bfd-mpls-te@2018-03-01.yang" 2506 module ietf-bfd-mpls-te { 2508 yang-version 1.1; 2510 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; 2512 prefix "bfd-mpls-te"; 2514 import ietf-bfd-types { 2515 prefix "bfd-types"; 2516 } 2518 import ietf-bfd { 2519 prefix "bfd"; 2520 } 2522 import ietf-bfd-mpls { 2523 prefix "bfd-mpls"; 2524 } 2526 import ietf-te { 2527 prefix "te"; 2528 } 2530 import ietf-routing { 2531 prefix "rt"; 2532 // RFC Ed.: replace XXXX with actual RFC number of 2533 // draft-ietf-netmod-rfc8022bis and remove this note. 2534 reference 2535 "RFC XXXX: A YANG Data Model for Routing Management"; 2536 } 2538 organization "IETF BFD Working Group"; 2540 contact 2541 "WG Web: 2542 WG List: 2543 Editors: Reshad Rahman (rrahman@cisco.com), 2544 Lianshu Zheng (vero.zheng@huawei.com), 2545 Mahesh Jethanandani (mjethanandani@gmail.com)"; 2547 description 2548 "This module contains the YANG definition for BFD parameters for 2549 MPLS Traffic Engineering as per RFC 5884. 2551 Copyright (c) 2018 IETF Trust and the persons 2552 identified as authors of the code. All rights reserved. 2554 Redistribution and use in source and binary forms, with or 2555 without modification, is permitted pursuant to, and subject 2556 to the license terms contained in, the Simplified BSD License 2557 set forth in Section 4.c of the IETF Trust's Legal Provisions 2558 Relating to IETF Documents 2559 (http://trustee.ietf.org/license-info). 2561 This version of this YANG module is part of RFC XXXX; see 2562 the RFC itself for full legal notices."; 2564 // RFC Ed.: replace XXXX with actual RFC number and remove this 2565 // note 2567 reference "RFC XXXX"; 2569 revision 2018-03-01 { 2570 description "Initial revision."; 2571 reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; 2572 } 2574 /* 2575 * Augments 2576 */ 2577 augment "/rt:routing/rt:control-plane-protocols/" 2578 + "rt:control-plane-protocol/bfd:bfd" { 2579 description "BFD augmentation for MPLS-TE."; 2580 container mpls-te { 2581 description "BFD MPLS-TE top level container."; 2583 container egress { 2584 description "Egress configuration."; 2586 uses bfd-types:client-cfg-parms; 2588 uses bfd-types:auth-parms; 2589 } 2590 uses bfd-types:session-statistics-summary; 2591 } 2592 } 2594 augment "/te:te/te:tunnels/te:tunnel" { 2595 description "BFD configuration on MPLS-TE tunnel."; 2597 uses bfd-types:common-cfg-parms; 2599 uses bfd-mpls:encap-cfg; 2600 } 2602 augment "/te:te/te:lsps-state/te:lsp" { 2603 when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { 2604 description "BFD information not needed at transit points."; 2605 } 2606 description "BFD state information on MPLS-TE LSP."; 2608 uses bfd-types:all-session; 2610 uses bfd-mpls:mpls-dest-address; 2611 } 2613 /* 2614 * Notifications 2615 */ 2616 notification mpls-te-notification { 2617 description 2618 "Notification for BFD over MPLS-TE session state change. " + 2619 "An implementation may rate-limit notifications, e.g. when a" + 2620 "session is continuously changing state."; 2622 uses bfd-types:notification-parms; 2624 uses bfd-mpls:mpls-dest-address; 2626 leaf tunnel-name { 2627 type string; 2628 description "MPLS-TE tunnel on which BFD was running."; 2629 } 2630 } 2631 } 2633 2635 3. Data Model examples 2637 This section presents some simple and illustrative examples on how to 2638 configure BFD. 2640 3.1. IP single-hop 2642 The following is an example configuration for a BFD IP single-hop 2643 session. The desired transmit interval and the required receive 2644 interval are both set to 10ms. 2646 2647 2648 2649 2650 eth0 2651 ianaift:ethernetCsmacd 2652 2653 2654 2655 2656 2657 bfd-types:bfdv1 2658 name:BFD 2659 2660 2661 2662 eth0 2663 2001:db8:0:113::101 2664 10000 2665 10000 2666 2667 2668 2669 2670 2671 2672 2674 3.2. IP multihop 2676 The following is an example configuration for a BFD IP multihop 2677 session group. The desired transmit interval and the required 2678 receive interval are both set to 150ms. 2680 2681 2682 2683 2684 2685 bfd-types:bfdv1 2686 name:BFD 2687 2688 2689 2690 2001:db8:0:113::103 2691 2001:db8:0:114::100 2692 150000 2693 150000 2694 240 2695 2696 2697 2698 2699 2700 2701 2703 4. Security Considerations 2705 The YANG module specified in this document defines a schema for data 2706 that is designed to be accessed via network management protocols such 2707 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2708 is the secure transport layer, and the mandatory-to-implement secure 2709 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2710 is HTTPS, and the mandatory-to-implement secure transport is TLS 2711 [RFC5246]. 2713 The NETCONF access control model [RFC6536] provides the means to 2714 restrict access for particular NETCONF or RESTCONF users to a 2715 preconfigured subset of all available NETCONF or RESTCONF protocol 2716 operations and content. 2718 There are a number of data nodes defined in this YANG module that are 2719 writable/creatable/deletable (i.e., config true, which is the 2720 default). These data nodes may be considered sensitive or vulnerable 2721 in some network environments. Write operations (e.g., edit-config) 2722 to these data nodes without proper protection can have a negative 2723 effect on network operations. These are the subtrees and data nodes 2724 and their sensitivity/vulnerability: 2726 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2727 sessions: the list specifies the IP single-hop BFD sessions. 2729 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2730 sessions: data nodes local-multiplier, desired-min-tx-interval, 2731 required-min-rx-interval, min-interval and authentication all impact 2732 the BFD IP single-hop session. 2734 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2735 session-group: the list specifies the IP multi-hop BFD session 2736 groups. 2738 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2739 session-group: data nodes local-multiplier, desired-min-tx-interval, 2740 required-min-rx-interval, min-interval and authentication all impact 2741 the BFD IP multi-hop session. 2743 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2744 sessions: the list specifies the BFD sessions over LAG. 2746 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2747 sessions: data nodes local-multiplier, desired-min-tx-interval, 2748 required-min-rx-interval, min-interval and authentication all impact 2749 the BFD over LAG session. 2751 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2752 session-group: the list specifies the session groups for BFD over 2753 MPLS. 2755 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2756 session-group: data nodes local-multiplier, desired-min-tx-interval, 2757 required-min-rx-interval, min-interval and authentication all impact 2758 the BFD over MPLS LSPs session. 2760 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2761 egress: data nodes local-multiplier, desired-min-tx-interval, 2762 required-min-rx-interval, min-interval and authentication all impact 2763 the BFD over MPLS LSPs sessions for which this device is an MPLS LSP 2764 egress node. 2766 /te/tunnels/tunnel: data nodes local-multiplier, desired-min-tx- 2767 interval, required-min-rx-interval, min-interval and authentication 2768 all impact the BFD session over the MPLS-TE tunnel. 2770 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ 2771 egress: data nodes local-multiplier, desired-min-tx-interval, 2772 required-min-rx-interval, min-interval and authentication all impact 2773 the BFD over MPLS-TE sessions for which this device is an MPLS-TE 2774 egress node. 2776 The YANG module has writeable data nodes which can be used for 2777 creation of BFD sessions and modification of BFD session parameters. 2778 The system should "police" creation of BFD sessions to prevent new 2779 sessions from causing existing BFD sessions to fail. For BFD session 2780 modification, the BFD protocol has mechanisms in place which allow 2781 for in service modification. 2783 Some of the readable data nodes in this YANG module may be considered 2784 sensitive or vulnerable in some network environments. It is thus 2785 important to control read access (e.g., via get, get-config, or 2786 notification) to these data nodes. These are the subtrees and data 2787 nodes and their sensitivity/vulnerability: 2789 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-sh/ 2790 summary: access to this information discloses the number of BFD IP 2791 single-hop sessions which are up, down and admin-down. The counters 2792 include BFD sessions for which the user does not have read-access. 2794 /routing/control-plane-protocols/control-plane-protocol/bfd/ip-mh/ 2795 summary: access to this information discloses the number of BFD IP 2796 multi-hop sessions which are up, down and admin-down. The counters 2797 include BFD sessions for which the user does not have read-access. 2799 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2800 micro-bfd-ipv4-session-statistics/summary: access to this information 2801 discloses the number of micro BFD IPv4 LAG sessions which are up, 2802 down and admin-down. The counters include BFD sessions for which the 2803 user does not have read-access. 2805 /routing/control-plane-protocols/control-plane-protocol/bfd/lag/ 2806 micro-bfd-ipv6-session-statistics/summary: access to this information 2807 discloses the number of micro BFD IPv6 LAG sessions which are up, 2808 down and admin-down. The counters include BFD sessions for which the 2809 user does not have read-access. 2811 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls/ 2812 summary: access to this information discloses the number of BFD 2813 sessions over MPLS LSPs which are up, down and admin-down. The 2814 counters include BFD sessions for which the user does not have read- 2815 access. 2817 /routing/control-plane-protocols/control-plane-protocol/bfd/mpls-te/ 2818 summary: access to this information discloses the number of BFD 2819 sessions over MPLS-TE which are up, down and admin-down. The 2820 counters include BFD sessions for which the user does not have read- 2821 access. 2823 5. IANA Considerations 2825 The IANA is requested to as assign a new namespace URI from the IETF 2826 XML registry. 2828 This document registers the following namesace URIs in the IETF XML 2829 registry [RFC3688]: 2831 -------------------------------------------------------------------- 2833 URI: urn:ietf:params:xml:ns:yang:ietf-bfd 2835 Registrant Contact: The IESG. 2837 XML: N/A, the requested URI is an XML namespace. 2839 -------------------------------------------------------------------- 2841 -------------------------------------------------------------------- 2843 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2845 Registrant Contact: The IESG. 2847 XML: N/A, the requested URI is an XML namespace. 2849 -------------------------------------------------------------------- 2851 -------------------------------------------------------------------- 2853 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mh 2855 Registrant Contact: The IESG. 2857 XML: N/A, the requested URI is an XML namespace. 2859 -------------------------------------------------------------------- 2861 -------------------------------------------------------------------- 2863 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-lag 2865 Registrant Contact: The IESG. 2867 XML: N/A, the requested URI is an XML namespace. 2869 -------------------------------------------------------------------- 2870 -------------------------------------------------------------------- 2872 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls 2874 Registrant Contact: The IESG. 2876 XML: N/A, the requested URI is an XML namespace. 2878 -------------------------------------------------------------------- 2880 -------------------------------------------------------------------- 2882 URI: urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te 2884 Registrant Contact: The IESG. 2886 XML: N/A, the requested URI is an XML namespace. 2888 -------------------------------------------------------------------- 2890 5.1. IANA-Maintained iana-bfd-types module 2892 This document defines the initial version of the IANA-maintained 2893 iana-bfd-types YANG module. 2895 The iana-bfd-types YANG module is intended to reflect the "BFD 2896 Diagnostic Codes" registry and "BFD Authentication Types" registry at 2897 https://www.iana.org/assignments/bfd-parameters/bfd-parameters.xhtml 2899 6. Acknowledgements 2901 We would also like to thank Nobo Akiya and Jeff Haas for their 2902 encouragement on this work. We would also like to thank Rakesh 2903 Gandhi and Tarek Saad for their help on the MPLS-TE model. We would 2904 also like to thank Acee Lindem for his guidance. 2906 7. References 2908 7.1. Normative References 2910 [I-D.ietf-mpls-base-yang] 2911 Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A 2912 YANG Data Model for MPLS Base", draft-ietf-mpls-base- 2913 yang-06 (work in progress), February 2018. 2915 [I-D.ietf-netmod-rfc7223bis] 2916 Bjorklund, M., "A YANG Data Model for Interface 2917 Management", draft-ietf-netmod-rfc7223bis-03 (work in 2918 progress), January 2018. 2920 [I-D.ietf-netmod-rfc7277bis] 2921 Bjorklund, M., "A YANG Data Model for IP Management", 2922 draft-ietf-netmod-rfc7277bis-03 (work in progress), 2923 January 2018. 2925 [I-D.ietf-netmod-rfc8022bis] 2926 Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2927 Routing Management (NMDA Version)", draft-ietf-netmod- 2928 rfc8022bis-11 (work in progress), January 2018. 2930 [I-D.ietf-teas-yang-te] 2931 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 2932 I. Bryskin, "A YANG Data Model for Traffic Engineering 2933 Tunnels and Interfaces", draft-ietf-teas-yang-te-12 (work 2934 in progress), February 2018. 2936 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2937 Requirement Levels", BCP 14, RFC 2119, 2938 DOI 10.17487/RFC2119, March 1997, 2939 . 2941 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2942 DOI 10.17487/RFC3688, January 2004, 2943 . 2945 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2946 (TLS) Protocol Version 1.2", RFC 5246, 2947 DOI 10.17487/RFC5246, August 2008, 2948 . 2950 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 2951 "MPLS Generic Associated Channel", RFC 5586, 2952 DOI 10.17487/RFC5586, June 2009, 2953 . 2955 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2956 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 2957 . 2959 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2960 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 2961 DOI 10.17487/RFC5881, June 2010, 2962 . 2964 [RFC5882] Katz, D. and D. Ward, "Generic Application of 2965 Bidirectional Forwarding Detection (BFD)", RFC 5882, 2966 DOI 10.17487/RFC5882, June 2010, 2967 . 2969 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2970 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 2971 June 2010, . 2973 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 2974 "Bidirectional Forwarding Detection (BFD) for MPLS Label 2975 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 2976 June 2010, . 2978 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 2979 Forwarding Detection (BFD) for the Pseudowire Virtual 2980 Circuit Connectivity Verification (VCCV)", RFC 5885, 2981 DOI 10.17487/RFC5885, June 2010, 2982 . 2984 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2985 and A. Bierman, Ed., "Network Configuration Protocol 2986 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2987 . 2989 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2990 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2991 . 2993 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2994 Protocol (NETCONF) Access Control Model", RFC 6536, 2995 DOI 10.17487/RFC6536, March 2012, 2996 . 2998 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2999 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3000 . 3002 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 3003 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 3004 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 3005 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 3006 2014, . 3008 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 3009 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 3010 . 3012 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 3013 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 3014 May 2017, . 3016 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 3017 Zhang, "YANG Data Model for Key Chains", RFC 8177, 3018 DOI 10.17487/RFC8177, June 2017, 3019 . 3021 7.2. Informative References 3023 [I-D.ietf-lime-yang-connectionless-oam] 3024 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 3025 "Generic YANG Data Model for the Management of Operations, 3026 Administration, and Maintenance (OAM) Protocols that use 3027 Connectionless Communications", draft-ietf-lime-yang- 3028 connectionless-oam-18 (work in progress), November 2017. 3030 [I-D.ietf-netmod-revised-datastores] 3031 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 3032 and R. Wilton, "Network Management Datastore 3033 Architecture", draft-ietf-netmod-revised-datastores-10 3034 (work in progress), January 2018. 3036 [I-D.ietf-netmod-schema-mount] 3037 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 3038 ietf-netmod-schema-mount-08 (work in progress), October 3039 2017. 3041 [I-D.ietf-rtgwg-lne-model] 3042 Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3043 Liu, "YANG Model for Logical Network Elements", draft- 3044 ietf-rtgwg-lne-model-07 (work in progress), February 2018. 3046 [I-D.ietf-rtgwg-ni-model] 3047 Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3048 Liu, "YANG Model for Network Instances", draft-ietf-rtgwg- 3049 ni-model-10 (work in progress), February 2018. 3051 Appendix A. Echo function configuration example 3053 As mentioned in Section 2.1.2, the mechanism to start and stop the 3054 echo function, as defined in [RFC5880] and [RFC5881], is 3055 implementation specific. In this section we provide an example of 3056 how the echo function can be implemented via configuration. 3058 module: example-bfd-echo 3059 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-proto 3060 col/bfd:bfd/bfd-ip-sh:ip-sh/bfd-ip-sh:sessions: 3061 +--rw echo {bfd-types:echo-mode}? 3062 +--rw desired-min-echo-tx-interval? uint32 3063 +--rw required-min-echo-rx-interval? uint32 3065 A.1. Example YANG module for BFD echo function configuration 3067 module example-bfd-echo { 3068 namespace "tag:example.com,2018:example-bfd-echo"; 3070 prefix "example-bfd-echo"; 3072 import ietf-bfd-types { 3073 prefix "bfd-types"; 3074 } 3076 import ietf-bfd { 3077 prefix "bfd"; 3078 } 3080 import ietf-bfd-ip-sh { 3081 prefix "bfd-ip-sh"; 3082 } 3084 import ietf-routing { 3085 prefix "rt"; 3086 } 3088 organization "IETF BFD Working Group"; 3090 contact 3091 "WG Web: 3092 WG List: 3094 Editors: Reshad Rahman (rrahman@cisco.com), 3095 Lianshu Zheng (vero.zheng@huawei.com), 3096 Mahesh Jethanandani (mjethanandani@gmail.com)"; 3098 description 3099 "This module contains an example YANG augmentation for configuration 3100 of BFD echo function. 3102 Copyright (c) 2018 IETF Trust and the persons 3103 identified as authors of the code. All rights reserved. 3105 Redistribution and use in source and binary forms, with or 3106 without modification, is permitted pursuant to, and subject 3107 to the license terms contained in, the Simplified BSD License 3108 set forth in Section 4.c of the IETF Trust's Legal Provisions 3109 Relating to IETF Documents 3110 (http://trustee.ietf.org/license-info). 3112 This version of this YANG module is part of RFC XXXX; see 3113 the RFC itself for full legal notices."; 3115 revision 2018-03-01 { 3116 description "Initial revision."; 3117 reference 3118 "RFC XXXX: A YANG data model example augmentation for BFD echo 3119 function"; 3120 } 3122 // RFC Ed.: replace XXXX with actual RFC number and remove this 3123 // note 3125 /* 3126 * Groupings 3127 */ 3128 grouping echo-cfg-parms { 3129 description "BFD grouping for echo config parameters"; 3130 leaf desired-min-echo-tx-interval { 3131 type uint32; 3132 units microseconds; 3133 default 0; 3134 description 3135 "This is the minimum interval that the local system would like 3136 to use when transmitting BFD echo packets. If 0, the echo 3137 function as defined in BFD [RFC5880] is disabled."; 3138 } 3140 leaf required-min-echo-rx-interval { 3141 type uint32; 3142 units microseconds; 3143 default 0; 3144 description 3145 "This is the Required Min Echo RX Interval as defined in BFD 3146 [RFC5880]."; 3147 } 3148 } 3150 augment "/rt:routing/rt:control-plane-protocols/" 3151 + "rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh/" 3152 + "bfd-ip-sh:sessions" { 3154 description "Augmentation for BFD echo function."; 3156 container echo { 3157 if-feature bfd-types:echo-mode; 3159 description "BFD echo function container"; 3161 uses echo-cfg-parms; 3162 } 3163 } 3164 } 3166 Appendix B. Change log 3168 RFC Editor: Remove this section upon publication as an RFC. 3170 B.1. Changes between versions -09 and -10 3172 o Addressed comments from YANG DOctor review. 3174 o Addressed comments from WGLC. 3176 B.2. Changes between versions -08 and -09 3178 o Mostly cosmetic changes to abide by draft-ietf-netmod-rfc6087bis. 3180 o Specified yang-version 1.1. 3182 o Added data model examples. 3184 o Some minor changes. 3186 B.3. Changes between versions -07 and -08 3188 o Timer intervals in client-cfg-parms are not mandatory anymore. 3190 o Added list of interfaces under "ip-sh" node for authentication 3191 parameters. 3193 o Renamed replay-protection to meticulous. 3195 B.4. Changes between versions -06 and -07 3197 o New ietf-bfd-types module. 3199 o Grouping for BFD clients to have BFD multiplier and interval 3200 values. 3202 o Change in ietf-bfd-mpls-te since MPLS-TE model changed. 3204 o Removed bfd- prefix from many names. 3206 B.5. Changes between versions -05 and -06 3208 o Adhere to NMDA-guidelines. 3210 o Echo function config moved to appendix as example. 3212 o Added IANA YANG modules. 3214 o Addressed various comments. 3216 B.6. Changes between versions -04 and -05 3218 o "bfd" node in augment of control-plane-protocol. 3220 o Removed augment of network-instance. Replaced by schema-mount. 3222 o Added information on interaction with other YANG modules. 3224 B.7. Changes between versions -03 and -04 3226 o Updated author information. 3228 o Fixed YANG compile error in ietf-bfd-lag.yang which was due to 3229 incorrect when statement. 3231 B.8. Changes between versions -02 and -03 3233 o Fixed YANG compilation warning due to incorrect revision date in 3234 ietf-bfd-ip-sh module. 3236 B.9. Changes between versions -01 and -02 3238 o Replace routing-instance with network-instance from YANG Network 3239 Instances [I-D.ietf-rtgwg-ni-model] 3241 B.10. Changes between versions -00 and -01 3243 o Remove BFD configuration parameters from BFD clients, all BFD 3244 configuration parameters in BFD 3246 o YANG module split in multiple YANG modules (one per type of 3247 forwarding path) 3249 o For BFD over MPLS-TE we augment MPLS-TE model 3250 o For BFD authentication we now use YANG Data Model for Key Chains 3251 [RFC8177] 3253 Authors' Addresses 3255 Reshad Rahman (editor) 3256 Cisco Systems 3257 Canada 3259 Email: rrahman@cisco.com 3261 Lianshu Zheng (editor) 3262 Huawei Technologies 3263 China 3265 Email: vero.zheng@huawei.com 3267 Mahesh Jethanandani (editor) 3269 Email: mjethanandani@gmail.com 3271 Santosh Pallagatti 3272 India 3274 Email: santosh.pallagatti@gmail.com 3276 Greg Mirsky 3277 ZTE Corporation 3279 Email: gregimirsky@gmail.com