idnits 2.17.1 draft-ietf-bfd-yang-05.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 == Line 502 has weird spacing: '...nterval uin...' == Line 519 has weird spacing: '...ce-addr ine...' == Line 585 has weird spacing: '...nterval uin...' == Line 705 has weird spacing: '...nterval uin...' == Line 718 has weird spacing: '...nterval uin...' == (3 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 10, 2017) is 2598 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC6242' is mentioned on line 2264, but not defined == Missing Reference: 'RFC6536' is mentioned on line 2265, but not defined ** Obsolete undefined reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) ** Obsolete normative reference: RFC 7277 (Obsoleted by RFC 8344) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) == Outdated reference: A later version (-18) exists of draft-ietf-lime-yang-connectionless-oam-04 == Outdated reference: A later version (-17) exists of draft-ietf-mpls-base-yang-02 == Outdated reference: A later version (-12) exists of draft-ietf-netmod-schema-mount-04 == Outdated reference: A later version (-02) exists of draft-ietf-rtgwg-device-model-01 == Outdated reference: A later version (-10) exists of draft-ietf-rtgwg-lne-model-01 == Outdated reference: A later version (-12) exists of draft-ietf-rtgwg-ni-model-01 == Outdated reference: A later version (-24) exists of draft-ietf-rtgwg-yang-key-chain-15 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-05 Summary: 4 errors (**), 0 flaws (~~), 18 warnings (==), 1 comment (--). 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 11, 2017 Huawei Technologies 6 S. Pallagatti 8 M. Jethanandani 9 Cisco Systems 10 G. Mirsky 11 ZTE Corporation 12 March 10, 2017 14 Yang Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-yang-05.txt 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage Bidirectional Forwarding Detection (BFD). 22 Requirements Language 24 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 25 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 26 document are to be interpreted as described in RFC 2119 [RFC2119]. 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at http://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on September 11, 2017. 45 Copyright Notice 47 Copyright (c) 2017 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (http://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 63 1.1. Contributors . . . . . . . . . . . . . . . . . . . . . . 4 64 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 65 2.1. Design of Configuration Model . . . . . . . . . . . . . . 4 66 2.1.1. Common BFD configuration parameters . . . . . . . . . 5 67 2.1.2. Single-hop IP . . . . . . . . . . . . . . . . . . . . 6 68 2.1.3. Multi-hop IP . . . . . . . . . . . . . . . . . . . . 6 69 2.1.4. MPLS Traffic Engineering Tunnels . . . . . . . . . . 7 70 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 7 71 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 7 72 2.2. Design of Operational Model . . . . . . . . . . . . . . . 8 73 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 74 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 9 75 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 9 76 2.6. BFD IP single-hop hierarchy . . . . . . . . . . . . . . . 9 77 2.7. BFD IP multi-hop hierarchy . . . . . . . . . . . . . . . 11 78 2.8. BFD over LAG hierarchy . . . . . . . . . . . . . . . . . 13 79 2.9. BFD over MPLS LSPs hierarchy . . . . . . . . . . . . . . 15 80 2.10. BFD over MPLS-TE hierarchy . . . . . . . . . . . . . . . 17 81 2.11. Examples . . . . . . . . . . . . . . . . . . . . . . . . 19 82 2.12. Interaction with other YANG modules . . . . . . . . . . . 19 83 2.12.1. Module ietf-interfaces . . . . . . . . . . . . . . . 19 84 2.12.2. Module ietf-ip . . . . . . . . . . . . . . . . . . . 19 85 2.12.3. Module ietf-mpls . . . . . . . . . . . . . . . . . . 20 86 2.12.4. Module ietf-te . . . . . . . . . . . . . . . . . . . 20 87 2.13. BFD top-level Yang Module . . . . . . . . . . . . . . . . 20 88 2.14. BFD IP single-hop Yang Module . . . . . . . . . . . . . . 32 89 2.15. BFD IP multi-hop Yang Module . . . . . . . . . . . . . . 35 90 2.16. BFD over LAG Yang Module . . . . . . . . . . . . . . . . 38 91 2.17. BFD over MPLS Yang Module . . . . . . . . . . . . . . . . 42 92 2.18. BFD over MPLS-TE Yang Module . . . . . . . . . . . . . . 45 93 2.19. Security Considerations . . . . . . . . . . . . . . . . . 48 94 2.20. IANA Considerations . . . . . . . . . . . . . . . . . . . 48 95 2.21. Acknowledgements . . . . . . . . . . . . . . . . . . . . 48 96 3. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 97 3.1. Normative References . . . . . . . . . . . . . . . . . . 49 98 3.2. Informative References . . . . . . . . . . . . . . . . . 50 99 Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 51 100 A.1. Changes between versions -04 and -05 . . . . . . . . . . 51 101 A.2. Changes between versions -03 and -04 . . . . . . . . . . 52 102 A.3. Changes between versions -02 and -03 . . . . . . . . . . 52 103 A.4. Changes between versions -01 and -02 . . . . . . . . . . 52 104 A.5. Changes between versions -00 and -01 . . . . . . . . . . 52 105 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 107 1. Introduction 109 YANG [RFC6020] is a data definition language that was introduced to 110 define the contents of a conceptual data store that allows networked 111 devices to be managed using NETCONF [RFC6241]. YANG is proving 112 relevant beyond its initial confines, as bindings to other interfaces 113 (e.g RESTCONF [I-D.ietf-netconf-restconf]) and encodings other than 114 XML (e.g JSON) are being defined. Furthermore, YANG data models can 115 be used as the basis of implementation for other interfaces, such as 116 CLI and programmatic APIs. 118 This document defines a YANG data model that can be used to configure 119 and manage Bidirectional Forwarding Detection (BFD)[RFC5880]. BFD is 120 a network protocol which is used for liveness detection of arbitrary 121 paths between systems. Some examples of different types of paths 122 over which we have BFD: 124 1) Two systems directly connected via IP. This is known as BFD over 125 single-hop IP [RFC5881] 127 2) Two systems connected via multiple hops [RFC5883] 129 3) Two systems connected via MPLS Label Switched Paths (LSPs) 130 [RFC5884] 132 4) Two systems connected via pseudowires (PWs), this is known as 133 Virtual Circuit Connectivity Verification (VCCV) [RFC5885] 135 5) Two systems connected via a Link Aggregation Group (LAG) interface 136 [RFC7130] 138 BFD typically does not operate on its own. Various control 139 protocols, also known as BFD clients, use the services provided by 140 BFD for their own operation [RFC5882]. The obvious candidates which 141 use BFD are those which do not have Hellos to detect failures, e.g. 142 static routes, and routing protocols whose Hellos do not support sub- 143 second failure detection, e.g. OSPF and IS-IS. 145 1.1. Contributors 147 2. Design of the Data Model 149 Since BFD is used for liveliness detection of various forwarding 150 paths, there is no uniform key to identify a BFD session. So the BFD 151 data model is split in multiple YANG modules where each module 152 corresponds to one type of forwarding path. For example, BFD for IP 153 single-hop is in one YANG module and BFD for MPLS-TE is in another 154 YANG module. The main difference between these modules is how a BFD 155 session is uniquely identified, i.e the key for the list containing 156 the BFD sessions for that forwarding path. To avoid duplication of 157 BFD definitions, we have common types and groupings which are used by 158 all the modules. 160 A new control-plane protocol "bfdv1" is defined and a "bfd" container 161 is created under control-plane-protocol as specified in [RFC8022]. 162 This new "bfd" node is augmented by all the YANG modules for their 163 respective specific information. Each BFD YANG module which augments 164 the "bfd" node contains a "config" node and an "oper" node. 166 BFD can operate in the following contexts: 168 1. Network devices as described in [I-D.ietf-rtgwg-device-model] 170 2. Logical Network Elements as described in 171 [I-D.ietf-rtgwg-lne-model] 173 3. Network instances as described in [I-D.ietf-rtgwg-ni-model] 175 The approach taken is to do a schema-mount (see 176 [I-D.ietf-netmod-schema-mount]) of the BFD model in the appropriate 177 locations. For example, if an implementation supports BFD IP multi- 178 hop in network instances, the implementation would do schema-mount of 179 the BFD IP multi-hop model in a mount-point which resides in a 180 network instance. 182 2.1. Design of Configuration Model 184 The configuration model consists mainly of the parameters specified 185 in [RFC5880]. Some examples are desired minimum transmit interval, 186 required minimum receive interval, detection multiplier, etc 187 Some implementations have BFD session configuration under the BFD 188 clients. For example, BFD session configuration is under routing 189 applications such as OSPF, IS-IS, BGP etc. Other implementations 190 have BFD session configuration centralized under BFD, i.e. outside 191 the multiple BFD clients. 193 The BFD parameters of interest to a BFD client are mainly the 194 multiplier and interval(s) since those parameters impact the 195 convergence time of the BFD clients when a failure occurs. Other 196 parameters such as BFD authentication are not specific to the 197 requirements of the BFD client. To avoid splitting the BFD 198 configuration between BFD clients and BFD, all the configuration is 199 under BFD. The only BFD configuration under BFD clients should be an 200 "enable" knob which makes those clients react to BFD liveliness 201 detection events. 203 2.1.1. Common BFD configuration parameters 205 The basic BFD configuration parameters are: 207 local-multiplier 208 This is the detection time multiplier as defined in 209 [RFC5880]. 211 desired-min-tx-interval 212 This is the Desired Min TX Interval as defined in [RFC5880]. 214 required-min-rx-interval 215 This is the Required Min RX Interval as defined in [RFC5880]. 217 Although [RFC5880] allows for different values for transmit and 218 receive intervals, some implementations allow users to specify just 219 one interval which is used for both transmit and receive intervals or 220 separate values for transmit and receive intervals. The BFD YANG 221 model supports this: there is a choice between "min-interval", used 222 for both transmit and receive intervals, and "desired-min-tx- 223 interval" and "required-min-rx-interval". This is supported via a 224 grouping which is used by the YANG modules for the various forwarding 225 paths. There are also intervals for the echo function (if 226 supported): 228 desired-min-echo-tx-interval 229 This is the minimum interval that the local system would like 230 to use when transmitting BFD echo packets. If 0, the echo 231 function as defined in [RFC5880] is disabled. 233 required-min-echo-rx-interval 234 This is the Required Min Echo RX Interval as defined in 235 [RFC5880]. 237 For BFD authentication we have: 239 key-chain 240 This is a reference to key-chain defined in 241 [I-D.ietf-rtgwg-yang-key-chain]. The keys, cryptographic 242 algotihms, key lifetime etc are all defined in the key-chain 243 model. 245 replay-protection 246 This specifies meticulous v/s non-meticulous mode as per 247 [RFC5880]. 249 2.1.2. Single-hop IP 251 For single-hop IP, there is an augment of the "bfd" data node in 252 Section 2. We have a list of IP single-hop sessions where each 253 session is uniquely identified by the interface and destination 254 address pair. For the configuration parameters we use what is 255 defined in Section 2.1.1 257 2.1.3. Multi-hop IP 259 For multi-hop IP, there is an augment of the "bfd" data node in 260 Section 2. 262 We have a list for BFD sessions over multi-hop IP. The key consists 263 of: 265 source address 266 Address belonging to the local system as per [RFC5883] 268 destination address 269 Address belonging to the remote system as per [RFC5883] 271 For the configuration parameters we use what is defined in 272 Section 2.1.1 274 Here are some extra parameters: 276 tx-ttl 277 TTL of outgoing BFD control packets. 279 rx-ttl 280 Minimum TTL of incoming BFD control packets. 282 2.1.4. MPLS Traffic Engineering Tunnels 284 For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel since 285 the desired failure detection parameters is a property of the MPLS-TE 286 tunnel. This is achieved by augmenting the MPLS-TE data model in 287 [I-D.ietf-teas-yang-te]. For BFD parameters which are specific to 288 the TE application, e.g. whether to tear down the tunnel in the event 289 of a BFD session failure, these parameters will be defined in the 290 YANG model of the MPLS-TE application. 292 On top of the usual BFD parameters, we have the following per MPLS-TE 293 tunnel: 295 encap 296 Encapsulation for the BFD packets: choice between IP, G-ACh 297 and IP with G-ACh as per [RFC5586] 299 For general MPLS-TE data, "mpls-te" data node is added under the 300 "bfd" node in Section 2. Since some MPLS-TE tunnels are uni- 301 directional there is no MPLS-TE configuration for these tunnels on 302 the egress node (note that this does not apply to bi-directional 303 MPLS-TP tunnels). The BFD parameters for the egress node are added 304 under "mpls-te". 306 2.1.5. MPLS Label Switched Paths 308 Here we address MPLS LSPs whose FEC is an IP address. The "bfd" node 309 in Section 2 is augmented with "mpls" which contains a list of 310 sessions uniquely identified by an IP address. 312 Since these LSPs are uni-directional there is no LSP configuration on 313 the egress node. The BFD parameters for the egress node are added 314 under "mpls". 316 2.1.6. Link Aggregation Groups 318 Per [RFC7130], configuring BFD on LAG consists of having micro-BFD 319 sessions on each LAG member link. Since the BFD parameters are an 320 attribute of the LAG, they should be under the LAG. However there is 321 no LAG YANG model which we can augment. So a "lag" data node is 322 added to the "bfd" node in Section 2, the configuration is per-LAG: 323 we have a list of LAGs. The destination IP address of the micro-BFD 324 sessions is configured per-LAG and per address-family (IPv4 and IPv6) 326 2.2. Design of Operational Model 328 The operational model contains both the overall statistics of BFD 329 sessions running on the device and the per session operational 330 information. 332 The overall statistics of BFD sessions consist of number of BFD 333 sessions, number of BFD sessions up etc. This information is 334 available globally (i.e. for all BFD sessions) under the "bfd" node 335 in Section 2 and also per type of forwarding path. 337 For each BFD session, mainly three categories of operational items 338 are shown. The fundamental information of a BFD session such as the 339 local discriminator, remote discriminator and the capability of 340 supporting demand detect mode are shown in the first category. The 341 second category includes a BFD session running information, e.g. the 342 remote BFD state and the diagnostic code received. Another example 343 is the actual transmit interval between the control packets, which 344 may be different from the desired minimum transmit interval 345 configured, is shown in this category. Similar examples are actual 346 received interval between the control packets and the actual transmit 347 interval between the echo packets. The third category contains the 348 detailed statistics of the session, e.g. when the session 349 transitioned up/down and how long it has been in that state. 351 For some session types, there may be more than 1 session on the 352 virtual path to the destination. For example, with IP multi-hop 353 there could be multiple BFD sessions from the source to the same 354 destination to test the various paths (ECMP) to the destination. 355 Each of the BFD sessions on the same virtual path is uniquely 356 identified by the local discriminator. 358 2.3. Notifications 360 This YANG model defines notifications to inform clients of BFD of 361 important events detected during the protocol operation. Pair of 362 local and remote discriminator identifies a BFD session on local 363 system. Notifications also give more important details about BFD 364 sessions; e.g. new state, time in previous state, network-instance 365 and the reason that the BFD session state changed. The notifications 366 are defined for each type of forwarding path but use groupings for 367 common information. 369 2.4. RPC Operations 371 TBD 373 2.5. BFD top level hierarchy 375 At the "bfd" node under control-plane-protocol, there is no 376 configuration data, only operational data. The operational data 377 consist of overall BFD session statistics, i.e. for BFD on all types 378 of forwarding paths. The "bfd" node under control-plane-protocol can 379 be mounted in a network device (top-level), in an LNE or in a network 380 instance. 382 module: ietf-bfd 383 augment /rt:routing/rt:control-plane-protocols 384 /rt:control-plane-protocol: 385 +--rw bfd 386 +--rw config 387 +--ro oper 388 +--ro bfd-session-statistics 389 +--ro session-count? uint32 390 +--ro session-up-count? uint32 391 +--ro session-down-count? uint32 392 +--ro session-admin-down-count? uint32 394 2.6. BFD IP single-hop hierarchy 396 An "ip-sh" node is added under "bfd" node in control-plane-protocol. 397 The configuration and operational data for each BFD IP single-hop 398 session is under this "ip-sh" node. The "ip-sh" node can be mounted 399 in a network device (top-level), in an LNE or in a network instance. 401 module: ietf-bfd-ip-sh 402 augment /rt:routing/rt:control-plane-protocols 403 /rt:control-plane-protocol/bfd:bfd: 404 +--rw ip-sh 405 +--rw config 406 | +--rw session-cfg 407 | +--rw sessions* [interface dest-addr] 408 | +--rw interface if:interface-ref 409 | +--rw dest-addr inet:ip-address 410 | +--rw source-addr? inet:ip-address 411 | +--rw local-multiplier? bfd-multiplier 412 | +--rw (interval-config-type)? 413 | | +--:(tx-rx-intervals) 414 | | | +--rw desired-min-tx-interval uint32 415 | | | +--rw required-min-rx-interval uint32 416 | | +--:(single-interval) 417 | | +--rw min-interval uint32 418 | +--rw demand-enabled? boolean 419 | +--rw admin-down? boolean 420 | +--rw authentication-parms! {bfd-authentication}? 421 | | +--rw key-chain? kc:key-chain-ref 422 | | +--rw replay-protection? identityref 423 | +--rw desired-min-echo-tx-interval? uint32 424 | +--rw required-min-echo-rx-interval? uint32 425 +--ro oper 426 +--ro bfd-session-statistics 427 | +--ro session-count? uint32 428 | +--ro session-up-count? uint32 429 | +--ro session-down-count? uint32 430 | +--ro session-admin-down-count? uint32 431 +--ro sessions* [interface dest-addr] 432 +--ro interface if:interface-ref 433 +--ro dest-addr inet:ip-address 434 +--ro source-addr? inet:ip-address 435 +--ro path-type? identityref 436 +--ro local-discriminator? bfd-discriminator 437 +--ro remote-discriminator? bfd-discriminator 438 +--ro remote-multiplier? bfd-multiplier 439 +--ro out-interface? if:interface-ref 440 +--ro demand-capability? boolean 441 +--ro source-port? inet:port-number 442 +--ro dest-port? inet:port-number 443 +--ro session-running 444 | +--ro session-index? uint32 445 | +--ro local-state? bfd-state 446 | +--ro remote-state? bfd-state 447 | +--ro local-diagnostic? bfd-diagnostic 448 | +--ro remote-diagnostic? bfd-diagnostic 449 | +--ro detection-mode? enumeration 450 | +--ro negotiated-tx-interval? uint32 451 | +--ro negotiated-rx-interval? uint32 452 | +--ro echo-tx-interval-in-use? uint32 453 | +--ro detection-time? uint32 454 +--ro sesssion-statistics 455 +--ro create-time? yang:date-and-time 456 +--ro last-down-time? yang:date-and-time 457 +--ro last-up-time? yang:date-and-time 458 +--ro down-count? uint32 459 +--ro admin-down-count? uint32 460 +--ro receive-packet-count? uint64 461 +--ro send-packet-count? uint64 462 +--ro receive-bad-packet? uint64 463 +--ro send-failed-packet? uint64 464 notifications: 466 +---n bfd-singlehop-notification 467 +--ro local-discr? bfd-discriminator 468 +--ro remote-discr? bfd-discriminator 469 +--ro new-state? bfd-state 470 +--ro state-change-reason? string 471 +--ro time-in-previous-state? string 472 +--ro dest-addr? inet:ip-address 473 +--ro source-addr? inet:ip-address 474 +--ro session-index? uint32 475 +--ro path-type? identityref 476 +--ro interface? if:interface-ref 477 +--ro echo-enabled? boolean 479 2.7. BFD IP multi-hop hierarchy 481 An "ip-mh" node is added under the "bfd" node in cntrol-plane- 482 protocol. The configuration and operational data for each BFD IP 483 multi-hop session is under this "ip-mh" node. In the operational 484 model we support multiple BFD multi-hop sessions per remote address 485 (ECMP), the local discriminator is used as key. The "ip-mh" node can 486 be mounted in a network device (top-level), in an LNE or in a network 487 instance. 489 module: ietf-bfd-ip-mh 490 augment /rt:routing/rt:control-plane-protocols 491 /rt:control-plane-protocol/bfd:bfd: 492 +--rw ip-mh 493 +--rw config 494 | +--rw session-cfg 495 | +--rw sessions* [source-addr dest-addr] 496 | +--rw source-addr inet:ip-address 497 | +--rw dest-addr inet:ip-address 498 | +--rw local-multiplier? bfd-multiplier 499 | +--rw (interval-config-type)? 500 | | +--:(tx-rx-intervals) 501 | | | +--rw desired-min-tx-interval uint32 502 | | | +--rw required-min-rx-interval uint32 503 | | +--:(single-interval) 504 | | +--rw min-interval uint32 505 | +--rw demand-enabled? boolean 506 | +--rw admin-down? boolean 507 | +--rw authentication-parms! {bfd-authentication}? 508 | | +--rw key-chain? kc:key-chain-ref 509 | | +--rw replay-protection? identityref 510 | +--rw tx-ttl? bfd:ttl 511 | +--rw rx-ttl bfd:ttl 512 +--ro oper 513 +--ro bfd-session-statistics 514 | +--ro session-count? uint32 515 | +--ro session-up-count? uint32 516 | +--ro session-down-count? uint32 517 | +--ro session-admin-down-count? uint32 518 +--ro session-group* [source-addr dest-addr] 519 +--ro source-addr inet:ip-address 520 +--ro dest-addr inet:ip-address 521 +--ro sessions* [local-discriminator] 522 +--ro ttl? bfd:ttl 523 +--ro path-type? identityref 524 +--ro local-discriminator bfd-discriminator 525 +--ro remote-discriminator? bfd-discriminator 526 +--ro remote-multiplier? bfd-multiplier 527 +--ro out-interface? if:interface-ref 528 +--ro demand-capability? boolean 529 +--ro source-port? inet:port-number 530 +--ro dest-port? inet:port-number 531 +--ro session-running 532 | +--ro session-index? uint32 533 | +--ro local-state? bfd-state 534 | +--ro remote-state? bfd-state 535 | +--ro local-diagnostic? bfd-diagnostic 536 | +--ro remote-diagnostic? bfd-diagnostic 537 | +--ro detection-mode? enumeration 538 | +--ro negotiated-tx-interval? uint32 539 | +--ro negotiated-rx-interval? uint32 540 | +--ro echo-tx-interval-in-use? uint32 541 | +--ro detection-time? uint32 542 +--ro sesssion-statistics 543 +--ro create-time? yang:date-and-time 544 +--ro last-down-time? yang:date-and-time 545 +--ro last-up-time? yang:date-and-time 546 +--ro down-count? uint32 547 +--ro admin-down-count? uint32 548 +--ro receive-packet-count? uint64 549 +--ro send-packet-count? uint64 550 +--ro receive-bad-packet? uint64 551 +--ro send-failed-packet? uint64 552 notifications: 553 +---n bfd-multihop-notification 554 +--ro local-discr? bfd-discriminator 555 +--ro remote-discr? bfd-discriminator 556 +--ro new-state? bfd-state 557 +--ro state-change-reason? string 558 +--ro time-in-previous-state? string 559 +--ro dest-addr? inet:ip-address 560 +--ro source-addr? inet:ip-address 561 +--ro session-index? uint32 562 +--ro path-type? identityref 564 2.8. BFD over LAG hierarchy 566 A "lag" node is added under the "bfd" node in control-plane-protocol. 567 The configuration and operational data for each BFD LAG session is 568 under this "lag" node. The "lag" node can be mounted in a network 569 device (top-level), in an LNE or in a network instance. 571 module: ietf-bfd-lag 572 augment /rt:routing/rt:control-plane-protocols 573 /rt:control-plane-protocol/bfd:bfd: 574 +--rw lag 575 +--rw config 576 | +--rw session-cfg 577 | +--rw sessions* [lag-name] 578 | +--rw lag-name if:interface-ref 579 | +--rw ipv4-dest-addr? inet:ipv4-address 580 | +--rw ipv6-dest-addr? inet:ipv6-address 581 | +--rw local-multiplier? bfd-multiplier 582 | +--rw (interval-config-type)? 583 | | +--:(tx-rx-intervals) 584 | | | +--rw desired-min-tx-interval uint32 585 | | | +--rw required-min-rx-interval uint32 586 | | +--:(single-interval) 587 | | +--rw min-interval uint32 588 | +--rw demand-enabled? boolean 589 | +--rw admin-down? boolean 590 | +--rw authentication-parms! {bfd-authentication}? 591 | +--rw key-chain? kc:key-chain-ref 592 | +--rw replay-protection? identityref 593 +--ro oper 594 +--ro micro-bfd-ipv4-session-statistics 595 | +--ro bfd-session-statistics 596 | +--ro session-count? uint32 597 | +--ro session-up-count? uint32 598 | +--ro session-down-count? uint32 599 | +--ro session-admin-down-count? uint32 600 +--ro micro-bfd-ipv6-session-statistics 601 | +--ro bfd-session-statistics 602 | +--ro session-count? uint32 603 | +--ro session-up-count? uint32 604 | +--ro session-down-count? uint32 605 | +--ro session-admin-down-count? uint32 606 +--ro session-lag* [lag-name] 607 +--ro lag-name if:interface-ref 608 +--ro use-ipv4? boolean 609 +--ro use-ipv6? boolean 610 +--ro member-links* [member-link] 611 +--ro member-link if:interface-ref 612 +--ro micro-bfd-ipv4 613 | +--ro path-type? identityref 614 | +--ro local-discriminator? bfd-discriminator 615 | +--ro remote-discriminator? bfd-discriminator 616 | +--ro remote-multiplier? bfd-multiplier 617 | +--ro out-interface? if:interface-ref 618 | +--ro demand-capability? boolean 619 | +--ro source-port? inet:port-number 620 | +--ro dest-port? inet:port-number 621 | +--ro session-running 622 | | +--ro session-index? uint32 623 | | +--ro local-state? bfd-state 624 | | +--ro remote-state? bfd-state 625 | | +--ro local-diagnostic? bfd-diagnostic 626 | | +--ro remote-diagnostic? bfd-diagnostic 627 | | +--ro detection-mode? enumeration 628 | | +--ro negotiated-tx-interval? uint32 629 | | +--ro negotiated-rx-interval? uint32 630 | | +--ro echo-tx-interval-in-use? uint32 631 | | +--ro detection-time? uint32 632 | +--ro sesssion-statistics 633 | +--ro create-time? yang:date-and-time 634 | +--ro last-down-time? yang:date-and-time 635 | +--ro last-up-time? yang:date-and-time 636 | +--ro down-count? uint32 637 | +--ro admin-down-count? uint32 638 | +--ro receive-packet-count? uint64 639 | +--ro send-packet-count? uint64 640 | +--ro receive-bad-packet? uint64 641 | +--ro send-failed-packet? uint64 642 +--ro micro-bfd-ipv6 643 +--ro path-type? identityref 644 +--ro local-discriminator? bfd-discriminator 645 +--ro remote-discriminator? bfd-discriminator 646 +--ro remote-multiplier? bfd-multiplier 647 +--ro out-interface? if:interface-ref 648 +--ro demand-capability? boolean 649 +--ro source-port? inet:port-number 650 +--ro dest-port? inet:port-number 651 +--ro session-running 652 | +--ro session-index? uint32 653 | +--ro local-state? bfd-state 654 | +--ro remote-state? bfd-state 655 | +--ro local-diagnostic? bfd-diagnostic 656 | +--ro remote-diagnostic? bfd-diagnostic 657 | +--ro detection-mode? enumeration 658 | +--ro negotiated-tx-interval? uint32 659 | +--ro negotiated-rx-interval? uint32 660 | +--ro echo-tx-interval-in-use? uint32 661 | +--ro detection-time? uint32 662 +--ro sesssion-statistics 663 +--ro create-time? yang:date-and-time 664 +--ro last-down-time? yang:date-and-time 665 +--ro last-up-time? yang:date-and-time 666 +--ro down-count? uint32 667 +--ro admin-down-count? uint32 668 +--ro receive-packet-count? uint64 669 +--ro send-packet-count? uint64 670 +--ro receive-bad-packet? uint64 671 +--ro send-failed-packet? uint64 672 notifications: 673 +---n bfd-lag-notification 674 +--ro local-discr? bfd-discriminator 675 +--ro remote-discr? bfd-discriminator 676 +--ro new-state? bfd-state 677 +--ro state-change-reason? string 678 +--ro time-in-previous-state? string 679 +--ro dest-addr? inet:ip-address 680 +--ro source-addr? inet:ip-address 681 +--ro session-index? uint32 682 +--ro path-type? identityref 683 +--ro lag-name? if:interface-ref 684 +--ro member-link? if:interface-ref 686 2.9. BFD over MPLS LSPs hierarchy 688 An "mpls" node is added under the "bfd" node in control-plane- 689 protocol. The configuration is per MPLS FEC under this "mpls" node. 690 In the operational model we support multiple BFD sessions per MPLS 691 FEC (ECMP), the local discriminator is used as key. The "mpls" node 692 can be mounted in a network device (top-level), in an LNE or in a 693 network instance. 695 module: ietf-bfd-mpls 696 augment /rt:routing/rt:control-plane-protocols 697 /rt:control-plane-protocol/bfd:bfd: 698 +--rw mpls 699 +--rw config 700 | +--rw egress 701 | | +--rw local-multiplier? bfd-multiplier 702 | | +--rw (interval-config-type)? 703 | | | +--:(tx-rx-intervals) 704 | | | | +--rw desired-min-tx-interval uint32 705 | | | | +--rw required-min-rx-interval uint32 706 | | | +--:(single-interval) 707 | | | +--rw min-interval uint32 708 | | +--rw authentication-parms! {bfd-authentication}? 709 | | +--rw key-chain? kc:key-chain-ref 710 | | +--rw replay-protection? identityref 711 | +--rw session-cfg 712 | +--rw sessions* [mpls-fec] 713 | +--rw mpls-fec inet:ip-address 714 | +--rw local-multiplier? bfd-multiplier 715 | +--rw (interval-config-type)? 716 | | +--:(tx-rx-intervals) 717 | | | +--rw desired-min-tx-interval uint32 718 | | | +--rw required-min-rx-interval uint32 719 | | +--:(single-interval) 720 | | +--rw min-interval uint32 721 | +--rw demand-enabled? boolean 722 | +--rw admin-down? boolean 723 | +--rw authentication-parms! {bfd-authentication}? 724 | +--rw key-chain? kc:key-chain-ref 725 | +--rw replay-protection? identityref 726 +--ro oper 727 +--ro bfd-session-statistics 728 | +--ro session-count? uint32 729 | +--ro session-up-count? uint32 730 | +--ro session-down-count? uint32 731 | +--ro session-admin-down-count? uint32 732 +--ro session-group* [mpls-fec] 733 +--ro mpls-fec inet:ip-address 734 +--ro sessions* [local-discriminator] 735 +--ro path-type? identityref 736 +--ro local-discriminator bfd-discriminator 737 +--ro remote-discriminator? bfd-discriminator 738 +--ro remote-multiplier? bfd-multiplier 739 +--ro out-interface? if:interface-ref 740 +--ro demand-capability? boolean 741 +--ro source-port? inet:port-number 742 +--ro dest-port? inet:port-number 743 +--ro session-running 744 | +--ro session-index? uint32 745 | +--ro local-state? bfd-state 746 | +--ro remote-state? bfd-state 747 | +--ro local-diagnostic? bfd-diagnostic 748 | +--ro remote-diagnostic? bfd-diagnostic 749 | +--ro detection-mode? enumeration 750 | +--ro negotiated-tx-interval? uint32 751 | +--ro negotiated-rx-interval? uint32 752 | +--ro echo-tx-interval-in-use? uint32 753 | +--ro detection-time? uint32 754 +--ro sesssion-statistics 755 | +--ro create-time? yang:date-and-time 756 | +--ro last-down-time? yang:date-and-time 757 | +--ro last-up-time? yang:date-and-time 758 | +--ro down-count? uint32 759 | +--ro admin-down-count? uint32 760 | +--ro receive-packet-count? uint64 761 | +--ro send-packet-count? uint64 762 | +--ro receive-bad-packet? uint64 763 | +--ro send-failed-packet? uint64 764 +--ro mpls-dest-address? inet:ip-address 765 notifications: 766 +---n bfd-mpls-notification 767 +--ro local-discr? bfd-discriminator 768 +--ro remote-discr? bfd-discriminator 769 +--ro new-state? bfd-state 770 +--ro state-change-reason? string 771 +--ro time-in-previous-state? string 772 +--ro dest-addr? inet:ip-address 773 +--ro source-addr? inet:ip-address 774 +--ro session-index? uint32 775 +--ro path-type? identityref 776 +--ro mpls-dest-address? inet:ip-address 778 2.10. BFD over MPLS-TE hierarchy 780 The MPLS-TE YANG model [I-D.ietf-teas-yang-te] is augmented. BFD is 781 configured per MPLS-TE tunnel, and BFD session operational data is 782 provided per MPLS-TE LSP. 784 module: ietf-bfd-mpls-te 785 augment /rt:routing/rt:control-plane-protocols 786 /rt:control-plane-protocol/bfd:bfd: 787 +--rw mpls-te 788 +--rw config 789 | +--rw egress 790 | +--rw local-multiplier? bfd-multiplier 791 | +--rw (interval-config-type)? 792 | | +--:(tx-rx-intervals) 793 | | | +--rw desired-min-tx-interval uint32 794 | | | +--rw required-min-rx-interval uint32 795 | | +--:(single-interval) 796 | | +--rw min-interval uint32 797 | +--rw authentication-parms! {bfd-authentication}? 798 | +--rw key-chain? kc:key-chain-ref 799 | +--rw replay-protection? identityref 800 +--ro oper 801 +--ro bfd-session-statistics 802 +--ro session-count? uint32 803 +--ro session-up-count? uint32 804 +--ro session-down-count? uint32 805 +--ro session-admin-down-count? uint32 806 augment /te:te/te:tunnels/te:tunnel/te:config: 807 +--rw local-multiplier? bfd-multiplier 808 +--rw (interval-config-type)? 809 | +--:(tx-rx-intervals) 810 | | +--rw desired-min-tx-interval uint32 811 | | +--rw required-min-rx-interval uint32 812 | +--:(single-interval) 813 | +--rw min-interval uint32 814 +--rw demand-enabled? boolean 815 +--rw admin-down? boolean 816 +--rw authentication-parms! {bfd-authentication}? 817 | +--rw key-chain? kc:key-chain-ref 818 | +--rw replay-protection? identityref 819 +--rw encap? identityref 820 augment /te:te/te:lsps-state/te:lsp: 821 +--ro path-type? identityref 822 +--ro local-discriminator? bfd-discriminator 823 +--ro remote-discriminator? bfd-discriminator 824 +--ro remote-multiplier? bfd-multiplier 825 +--ro out-interface? if:interface-ref 826 +--ro demand-capability? boolean 827 +--ro source-port? inet:port-number 828 +--ro dest-port? inet:port-number 829 +--ro session-running 830 | +--ro session-index? uint32 831 | +--ro local-state? bfd-state 832 | +--ro remote-state? bfd-state 833 | +--ro local-diagnostic? bfd-diagnostic 834 | +--ro remote-diagnostic? bfd-diagnostic 835 | +--ro detection-mode? enumeration 836 | +--ro negotiated-tx-interval? uint32 837 | +--ro negotiated-rx-interval? uint32 838 | +--ro echo-tx-interval-in-use? uint32 839 | +--ro detection-time? uint32 840 +--ro sesssion-statistics 841 | +--ro create-time? yang:date-and-time 842 | +--ro last-down-time? yang:date-and-time 843 | +--ro last-up-time? yang:date-and-time 844 | +--ro down-count? uint32 845 | +--ro admin-down-count? uint32 846 | +--ro receive-packet-count? uint64 847 | +--ro send-packet-count? uint64 848 | +--ro receive-bad-packet? uint64 849 | +--ro send-failed-packet? uint64 850 +--ro mpls-dest-address? inet:ip-address 851 notifications: 852 +---n bfd-mpls-te-notification 853 +--ro local-discr? bfd-discriminator 854 +--ro remote-discr? bfd-discriminator 855 +--ro new-state? bfd-state 856 +--ro state-change-reason? string 857 +--ro time-in-previous-state? string 858 +--ro dest-addr? inet:ip-address 859 +--ro source-addr? inet:ip-address 860 +--ro session-index? uint32 861 +--ro path-type? identityref 862 +--ro mpls-dest-address? inet:ip-address 863 +--ro tunnel-name? string 865 2.11. Examples 867 2.12. Interaction with other YANG modules 869 [I-D.ietf-lime-yang-connectionless-oam] describes how the LIME 870 connectionless OAM model could be extended to support BFD. 872 Also, the operation of the BFD data model depends on configuration 873 parameters that are defined in other YANG modules. 875 2.12.1. Module ietf-interfaces 877 The following boolean configuration is defined in the "ietf- 878 interfaces" YANG module [RFC7223]: 880 /if:interfaces/if:interface/if:enabled 881 If this configuration is set to "false", no BFD packets can 882 be transmitted or received on that interface. 884 2.12.2. Module ietf-ip 886 The following boolean configuration is defined in the "ietf-ip" YANG 887 module [RFC7277]: 889 /if:interfaces/if:interface/ip:ipv4/ip:enabled 890 If this configuration is set to "false", no BFD IPv4 packets 891 can be transmitted or received on that interface. 893 /if:interfaces/if:interface/ip:ipv4/ip:forwarding 894 If this configuration is set to "false", no BFD IPv4 packets 895 can be transmitted or received on that interface. 897 /if:interfaces/if:interface/ip:ipv6/ip:enabled 898 If this configuration is set to "false", no BFD IPv6 packets 899 can be transmitted or received on that interface. 901 /if:interfaces/if:interface/ip:ipv6/ip:forwarding 902 If this configuration is set to "false", no BFD IPv6 packets 903 can be transmitted or received on that interface. 905 2.12.3. Module ietf-mpls 907 The following boolean configuration is defined in the "ietf-mpls" 908 YANG module [I-D.ietf-mpls-base-yang]: 910 /rt:routing/mpls:mpls/mpls:interface/mpls:config/mpls:enabled 911 If this configuration is set to "false", no BFD MPLS packets 912 can be transmitted or received on that interface. 914 2.12.4. Module ietf-te 916 The following configuration is defined in the "ietf-te" YANG module 917 [I-D.ietf-teas-yang-te]: 919 /ietf-te:te/ietf-te:tunnels/ietf-te:tunnel/ietf-te:config/ietf- 920 te:admin-status 921 If this configuration is not set to "state-up", no BFD MPLS 922 packets can be transmitted or received on that tunnel. 924 2.13. BFD top-level Yang Module 926 file "ietf-bfd@2017-03-07.yang" 927 module ietf-bfd { 928 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 929 // replace with IANA namespace when assigned 930 prefix "bfd"; 932 import ietf-interfaces { 933 prefix "if"; 934 } 936 import ietf-inet-types { 937 prefix "inet"; 938 } 940 import ietf-yang-types { 941 prefix "yang"; 942 } 944 import ietf-routing { 945 prefix "rt"; 947 } 949 import ietf-key-chain { 950 prefix "kc"; 951 } 953 organization "IETF BFD Working Group"; 955 contact 956 "WG Web: 957 WG List: 958 WG Chair: Jeff Haas 959 WG Chair: Reshad Rahman 960 Editor: Lianshu Zheng and Reshad Rahman"; 962 description 963 "This module contains the YANG definition for BFD parameters as 964 per RFC5880. 966 Copyright (c) 2017 IETF Trust and the persons 967 identified as authors of the code. All rights reserved. 969 Redistribution and use in source and binary forms, with or 970 without modification, is permitted pursuant to, and subject 971 to the license terms contained in, the Simplified BSD License 972 set forth in Section 4.c of the IETF Trust's Legal Provisions 973 Relating to IETF Documents 974 (http://trustee.ietf.org/license-info). 976 This version of this YANG module is part of RFC XXXX; see 977 the RFC itself for full legal notices."; 979 revision 2017-03-07 { 980 description "Initial revision."; 981 reference "RFC XXXX: A YANG data model for BFD"; 982 } 984 // RFC Ed.: replace XXXX with actual RFC number and remove this 985 // note 987 identity bfdv1 { 988 base "rt:control-plane-protocol"; 989 description "BFD protocol version 1 as per RFC5880."; 990 } 992 typedef bfd-discriminator { 993 type uint32 { 994 range 1..4294967295; 996 } 997 description "BFD discriminator"; 998 } 1000 typedef bfd-diagnostic { 1001 type enumeration { 1002 enum none { 1003 value 0; 1004 description "None"; 1005 } 1006 enum controlExpiry { 1007 value 1; 1008 description "Control timer expiry"; 1009 } 1010 enum echoFailed { 1011 value 2; 1012 description "Echo failure"; 1013 } 1014 enum nborDown { 1015 value 3; 1016 description "Neighbor down"; 1017 } 1018 enum fwdingReset { 1019 value 4; 1020 description "Forwarding reset"; 1021 } 1022 enum pathDown { 1023 value 5; 1024 description "Path down"; 1025 } 1026 enum concPathDown { 1027 value 6; 1028 description "Concatenated path down"; 1029 } 1030 enum adminDown { 1031 value 7; 1032 description "Admin down"; 1033 } 1034 enum reverseConcPathDown { 1035 value 8; 1036 description "Reverse concatenated path down"; 1037 } 1038 } 1039 description "BFD diagnostic"; 1040 } 1042 typedef bfd-state { 1043 type enumeration { 1044 enum adminDown { 1045 value 0; 1046 description "admindown"; 1047 } 1048 enum down { 1049 value 1; 1050 description "down"; 1051 } 1052 enum init { 1053 value 2; 1054 description "init"; 1055 } 1056 enum up { 1057 value 3; 1058 description "up"; 1059 } 1060 } 1061 description "BFD state"; 1062 } 1064 typedef bfd-multiplier { 1065 type uint8 { 1066 range 1..255; 1067 } 1068 description "Multiplier"; 1069 } 1071 typedef ttl { 1072 type uint8 { 1073 range 1..255; 1074 } 1075 description "Time To Live"; 1076 } 1078 identity bfd-path-type { 1079 description 1080 "Base identity for BFD path type. The session type indicates 1081 the type of path on which BFD is running"; 1082 } 1083 identity bfd-path-ip-sh { 1084 base bfd-path-type; 1085 description "BFD on IP single hop"; 1086 } 1087 identity bfd-path-ip-mh { 1088 base bfd-path-type; 1089 description "BFD on IP multi hop"; 1090 } 1091 identity bfd-path-mpls-te { 1092 base bfd-path-type; 1093 description "BFD on MPLS Traffic Engineering"; 1094 } 1095 identity bfd-path-mpls-lsp { 1096 base bfd-path-type; 1097 description "BFD on MPLS Label Switched Path"; 1098 } 1099 identity bfd-path-lag { 1100 base bfd-path-type; 1101 description "Micro-BFD on LAG member links"; 1102 } 1104 identity bfd-encap-type { 1105 description 1106 "Base identity for BFD encapsulation type."; 1107 } 1108 identity bfd-encap-ip { 1109 base bfd-encap-type; 1110 description "BFD with IP encapsulation."; 1111 } 1113 feature bfd-authentication { 1114 description "BFD authentication supported"; 1115 } 1117 identity bfd-auth-replay-protection { 1118 description 1119 "Base identity for BFD authentication replay protection"; 1120 } 1121 identity bfd-auth-replay-protection-non-meticulous { 1122 base bfd-auth-replay-protection; 1123 description "Non-meticulous (see RFC5880)"; 1124 } 1125 identity bfd-auth-replay-protection-meticulous { 1126 base bfd-auth-replay-protection; 1127 description "Meticulous (see RFC5880)"; 1128 } 1130 grouping bfd-auth-parms { 1131 description 1132 "Grouping for BFD authentication parameters 1133 (see section 6.7 of RFC5880)."; 1134 container authentication-parms { 1135 if-feature bfd-authentication; 1136 presence 1137 "Enables BFD authentication (see section 6.7 of RFC5880)."; 1138 description "Parameters for BFD authentication"; 1139 leaf key-chain { 1140 type kc:key-chain-ref; 1141 description "Name of key-chain"; 1142 } 1144 leaf replay-protection { 1145 type identityref { 1146 base bfd-auth-replay-protection; 1147 } 1148 description 1149 "Protection against replays"; 1150 } 1151 } 1152 } 1154 grouping bfd-grouping-base-cfg-parms { 1155 description "BFD grouping for base config parameters"; 1156 leaf local-multiplier { 1157 type bfd-multiplier; 1158 default 3; 1159 description "Multiplier transmitted by local system"; 1160 } 1162 choice interval-config-type { 1163 description 1164 "Two interval values or 1 value used for both tx and rx"; 1165 case tx-rx-intervals { 1166 leaf desired-min-tx-interval { 1167 type uint32; 1168 units microseconds; 1169 mandatory true; 1170 description 1171 "Desired minimum transmit interval of control packets"; 1172 } 1174 leaf required-min-rx-interval { 1175 type uint32; 1176 units microseconds; 1177 mandatory true; 1178 description 1179 "Required minimum receive interval of control packets"; 1180 } 1181 } 1182 case single-interval { 1183 leaf min-interval { 1184 type uint32; 1185 units microseconds; 1186 mandatory true; 1187 description 1188 "Desired minimum transmit interval and required " + 1189 "minimum receive interval of control packets"; 1190 } 1191 } 1192 } 1193 } 1195 grouping bfd-grouping-common-cfg-parms { 1196 description "BFD grouping for common config parameters"; 1198 uses bfd-grouping-base-cfg-parms; 1200 leaf demand-enabled { 1201 type boolean; 1202 default false; 1203 description "To enable demand mode"; 1204 } 1206 leaf admin-down { 1207 type boolean; 1208 default false; 1209 description 1210 "Is the BFD session administratively down"; 1211 } 1212 uses bfd-auth-parms; 1213 } 1215 grouping bfd-grouping-echo-cfg-parms { 1216 description "BFD grouping for echo config parameters"; 1217 leaf desired-min-echo-tx-interval { 1218 type uint32; 1219 units microseconds; 1220 default 0; 1221 description "Desired minumum transmit interval for echo"; 1222 } 1224 leaf required-min-echo-rx-interval { 1225 type uint32; 1226 units microseconds; 1227 default 0; 1228 description "Required minimum receive interval for echo"; 1229 } 1230 } 1232 grouping bfd-client-base-cfg-parms { 1233 description 1234 "BFD grouping which could be used by a protocol which 1235 is a client of BFD to enable its use of BFD"; 1237 container bfd-cfg { 1238 description "BFD configuration"; 1239 leaf enabled { 1240 type boolean; 1241 default false; 1242 description "True if BFD is enabled"; 1243 } 1244 } 1245 } 1247 grouping bfd-all-session { 1248 description "BFD session operational information"; 1249 leaf path-type { 1250 type identityref { 1251 base bfd-path-type; 1252 } 1253 description 1254 "BFD session type, this indicates the path type that BFD is 1255 running on"; 1256 } 1257 leaf local-discriminator { 1258 type bfd-discriminator; 1259 description "Local discriminator"; 1260 } 1261 leaf remote-discriminator { 1262 type bfd-discriminator; 1263 description "Remote discriminator"; 1264 } 1265 leaf remote-multiplier { 1266 type bfd-multiplier; 1267 description "Remote multiplier"; 1268 } 1269 leaf out-interface { 1270 type if:interface-ref; 1271 description "Outgoing physical interface name"; 1272 } 1273 leaf demand-capability { 1274 type boolean; 1275 description "Local demand mode capability"; 1276 } 1277 leaf source-port { 1278 type inet:port-number; 1279 description "Source UDP port"; 1280 } 1281 leaf dest-port { 1282 type inet:port-number; 1283 description "Destination UDP port"; 1284 } 1286 container session-running { 1287 description "BFD session running information"; 1288 leaf session-index { 1289 type uint32; 1290 description 1291 "An index used to uniquely identify BFD sessions"; 1292 } 1293 leaf local-state { 1294 type bfd-state; 1295 description "Local state"; 1296 } 1297 leaf remote-state { 1298 type bfd-state; 1299 description "Remote state"; 1300 } 1301 leaf local-diagnostic { 1302 type bfd-diagnostic; 1303 description "Local diagnostic"; 1304 } 1305 leaf remote-diagnostic { 1306 type bfd-diagnostic; 1307 description "Remote diagnostic"; 1308 } 1309 leaf detection-mode { 1310 type enumeration { 1311 enum async-with-echo { 1312 value "1"; 1313 description "Async with echo"; 1314 } 1315 enum async-without-echo { 1316 value "2"; 1317 description "Async without echo"; 1318 } 1319 enum demand-with-echo { 1320 value "3"; 1321 description "Demand with echo"; 1322 } 1323 enum demand-without-echo { 1324 value "4"; 1325 description "Demand without echo"; 1326 } 1327 } 1328 description "Detection mode"; 1329 } 1330 leaf negotiated-tx-interval { 1331 type uint32; 1332 units microseconds; 1333 description "Negotiated transmit interval"; 1334 } 1335 leaf negotiated-rx-interval { 1336 type uint32; 1337 units microseconds; 1338 description "Negotiated receive interval"; 1339 } 1340 leaf echo-tx-interval-in-use { 1341 when "../../path-type = 'bfd-path-ip-sh'" { 1342 description 1343 "Echo is supported for IP single-hop only."; 1344 } 1345 type uint32; 1346 units microseconds; 1347 description "Echo transmit interval in use"; 1348 } 1349 leaf detection-time { 1350 type uint32; 1351 units microseconds; 1352 description "Detection time"; 1353 } 1354 } 1356 container sesssion-statistics { 1357 description "BFD per-session statistics"; 1359 leaf create-time { 1360 type yang:date-and-time; 1361 description 1362 "Time and date when session was created"; 1363 } 1364 leaf last-down-time { 1365 type yang:date-and-time; 1366 description 1367 "Time and date of last time the session went down"; 1368 } 1369 leaf last-up-time { 1370 type yang:date-and-time; 1371 description 1372 "Time and date of last time the session went up"; 1373 } 1374 leaf down-count { 1375 type uint32; 1376 description "Session Down Count"; 1377 } 1378 leaf admin-down-count { 1379 type uint32; 1380 description "Session Admin-Down Count"; 1381 } 1382 leaf receive-packet-count { 1383 type uint64; 1384 description "Received Packet Count"; 1385 } 1386 leaf send-packet-count { 1387 type uint64; 1388 description "Sent Packet Count"; 1389 } 1390 leaf receive-bad-packet { 1391 type uint64; 1392 description "Received bad packet count"; 1393 } 1394 leaf send-failed-packet { 1395 type uint64; 1396 description "Packet Failed to Send Count"; 1397 } 1398 } 1399 } 1401 grouping bfd-session-statistics { 1402 description "Grouping for session counters"; 1403 container bfd-session-statistics { 1404 description "BFD session counters"; 1405 leaf session-count { 1406 type uint32; 1407 description "Number of sessions"; 1408 } 1409 leaf session-up-count { 1410 type uint32; 1411 description "Count of sessions which are up"; 1412 } 1413 leaf session-down-count { 1414 type uint32; 1415 description "Count of sessions which are down"; 1416 } 1417 leaf session-admin-down-count { 1418 type uint32; 1419 description "Count of sessions which are admin-down"; 1420 } 1421 } 1422 } 1424 grouping bfd-notification-parms { 1425 description 1426 "This group describes common parameters that will be sent " + 1427 "as part of BFD notification"; 1429 leaf local-discr { 1430 type bfd-discriminator; 1431 description "BFD local discriminator"; 1432 } 1434 leaf remote-discr { 1435 type bfd-discriminator; 1436 description "BFD remote discriminator"; 1437 } 1439 leaf new-state { 1440 type bfd-state; 1441 description "Current BFD state"; 1442 } 1444 leaf state-change-reason { 1445 type string; 1446 description "BFD state change reason"; 1447 } 1449 leaf time-in-previous-state { 1450 type string; 1451 description 1452 "How long the BFD session was in the previous state"; 1453 } 1455 leaf dest-addr { 1456 type inet:ip-address; 1457 description "BFD peer address"; 1458 } 1460 leaf source-addr { 1461 type inet:ip-address; 1462 description "BFD local address"; 1463 } 1465 leaf session-index { 1466 type uint32; 1467 description "An index used to uniquely identify BFD sessions"; 1468 } 1470 leaf path-type { 1471 type identityref { 1472 base bfd-path-type; 1473 } 1474 description "BFD path type"; 1476 } 1477 } 1479 augment "/rt:routing/rt:control-plane-protocols/" 1480 + "rt:control-plane-protocol" { 1481 when "rt:type = 'bfd:bfdv1'" { 1482 description 1483 "This augmentation is only valid for a control-plane protocol 1484 instance of BFD (type 'bfdv1')."; 1485 } 1486 description "BFD augmentation."; 1488 container bfd { 1489 description "BFD top level container"; 1490 container config { 1491 description "BFD configuration container"; 1492 } 1494 container oper { 1495 config "false"; 1496 description "BFD operational container."; 1497 uses bfd-session-statistics; 1498 } 1499 } 1500 } 1501 } 1502 1504 2.14. BFD IP single-hop Yang Module 1506 file "ietf-bfd-ip-sh@2017-03-07.yang" 1507 module ietf-bfd-ip-sh { 1508 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1509 // replace with IANA namespace when assigned 1510 prefix "bfd-ip-sh"; 1512 import ietf-bfd { 1513 prefix "bfd"; 1514 } 1516 import ietf-interfaces { 1517 prefix "if"; 1518 } 1520 import ietf-inet-types { 1521 prefix "inet"; 1522 } 1523 import ietf-routing { 1524 prefix "rt"; 1525 } 1527 organization "IETF BFD Working Group"; 1529 contact 1530 "WG Web: 1531 WG List: 1532 WG Chair: Jeff Haas 1533 WG Chair: Reshad Rahman 1534 Editor: Lianshu Zheng and Reshad Rahman"; 1536 description 1537 "This module contains the YANG definition for BFD IP single-hop 1538 as per RFC5881. 1540 Copyright (c) 2017 IETF Trust and the persons 1541 identified as authors of the code. All rights reserved. 1543 Redistribution and use in source and binary forms, with or 1544 without modification, is permitted pursuant to, and subject 1545 to the license terms contained in, the Simplified BSD License 1546 set forth in Section 4.c of the IETF Trust's Legal Provisions 1547 Relating to IETF Documents 1548 (http://trustee.ietf.org/license-info). 1550 This version of this YANG module is part of RFC XXXX; see 1551 the RFC itself for full legal notices."; 1553 revision 2017-03-07 { 1554 description "Initial revision."; 1555 reference "RFC XXXX: A YANG data model for BFD IP single-hop"; 1556 } 1558 // RFC Ed.: replace XXXX with actual RFC number and remove this 1559 // note 1561 augment "/rt:routing/rt:control-plane-protocols/" 1562 + "rt:control-plane-protocol/bfd:bfd" { 1563 description "BFD augmentation for IP single-hop"; 1564 container ip-sh { 1565 description "BFD IP single-hop top level container"; 1567 container config { 1568 description "BFD IP single-hop configuration container"; 1569 container session-cfg { 1570 description "BFD IP single-hop session configuration"; 1571 list sessions { 1572 key "interface dest-addr"; 1573 description "List of IP single-hop sessions"; 1574 leaf interface { 1575 type if:interface-ref; 1576 description 1577 "Interface on which the BFD session is running."; 1578 } 1579 leaf dest-addr { 1580 type inet:ip-address; 1581 description "IP address of the peer"; 1582 } 1583 leaf source-addr { 1584 type inet:ip-address; 1585 description "Local address"; 1586 } 1588 uses bfd:bfd-grouping-common-cfg-parms; 1590 uses bfd:bfd-grouping-echo-cfg-parms; 1591 } 1592 } 1593 } 1595 container oper { 1596 config "false"; 1597 description "BFD IP single-hop operational container"; 1599 uses bfd:bfd-session-statistics; 1601 list sessions { 1602 key "interface dest-addr"; 1603 description "BFD IP single-hop sessions"; 1604 leaf interface { 1605 type if:interface-ref; 1606 description 1607 "Interface on which the BFD session is running."; 1608 } 1609 leaf dest-addr { 1610 type inet:ip-address; 1611 description "BFD peer address"; 1612 } 1613 leaf source-addr { 1614 type inet:ip-address; 1615 description "BFD source address"; 1616 } 1618 uses bfd:bfd-all-session; 1620 } 1621 } 1622 } 1623 } 1625 notification bfd-singlehop-notification { 1626 description 1627 "Notification for BFD single-hop session state change. An " + 1628 "implementation may rate-limit notifications, e.g. when a" + 1629 "session is continuously changing state."; 1631 uses bfd:bfd-notification-parms; 1633 leaf interface { 1634 type if:interface-ref; 1635 description "Interface to which this BFD session belongs to"; 1636 } 1638 leaf echo-enabled { 1639 type boolean; 1640 description "Was echo enabled for BFD"; 1641 } 1642 } 1644 } 1645 1647 2.15. BFD IP multi-hop Yang Module 1649 file "ietf-bfd-ip-mh@2017-03-07.yang" 1650 module ietf-bfd-ip-mh { 1651 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 1652 // replace with IANA namespace when assigned 1653 prefix "bfd-ip-mh"; 1655 import ietf-bfd { 1656 prefix "bfd"; 1657 } 1659 import ietf-inet-types { 1660 prefix "inet"; 1661 } 1663 import ietf-routing { 1664 prefix "rt"; 1665 } 1667 organization "IETF BFD Working Group"; 1668 contact 1669 "WG Web: 1670 WG List: 1671 WG Chair: Jeff Haas 1672 WG Chair: Reshad Rahman 1673 Editor: Lianshu Zheng and Reshad Rahman"; 1675 description 1676 "This module contains the YANG definition for BFD IP multi-hop 1677 as per RFC5883. 1679 Copyright (c) 2017 IETF Trust and the persons 1680 identified as authors of the code. All rights reserved. 1682 Redistribution and use in source and binary forms, with or 1683 without modification, is permitted pursuant to, and subject 1684 to the license terms contained in, the Simplified BSD License 1685 set forth in Section 4.c of the IETF Trust's Legal Provisions 1686 Relating to IETF Documents 1687 (http://trustee.ietf.org/license-info). 1689 This version of this YANG module is part of RFC XXXX; see 1690 the RFC itself for full legal notices."; 1692 revision 2017-03-07 { 1693 description "Initial revision."; 1694 reference "RFC XXXX: A YANG data model for BFD IP multi-hop"; 1695 } 1697 // RFC Ed.: replace XXXX with actual RFC number and remove this 1698 // note 1700 augment "/rt:routing/rt:control-plane-protocols/" 1701 + "rt:control-plane-protocol/bfd:bfd" { 1702 description "BFD augmentation for IP multi-hop"; 1703 container ip-mh { 1704 description "BFD IP multi-hop top level container"; 1706 container config { 1707 description "BFD IP multi-hop configuration container"; 1708 container session-cfg { 1709 description "BFD IP multi-hop session configuration"; 1711 list sessions { 1712 key "source-addr dest-addr"; 1713 description "List of IP multi-hop sessions"; 1715 leaf source-addr { 1716 type inet:ip-address; 1717 description 1718 "Local IP address"; 1719 } 1720 leaf dest-addr { 1721 type inet:ip-address; 1722 description 1723 "IP address of the peer"; 1724 } 1725 uses bfd:bfd-grouping-common-cfg-parms; 1727 leaf tx-ttl { 1728 type bfd:ttl; 1729 default 255; 1730 description "TTL of outgoing BFD control packets"; 1731 } 1732 leaf rx-ttl { 1733 type bfd:ttl; 1734 mandatory true; 1735 description 1736 "Minimum allowed TTL value for incoming BFD control 1737 packets"; 1738 } 1739 } 1740 } 1741 } 1742 container oper { 1743 config "false"; 1745 description "BFD IP multi-hop operational container"; 1747 uses bfd:bfd-session-statistics; 1749 list session-group { 1750 key "source-addr dest-addr"; 1751 description 1752 "BFD IP multi-hop group of sessions. A group of " + 1753 "sessions is between 1 source and 1 destination, " + 1754 "each session has a different field in UDP/IP hdr for " + 1755 "ECMP."; 1756 leaf source-addr { 1757 type inet:ip-address; 1758 description "BFD source address"; 1759 } 1760 leaf dest-addr { 1761 type inet:ip-address; 1762 description "BFD peer address"; 1763 } 1764 list sessions { 1765 key "local-discriminator"; 1766 description 1767 "The BFD sessions between a source and a. " + 1768 "destination. Local discriminator is unique for " + 1769 "each session in the group."; 1770 leaf ttl { 1771 type bfd:ttl; 1772 description "TTL of outgoing packets"; 1773 } 1774 uses bfd:bfd-all-session; 1775 } 1776 } 1777 } 1778 } 1779 } 1781 notification bfd-multihop-notification { 1782 description 1783 "Notification for BFD multi-hop session state change. An " + 1784 "implementation may rate-limit notifications, e.g. when a" + 1785 "session is continuously changing state."; 1787 uses bfd:bfd-notification-parms; 1788 } 1789 } 1790 1792 2.16. BFD over LAG Yang Module 1794 file "ietf-bfd-lag@2017-03-07.yang" 1795 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 1796 // replace with IANA namespace when assigned 1797 prefix "bfd-lag"; 1799 import ietf-bfd { 1800 prefix "bfd"; 1801 } 1803 import ietf-interfaces { 1804 prefix "if"; 1805 } 1807 import ietf-inet-types { 1808 prefix "inet"; 1809 } 1811 import ietf-routing { 1812 prefix "rt"; 1813 } 1815 organization "IETF BFD Working Group"; 1817 contact 1818 "WG Web: 1819 WG List: 1820 WG Chair: Jeff Haas 1821 WG Chair: Reshad Rahman 1822 Editor: Lianshu Zheng and Reshad Rahman"; 1824 description 1825 "This module contains the YANG definition for BFD over LAG 1826 interfaces as per RFC7130. 1828 Copyright (c) 2017 IETF Trust and the persons 1829 identified as authors of the code. All rights reserved. 1831 Redistribution and use in source and binary forms, with or 1832 without modification, is permitted pursuant to, and subject 1833 to the license terms contained in, the Simplified BSD License 1834 set forth in Section 4.c of the IETF Trust's Legal Provisions 1835 Relating to IETF Documents 1836 (http://trustee.ietf.org/license-info). 1838 This version of this YANG module is part of RFC XXXX; see 1839 the RFC itself for full legal notices."; 1841 revision 2017-03-07 { 1842 description "Initial revision."; 1843 reference "RFC XXXX: A YANG data model for BFD over LAG"; 1844 } 1846 // RFC Ed.: replace XXXX with actual RFC number and remove this 1847 // note 1849 augment "/rt:routing/rt:control-plane-protocols/" 1850 + "rt:control-plane-protocol/bfd:bfd" { 1851 description "BFD augmentation for LAG"; 1852 container lag { 1853 description "BFD over LAG top level container"; 1855 container config { 1856 description "BFD over LAG configuration container"; 1857 container session-cfg { 1858 description "BFD over LAG session configuration"; 1859 list sessions { 1860 key "lag-name"; 1861 description "A LAG interface on which BFD is running"; 1862 leaf lag-name { 1863 type if:interface-ref ; 1864 description "Name of the LAG"; 1865 } 1866 leaf ipv4-dest-addr { 1867 type inet:ipv4-address; 1868 description 1869 "IPv4 address of the peer, for IPv4 micro-BFD."; 1870 } 1871 leaf ipv6-dest-addr { 1872 type inet:ipv6-address; 1873 description 1874 "IPv6 address of the peer, for IPv6 micro-BFD."; 1875 } 1876 uses bfd:bfd-grouping-common-cfg-parms; 1877 } 1878 } 1879 } 1881 container oper { 1882 config "false"; 1883 description "BFD over LAG operational container."; 1885 container micro-bfd-ipv4-session-statistics { 1886 description "Micro-BFD IPv4 session counters"; 1887 uses bfd:bfd-session-statistics; 1888 } 1889 container micro-bfd-ipv6-session-statistics { 1890 description "Micro-BFD IPv6 session counters"; 1891 uses bfd:bfd-session-statistics; 1892 } 1894 list session-lag { 1895 key "lag-name"; 1896 description "A LAG interface on which BFD is running"; 1897 leaf lag-name { 1898 type if:interface-ref ; 1899 description "Name of the LAG"; 1900 } 1902 leaf use-ipv4 { 1903 type boolean; 1904 description "Using IPv4 micro-BFD."; 1905 } 1906 leaf use-ipv6 { 1907 type boolean; 1908 description "Using IPv6 micro-BFD."; 1909 } 1911 list member-links { 1912 key "member-link"; 1913 description 1914 "Micro-BFD over LAG. This represents one member link"; 1916 leaf member-link { 1917 type if:interface-ref; 1918 description 1919 "Member link on which micro-BFD is running"; 1920 } 1921 container micro-bfd-ipv4 { 1922 when "../../use-ipv4 = 'true'" { 1923 description "Needed only if IPv4 is used."; 1924 } 1925 description 1926 "Micro-BFD IPv4 session state on member link"; 1927 uses bfd:bfd-all-session; 1928 } 1929 container micro-bfd-ipv6 { 1930 when "../../use-ipv6 = 'true'" { 1931 description "Needed only if IPv6 is used."; 1932 } 1933 description 1934 "Micro-BFD IPv6 session state on member link"; 1935 uses bfd:bfd-all-session; 1936 } 1937 } 1938 } 1939 } 1940 } 1941 } 1943 notification bfd-lag-notification { 1944 description 1945 "Notification for BFD over LAG session state change. " + 1946 "An implementation may rate-limit notifications, e.g. when a" + 1947 "session is continuously changing state."; 1949 uses bfd:bfd-notification-parms; 1951 leaf lag-name { 1952 type if:interface-ref; 1953 description "LAG interface name"; 1954 } 1955 leaf member-link { 1956 type if:interface-ref; 1957 description "Member link on which BFD is running"; 1958 } 1959 } 1960 } 1961 1963 2.17. BFD over MPLS Yang Module 1965 file "ietf-bfd-mpls@2017-03-07.yang" 1966 module ietf-bfd-mpls { 1967 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 1968 // replace with IANA namespace when assigned 1969 prefix "bfd-mpls"; 1971 import ietf-bfd { 1972 prefix "bfd"; 1973 } 1975 import ietf-inet-types { 1976 prefix "inet"; 1977 } 1979 import ietf-routing { 1980 prefix "rt"; 1981 } 1983 organization "IETF BFD Working Group"; 1985 contact 1986 "WG Web: 1987 WG List: 1988 WG Chair: Jeff Haas 1989 WG Chair: Reshad Rahman 1990 Editor: Lianshu Zheng and Reshad Rahman"; 1992 description 1993 "This module contains the YANG definition for BFD parameters for 1994 MPLS LSPs as per RFC5884. 1996 Copyright (c) 2017 IETF Trust and the persons 1997 identified as authors of the code. All rights reserved. 1999 Redistribution and use in source and binary forms, with or 2000 without modification, is permitted pursuant to, and subject 2001 to the license terms contained in, the Simplified BSD License 2002 set forth in Section 4.c of the IETF Trust's Legal Provisions 2003 Relating to IETF Documents 2004 (http://trustee.ietf.org/license-info). 2006 This version of this YANG module is part of RFC XXXX; see 2007 the RFC itself for full legal notices."; 2009 revision 2017-03-07 { 2010 description "Initial revision."; 2011 reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; 2012 } 2014 // RFC Ed.: replace XXXX with actual RFC number and remove this 2015 // note 2017 identity bfd-encap-gach { 2018 base bfd:bfd-encap-type; 2019 description 2020 "BFD with G-ACh encapsulation as per RFC5586."; 2021 } 2023 identity bfd-encap-ip-gach { 2024 base bfd:bfd-encap-type; 2025 description 2026 "BFD with IP and G-ACh encapsulation as per RFC5586."; 2027 } 2029 grouping bfd-encap-cfg { 2030 description "Configuration for BFD encapsulation"; 2032 leaf encap { 2033 type identityref { 2034 base bfd:bfd-encap-type; 2035 } 2036 default bfd:bfd-encap-ip; 2037 description "BFD encapsulation"; 2038 } 2039 } 2041 grouping bfd-mpls-dest-address { 2042 description "Destination address as per RFC5884"; 2044 leaf mpls-dest-address { 2045 type inet:ip-address; 2046 config "false"; 2047 description 2048 "Destination address as per RFC5884. 2049 Needed if IP encapsulation is used"; 2050 } 2052 } 2054 augment "/rt:routing/rt:control-plane-protocols/" 2055 + "rt:control-plane-protocol/bfd:bfd" { 2056 description "BFD augmentation for MPLS"; 2057 container mpls { 2058 description "BFD MPLS top level container"; 2060 container config { 2061 description "BFD MPLS configuration container"; 2063 container egress { 2064 description "Egress configuration"; 2066 uses bfd:bfd-grouping-base-cfg-parms; 2068 uses bfd:bfd-auth-parms; 2069 } 2071 container session-cfg { 2072 description "BFD MPLS session configuration"; 2073 list sessions { 2074 key "mpls-fec"; 2075 description "List of BFD MPLS sessions"; 2076 leaf mpls-fec { 2077 type inet:ip-address; 2078 description "MPLS FEC"; 2079 } 2081 uses bfd:bfd-grouping-common-cfg-parms; 2082 } 2083 } 2084 } 2086 container oper { 2087 config "false"; 2089 description "BFD MPLS operational container"; 2091 uses bfd:bfd-session-statistics; 2093 list session-group { 2094 key "mpls-fec"; 2095 description 2096 "BFD MPLS group of sessions. A group of sessions is" + 2097 "for 1 FEC, each session has a different field in " + 2098 "UDP/IP hdr for ECMP."; 2100 leaf mpls-fec { 2101 type inet:ip-address; 2102 description "MPLS-FEC"; 2103 } 2104 list sessions { 2105 key "local-discriminator"; 2106 description 2107 "The BFD sessions for an MPLS FEC. Local " + 2108 "discriminator is unique for each session in the " + 2109 "group."; 2110 uses bfd:bfd-all-session; 2112 uses bfd-mpls:bfd-mpls-dest-address; 2113 } 2114 } 2116 } 2117 } 2118 } 2120 notification bfd-mpls-notification { 2121 description 2122 "Notification for BFD over MPLS FEC session state change. " + 2123 "An implementation may rate-limit notifications, e.g. when a" + 2124 "session is continuously changing state."; 2126 uses bfd:bfd-notification-parms; 2128 leaf mpls-dest-address { 2129 type inet:ip-address; 2130 description 2131 "Destination address as per RFC5884. 2132 Needed if IP encapsulation is used"; 2133 } 2134 } 2135 } 2136 2138 2.18. BFD over MPLS-TE Yang Module 2140 file "ietf-bfd-mpls-te@2017-03-07.yang" 2141 module ietf-bfd-mpls-te { 2142 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; 2143 // replace with IANA namespace when assigned 2144 prefix "bfd-mpls-te"; 2146 import ietf-bfd { 2147 prefix "bfd"; 2149 } 2151 import ietf-bfd-mpls { 2152 prefix "bfd-mpls"; 2153 } 2155 import ietf-te { 2156 prefix "te"; 2157 } 2159 import ietf-routing { 2160 prefix "rt"; 2161 } 2163 organization "IETF BFD Working Group"; 2165 contact 2166 "WG Web: 2167 WG List: 2168 WG Chair: Jeff Haas 2169 WG Chair: Reshad Rahman 2170 Editor: Lianshu Zheng and Reshad Rahman"; 2172 description 2173 "This module contains the YANG definition for BFD parameters for 2174 MPLS Traffic Engineering as per RFC5884. 2176 Copyright (c) 2017 IETF Trust and the persons 2177 identified as authors of the code. All rights reserved. 2179 Redistribution and use in source and binary forms, with or 2180 without modification, is permitted pursuant to, and subject 2181 to the license terms contained in, the Simplified BSD License 2182 set forth in Section 4.c of the IETF Trust's Legal Provisions 2183 Relating to IETF Documents 2184 (http://trustee.ietf.org/license-info). 2186 This version of this YANG module is part of RFC XXXX; see 2187 the RFC itself for full legal notices."; 2189 revision 2017-03-07 { 2190 description "Initial revision."; 2191 reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; 2192 } 2194 // RFC Ed.: replace XXXX with actual RFC number and remove this 2195 // note 2196 augment "/rt:routing/rt:control-plane-protocols/" 2197 + "rt:control-plane-protocol/bfd:bfd" { 2198 description "BFD augmentation for MPLS-TE"; 2199 container mpls-te { 2200 description "BFD MPLS-TE top level container"; 2202 container config { 2203 description "BFD MPLS-TE configuration container"; 2205 container egress { 2206 description "Egress configuration"; 2208 uses bfd:bfd-grouping-base-cfg-parms; 2210 uses bfd:bfd-auth-parms; 2211 } 2212 } 2214 container oper { 2215 config "false"; 2216 description "BFD operational container"; 2217 uses bfd:bfd-session-statistics; 2218 } 2219 } 2220 } 2222 augment "/te:te/te:tunnels/te:tunnel/te:config" { 2223 description "BFD configuration on MPLS-TE tunnel."; 2225 uses bfd:bfd-grouping-common-cfg-parms; 2227 uses bfd-mpls:bfd-encap-cfg; 2228 } 2230 augment "/te:te/te:lsps-state/te:lsp" { 2231 when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { 2232 description "BFD information not needed at transit points"; 2233 } 2234 description "BFD state information on MPLS-TE LSP."; 2236 uses bfd:bfd-all-session; 2238 uses bfd-mpls:bfd-mpls-dest-address; 2239 } 2241 notification bfd-mpls-te-notification { 2242 description 2243 "Notification for BFD over MPLS-TE session state change. " + 2244 "An implementation may rate-limit notifications, e.g. when a" + 2245 "session is continuously changing state."; 2247 uses bfd:bfd-notification-parms; 2249 uses bfd-mpls:bfd-mpls-dest-address; 2251 leaf tunnel-name { 2252 type string; 2253 description "MPLS-TE tunnel on which BFD was running."; 2254 } 2255 } 2256 } 2257 2259 2.19. Security Considerations 2261 The YANG module defined in this memo is designed to be accessed via 2262 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2263 secure transport layer and the mandatory to implement secure 2264 transport is SSH [RFC6242]. The NETCONF access control model 2265 [RFC6536] provides the means to restrict access for particular 2266 NETCONF users to a pre-configured subset of all available NETCONF 2267 protocol operations and content. 2269 The YANG module has writeable data nodes which can be used for 2270 creation of BFD sessions and modification of BFD session parameters. 2271 The system should "police" creation of BFD sessions to prevent new 2272 sessions from causing existing BFD sessions to fail. For BFD session 2273 modification, the BFD protocol has mechanisms in place which allow 2274 for in service modification. 2276 2.20. IANA Considerations 2278 The IANA is requested to as assign a new new namespace URI from the 2279 IETF XML registry. 2281 URI:TBD 2283 2.21. Acknowledgements 2285 We would also like to thank Nobo Akiya and Jeff Haas for their 2286 encouragement on this work. We would also like to thank Rakesh 2287 Gandhi and Tarek Saad for their help on the MPLS-TE model. We would 2288 also like to thank Acee Lindem for his guidance. 2290 3. References 2292 3.1. Normative References 2294 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2295 Requirement Levels", BCP 14, RFC 2119, 2296 DOI 10.17487/RFC2119, March 1997, 2297 . 2299 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 2300 "MPLS Generic Associated Channel", RFC 5586, 2301 DOI 10.17487/RFC5586, June 2009, 2302 . 2304 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2305 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 2306 . 2308 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2309 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 2310 DOI 10.17487/RFC5881, June 2010, 2311 . 2313 [RFC5882] Katz, D. and D. Ward, "Generic Application of 2314 Bidirectional Forwarding Detection (BFD)", RFC 5882, 2315 DOI 10.17487/RFC5882, June 2010, 2316 . 2318 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2319 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 2320 June 2010, . 2322 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 2323 "Bidirectional Forwarding Detection (BFD) for MPLS Label 2324 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 2325 June 2010, . 2327 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 2328 Forwarding Detection (BFD) for the Pseudowire Virtual 2329 Circuit Connectivity Verification (VCCV)", RFC 5885, 2330 DOI 10.17487/RFC5885, June 2010, 2331 . 2333 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2334 the Network Configuration Protocol (NETCONF)", RFC 6020, 2335 DOI 10.17487/RFC6020, October 2010, 2336 . 2338 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2339 and A. Bierman, Ed., "Network Configuration Protocol 2340 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2341 . 2343 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 2344 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 2345 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 2346 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 2347 2014, . 2349 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 2350 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 2351 . 2353 [RFC7277] Bjorklund, M., "A YANG Data Model for IP Management", 2354 RFC 7277, DOI 10.17487/RFC7277, June 2014, 2355 . 2357 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 2358 Management", RFC 8022, DOI 10.17487/RFC8022, November 2359 2016, . 2361 3.2. Informative References 2363 [I-D.ietf-lime-yang-connectionless-oam] 2364 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 2365 "Generic YANG Data Model for Connectionless Operations, 2366 Administration, and Maintenance(OAM) protocols", draft- 2367 ietf-lime-yang-connectionless-oam-04 (work in progress), 2368 February 2017. 2370 [I-D.ietf-mpls-base-yang] 2371 Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., 2372 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 2373 Model for MPLS Base", draft-ietf-mpls-base-yang-02 (work 2374 in progress), March 2017. 2376 [I-D.ietf-netconf-restconf] 2377 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2378 Protocol", draft-ietf-netconf-restconf-18 (work in 2379 progress), October 2016. 2381 [I-D.ietf-netmod-routing-cfg] 2382 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 2383 Management", draft-ietf-netmod-routing-cfg-25 (work in 2384 progress), November 2016. 2386 [I-D.ietf-netmod-schema-mount] 2387 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 2388 ietf-netmod-schema-mount-04 (work in progress), March 2389 2017. 2391 [I-D.ietf-rtgwg-device-model] 2392 Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps, 2393 "Network Device YANG Organizational Models", draft-ietf- 2394 rtgwg-device-model-01 (work in progress), October 2016. 2396 [I-D.ietf-rtgwg-lne-model] 2397 Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, 2398 "YANG Logical Network Elements", draft-ietf-rtgwg-lne- 2399 model-01 (work in progress), October 2016. 2401 [I-D.ietf-rtgwg-ni-model] 2402 Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, 2403 "YANG Network Instances", draft-ietf-rtgwg-ni-model-01 2404 (work in progress), October 2016. 2406 [I-D.ietf-rtgwg-yang-key-chain] 2407 Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. 2408 Yang, "Routing Key Chain YANG Data Model", draft-ietf- 2409 rtgwg-yang-key-chain-15 (work in progress), February 2017. 2411 [I-D.ietf-teas-yang-te] 2412 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 2413 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 2414 Model for Traffic Engineering Tunnels and Interfaces", 2415 draft-ietf-teas-yang-te-05 (work in progress), October 2416 2016. 2418 Appendix A. Change log 2420 RFC Editor: Remove this section upon publication as an RFC. 2422 A.1. Changes between versions -04 and -05 2424 o "bfd" node in augment of control-plane-protocol as per [RFC8022]. 2426 o Removed augment of network-instance. Replaced by schema-mount. 2428 o Added information on interaction with other YANG modules. 2430 A.2. Changes between versions -03 and -04 2432 o Updated author information. 2434 o Fixed YANG compile error in ietf-bfd-lag.yang which was due to 2435 incorrect when statement. 2437 A.3. Changes between versions -02 and -03 2439 o Fixed YANG compilation warning due to incorrect revision date in 2440 ietf-bfd-ip-sh module. 2442 A.4. Changes between versions -01 and -02 2444 o Replace routing-instance, which has been removed from 2445 [I-D.ietf-netmod-routing-cfg], with network-instance from 2446 [I-D.ietf-rtgwg-ni-model] 2448 A.5. Changes between versions -00 and -01 2450 o Remove BFD configuration parameters from BFD clients, all BFD 2451 configuration parameters in BFD 2453 o YANG module split in multiple YANG modules (one per type of 2454 forwarding path) 2456 o For BFD over MPLS-TE we augment MPLS-TE model 2458 o For BFD authentication we now use key-chain in 2459 [I-D.ietf-rtgwg-yang-key-chain] 2461 Authors' Addresses 2463 Reshad Rahman (editor) 2464 Cisco Systems 2465 Canada 2467 Email: rrahman@cisco.com 2469 Lianshu Zheng (editor) 2470 Huawei Technologies 2471 China 2473 Email: vero.zheng@huawei.com 2474 Santosh Pallagatti 2475 India 2477 Email: santosh.pallagatti@gmail.com 2479 Mahesh Jethanandani 2480 Cisco Systems 2482 Email: mjethanandani@gmail.com 2484 Greg Mirsky 2485 ZTE Corporation 2487 Email: gregimirsky@gmail.com