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