idnits 2.17.00 (12 Aug 2021) /tmp/idnits61541/draft-ietf-bfd-yang-04.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 509 has weird spacing: '...nterval uin...' == Line 527 has weird spacing: '...ce-addr ine...' == Line 593 has weird spacing: '...nterval uin...' == Line 710 has weird spacing: '...nterval uin...' == Line 732 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 (January 8, 2017) is 1958 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 2200, but not defined == Missing Reference: 'RFC6536' is mentioned on line 2201, but not defined ** Obsolete undefined reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: draft-ietf-netconf-restconf has been published as RFC 8040 == Outdated reference: draft-ietf-netmod-routing-cfg has been published as RFC 8022 == Outdated reference: draft-ietf-rtgwg-ni-model has been published as RFC 8529 == Outdated reference: draft-ietf-rtgwg-yang-key-chain has been published as RFC 8177 == Outdated reference: A later version (-29) exists of draft-ietf-teas-yang-te-05 Summary: 1 error (**), 0 flaws (~~), 15 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group L. Zheng, Ed. 3 Internet-Draft Huawei Technologies 4 Intended status: Standards Track R. Rahman, Ed. 5 Expires: July 12, 2017 Cisco Systems 6 S. Pallagatti 8 M. Jethanandani 9 Cisco Systems 10 G. Mirsky 11 Ericsson 12 January 8, 2017 14 Yang Data Model for Bidirectional Forwarding Detection (BFD) 15 draft-ietf-bfd-yang-04.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 July 12, 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 . . . . . . . . . . 6 70 2.1.5. MPLS Label Switched Paths . . . . . . . . . . . . . . 7 71 2.1.6. Link Aggregation Groups . . . . . . . . . . . . . . . 7 72 2.2. Design of Operational Model . . . . . . . . . . . . . . . 7 73 2.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 74 2.4. RPC Operations . . . . . . . . . . . . . . . . . . . . . 8 75 2.5. BFD top level hierarchy . . . . . . . . . . . . . . . . . 8 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.13. BFD top-level Yang Module . . . . . . . . . . . . . . . . 19 84 2.14. BFD IP single-hop Yang Module . . . . . . . . . . . . . . 31 85 2.15. BFD IP multi-hop Yang Module . . . . . . . . . . . . . . 34 86 2.16. BFD over LAG Yang Module . . . . . . . . . . . . . . . . 37 87 2.17. BFD over MPLS Yang Module . . . . . . . . . . . . . . . . 41 88 2.18. BFD over MPLS-TE Yang Module . . . . . . . . . . . . . . 44 89 2.19. Security Considerations . . . . . . . . . . . . . . . . . 47 90 2.20. IANA Considerations . . . . . . . . . . . . . . . . . . . 47 91 2.21. Acknowledgements . . . . . . . . . . . . . . . . . . . . 47 92 3. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 93 3.1. Normative References . . . . . . . . . . . . . . . . . . 47 94 3.2. Informative References . . . . . . . . . . . . . . . . . 48 95 Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 49 96 A.1. Changes between versions -03 and -04 . . . . . . . . . . 49 97 A.2. Changes between versions -02 and -03 . . . . . . . . . . 49 98 A.3. Changes between versions -01 and -02 . . . . . . . . . . 49 99 A.4. Changes between versions -00 and -01 . . . . . . . . . . 50 100 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 102 1. Introduction 104 YANG [RFC6020] is a data definition language that was introduced to 105 define the contents of a conceptual data store that allows networked 106 devices to be managed using NETCONF [RFC6241]. YANG is proving 107 relevant beyond its initial confines, as bindings to other interfaces 108 (e.g RESTCONF [I-D.ietf-netconf-restconf]) and encodings other than 109 XML (e.g JSON) are being defined. Furthermore, YANG data models can 110 be used as the basis of implementation for other interfaces, such as 111 CLI and programmatic APIs. 113 This document defines a YANG data model that can be used to configure 114 and manage Bidirectional Forwarding Detection (BFD)[RFC5880]. BFD is 115 a network protocol which is used for liveness detection of arbitrary 116 paths between systems. Some examples of different types of paths 117 over which we have BFD: 119 1) Two systems directly connected via IP. This is known as BFD over 120 single-hop IP [RFC5881] 122 2) Two systems connected via multiple hops [RFC5883] 124 3) Two systems connected via MPLS Label Switched Paths (LSPs) 125 [RFC5884] 127 4) Two systems connected via pseudowires (PWs), this is known as 128 Virtual Circuit Connectivity Verification (VCCV) [RFC5885] 130 5) Two systems connected via a Link Aggregation Group (LAG) interface 131 [RFC7130] 133 BFD typically does not operate on its own. Various control 134 protocols, also known as BFD clients, use the services provided by 135 BFD for their own operation [RFC5882]. The obvious candidates which 136 use BFD are those which do not have Hellos to detect failures, e.g. 137 static routes, and routing protocols whose Hellos do not support sub- 138 second failure detection, e.g. OSPF and IS-IS. 140 1.1. Contributors 142 2. Design of the Data Model 144 Since BFD is used for liveliness detection of various forwarding 145 paths, there is no uniform key to identify a BFD session. So the BFD 146 data model is split in multiple YANG modules where each module 147 corresponds to one type of forwarding path. For example, BFD for IP 148 single-hop is in one YANG module and BFD for MPLS-TE is in another 149 YANG module. The main difference between these modules is how a BFD 150 session is uniquely identified, i.e the key for the list containing 151 the BFD sessions for that forwarding path. To avoid duplication of 152 BFD definitions, we have common types and groupings which are used by 153 all the modules. 155 The new top-level container "bfd" is augmented by all the YANG 156 modules for their respective specific information. 158 The "network-instance" data node in [I-D.ietf-rtgwg-ni-model] has 159 been augmented with the "bfd" data node. Where appropriate for 160 specific types of forwarding path, the respective BFD YANG modules 161 follow a VRF-centric model by augmenting that new "bfd" node under 162 "network-instance". 164 Each node in every "bfd" sub-tree has a "config" node and an "oper" 165 node. 167 2.1. Design of Configuration Model 169 The configuration model consists mainly of the parameters specified 170 in [RFC5880]. Some examples are desired minimum transmit interval, 171 required minimum receive interval, detection multiplier, etc 173 Some implementations have BFD session configuration under the BFD 174 clients. For example, BFD session configuration is under routing 175 applications such as OSPF, IS-IS, BGP etc. Other implementations 176 have BFD session configuration centralized under BFD, i.e. outside 177 the multiple BFD clients. 179 The BFD parameters of interest to a BFD client are mainly the 180 multiplier and interval(s) since those parameters impact the 181 convergence time of the BFD clients when a failure occurs. Other 182 parameters such as BFD authentication are not specific to the 183 requirements of the BFD client. To avoid splitting the BFD 184 configuration between BFD clients and BFD, all the configuration is 185 under BFD. The only BFD configuration under BFD clients should be an 186 "enable" knob which makes those clients react to BFD liveliness 187 detection events. 189 2.1.1. Common BFD configuration parameters 191 The basic BFD configuration parameters are: 193 local-multiplier 194 This is the detection time multiplier as defined in 195 [RFC5880]. 197 desired-min-tx-interval 198 This is the Desired Min TX Interval as defined in [RFC5880]. 200 required-min-rx-interval 201 This is the Required Min RX Interval as defined in [RFC5880]. 203 Although [RFC5880] allows for different values for transmit and 204 receive intervals, some implementations allow users to specify just 205 one interval which is used for both transmit and receive intervals or 206 separate values for transmit and receive intervals. The BFD YANG 207 model supports this: there is a choice between "min-interval", used 208 for both transmit and receive intervals, and "desired-min-tx- 209 interval" and "required-min-rx-interval". This is supported via a 210 grouping which is used by the YANG modules for the various forwarding 211 paths. There are also intervals for the echo function (if 212 supported): 214 desired-min-echo-tx-interval 215 This is the minimum interval that the local system would like 216 to use when transmitting BFD echo packets. If 0, the echo 217 function as defined in [RFC5880] is disabled. 219 required-min-echo-rx-interval 220 This is the Required Min Echo RX Interval as defined in 221 [RFC5880]. 223 For BFD authentication we have: 225 key-chain 226 This is a reference to key-chain defined in 227 [I-D.ietf-rtgwg-yang-key-chain]. The keys, cryptographic 228 algotihms, key lifetime etc are all defined in the key-chain 229 model. 231 replay-protection 232 This specifies meticulous v/s non-meticulous mode as per 233 [RFC5880]. 235 2.1.2. Single-hop IP 237 For single-hop IP, there is an augment of the "bfd" data node under 238 "network-instance" in Section 2. We have a list of IP single-hop 239 sessions where each session is uniquely identified by the interface 240 and destination address pair. For the configuration parameters we 241 use what is defined in Section 2.1.1 243 2.1.3. Multi-hop IP 245 For multi-hop IP, there is an augment of the "bfd" data node under 246 "network-instance" in Section 2. 248 We have a list for BFD sessions over multi-hop IP. The key consists 249 of: 251 source address 252 Address belonging to the local system as per [RFC5883] 254 destination address 255 Address belonging to the remote system as per [RFC5883] 257 Since we are following a VRF-centric model we do not need a VRF field 258 in the key. 260 For the configuration parameters we use what is defined in 261 Section 2.1.1 263 Here are some extra parameters: 265 tx-ttl 266 TTL of outgoing BFD control packets. 268 rx-ttl 269 Minimum TTL of incoming BFD control packets. 271 2.1.4. MPLS Traffic Engineering Tunnels 273 For MPLS-TE tunnels, BFD is configured under the MPLS-TE tunnel since 274 the desired failure detection parameters is a property of the MPLS-TE 275 tunnel. This is achieved by augmenting the MPLS-TE data model in 276 [I-D.ietf-teas-yang-te]. For BFD parameters which are specific to 277 the TE application, e.g. whether to tear down the tunnel in the event 278 of a BFD session failure, these parameters will be defined in the 279 YANG model of the MPLS-TE application. 281 On top of the usual BFD parameters, we have the following per MPLS-TE 282 tunnel: 284 encap 285 Encapsulation for the BFD packets: choice between IP, G-ACh 286 and IP with G-ACh as per [RFC5586] 288 For general MPLS-TE data, "mpls-te" data node is added under the top- 289 level "bfd" node in Section 2. Since some MPLS-TE tunnels are uni- 290 directional there is no MPLS-TE configuration for these tunnels on 291 the egress node (note that this does not apply to bi-directional 292 MPLS-TP tunnels). The BFD parameters for the egress node are added 293 under "mpls-te". 295 2.1.5. MPLS Label Switched Paths 297 Here we address MPLS LSPs whose FEC is an IP address. The top-level 298 "bfd" node in Section 2 is augmented with "mpls" which contains a 299 list of sessions uniquely identified by an IP address. 301 Since these LSPs are uni-directional there is no LSP configuration on 302 the egress node. The BFD parameters for the egress node are added 303 under "mpls". 305 2.1.6. Link Aggregation Groups 307 Per [RFC7130], configuring BFD on LAG consists of having micro-BFD 308 sessions on each LAG member link. Since the BFD parameters are an 309 attribute of the LAG, they should be under the LAG. However there is 310 no LAG YANG model which we can augment. So a "lag" data node is 311 added to the top-level "bfd" node in Section 2, the configuration is 312 per-LAG: we have a list of LAGs. The destination IP address of the 313 micro-BFD sessions is configured per-LAG and per address-family (IPv4 314 and IPv6) 316 2.2. Design of Operational Model 318 The operational model contains both the overall statistics of BFD 319 sessions running on the device and the per session operational 320 information. 322 The overall statistics of BFD sessions consist of number of BFD 323 sessions, number of BFD sessions up etc. This information is 324 available globally (i.e. for all BFD sessions) under the top level 325 "bfd" node in Section 2 and also per type of forwarding path. 327 For each BFD session, mainly three categories of operational items 328 are shown. The fundamental information of a BFD session such as the 329 local discriminator, remote discriminator and the capability of 330 supporting demand detect mode are shown in the first category. The 331 second category includes a BFD session running information, e.g. the 332 remote BFD state and the diagnostic code received. Another example 333 is the actual transmit interval between the control packets, which 334 may be different from the desired minimum transmit interval 335 configured, is shown in this category. Similar examples are actual 336 received interval between the control packets and the actual transmit 337 interval between the echo packets. The third category contains the 338 detailed statistics of the session, e.g. when the session 339 transitioned up/down and how long it has been in that state. 341 For some session types, there may be more than 1 session on the 342 virtual path to the destination. For example, with IP multi-hop 343 there could be multiple BFD sessions from the source to the same 344 destination to test the various paths (ECMP) to the destination. 345 Each of the BFD sessions on the same virtual path is uniquely 346 identified by the local discriminator. 348 2.3. Notifications 350 This YANG model defines notifications to inform clients of BFD of 351 important events detected during the protocol operation. Pair of 352 local and remote discriminator identifies a BFD session on local 353 system. Notifications also give more important details about BFD 354 sessions; e.g. new state, time in previous state, network-instance 355 and the reason that the BFD session state changed. The notifications 356 are defined for each type of forwarding path but use groupings for 357 common information. 359 2.4. RPC Operations 361 TBD 363 2.5. BFD top level hierarchy 365 At the top level there is no configuration data, only operational 366 data. The operational data consist of overall BFD session statistics 367 globally and per network-instance 368 module: ietf-bfd 369 +--rw bfd! 370 +--rw config 371 +--ro oper 372 +--ro bfd-session-statistics 373 +--ro session-count? uint32 374 +--ro session-up-count? uint32 375 +--ro session-down-count? uint32 376 +--ro session-admin-down-count? uint32 377 augment /ni:network-instances/ni:network-instance: 378 +--rw bfd! 379 +--rw config 380 +--ro oper 381 +--ro bfd-session-statistics 382 +--ro session-count? uint32 383 +--ro session-up-count? uint32 384 +--ro session-down-count? uint32 385 +--ro session-admin-down-count? uint32 387 2.6. BFD IP single-hop hierarchy 389 The configuration and operational data for each BFD IP single-hop 390 session is under "ip-sh" node under network-instance. Overall BFD IP 391 single-hop session statistics are available per network-instance and 392 globally (for all network instances). 394 module: ietf-bfd-ip-sh 395 augment /bfd:bfd: 396 +--rw ip-sh 397 +--rw config 398 +--ro oper 399 +--ro bfd-session-statistics 400 +--ro session-count? uint32 401 +--ro session-up-count? uint32 402 +--ro session-down-count? uint32 403 +--ro session-admin-down-count? uint32 404 augment /ni:network-instances/ni:network-instance/bfd:bfd: 405 +--rw ip-sh 406 +--rw config 407 | +--rw session-cfg 408 | +--rw sessions* [interface dest-addr] 409 | +--rw interface if:interface-ref 410 | +--rw dest-addr inet:ip-address 411 | +--rw source-addr? inet:ip-address 412 | +--rw local-multiplier? bfd-multiplier 413 | +--rw (interval-config-type)? 414 | | +--:(tx-rx-intervals) 415 | | | +--rw desired-min-tx-interval uint32 416 | | | +--rw required-min-rx-interval uint32 417 | | +--:(single-interval) 418 | | +--rw min-interval uint32 419 | +--rw demand-enabled? boolean 420 | +--rw admin-down? boolean 421 | +--rw authentication-parms! {bfd-authentication}? 422 | | +--rw key-chain? kc:key-chain-ref 423 | | +--rw replay-protection? identityref 424 | +--rw desired-min-echo-tx-interval? uint32 425 | +--rw required-min-echo-rx-interval? uint32 426 +--ro oper 427 +--ro bfd-session-statistics 428 | +--ro session-count? uint32 429 | +--ro session-up-count? uint32 430 | +--ro session-down-count? uint32 431 | +--ro session-admin-down-count? uint32 432 +--ro sessions* [interface dest-addr] 433 +--ro interface if:interface-ref 434 +--ro dest-addr inet:ip-address 435 +--ro source-addr? inet:ip-address 436 +--ro path-type? identityref 437 +--ro local-discriminator? bfd-discriminator 438 +--ro remote-discriminator? bfd-discriminator 439 +--ro remote-multiplier? bfd-multiplier 440 +--ro out-interface? if:interface-ref 441 +--ro demand-capability? boolean 442 +--ro source-port? inet:port-number 443 +--ro dest-port? inet:port-number 444 +--ro session-running 445 | +--ro session-index? uint32 446 | +--ro local-state? bfd-state 447 | +--ro remote-state? bfd-state 448 | +--ro local-diagnostic? bfd-diagnostic 449 | +--ro remote-diagnostic? bfd-diagnostic 450 | +--ro detection-mode? enumeration 451 | +--ro negotiated-tx-interval? uint32 452 | +--ro negotiated-rx-interval? uint32 453 | +--ro echo-tx-interval-in-use? uint32 454 | +--ro detection-time? uint32 455 +--ro sesssion-statistics 456 +--ro create-time? yang:date-and-time 457 +--ro last-down-time? yang:date-and-time 458 +--ro last-up-time? yang:date-and-time 459 +--ro down-count? uint32 460 +--ro admin-down-count? uint32 461 +--ro receive-packet-count? uint64 462 +--ro send-packet-count? uint64 463 +--ro receive-bad-packet? uint64 464 +--ro send-failed-packet? uint64 465 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 The configuration and operational data for each BFD IP multi-hop 482 session is under "ip-mh" node under network-instance. In the 483 operational model we support multiple BFD multi-hop sessions per 484 remote address (ECMP), the local discriminator is used as key. 485 Overall BFD IP multi-hop session statistics are available per 486 network-instance and globally (for all network instances). 488 module: ietf-bfd-ip-mh 489 augment /bfd:bfd: 490 +--rw ip-mh 491 +--rw config 492 +--ro oper 493 +--ro bfd-session-statistics 494 +--ro session-count? uint32 495 +--ro session-up-count? uint32 496 +--ro session-down-count? uint32 497 +--ro session-admin-down-count? uint32 498 augment /ni:network-instances/ni:network-instance/bfd:bfd: 499 +--rw ip-mh 500 +--rw config 501 | +--rw session-cfg 502 | +--rw sessions* [source-addr dest-addr] 503 | +--rw source-addr inet:ip-address 504 | +--rw dest-addr inet:ip-address 505 | +--rw local-multiplier? bfd-multiplier 506 | +--rw (interval-config-type)? 507 | | +--:(tx-rx-intervals) 508 | | | +--rw desired-min-tx-interval uint32 509 | | | +--rw required-min-rx-interval uint32 510 | | +--:(single-interval) 511 | | +--rw min-interval uint32 512 | +--rw demand-enabled? boolean 513 | +--rw admin-down? boolean 514 | +--rw authentication-parms! {bfd-authentication}? 515 | | +--rw key-chain? kc:key-chain-ref 516 | | +--rw replay-protection? identityref 517 | +--rw tx-ttl? bfd:ttl 518 | +--rw rx-ttl bfd:ttl 519 +--ro oper 520 +--ro bfd-session-statistics 521 | +--ro bfd-session-statistics 522 | +--ro session-count? uint32 523 | +--ro session-up-count? uint32 524 | +--ro session-down-count? uint32 525 | +--ro session-admin-down-count? uint32 526 +--ro session-group* [source-addr dest-addr] 527 +--ro source-addr inet:ip-address 528 +--ro dest-addr inet:ip-address 529 +--ro sessions* [local-discriminator] 530 +--ro ttl? bfd:ttl 531 +--ro path-type? identityref 532 +--ro local-discriminator bfd-discriminator 533 +--ro remote-discriminator? bfd-discriminator 534 +--ro remote-multiplier? bfd-multiplier 535 +--ro out-interface? if:interface-ref 536 +--ro demand-capability? boolean 537 +--ro source-port? inet:port-number 538 +--ro dest-port? inet:port-number 539 +--ro session-running 540 | +--ro session-index? uint32 541 | +--ro local-state? bfd-state 542 | +--ro remote-state? bfd-state 543 | +--ro local-diagnostic? bfd-diagnostic 544 | +--ro remote-diagnostic? bfd-diagnostic 545 | +--ro detection-mode? enumeration 546 | +--ro negotiated-tx-interval? uint32 547 | +--ro negotiated-rx-interval? uint32 548 | +--ro echo-tx-interval-in-use? uint32 549 | +--ro detection-time? uint32 550 +--ro sesssion-statistics 551 +--ro create-time? yang:date-and-time 552 +--ro last-down-time? yang:date-and-time 553 +--ro last-up-time? yang:date-and-time 554 +--ro down-count? uint32 555 +--ro admin-down-count? uint32 556 +--ro receive-packet-count? uint64 557 +--ro send-packet-count? uint64 558 +--ro receive-bad-packet? uint64 559 +--ro send-failed-packet? uint64 561 notifications: 562 +---n bfd-multihop-notification 563 +--ro local-discr? bfd-discriminator 564 +--ro remote-discr? bfd-discriminator 565 +--ro new-state? bfd-state 566 +--ro state-change-reason? string 567 +--ro time-in-previous-state? string 568 +--ro dest-addr? inet:ip-address 569 +--ro source-addr? inet:ip-address 570 +--ro session-index? uint32 571 +--ro path-type? identityref 572 +--ro network-instance? string 574 2.8. BFD over LAG hierarchy 576 The configuration and operational data for each BFD LAG session is 577 under "lag" node. Overall BFD LAG session statistics are available 578 globally. 580 module: ietf-bfd-lag 581 augment /bfd:bfd: 582 +--rw lag 583 +--rw config 584 | +--rw session-cfg 585 | +--rw sessions* [lag-name] 586 | +--rw lag-name if:interface-ref 587 | +--rw ipv4-dest-addr? inet:ipv4-address 588 | +--rw ipv6-dest-addr? inet:ipv6-address 589 | +--rw local-multiplier? bfd-multiplier 590 | +--rw (interval-config-type)? 591 | | +--:(tx-rx-intervals) 592 | | | +--rw desired-min-tx-interval uint32 593 | | | +--rw required-min-rx-interval uint32 594 | | +--:(single-interval) 595 | | +--rw min-interval uint32 596 | +--rw demand-enabled? boolean 597 | +--rw admin-down? boolean 598 | +--rw authentication-parms! {bfd-authentication}? 599 | +--rw key-chain? kc:key-chain-ref 600 | +--rw replay-protection? identityref 601 +--ro oper 602 +--ro micro-bfd-ipv4-session-statistics 603 | +--ro bfd-session-statistics 604 | +--ro session-count? uint32 605 | +--ro session-up-count? uint32 606 | +--ro session-down-count? uint32 607 | +--ro session-admin-down-count? uint32 608 +--ro micro-bfd-ipv6-session-statistics 609 | +--ro bfd-session-statistics 610 | +--ro session-count? uint32 611 | +--ro session-up-count? uint32 612 | +--ro session-down-count? uint32 613 | +--ro session-admin-down-count? uint32 614 +--ro session-lag* [lag-name] 615 +--ro lag-name if:interface-ref 616 +--ro use-ipv4? boolean 617 +--ro use-ipv6? boolean 618 +--ro member-links* [member-link] 619 +--ro member-link if:interface-ref 620 +--ro micro-bfd-ipv4 621 | +--ro path-type? identityref 622 | +--ro local-discriminator? bfd-discriminator 623 | +--ro remote-discriminator? bfd-discriminator 624 | +--ro remote-multiplier? bfd-multiplier 625 | +--ro out-interface? if:interface-ref 626 | +--ro demand-capability? boolean 627 | +--ro source-port? inet:port-number 628 | +--ro dest-port? inet:port-number 629 | +--ro session-running 630 | | +--ro session-index? uint32 631 | | +--ro local-state? bfd-state 632 | | +--ro remote-state? bfd-state 633 | | +--ro local-diagnostic? bfd-diagnostic 634 | | +--ro remote-diagnostic? bfd-diagnostic 635 | | +--ro detection-mode? enumeration 636 | | +--ro negotiated-tx-interval? uint32 637 | | +--ro negotiated-rx-interval? uint32 638 | | +--ro echo-tx-interval-in-use? uint32 639 | | +--ro detection-time? uint32 640 | +--ro sesssion-statistics 641 | +--ro create-time? yang:date-and-time 642 | +--ro last-down-time? yang:date-and-time 643 | +--ro last-up-time? yang:date-and-time 644 | +--ro down-count? uint32 645 | +--ro admin-down-count? uint32 646 | +--ro receive-packet-count? uint64 647 | +--ro send-packet-count? uint64 648 | +--ro receive-bad-packet? uint64 649 | +--ro send-failed-packet? uint64 650 +--ro micro-bfd-ipv6 651 +--ro path-type? identityref 652 +--ro local-discriminator? bfd-discriminator 653 +--ro remote-discriminator? bfd-discriminator 654 +--ro remote-multiplier? bfd-multiplier 655 +--ro out-interface? if:interface-ref 656 +--ro demand-capability? boolean 657 +--ro source-port? inet:port-number 658 +--ro dest-port? inet:port-number 659 +--ro session-running 660 | +--ro session-index? uint32 661 | +--ro local-state? bfd-state 662 | +--ro remote-state? bfd-state 663 | +--ro local-diagnostic? bfd-diagnostic 664 | +--ro remote-diagnostic? bfd-diagnostic 665 | +--ro detection-mode? enumeration 666 | +--ro negotiated-tx-interval? uint32 667 | +--ro negotiated-rx-interval? uint32 668 | +--ro echo-tx-interval-in-use? uint32 669 | +--ro detection-time? uint32 670 +--ro sesssion-statistics 671 +--ro create-time? yang:date-and-time 672 +--ro last-down-time? yang:date-and-time 673 +--ro last-up-time? yang:date-and-time 674 +--ro down-count? uint32 675 +--ro admin-down-count? uint32 676 +--ro receive-packet-count? uint64 677 +--ro send-packet-count? uint64 678 +--ro receive-bad-packet? uint64 679 +--ro send-failed-packet? uint64 680 notifications: 681 +---n bfd-lag-notification 682 +--ro local-discr? bfd-discriminator 683 +--ro remote-discr? bfd-discriminator 684 +--ro new-state? bfd-state 685 +--ro state-change-reason? string 686 +--ro time-in-previous-state? string 687 +--ro dest-addr? inet:ip-address 688 +--ro source-addr? inet:ip-address 689 +--ro session-index? uint32 690 +--ro path-type? identityref 691 +--ro lag-name? if:interface-ref 692 +--ro member-link? if:interface-ref 694 2.9. BFD over MPLS LSPs hierarchy 696 The configuration is per MPLS FEC under "mpls". In the operational 697 model we support multiple BFD sessions per MPLS FEC (ECMP), the local 698 discriminator is used as key. 700 module: ietf-bfd-mpls 701 module: ietf-bfd-mpls 702 augment /bfd:bfd: 703 +--rw mpls 704 +--rw config 705 | +--rw egress 706 | +--rw local-multiplier? bfd-multiplier 707 | +--rw (interval-config-type)? 708 | | +--:(tx-rx-intervals) 709 | | | +--rw desired-min-tx-interval uint32 710 | | | +--rw required-min-rx-interval uint32 711 | | +--:(single-interval) 712 | | +--rw min-interval uint32 713 | +--rw authentication-parms! {bfd-authentication}? 714 | +--rw key-chain? kc:key-chain-ref 715 | +--rw replay-protection? identityref 716 +--ro oper 717 +--ro bfd-session-statistics 718 +--ro session-count? uint32 719 +--ro session-up-count? uint32 720 +--ro session-down-count? uint32 721 +--ro session-admin-down-count? uint32 722 augment /ni:network-instances/ni:network-instance/bfd:bfd: 723 +--rw mpls 724 +--rw config 725 | +--rw session-cfg 726 | +--rw sessions* [mpls-fec] 727 | +--rw mpls-fec inet:ip-address 728 | +--rw local-multiplier? bfd-multiplier 729 | +--rw (interval-config-type)? 730 | | +--:(tx-rx-intervals) 731 | | | +--rw desired-min-tx-interval uint32 732 | | | +--rw required-min-rx-interval uint32 733 | | +--:(single-interval) 734 | | +--rw min-interval uint32 735 | +--rw demand-enabled? boolean 736 | +--rw admin-down? boolean 737 | +--rw authentication-parms! {bfd-authentication}? 738 | +--rw key-chain? kc:key-chain-ref 739 | +--rw replay-protection? identityref 740 +--ro oper 741 +--ro bfd-session-statistics 742 | +--ro session-count? uint32 743 | +--ro session-up-count? uint32 744 | +--ro session-down-count? uint32 745 | +--ro session-admin-down-count? uint32 746 +--ro session-group* [mpls-fec] 747 +--ro mpls-fec inet:ip-address 748 +--ro sessions* [local-discriminator] 749 +--ro path-type? identityref 750 +--ro local-discriminator bfd-discriminator 751 +--ro remote-discriminator? bfd-discriminator 752 +--ro remote-multiplier? bfd-multiplier 753 +--ro out-interface? if:interface-ref 754 +--ro demand-capability? boolean 755 +--ro source-port? inet:port-number 756 +--ro dest-port? inet:port-number 757 +--ro session-running 758 | +--ro session-index? uint32 759 | +--ro local-state? bfd-state 760 | +--ro remote-state? bfd-state 761 | +--ro local-diagnostic? bfd-diagnostic 762 | +--ro remote-diagnostic? bfd-diagnostic 763 | +--ro detection-mode? enumeration 764 | +--ro negotiated-tx-interval? uint32 765 | +--ro negotiated-rx-interval? uint32 766 | +--ro echo-tx-interval-in-use? uint32 767 | +--ro detection-time? uint32 768 +--ro sesssion-statistics 769 | +--ro create-time? yang:date-and-time 770 | +--ro last-down-time? yang:date-and-time 771 | +--ro last-up-time? yang:date-and-time 772 | +--ro down-count? uint32 773 | +--ro admin-down-count? uint32 774 | +--ro receive-packet-count? uint64 775 | +--ro send-packet-count? uint64 776 | +--ro receive-bad-packet? uint64 777 | +--ro send-failed-packet? uint64 778 +--ro mpls-dest-address? inet:ip-address 779 notifications: 780 +---n bfd-mpls-notification 781 +--ro local-discr? bfd-discriminator 782 +--ro remote-discr? bfd-discriminator 783 +--ro new-state? bfd-state 784 +--ro state-change-reason? string 785 +--ro time-in-previous-state? string 786 +--ro dest-addr? inet:ip-address 787 +--ro source-addr? inet:ip-address 788 +--ro session-index? uint32 789 +--ro path-type? identityref 790 +--ro network-instance? string 791 +--ro mpls-dest-address? inet:ip-address 793 2.10. BFD over MPLS-TE hierarchy 795 The MPLS-TE YANG model [I-D.ietf-teas-yang-te] is augmented. BFD is 796 configured per MPLS-TE tunnel, and BFD session operational data is 797 provided per MPLS-TE LSP. 799 module: ietf-bfd-mpls-te 800 augment /bfd:bfd: 802 +--rw mpls-te 803 +--rw config 804 | +--rw egress 805 | +--rw local-multiplier? bfd-multiplier 806 | +--rw (interval-config-type)? 807 | | +--:(tx-rx-intervals) 808 | | | +--rw desired-min-tx-interval uint32 809 | | | +--rw required-min-rx-interval uint32 810 | | +--:(single-interval) 811 | | +--rw min-interval uint32 812 | +--rw authentication-parms! {bfd-authentication}? 813 | +--rw key-chain? kc:key-chain-ref 814 | +--rw replay-protection? identityref 815 +--ro oper 816 +--ro bfd-session-statistics 817 +--ro session-count? uint32 818 +--ro session-up-count? uint32 819 +--ro session-down-count? uint32 820 +--ro session-admin-down-count? uint32 821 augment /te:te/te:tunnels/te:tunnel/te:config: 822 +--rw local-multiplier? bfd-multiplier 823 +--rw (interval-config-type)? 824 | +--:(tx-rx-intervals) 825 | | +--rw desired-min-tx-interval uint32 826 | | +--rw required-min-rx-interval uint32 827 | +--:(single-interval) 828 | +--rw min-interval uint32 829 +--rw demand-enabled? boolean 830 +--rw admin-down? boolean 831 +--rw authentication-parms! {bfd-authentication}? 832 | +--rw key-chain? kc:key-chain-ref 833 | +--rw replay-protection? identityref 834 +--rw encap? identityref 835 augment /te:te/te:lsps-state/te:lsp: 836 +--ro path-type? identityref 837 +--ro local-discriminator? bfd-discriminator 838 +--ro remote-discriminator? bfd-discriminator 839 +--ro remote-multiplier? bfd-multiplier 840 +--ro out-interface? if:interface-ref 841 +--ro demand-capability? boolean 842 +--ro source-port? inet:port-number 843 +--ro dest-port? inet:port-number 844 +--ro session-running 845 | +--ro session-index? uint32 846 | +--ro local-state? bfd-state 847 | +--ro remote-state? bfd-state 848 | +--ro local-diagnostic? bfd-diagnostic 849 | +--ro remote-diagnostic? bfd-diagnostic 850 | +--ro detection-mode? enumeration 851 | +--ro negotiated-tx-interval? uint32 852 | +--ro negotiated-rx-interval? uint32 853 | +--ro echo-tx-interval-in-use? uint32 854 | +--ro detection-time? uint32 855 +--ro sesssion-statistics 856 | +--ro create-time? yang:date-and-time 857 | +--ro last-down-time? yang:date-and-time 858 | +--ro last-up-time? yang:date-and-time 859 | +--ro down-count? uint32 860 | +--ro admin-down-count? uint32 861 | +--ro receive-packet-count? uint64 862 | +--ro send-packet-count? uint64 863 | +--ro receive-bad-packet? uint64 864 | +--ro send-failed-packet? uint64 865 +--ro mpls-dest-address? inet:ip-address 866 notifications: 867 +---n bfd-mpls-te-notification 868 +--ro local-discr? bfd-discriminator 869 +--ro remote-discr? bfd-discriminator 870 +--ro new-state? bfd-state 871 +--ro state-change-reason? string 872 +--ro time-in-previous-state? string 873 +--ro dest-addr? inet:ip-address 874 +--ro source-addr? inet:ip-address 875 +--ro session-index? uint32 876 +--ro path-type? identityref 877 +--ro mpls-dest-address? inet:ip-address 878 +--ro tunnel-name? string 880 2.11. Examples 882 2.12. Interaction with other YANG modules 884 TBD. 886 2.13. BFD top-level Yang Module 888 file "ietf-bfd@2016-07-04.yang" 889 module ietf-bfd { 890 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd"; 891 // replace with IANA namespace when assigned 892 prefix "bfd"; 894 import ietf-interfaces { 895 prefix "if"; 896 } 897 import ietf-inet-types { 898 prefix "inet"; 899 } 901 import ietf-yang-types { 902 prefix "yang"; 903 } 905 import ietf-routing { 906 prefix "rt"; 907 } 909 import ietf-network-instance { 910 prefix "ni"; 911 } 913 import ietf-key-chain { 914 prefix "kc"; 915 } 917 organization "IETF BFD Working Group"; 919 contact 920 "WG Web: 921 WG List: 922 WG Chair: Jeff Haas 923 WG Chair: Reshad Rahman 924 Editor: Lianshu Zheng and Reshad Rahman"; 926 description 927 "This module contains the YANG definition for BFD parameters as 928 per RFC5880."; 930 revision 2016-07-04 { 931 description "Initial revision."; 932 reference "RFC XXXX: A YANG data model for BFD"; 933 } 935 identity bfd { 936 base "rt:routing-protocol"; 937 description "BFD protocol"; 938 } 940 typedef bfd-discriminator { 941 type uint32 { 942 range 1..4294967295; 943 } 944 description "BFD discriminator"; 946 } 948 typedef bfd-diagnostic { 949 type enumeration { 950 enum none { 951 value 0; 952 description "None"; 953 } 954 enum controlExpiry { 955 value 1; 956 description "Control timer expiry"; 957 } 958 enum echoFailed { 959 value 2; 960 description "Echo failure"; 961 } 962 enum nborDown { 963 value 3; 964 description "Neighbor down"; 965 } 966 enum fwdingReset { 967 value 4; 968 description "Forwarding reset"; 969 } 970 enum pathDown { 971 value 5; 972 description "Path down"; 973 } 974 enum concPathDown { 975 value 6; 976 description "Concatenated path down"; 977 } 978 enum adminDown { 979 value 7; 980 description "Admin down"; 981 } 982 enum reverseConcPathDown { 983 value 8; 984 description "Reverse concatenated path down"; 985 } 986 } 987 description "BFD diagnostic"; 988 } 990 typedef bfd-state { 991 type enumeration { 992 enum adminDown { 993 value 0; 994 description "admindown"; 995 } 996 enum down { 997 value 1; 998 description "down"; 999 } 1000 enum init { 1001 value 2; 1002 description "init"; 1003 } 1004 enum up { 1005 value 3; 1006 description "up"; 1007 } 1008 } 1009 description "BFD state"; 1010 } 1012 typedef bfd-multiplier { 1013 type uint8 { 1014 range 1..255; 1015 } 1016 description "Multiplier"; 1017 } 1019 typedef ttl { 1020 type uint8 { 1021 range 1..255; 1022 } 1023 description "Time To Live"; 1024 } 1026 identity bfd-path-type { 1027 description 1028 "Base identity for BFD path type. The session type indicates 1029 the type of path on which BFD is running"; 1030 } 1031 identity bfd-path-ip-sh { 1032 base bfd-path-type; 1033 description "BFD on IP single hop"; 1034 } 1035 identity bfd-path-ip-mh { 1036 base bfd-path-type; 1037 description "BFD on IP multi hop"; 1038 } 1039 identity bfd-path-mpls-te { 1040 base bfd-path-type; 1041 description "BFD on MPLS Traffic Engineering"; 1043 } 1044 identity bfd-path-mpls-lsp { 1045 base bfd-path-type; 1046 description "BFD on MPLS Label Switched Path"; 1047 } 1048 identity bfd-path-lag { 1049 base bfd-path-type; 1050 description "Micro-BFD on LAG member links"; 1051 } 1053 identity bfd-encap-type { 1054 description 1055 "Base identity for BFD encapsulation type."; 1056 } 1057 identity bfd-encap-ip { 1058 base bfd-encap-type; 1059 description "BFD with IP encapsulation."; 1060 } 1062 feature bfd-authentication { 1063 description "BFD authentication supported"; 1064 } 1066 identity bfd-auth-replay-protection { 1067 description 1068 "Base identity for BFD authentication replay protection"; 1069 } 1070 identity bfd-auth-replay-protection-non-meticulous { 1071 base bfd-auth-replay-protection; 1072 description "Non-meticulous (see RFC5880)"; 1073 } 1074 identity bfd-auth-replay-protection-meticulous { 1075 base bfd-auth-replay-protection; 1076 description "Meticulous (see RFC5880)"; 1077 } 1079 grouping bfd-auth-parms { 1080 description 1081 "Grouping for BFD authentication parameters 1082 (see section 6.7 of RFC5880)."; 1083 container authentication-parms { 1084 if-feature bfd-authentication; 1085 presence 1086 "Enables BFD authentication (see section 6.7 of RFC5880)."; 1087 description "Parameters for BFD authentication"; 1089 leaf key-chain { 1090 type kc:key-chain-ref; 1091 description "Name of key-chain"; 1092 } 1094 leaf replay-protection { 1095 type identityref { 1096 base bfd-auth-replay-protection; 1097 } 1098 description 1099 "Protection against replays"; 1100 } 1101 } 1102 } 1104 grouping bfd-grouping-base-cfg-parms { 1105 description "BFD grouping for base config parameters"; 1106 leaf local-multiplier { 1107 type bfd-multiplier; 1108 default 3; 1109 description "Multiplier transmitted by local system"; 1110 } 1112 choice interval-config-type { 1113 description 1114 "Two interval values or 1 value used for both tx and rx"; 1115 case tx-rx-intervals { 1116 leaf desired-min-tx-interval { 1117 type uint32; 1118 units microseconds; 1119 mandatory true; 1120 description 1121 "Desired minimum transmit interval of control packets"; 1122 } 1124 leaf required-min-rx-interval { 1125 type uint32; 1126 units microseconds; 1127 mandatory true; 1128 description 1129 "Required minimum receive interval of control packets"; 1130 } 1131 } 1132 case single-interval { 1133 leaf min-interval { 1134 type uint32; 1135 units microseconds; 1136 mandatory true; 1137 description 1138 "Desired minimum transmit interval and required " + 1139 "minimum receive interval of control packets"; 1140 } 1141 } 1142 } 1143 } 1145 grouping bfd-grouping-common-cfg-parms { 1146 description "BFD grouping for common config parameters"; 1148 uses bfd-grouping-base-cfg-parms; 1150 leaf demand-enabled { 1151 type boolean; 1152 default false; 1153 description "To enable demand mode"; 1154 } 1156 leaf admin-down { 1157 type boolean; 1158 default false; 1159 description 1160 "Is the BFD session administratively down"; 1161 } 1162 uses bfd-auth-parms; 1163 } 1165 grouping bfd-grouping-echo-cfg-parms { 1166 description "BFD grouping for echo config parameters"; 1167 leaf desired-min-echo-tx-interval { 1168 type uint32; 1169 units microseconds; 1170 default 0; 1171 description "Desired minumum transmit interval for echo"; 1172 } 1174 leaf required-min-echo-rx-interval { 1175 type uint32; 1176 units microseconds; 1177 default 0; 1178 description "Required minimum receive interval for echo"; 1179 } 1180 } 1182 grouping bfd-client-base-cfg-parms { 1183 description 1184 "BFD grouping which could be used by a protocol which 1185 is a client of BFD to enable its use of BFD"; 1187 container bfd-cfg { 1188 description "BFD configuration"; 1189 leaf enabled { 1190 type boolean; 1191 default false; 1192 description "True if BFD is enabled"; 1193 } 1194 } 1195 } 1197 grouping bfd-all-session { 1198 description "BFD session operational information"; 1199 leaf path-type { 1200 type identityref { 1201 base bfd-path-type; 1202 } 1203 description 1204 "BFD session type, this indicates the path type that BFD is 1205 running on"; 1206 } 1207 leaf local-discriminator { 1208 type bfd-discriminator; 1209 description "Local discriminator"; 1210 } 1211 leaf remote-discriminator { 1212 type bfd-discriminator; 1213 description "Remote discriminator"; 1214 } 1215 leaf remote-multiplier { 1216 type bfd-multiplier; 1217 description "Remote multiplier"; 1218 } 1219 leaf out-interface { 1220 type if:interface-ref; 1221 description "Outgoing physical interface name"; 1222 } 1223 leaf demand-capability { 1224 type boolean; 1225 description "Local demand mode capability"; 1226 } 1227 leaf source-port { 1228 type inet:port-number; 1229 description "Source UDP port"; 1230 } 1231 leaf dest-port { 1232 type inet:port-number; 1233 description "Destination UDP port"; 1234 } 1235 container session-running { 1236 description "BFD session running information"; 1237 leaf session-index { 1238 type uint32; 1239 description 1240 "An index used to uniquely identify BFD sessions"; 1241 } 1242 leaf local-state { 1243 type bfd-state; 1244 description "Local state"; 1245 } 1246 leaf remote-state { 1247 type bfd-state; 1248 description "Remote state"; 1249 } 1250 leaf local-diagnostic { 1251 type bfd-diagnostic; 1252 description "Local diagnostic"; 1253 } 1254 leaf remote-diagnostic { 1255 type bfd-diagnostic; 1256 description "Remote diagnostic"; 1257 } 1258 leaf detection-mode { 1259 type enumeration { 1260 enum async-with-echo { 1261 value "1"; 1262 description "Async with echo"; 1263 } 1264 enum async-without-echo { 1265 value "2"; 1266 description "Async without echo"; 1267 } 1268 enum demand-with-echo { 1269 value "3"; 1270 description "Demand with echo"; 1271 } 1272 enum demand-without-echo { 1273 value "4"; 1274 description "Demand without echo"; 1275 } 1276 } 1277 description "Detection mode"; 1278 } 1279 leaf negotiated-tx-interval { 1280 type uint32; 1281 units microseconds; 1282 description "Negotiated transmit interval"; 1284 } 1285 leaf negotiated-rx-interval { 1286 type uint32; 1287 units microseconds; 1288 description "Negotiated receive interval"; 1289 } 1290 leaf echo-tx-interval-in-use { 1291 when "../../path-type = 'bfd-path-ip-sh'" { 1292 description 1293 "Echo is supported for IP single-hop only."; 1294 } 1295 type uint32; 1296 units microseconds; 1297 description "Echo transmit interval in use"; 1298 } 1299 leaf detection-time { 1300 type uint32; 1301 units microseconds; 1302 description "Detection time"; 1303 } 1304 } 1306 container sesssion-statistics { 1307 description "BFD per-session statistics"; 1309 leaf create-time { 1310 type yang:date-and-time; 1311 description 1312 "Time and date when session was created"; 1313 } 1314 leaf last-down-time { 1315 type yang:date-and-time; 1316 description 1317 "Time and date of last time the session went down"; 1318 } 1319 leaf last-up-time { 1320 type yang:date-and-time; 1321 description 1322 "Time and date of last time the session went up"; 1323 } 1324 leaf down-count { 1325 type uint32; 1326 description "Session Down Count"; 1327 } 1328 leaf admin-down-count { 1329 type uint32; 1330 description "Session Admin-Down Count"; 1331 } 1332 leaf receive-packet-count { 1333 type uint64; 1334 description "Received Packet Count"; 1335 } 1336 leaf send-packet-count { 1337 type uint64; 1338 description "Sent Packet Count"; 1339 } 1340 leaf receive-bad-packet { 1341 type uint64; 1342 description "Received bad packet count"; 1343 } 1344 leaf send-failed-packet { 1345 type uint64; 1346 description "Packet Failed to Send Count"; 1347 } 1348 } 1349 } 1351 grouping bfd-session-statistics { 1352 description "Grouping for session counters"; 1353 container bfd-session-statistics { 1354 description "BFD session counters"; 1355 leaf session-count { 1356 type uint32; 1357 description "Number of sessions"; 1358 } 1359 leaf session-up-count { 1360 type uint32; 1361 description "Count of sessions which are up"; 1362 } 1363 leaf session-down-count { 1364 type uint32; 1365 description "Count of sessions which are down"; 1366 } 1367 leaf session-admin-down-count { 1368 type uint32; 1369 description "Count of sessions which are admin-down"; 1370 } 1371 } 1372 } 1374 grouping bfd-notification-parms { 1375 description 1376 "This group describes common parameters that will be sent " + 1377 "as part of BFD notification"; 1379 leaf local-discr { 1380 type bfd-discriminator; 1381 description "BFD local discriminator"; 1382 } 1384 leaf remote-discr { 1385 type bfd-discriminator; 1386 description "BFD remote discriminator"; 1387 } 1389 leaf new-state { 1390 type bfd-state; 1391 description "Current BFD state"; 1392 } 1394 leaf state-change-reason { 1395 type string; 1396 description "BFD state change reason"; 1397 } 1399 leaf time-in-previous-state { 1400 type string; 1401 description 1402 "How long the BFD session was in the previous state"; 1403 } 1405 leaf dest-addr { 1406 type inet:ip-address; 1407 description "BFD peer address"; 1408 } 1410 leaf source-addr { 1411 type inet:ip-address; 1412 description "BFD local address"; 1413 } 1415 leaf session-index { 1416 type uint32; 1417 description "An index used to uniquely identify BFD sessions"; 1418 } 1420 leaf path-type { 1421 type identityref { 1422 base bfd-path-type; 1423 } 1424 description "BFD path type"; 1425 } 1426 } 1427 augment "/ni:network-instances/ni:network-instance" { 1428 description "BFD augmentation."; 1430 container bfd { 1431 presence "BFD"; 1432 description "BFD top level container"; 1433 container config { 1434 description "BFD configuration container"; 1435 } 1437 container oper { 1438 config "false"; 1439 description 1440 "BFD operational container for this routing instance"; 1441 uses bfd-session-statistics; 1442 } 1443 } 1444 } 1446 container bfd { 1447 presence "BFD"; 1448 description "BFD top level container"; 1449 container config { 1450 description "BFD configuration container"; 1451 } 1453 container oper { 1454 config "false"; 1455 description "BFD operational container."; 1456 uses bfd-session-statistics; 1457 } 1458 } 1459 } 1460 1462 2.14. BFD IP single-hop Yang Module 1464 file "ietf-bfd-ip-sh@2016-07-04.yang" 1465 module ietf-bfd-ip-sh { 1466 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"; 1467 // replace with IANA namespace when assigned 1468 prefix "bfd-ip-sh"; 1470 import ietf-bfd { 1471 prefix "bfd"; 1472 } 1474 import ietf-interfaces { 1475 prefix "if"; 1476 } 1478 import ietf-inet-types { 1479 prefix "inet"; 1480 } 1482 import ietf-network-instance { 1483 prefix "ni"; 1484 } 1486 organization "IETF BFD Working Group"; 1488 contact 1489 "WG Web: 1490 WG List: 1491 WG Chair: Jeff Haas 1492 WG Chair: Reshad Rahman 1493 Editor: Lianshu Zheng and Reshad Rahman"; 1495 description 1496 "This module contains the YANG definition for BFD IP single-hop 1497 as per RFC5881."; 1499 revision 2016-07-04 { 1500 description "Initial revision."; 1501 reference "RFC XXXX: A YANG data model for BFD IP single-hop"; 1502 } 1504 augment "/bfd:bfd" { 1505 description "BFD augmentation for IP single-hop"; 1506 container ip-sh { 1507 description "BFD IP single-hop top level container"; 1509 container config { 1510 description "BFD IP single-hop configuration container"; 1511 } 1512 container oper { 1513 config "false"; 1514 description "BFD IP single-hop operational container"; 1515 uses bfd:bfd-session-statistics; 1516 } 1517 } 1518 } 1520 augment "/ni:network-instances/ni:network-instance/bfd:bfd" { 1521 description "BFD augmentation for IP single-hop."; 1522 container ip-sh { 1523 description "BFD IP single-hop container"; 1524 container config { 1525 description "BFD configuration"; 1526 container session-cfg { 1527 description "BFD IP single-hop session configuration"; 1529 list sessions { 1530 key "interface dest-addr"; 1531 description "List of IP single-hop sessions"; 1532 leaf interface { 1533 type if:interface-ref; 1534 description 1535 "Interface on which the BFD session is running."; 1536 } 1537 leaf dest-addr { 1538 type inet:ip-address; 1539 description "IP address of the peer"; 1540 } 1541 leaf source-addr { 1542 type inet:ip-address; 1543 description "Local address"; 1544 } 1546 uses bfd:bfd-grouping-common-cfg-parms; 1548 uses bfd:bfd-grouping-echo-cfg-parms; 1549 } 1550 } 1551 } 1553 container oper { 1554 config "false"; 1555 description "BFD operational container"; 1557 uses bfd:bfd-session-statistics; 1559 list sessions { 1560 key "interface dest-addr"; 1561 description "BFD IP single-hop sessions"; 1562 leaf interface { 1563 type if:interface-ref; 1564 description 1565 "Interface on which the BFD session is running."; 1566 } 1567 leaf dest-addr { 1568 type inet:ip-address; 1569 description "BFD peer address"; 1571 } 1572 leaf source-addr { 1573 type inet:ip-address; 1574 description "BFD source address"; 1575 } 1577 uses bfd:bfd-all-session; 1578 } 1579 } 1580 } 1581 } 1583 notification bfd-singlehop-notification { 1584 description 1585 "Notification for BFD single-hop session state change. An " + 1586 "implementation may rate-limit notifications, e.g. when a" + 1587 "session is continuously changing state."; 1589 uses bfd:bfd-notification-parms; 1591 leaf interface { 1592 type if:interface-ref; 1593 description "Interface to which this BFD session belongs to"; 1594 } 1596 leaf echo-enabled { 1597 type boolean; 1598 description "Was echo enabled for BFD"; 1599 } 1600 } 1602 } 1603 1605 2.15. BFD IP multi-hop Yang Module 1607 file "ietf-bfd-ip-mh@2016-07-04.yang" 1608 module ietf-bfd-ip-mh { 1609 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"; 1610 // replace with IANA namespace when assigned 1611 prefix "bfd-ip-mh"; 1613 import ietf-bfd { 1614 prefix "bfd"; 1615 } 1617 import ietf-inet-types { 1618 prefix "inet"; 1620 } 1622 import ietf-network-instance { 1623 prefix "ni"; 1624 } 1626 organization "IETF BFD Working Group"; 1628 contact 1629 "WG Web: 1630 WG List: 1631 WG Chair: Jeff Haas 1632 WG Chair: Reshad Rahman 1633 Editor: Lianshu Zheng and Reshad Rahman"; 1635 description 1636 "This module contains the YANG definition for BFD IP multi-hop 1637 asper RFC5883."; 1639 revision 2016-07-04 { 1640 description "Initial revision."; 1641 reference "RFC XXXX: A YANG data model for BFD IP multi-hop"; 1642 } 1644 augment "/bfd:bfd" { 1645 description "BFD augmentation for IP multi-hop"; 1646 container ip-mh { 1647 description "BFD IP multi-hop top level container"; 1649 container config { 1650 description "BFD IP multi-hop configuration container"; 1651 } 1652 container oper { 1653 config "false"; 1654 description "BFD IP multi-hop operational container"; 1655 uses bfd:bfd-session-statistics; 1656 } 1657 } 1658 } 1660 augment "/ni:network-instances/ni:network-instance/bfd:bfd" { 1661 description "BFD augmentation for IP multi-hop."; 1663 container ip-mh { 1664 description "BFD IP multi-hop container"; 1665 container config { 1666 description "BFD configuration"; 1667 container session-cfg { 1668 description "BFD IP multi-hop session configuration"; 1670 list sessions { 1671 key "source-addr dest-addr"; 1672 description "List of IP multi-hop sessions"; 1674 leaf source-addr { 1675 type inet:ip-address; 1676 description 1677 "Local IP address"; 1678 } 1679 leaf dest-addr { 1680 type inet:ip-address; 1681 description 1682 "IP address of the peer"; 1683 } 1684 uses bfd:bfd-grouping-common-cfg-parms; 1686 leaf tx-ttl { 1687 type bfd:ttl; 1688 default 255; 1689 description "TTL of outgoing BFD control packets"; 1690 } 1691 leaf rx-ttl { 1692 type bfd:ttl; 1693 mandatory true; 1694 description 1695 "Minimum allowed TTL value for incoming BFD control 1696 packets"; 1697 } 1698 } 1699 } 1700 } 1702 container oper { 1703 config "false"; 1704 description "BFD operational container"; 1706 container bfd-session-statistics { 1707 description "BFD session counters"; 1708 uses bfd:bfd-session-statistics; 1709 } 1711 list session-group { 1712 key "source-addr dest-addr"; 1713 description 1714 "BFD IP multi-hop group of sessions. A group of " + 1715 "sessions is between 1 source and 1 destination, " + 1716 "each session has a different field in UDP/IP hdr for " + 1717 "ECMP."; 1718 leaf source-addr { 1719 type inet:ip-address; 1720 description "BFD source address"; 1721 } 1722 leaf dest-addr { 1723 type inet:ip-address; 1724 description "BFD peer address"; 1725 } 1726 list sessions { 1727 key "local-discriminator"; 1728 description 1729 "The BFD sessions between a source and a. " + 1730 "destination. Local discriminator is unique for " + 1731 "each session in the group."; 1732 leaf ttl { 1733 type bfd:ttl; 1734 description "TTL of outgoing packets"; 1735 } 1736 uses bfd:bfd-all-session; 1737 } 1738 } 1739 } 1740 } 1741 } 1743 notification bfd-multihop-notification { 1744 description 1745 "Notification for BFD multi-hop session state change. An " + 1746 "implementation may rate-limit notifications, e.g. when a" + 1747 "session is continuously changing state."; 1749 uses bfd:bfd-notification-parms; 1751 leaf network-instance { 1752 type string; 1753 description "Network instance"; 1754 } 1755 } 1756 } 1757 1759 2.16. BFD over LAG Yang Module 1761 file "ietf-bfd-lag@2017-01-07.yang" 1762 module ietf-bfd-lag { 1763 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-lag"; 1764 // replace with IANA namespace when assigned 1765 prefix "bfd-lag"; 1767 import ietf-bfd { 1768 prefix "bfd"; 1769 } 1771 import ietf-interfaces { 1772 prefix "if"; 1773 } 1775 import ietf-inet-types { 1776 prefix "inet"; 1777 } 1779 organization "IETF BFD Working Group"; 1781 contact 1782 "WG Web: 1783 WG List: 1784 WG Chair: Jeff Haas 1785 WG Chair: Reshad Rahman 1786 Editor: Lianshu Zheng and Reshad Rahman"; 1788 description 1789 "This module contains the YANG definition for BFD over LAG 1790 interfaces as per RFC7130."; 1792 revision 2017-01-07 { 1793 description 1794 "* Update author information 1795 * Fixed error with when use-ipv4/use-ipv6 statements 1796 "; 1797 reference "RFC XXXX: A YANG data model for BFD over LAG"; 1798 } 1800 revision 2016-02-17 { 1801 description "Initial revision."; 1802 reference "RFC XXXX: A YANG data model for BFD over LAG"; 1803 } 1805 augment "/bfd:bfd" { 1806 description "BFD augmentation for LAG"; 1807 container lag { 1808 description "BFD over LAG top level container"; 1810 container config { 1811 description "BFD over LAG configuration container"; 1812 container session-cfg { 1813 description "BFD over LAG session configuration"; 1814 list sessions { 1815 key "lag-name"; 1816 description "A LAG interface on which BFD is running"; 1817 leaf lag-name { 1818 type if:interface-ref ; 1819 description "Name of the LAG"; 1820 } 1821 leaf ipv4-dest-addr { 1822 type inet:ipv4-address; 1823 description 1824 "IPv4 address of the peer, for IPv4 micro-BFD."; 1825 } 1826 leaf ipv6-dest-addr { 1827 type inet:ipv6-address; 1828 description 1829 "IPv6 address of the peer, for IPv6 micro-BFD."; 1830 } 1831 uses bfd:bfd-grouping-common-cfg-parms; 1832 } 1833 } 1834 } 1836 container oper { 1837 config "false"; 1838 description "BFD over LAG operational container."; 1840 container micro-bfd-ipv4-session-statistics { 1841 description "Micro-BFD IPv4 session counters"; 1842 uses bfd:bfd-session-statistics; 1843 } 1844 container micro-bfd-ipv6-session-statistics { 1845 description "Micro-BFD IPv6 session counters"; 1846 uses bfd:bfd-session-statistics; 1847 } 1849 list session-lag { 1850 key "lag-name"; 1851 description "A LAG interface on which BFD is running"; 1852 leaf lag-name { 1853 type if:interface-ref ; 1854 description "Name of the LAG"; 1855 } 1857 leaf use-ipv4 { 1858 type boolean; 1859 description "Using IPv4 micro-BFD."; 1861 } 1862 leaf use-ipv6 { 1863 type boolean; 1864 description "Using IPv6 micro-BFD."; 1865 } 1867 list member-links { 1868 key "member-link"; 1869 description 1870 "Micro-BFD over LAG. This represents one member link"; 1872 leaf member-link { 1873 type if:interface-ref; 1874 description 1875 "Member link on which micro-BFD is running"; 1876 } 1877 container micro-bfd-ipv4 { 1878 when "../../use-ipv4 = 'true'" { 1879 description "Needed only if IPv4 is used."; 1880 } 1881 description 1882 "Micro-BFD IPv4 session state on member link"; 1883 uses bfd:bfd-all-session; 1884 } 1885 container micro-bfd-ipv6 { 1886 when "../../use-ipv6 = 'true'" { 1887 description "Needed only if IPv6 is used."; 1888 } 1889 description 1890 "Micro-BFD IPv6 session state on member link"; 1891 uses bfd:bfd-all-session; 1892 } 1893 } 1894 } 1895 } 1896 } 1897 } 1899 notification bfd-lag-notification { 1900 description 1901 "Notification for BFD over LAG session state change. " + 1902 "An implementation may rate-limit notifications, e.g. when a" + 1903 "session is continuously changing state."; 1905 uses bfd:bfd-notification-parms; 1907 leaf lag-name { 1908 type if:interface-ref; 1909 description "LAG interface name"; 1910 } 1912 leaf member-link { 1913 type if:interface-ref; 1914 description "Member link on which BFD is running"; 1915 } 1916 } 1917 } 1918 1920 2.17. BFD over MPLS Yang Module 1922 file "ietf-bfd-mpls@2016-07-04.yang" 1923 module ietf-bfd-mpls { 1924 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls"; 1925 // replace with IANA namespace when assigned 1926 prefix "bfd-mpls"; 1928 import ietf-bfd { 1929 prefix "bfd"; 1930 } 1932 import ietf-inet-types { 1933 prefix "inet"; 1934 } 1936 import ietf-network-instance { 1937 prefix "ni"; 1938 } 1940 organization "IETF BFD Working Group"; 1942 contact 1943 "WG Web: 1944 WG List: 1945 WG Chair: Jeff Haas 1946 WG Chair: Reshad Rahman 1947 Editor: Lianshu Zheng and Reshad Rahman"; 1949 description 1950 "This module contains the YANG definition for BFD parameters for 1951 MPLS LSPs as per RFC5884."; 1953 revision 2016-07-04 { 1954 description "Initial revision."; 1955 reference "RFC XXXX: A YANG data model for BFD over MPLS LSPs"; 1956 } 1957 identity bfd-encap-gach { 1958 base bfd:bfd-encap-type; 1959 description 1960 "BFD with G-ACh encapsulation as per RFC5586."; 1961 } 1963 identity bfd-encap-ip-gach { 1964 base bfd:bfd-encap-type; 1965 description 1966 "BFD with IP and G-ACh encapsulation as per RFC5586."; 1967 } 1969 grouping bfd-encap-cfg { 1970 description "Configuration for BFD encapsulation"; 1972 leaf encap { 1973 type identityref { 1974 base bfd:bfd-encap-type; 1975 } 1976 default bfd:bfd-encap-ip; 1977 description "BFD encapsulation"; 1978 } 1979 } 1981 grouping bfd-mpls-dest-address { 1982 description "Destination address as per RFC5884"; 1984 leaf mpls-dest-address { 1985 type inet:ip-address; 1986 config "false"; 1987 description 1988 "Destination address as per RFC5884. 1989 Needed if IP encapsulation is used"; 1990 } 1991 } 1993 augment "/bfd:bfd" { 1994 description "BFD augmentation for MPLS"; 1995 container mpls { 1996 description "BFD MPLS top level container"; 1998 container config { 1999 description "BFD MPLS configuration container"; 2001 container egress { 2002 description "Egress configuration"; 2003 uses bfd:bfd-grouping-base-cfg-parms; 2005 uses bfd:bfd-auth-parms; 2006 } 2007 } 2009 container oper { 2010 config "false"; 2011 description "BFD MPLS operational container"; 2012 uses bfd:bfd-session-statistics; 2013 } 2014 } 2015 } 2017 augment "/ni:network-instances/ni:network-instance/bfd:bfd" { 2018 description "BFD augmentation for MPLS."; 2020 container mpls { 2021 description "BFD MPLS container"; 2023 container config { 2024 description "BFD MPLS configuration container"; 2026 container session-cfg { 2027 description "BFD MPLS session configuration"; 2028 list sessions { 2029 key "mpls-fec"; 2030 description "List of BFD MPLS sessions"; 2031 leaf mpls-fec { 2032 type inet:ip-address; 2033 description "MPLS FEC"; 2034 } 2036 uses bfd:bfd-grouping-common-cfg-parms; 2037 } 2038 } 2039 } 2041 container oper { 2042 config "false"; 2043 description "BFD MPLS operational container"; 2044 uses bfd:bfd-session-statistics; 2046 list session-group { 2047 key "mpls-fec"; 2048 description 2049 "BFD MPLS group of sessions. A group of sessions is" + 2050 "for 1 FEC, each session has a different field in " + 2051 "UDP/IP hdr for ECMP."; 2052 leaf mpls-fec { 2053 type inet:ip-address; 2054 description "MPLS-FEC"; 2055 } 2056 list sessions { 2057 key "local-discriminator"; 2058 description 2059 "The BFD sessions for an MPLS FEC. Local " + 2060 "discriminator is unique for each session in the " + 2061 "group."; 2062 uses bfd:bfd-all-session; 2064 uses bfd-mpls:bfd-mpls-dest-address; 2065 } 2066 } 2067 } 2068 } 2069 } 2071 notification bfd-mpls-notification { 2072 description 2073 "Notification for BFD over MPLS FEC session state change. " + 2074 "An implementation may rate-limit notifications, e.g. when a" + 2075 "session is continuously changing state."; 2077 uses bfd:bfd-notification-parms; 2079 leaf network-instance { 2080 type string; 2081 description "Network instance"; 2082 } 2084 leaf mpls-dest-address { 2085 type inet:ip-address; 2086 description 2087 "Destination address as per RFC5884. 2088 Needed if IP encapsulation is used"; 2089 } 2090 } 2091 } 2092 2094 2.18. BFD over MPLS-TE Yang Module 2096 file "ietf-bfd-mpls-te@2016-02-04.yang" 2097 module ietf-bfd-mpls-te { 2098 namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-mpls-te"; 2099 // replace with IANA namespace when assigned 2100 prefix "bfd-mpls-te"; 2102 import ietf-bfd { 2103 prefix "bfd"; 2104 } 2106 import ietf-bfd-mpls { 2107 prefix "bfd-mpls"; 2108 } 2110 import ietf-te { 2111 prefix "te"; 2112 } 2114 organization "IETF BFD Working Group"; 2116 contact 2117 "WG Web: 2118 WG List: 2119 WG Chair: Jeff Haas 2120 WG Chair: Reshad Rahman 2121 Editor: Lianshu Zheng and Reshad Rahman"; 2123 description 2124 "This module contains the YANG definition for BFD parameters for 2125 MPLS Traffic Engineering as per RFC5884."; 2127 revision 2016-02-04 { 2128 description "Initial revision."; 2129 reference "RFC XXXX: A YANG data model for BFD over MPLS-TE"; 2130 } 2132 augment "/bfd:bfd" { 2133 description "BFD augmentation for MPLS-TE"; 2134 container mpls-te { 2135 description "BFD MPLS-TE top level container"; 2137 container config { 2138 description "BFD MPLS-TE configuration container"; 2140 container egress { 2141 description "Egress configuration"; 2143 uses bfd:bfd-grouping-base-cfg-parms; 2145 uses bfd:bfd-auth-parms; 2146 } 2148 } 2150 container oper { 2151 config "false"; 2152 description "BFD operational container"; 2153 uses bfd:bfd-session-statistics; 2154 } 2155 } 2156 } 2158 augment "/te:te/te:tunnels/te:tunnel/te:config" { 2159 description "BFD configuration on MPLS-TE tunnel."; 2161 uses bfd:bfd-grouping-common-cfg-parms; 2163 uses bfd-mpls:bfd-encap-cfg; 2164 } 2166 augment "/te:te/te:lsps-state/te:lsp" { 2167 when "/te:te/te:lsps-state/te:lsp/te:origin-type != 'transit'" { 2168 description "BFD information not needed at transit points"; 2169 } 2170 description "BFD state information on MPLS-TE LSP."; 2172 uses bfd:bfd-all-session; 2174 uses bfd-mpls:bfd-mpls-dest-address; 2175 } 2177 notification bfd-mpls-te-notification { 2178 description 2179 "Notification for BFD over MPLS-TE session state change. " + 2180 "An implementation may rate-limit notifications, e.g. when a" + 2181 "session is continuously changing state."; 2183 uses bfd:bfd-notification-parms; 2185 uses bfd-mpls:bfd-mpls-dest-address; 2187 leaf tunnel-name { 2188 type string; 2189 description "MPLS-TE tunnel on which BFD was running."; 2190 } 2191 } 2192 } 2193 2195 2.19. Security Considerations 2197 The YANG module defined in this memo is designed to be accessed via 2198 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2199 secure transport layer and the mandatory to implement secure 2200 transport is SSH [RFC6242]. The NETCONF access control model 2201 [RFC6536] provides the means to restrict access for particular 2202 NETCONF users to a pre-configured subset of all available NETCONF 2203 protocol operations and content. 2205 The YANG module has writeable data nodes which can be used for 2206 creation of BFD sessions and modification of BFD session parameters. 2207 The system should "police" creation of BFD sessions to prevent new 2208 sessions from causing existing BFD sessions to fail. For BFD session 2209 modification, the BFD protocol has mechanisms in place which allow 2210 for in service modification. 2212 2.20. IANA Considerations 2214 The IANA is requested to as assign a new new namespace URI from the 2215 IETF XML registry. 2217 URI:TBD 2219 2.21. Acknowledgements 2221 We would also like to thank Nobo Akiya and Jeff Haas for their 2222 encouragement on this work. We would also like to thank Rakesh 2223 Gandhi and Tarek Saad for their help on the MPLS-TE model. 2225 3. References 2227 3.1. Normative References 2229 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2230 Requirement Levels", BCP 14, RFC 2119, 2231 DOI 10.17487/RFC2119, March 1997, 2232 . 2234 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 2235 "MPLS Generic Associated Channel", RFC 5586, 2236 DOI 10.17487/RFC5586, June 2009, 2237 . 2239 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2240 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 2241 . 2243 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2244 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 2245 DOI 10.17487/RFC5881, June 2010, 2246 . 2248 [RFC5882] Katz, D. and D. Ward, "Generic Application of 2249 Bidirectional Forwarding Detection (BFD)", RFC 5882, 2250 DOI 10.17487/RFC5882, June 2010, 2251 . 2253 [RFC5883] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 2254 (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883, 2255 June 2010, . 2257 [RFC5884] Aggarwal, R., Kompella, K., Nadeau, T., and G. Swallow, 2258 "Bidirectional Forwarding Detection (BFD) for MPLS Label 2259 Switched Paths (LSPs)", RFC 5884, DOI 10.17487/RFC5884, 2260 June 2010, . 2262 [RFC5885] Nadeau, T., Ed. and C. Pignataro, Ed., "Bidirectional 2263 Forwarding Detection (BFD) for the Pseudowire Virtual 2264 Circuit Connectivity Verification (VCCV)", RFC 5885, 2265 DOI 10.17487/RFC5885, June 2010, 2266 . 2268 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2269 the Network Configuration Protocol (NETCONF)", RFC 6020, 2270 DOI 10.17487/RFC6020, October 2010, 2271 . 2273 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2274 and A. Bierman, Ed., "Network Configuration Protocol 2275 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2276 . 2278 [RFC7130] Bhatia, M., Ed., Chen, M., Ed., Boutros, S., Ed., 2279 Binderberger, M., Ed., and J. Haas, Ed., "Bidirectional 2280 Forwarding Detection (BFD) on Link Aggregation Group (LAG) 2281 Interfaces", RFC 7130, DOI 10.17487/RFC7130, February 2282 2014, . 2284 3.2. Informative References 2286 [I-D.ietf-netconf-restconf] 2287 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2288 Protocol", draft-ietf-netconf-restconf-18 (work in 2289 progress), October 2016. 2291 [I-D.ietf-netmod-routing-cfg] 2292 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 2293 Management", draft-ietf-netmod-routing-cfg-25 (work in 2294 progress), November 2016. 2296 [I-D.ietf-rtgwg-ni-model] 2297 Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, 2298 "YANG Network Instances", draft-ietf-rtgwg-ni-model-01 2299 (work in progress), October 2016. 2301 [I-D.ietf-rtgwg-yang-key-chain] 2302 Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. 2303 Yang, "Routing Key Chain YANG Data Model", draft-ietf- 2304 rtgwg-yang-key-chain-11 (work in progress), November 2016. 2306 [I-D.ietf-teas-yang-te] 2307 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 2308 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 2309 Model for Traffic Engineering Tunnels and Interfaces", 2310 draft-ietf-teas-yang-te-05 (work in progress), October 2311 2016. 2313 Appendix A. Change log 2315 RFC Editor: Remove this section upon publication as an RFC. 2317 A.1. Changes between versions -03 and -04 2319 o Updated author information. 2321 o Fixed YANG compile error in ietf-bfd-lag.yang which was due to 2322 incorrect when statement. 2324 A.2. Changes between versions -02 and -03 2326 o Fixed YANG compilation warning due to incorrect revision date in 2327 ietf-bfd-ip-sh module. 2329 A.3. Changes between versions -01 and -02 2331 o Replace routing-instance, which has been removed from 2332 [I-D.ietf-netmod-routing-cfg], with network-instance from 2333 [I-D.ietf-rtgwg-ni-model] 2335 A.4. Changes between versions -00 and -01 2337 o Remove BFD configuration parameters from BFD clients, all BFD 2338 configuration parameters in BFD 2340 o YANG module split in multiple YANG modules (one per type of 2341 forwarding path) 2343 o For BFD over MPLS-TE we augment MPLS-TE model 2345 o For BFD authentication we now use key-chain in 2346 [I-D.ietf-rtgwg-yang-key-chain] 2348 Authors' Addresses 2350 Lianshu Zheng (editor) 2351 Huawei Technologies 2352 China 2354 Email: vero.zheng@huawei.com 2356 Reshad Rahman (editor) 2357 Cisco Systems 2358 Canada 2360 Email: rrahman@cisco.com 2362 Santosh Pallagatti 2363 India 2365 Email: santosh.pallagatti@gmail.com 2367 Mahesh Jethanandani 2368 Cisco Systems 2370 Email: mjethanandani@gmail.com 2372 Greg Mirsky 2373 Ericsson 2375 Email: gregimirsky@gmail.com