idnits 2.17.1 draft-wang-yang-bfd-oam-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 9 instances of too long lines in the document, the longest one being 17 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 736 has weird spacing: '...on-type uin...' == Line 745 has weird spacing: '...UdpPort uint3...' -- The document date (March 4, 2015) is 3339 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: 'RFC5884' is mentioned on line 465, but not defined == Missing Reference: 'RFC5882' is mentioned on line 467, but not defined == Unused Reference: 'RFC7331' is defined on line 1360, but no explicit reference was found in the text == Outdated reference: A later version (-06) exists of draft-tissa-lime-yang-oam-model-03 == Outdated reference: A later version (-03) exists of draft-wang-lime-rpc-yang-oam-management-00 Summary: 1 error (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Z. Wang 3 Internet-Draft L. Xia 4 Intended status: Standards Track Huawei 5 Expires: September 5, 2015 D. Kumar 6 Cisco 7 Q. Wu 8 Huawei 9 March 4, 2015 11 A Layer Independent Operations, Administration, and 12 Maintenance(OAM)Management YANG Data Model Extension for BFD Support 13 draft-wang-yang-bfd-oam-01 15 Abstract 17 This document presents a YANG Data model for BFD support. The YANG 18 Model presented in this document extends the YANG model for Layer 19 independent OAM Management with BFD technology specifics. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at http://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on September 5, 2015. 38 Copyright Notice 40 Copyright (c) 2015 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 2 57 2.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 58 3. Architecture of OAM YANG Model and Relationship to BFD OAM . 4 59 4. Generic YANG Model extension for BFD . . . . . . . . . . . . 4 60 4.1. BFD-session grouping . . . . . . . . . . . . . . . . . . 5 61 4.2. BFD-session-stats grouping . . . . . . . . . . . . . . . 9 62 4.3. Identity technology-sub-type . . . . . . . . . . . . . . 10 63 4.4. connectivity-context . . . . . . . . . . . . . . . . . . 11 64 4.5. rpc definitions . . . . . . . . . . . . . . . . . . . . . 13 65 4.6. Notification definitions . . . . . . . . . . . . . . . . 16 66 5. OAM Data Hierarchy . . . . . . . . . . . . . . . . . . . . . 16 67 6. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 18 68 7. Default Mode for BFD OAM . . . . . . . . . . . . . . . . . . 29 69 8. Security Considerations . . . . . . . . . . . . . . . . . . . 29 70 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 71 10. Normative References . . . . . . . . . . . . . . . . . . . . 29 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 74 1. Introduction 76 This document presents a YANG Data model for BFD [RFC5880] support. 77 The YANG Model presented in this document extends the YANG model for 78 Layer Independent OAM Management defined in [I-D.tissa-lime-yang-oam- 79 model] and [I-D.wang-lime-rpc-yang-oam-management]. 81 2. Conventions and Terminology 83 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 84 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 85 document are to be interpreted as described in [RFC2119]. 87 The following terms are defined in [RFC6241] and are not redefined 88 here: 90 o client 92 o configuration data 94 o server 96 o state data 97 The following terms are defined in [RFC6020] and are not redefined 98 here: 100 o augment 102 o data model 104 o data node 106 The terminology for describing YANG data models is found in 107 [RFC6020]. 109 2.1. Tree Diagrams 111 A simplified graphical representation of the data model is used in 112 this document. The meaning of the symbols in these diagrams is as 113 follows: 115 Each node is printed as: 117 119 is one of: 120 + for current 121 x for deprecated 122 o for obsolete 124 is one of: 126 rw for configuration data 127 ro for non-configuration data 128 -x for rpcs 129 -n for notifications 131 is the name of the node 133 If the node is augmented into the tree from another module, its name 134 is printed as :. 136 is one of: 138 ? for an optional leaf or choice 139 ! for a presence container 140 * for a leaf-list or list 141 [] for a list's keys 143 is the name of the type for leafs and leaf-lists 145 3. Architecture of OAM YANG Model and Relationship to BFD OAM 147 Layer independent OAM YANG model[I-D.tissa-lime-yang-oam-model] and 148 [I-D.wang-lime-rpc-yang-oam-management] is used as the basis for all 149 the other OAM YANG models. This allows users to span across OAM 150 tools of different technologies through a uniform API. The following 151 Figure depicts the relationship of BFD OAM YANG model to the Layer 152 Independent OAM YANG Model. 154 +-+-+-+-+-+ 155 | Layer | 156 |independent 157 |OAM YANG | 158 +-+-+-+-+-+ 159 | 160 O 161 | 162 +--------------------------------------------------+ 163 | | | | 164 +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ 165 | TRILL | | NVO3 | | BFD |. .| foo | 166 |OAM YANG | |OAM YANG | |OAM YANG | |OAM YANG | 167 +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ 168 | | | | 169 | | | | 170 | | | | 171 +----------------------------------------------------+ 172 | Uniform API | 173 +----------------------------------------------------+ 175 Relationship of BFD OAM YANG model to Layer independent OAM YANG 176 model 178 4. Generic YANG Model extension for BFD 180 The Technology parameter is defined in the [I-D.tissa-lime-yang-oam- 181 model] and [I-D.wang-lime-rpc-yang-oam-management] as an identity. 182 This allows easy extension of the YANG model by other technologies. 183 Technology specific extensions are applied only when the technology 184 is set to the specific type. "bfd" is defined as an identity that 185 augments the base technology-types identity. 187 identity bfd { 188 base goam:technology-types; 189 description 190 "bfd type"; 191 } 193 4.1. BFD-session grouping 195 In BFD session, there are some useful parameters be used to indicate 196 some specific type or operation mode. This document define a bfd- 197 session grouping which include all of these parameters. Using this 198 bfd-session grouping, we can augment the basic gen-oam model as 199 follows: 201 grouping bfd-session{ 202 leaf bfdsess-version-num{ 203 type uint32; 204 default "1"; 205 description 206 " The version number of the BFD protocol that this session 207 is running in. Write access is available for this object 208 to provide the ability to set the desired version for this 209 BFD session ";} 211 leaf bfdsess-type{ 212 type enumeration{ 213 enum singleHop{value 1;} 214 enum multiHopTotallyArbitraryPaths{value 2;} 215 enum multiHopOutOfBandSignaling{value 3;} 216 enum multiHopUnidirectionalLinks{value 4;} 217 } 218 description 219 " This leaf specifies the type of this BFD session "; 220 } 221 leaf bfdsess-oper-mode { 222 type enumeration{ 223 enum asynchModeWEchoFunction{value 1;} 224 enum asynchModeWOEchoFunction{value 2;} 225 enum demandModeWEchoFunction{value 3;} 226 enum demandModeWOEchoFunction{value 4;} 227 } 228 description 229 " This object specifies the operational mode of this 230 BFD session "; 231 } 233 leaf bfdsess-demandmode-desired { 234 type boolean; 235 description 236 " This leaf indicates the local system's 237 desire to use Demand mode. Specifically, it is set 238 to true if the local system wishes to use 239 Demand mode or false if not "; 240 } 242  243 leaf bfdsess-controlplanel-indep { 244 type boolean; 245 description 246 " This leaf indicates the local system's 247 ability to continue to function through a disruption of 248 the control plane. Specifically, it is set 249 to true if the local system BFD implementation is 250 independent of the control plane. Otherwise, the 251 value is set to false "; 252 } 254 leaf bfdsess-multi-point { 255 type boolean; 256 description 257 " This leaf indicates the Multipoint (M) bit for this 258 session. It is set to true if the Multipoint (M) bit is 259 set to 1. Otherwise, the value is set to false "; 260 } 262 leaf bfdsess-detect-mult { 263 type uint32; 264 description 265 " This leaf specifies the Detect time multiplier "; 266 } 268 leaf bfdsess-authpres { 269 type boolean; 270 description 271 " This leaf indicates the local system's 272 desire to use authentication. Specifically, it is set 273 to true if the local system wishes the session 274 to be authenticated or false if not"; 275 } 277 leaf bfdsess-authentication-type { 278 type enumeration{ 279 enum noAuthentication; 280 enum reserved; 281 enum simplePassword; 282 enum keyedMD5; 283 enum meticulousKeyedMD5; 284 enum keyedSHA1; 285 enum meticulousKeyedSHA1; 286 } 287 description 288 " The authentication type used for this BFD session. 289 This field is valid only when the Authentication 290 Present bit is set "; 292 leaf bfdsess-authentication-key { 293 type uint32; 294 description 295 "This leaf specifies the authentication key in use for this session."; 296 } 297 bfdSess-authentication-keyID{ 298 type uint32; 299 description 300 " The authentication key ID in use for this session. This 301 leaf permits multiple keys to be active simultaneously."; 302 } 303 leaf bfdSess-DesiredMinTx-Interval{ 305 description 306 " This leaf specifies the minimum interval, in 307 microseconds, that the local system would like to use 308 when transmitting BFD Control packets. The value of 309 zero(0) is reserved in this case and should not be 310 used."; 311 type uint32; 312 } 313 leaf bfdSess-ReqMinRx-Interval { 314 description 315 " This leaf specifies the minimum interval, in 316 microseconds, between received BFD Control packets the 317 local system is capable of supporting. The value of 318 zero(0) can be specified when the transmitting system 319 does not want the remote system to send any periodic BFD 320 Control packets "; 321 type uint32; 322 } 323 leaf bfdSess-ReqMinEchoRx-Interval { 324 description 325 " This leaf specifies the minimum interval, in 326 microseconds, between received BFD Echo packets that this 327 system is capable of supporting. The value must be zero(0) if 328 this is a multihop BFD session "; 329 type uint32; 330 } 331 leaf bfdSess-Negotiated-Interval { 332 description 333 " This leaf specifies the negotiated interval, in 334 microseconds, that the local system is transmitting 335 BFD Control packets "; 336 type uint32; 337 } 338 leaf bfdSess-NegotiatedEcho-Interval { 339 description 340 " This leaf specifies the negotiated interval, in 341 microseconds, that the local system is transmitting 342 BFD Echo packets. The value is expected to be zero if 343 the sessions are not running in Echo mode "; 344 type uint32; 345 } 346 leaf bfdSess-Source-UdpPort { 347 description 348 " This leaf specifies the source UDP port number used 349 for this BFD session's Control packets. The value may be 350 0 if the session is in adminDown state. Upon 351 creation of a new BFD session via this, the value of 352 0 specified would permit the implementation to 353 choose its own source port number "; 354 } 355 leaf bfdSess-echoSrc-Udp{ 356 type uint32; 357 description 358 " This leaf specifies the source UDP port number used for 359 this BFD session's Echo packets. The value may be 0 360 if the session is not running in the Echo mode, or the 361 session is in adminDown state. Upon creation of a new 362 BFD session via this, the value of 0 would 363 permit the implementation to choose its own source port 364 number "; 365 } 367 leaf bfdSess-Destination-UdpPort { 368 type uint32; 369 description 370 " This leaf specifies the destination UDP port number 371 used for this BFD session's Control packets. 372 3784 represents single-hop BFD session. 373 4784 represents multi-hop BFD session. 374 6784 represents BFD on Link Aggregation Group (LAG) session. 375 The value may be zero(0) if the session is in adminDown(1) state"; 376 } 377 } 379 augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session" 380 {uses BFD-session;} 382 4.2. BFD-session-stats grouping 384 In BFD session, there are some useful parameters be used to indicate 385 bfd session stats. This document define a bfd-session-status 386 grouping which include these parameters. Using this bfd-session- 387 status grouping, we can augment the basic gen-oam model as follows: 389 grouping bfd-session-stats{ 390 leaf bfdsess-status { 391 type uint32; 392 description 393 " Configured BFD session state "; 394 } 395 leaf bfd-Sess-Diag{ 396 type enumeration{ 397 enum noDiagnostic{value 0;} 398 enum controlDetectionTimeExpired{value 1;} 399 enum echoFunctionFailed{value 2;} 400 enum neighborSignaledSessionDown{value 3;} 401 enum forwardingPlaneReset{value 4;} 402 enum pathDown{value 5;} 403 enum concatenatedPathDown{value 6;} 404 enum administrativelyDown{value 7;} 405 enum reverseConcatenatedPathDown{value 8;} 406 enum misConnectivityDefect{value 9;} 407 } 408 description 409 "A diagnostic code specifying the local system's reason 410 for the last transition of the session from up 411 to some other state." 412 } 413 leaf bfdsess-admin-stats { 414 type enumeration{ 415 enum enabled{value 1;} 416 enum disabled{value 2;} 417 enum adminDown{value 3;} 418 enum down{value 4;} 419 } 420 description 421 " Denotes the desired operational status of the BFD session. 422 A transition to enabled will start the BFD state machine 423 for the session. The state machine will have an initial 424 state of down. 425 A transition to disabled will stop the BFD state machine 426 for the session. The state machine may first transition to 427 adminDown prior to stopping. 428 A transition to adminDown will cause the BFD state 429 machine to transition to adminDown and will cause the 430 session to remain in this state. 431 A transition to down will cause the BFD state machine 432 to transition to down and will cause the session to 433 remain in this state"; 434 } 435 leaf bfdsess-oper-status { 436 type enumeration{ 437 enum up{value 1;} 438 enum down{value 2;} 439 enum adminDown{value 3;} 440 }; 441 description 442 " Denotes the actual operational status of the BFD session. 443 If the value of bfdOperStatus is down, this value MUST 444 eventually be down as well. If the value of 445 bfdOperStatus is adminDown, this value MUST eventually 446 be adminDown as well "; 447 } 448 leaf bfdsess-remote-heard { 449 type boolean; 450 description 451 " This leaf specifies the status of BFD packet reception from 452 the remote system. Specifically, it is set to true if 453 the local system is actively receiving BFD packets from the 454 remote system and is set to false if the local system 455 has not received BFD packets recently (within the detection 456 time) or if the local system is attempting to tear down 457 the BFD session "; 458 } 459 } 460 augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session" 461 {uses BFD-session-stats;} 463 4.3. Identity technology-sub-type 465 In BFD, different encapsulation types such as MPLS[RFC5884] OSPFv2 466 [RFC5882], OSPFv3 [RFC5882], IS-IS [RFC5882], BGP [RFC5882], RIP 467 [RFC5882] can be employed. "technology-sub-type" identifies the 468 encapsulation type within the BFD. Technology sub-type is defined as 469 an identity type. This allows different encapsulation types to 470 augment BFD OAM YANG model to include encapsulation type specific 471 extensions without redefining common BFD definitions 473 augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session" { 474 identity technology-sub-type{ 475 description 476 "this is the base identity of sub-technology. 477 It can be used to identify the encapsulation type 478 such as MPLS, OSPFv2, OSPFv3, IS-IS, BGP, RIP, etc"; 479 } 480 } 482 4.4. connectivity-context 484 In BFD, connectivity-context is a pair of 32 bit Discriminators 485 (SessDiscriminator,remotSessDiscriminator). This allows other 486 technologies to easily augment that to include technology specific 487 extensions. The snippet below depicts an example of augmenting 488 connectivity-context to include Discriminator. 490 augment 491 "/goam:domains/goam:domain/goam:MAs/gam:MA/goam:MEP 492 /goam:session/goam: connectivity-context" 493 { 494 case context-bfdsess { 495 leaf bfdsess-discriminator { 496 type uint32; 497 description 498 "This leaf specifies the local discriminator for this BFD 499 session, which is used to uniquely identify it "; 500 } 501 leaf bfdsess-remotediscr { 502 type uint32; 503 description 504 "This leaf specifies the session discriminator chosen 505 by the remote system for this BFD session. The value may 506 be zero(0) if the remote discriminator is not yet known 507 or if the session is in the down or adminDown(1) state "; 508 } 509 leaf Interface{ 510 type leafref{ 511 path 512 "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP" 513 +"/goam:Interface"; 514 } 515 } 516 leaf source-mep{ 517 type leafref{ 518 path 519 "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP" 520 +"/goam:session/goam:source-mep"; 521 } 522 } 523 leaf destination-mep{ 524 type leafref{ 525 path 526 "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP" 527 +"/goam:session/goam:destination-mep" 528 +"/goam:destination-mep/goam:MEP-ID/goam:MEP-ID-int" 529 +"/goam:MEP-ID-int"; 530 } 531 } 533 } 534 } 536 4.5. rpc definitions 538 The rpc model facilitates issuing commands to a NETCONF server (in 539 this case to the device that need to execute the OAM command) and 540 obtaining a response. 542 CC extension: 544 augment "/goam:cc/goam:output/goam: maintenance-stats" { 545 case session-ccperform-bfd { 546 leaf bfdSess-PerfCtrlPkt-In { 547 type uint32; 548 description 549 "The total number of BFD control messages received for this 550 BFD session"; 551 } 552 leaf bfdSess-PerfCtrlPkt-Out { 553 type uint32; 554 description 555 "The total number of BFD control messages sent for this BFD 556 session"; 557 } 558 leaf bfdSess-PerfCtrlPkt-Drop { 559 type uint32; 560 description 561 "The total number of BFD control messages received for this 562 session yet dropped for being invalid"; 563 } 564 leaf bfdSess-PerfCtrlPktDrop-LastTime { 565 type uint32; 566 description 567 "The value of sysUpTime on the most recent occasion at 568 which received the BFD control message for this session was 569 dropped. If no such up event exists, this object contains 570 a zero value"; 571 } 572 leaf bfdSess-PerfEchoPkt-In { 573 type uint32; 574 description 575 "The total number of BFD Echo messages received for this 576 BFD session"; 577 } 578 leaf bfdSess-PerfEchoPkt-Out { 579 type uint32; 580 description 581 "The total number of BFD Echo messages sent for this BFD 582 session"; 583 } 585 leaf bfdSess-PerfEchoPkt-Drop { 586 type uint32; 587 description 588 "The total number of BFD Echo messages received for this 589 session yet dropped for being invalid"; 590 } 591 leaf bfdSess-PerfEchoPktDrop-LastTime { 592 type uint32; 593 description 594 "The value of sysUpTime on the most recent occasion at 595 which received the BFD Echo message for this session was 596 dropped. If no such up event has been issued, this 597 object contains a zero value"; 598 } 599 leaf bfdSess-UpTime { 600 type uint32; 601 description 602 "The value of sysUpTime on the most recent occasion at which 603 the session came up. If no such event has been issued, 604 this object contains a zero value"; 605 } 606 leaf bfdSess-PerfLastSessDownTime { 607 type uint32; 608 description 609 "The value of sysUpTime on the most recent occasion at 610 which the last time communication was lost with the 611 neighbor. If no down event has been issued, this object 612 contains a zero value "; 613 } 614 leaf bfdSess-PerfLastCommLostDiag { 615 type uint32; 616 description 617 "The BFD diag code for the last time communication was lost 618 with the neighbor. If such an event has not been issued, 619 this object contains a zero value"; 620 } 621 leaf bfdSess-PerfSess-UpCount { 622 type uint32; 623 description 624 "The number of times this session has gone into the Up 625 state since the system last rebooted"; 626 } 627 leaf bfdSess-Perf-DiscTime { 628 type uint32; 629 description 630 "The value of sysUpTime on the most recent occasion at 631 which any one or more of the session counters suffered 632 a discontinuity "; 633 } 634 } 635 } 637 CV extension: 639 augment "/goam:cv/goam:output/goam: maintenance-stats"{ 640 case session-cvperform-bfdctr { 641 leaf bfdSess-PerfCtrlPkt-In { 642 type uint32; 643 description 644 "The total number of BFD control messages received for this 645 BFD session"; 646 } 647 leaf bfdSess-PerfCtrlPkt-Out { 648 type uint32; 649 description 650 "The total number of BFD control messages sent for this BFD 651 session"; 652 } 653 leaf bfdSess-PerfCtrlPkt-Drop { 654 type uint32; 655 description 656 "The total number of BFD control messages received for this 657 session yet dropped for being invalid"; 658 } 659 leaf bfdSess-PerfCtrlPktDrop-LastTime { 660 type uint32; 661 description 662 "The value of sysUpTime on the most recent occasion at 663 which received the BFD control message for this session was 664 dropped. If no such up event exists, this object contains 665 a zero value"; 666 } 667 leaf bfdSess-UpTime { 668 type uint32; 669 description 670 "The value of sysUpTime on the most recent occasion at which 671 the session came up. If no such event has been issued, 672 this object contains a zero value"; 673 } 674 leaf bfdSess-PerfLastSessDownTime { 675 type uint32; 676 description 677 "The value of sysUpTime on the most recent occasion at 678 which the last time communication was lost with the 679 neighbor. If no down event has been issued, this object 680 contains a zero value"; 681 } 682 leaf bfdSess-PerfLastCommLostDiag { 683 type uint32; 684 description 685 "The BFD diag code for the last time communication was lost 686 with the neighbor. If such an event has not been issued, 687 this object contains a zero value"; 688 } 689 leaf bfdSess-PerfSess-UpCount { 690 type uint32; 691 description 692 "The number of times this session has gone into the Up 693 state since the system last rebooted"; 694 } 695 leaf bfdSess-Perf-DiscTime { 696 type uint32; 697 description 698 "The value of sysUpTime on the most recent occasion at 699 which any one or more of the session counters suffered 700 a discontinuity"; 701 } 702 } 703 } 705 4.6. Notification definitions 707 In BFD, the bfdsess-admin-status, bfdsess-oper-status, bfdsess-status 708 and the bfdsess-remote-heard are used to indicate the session status. 709 i.e. the bfdsess-admin-status denotes the desired operational status 710 of the BFD session. And the bfdsess-oper-status denotes the actual 711 operational status of the BFD session. The bfdsess-status is used to 712 indicate the BFD session state. And the bfdsess-oper-status 713 specifies the status of BFD packet reception from the remote system. 715 augment "/moam:notifications/moam:defect-condition-notification"{ 716 uses bfd-session-stats; 717 } 719 5. OAM Data Hierarchy 721 The complete data hierarchy related to the OAM YANG model is 722 presented below. 724 augment 725 /goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session 727 +--rw technology-sub-type identityref 728 +--rw bfdsess-version-num? uint32 729 +--rw bfdsess-type? uint32 730 +--rw bfdsess-oper-mode? uint32 731 +--rw bfdsess-demandmode-desired? boolean 732 +--rw bfdsess-controlplanel-indep? boolean 733 +--rw bfdsess-multi-point? boolean 734 +--rw bfdsess-detect-mult? uint32 735 +--rw bfdsess-authpres? boolean 736 +--rw bfdsess-authentication-type uint32 737 +--rw bfdsess-authentication-key? uint32 738 +--rw bfdSess-DesiredMinTx-Interval uint32 739 +--rw bfdSess-ReqMinRx-Interval? uint32 740 +--rw bfdSess-ReqMinEchoRx-Interval? unit32 741 +--ro bfdSess-Negotiated-Interval? uint32 742 +--ro bfdSess-NegotiatedEcho-Interval? uint32 743 +--rw bfdSess-Source-UdpPort? uint32 744 +--rw bfdSess-echoSrc-UdpPort? uint32 745 +--rw bfdSess-Destination-UdpPort uint32 746 +--ro bfdsess-status? uint32 747 +--ro bfdsess-bfd-Sess-Diag? enumeration 748 +--rw bfdsess-admin-status? enumeration 749 +--ro bfdsess-oper-status? enumeration 750 +--ro bfdsess-remote-heard? boolean 751  752 augment 753 /goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/goam:connective-context 754 +--:(context-bfdsess) 755 +--rw bfdsess-discriminator? uint32 756 +--rw bfdsess-remotediscr? uint32 757 +--rw Interface? leafref 758 +--rw source-mep? leafref 759 +--rw destination-mep? leafref 761 augment 762 /goam:cc/goam:output/goam:maintenance-stats: 763 +--:(session-ccperform-bfd) 764 +--ro bfdSess-PerfCtrlPkt-In? uint32 765 +--ro bfdSess-PerfCtrlPkt-Out? uint32 766 +--ro bfdSess-PerfCtrlPkt-Drop? unit32 767 +--ro bfdSess-PerfCtrlPktDrop-LastTime? uint32 768 +--ro bfdSess-PerfEchoPkt-In? uint32 769 +--ro bfdSess-PerfEchoPkt-Out? uint32 770 +--ro bfdSess-PerfEchoPkt-Drop? unit32 771 +--ro bfdSess-PerfEchoPktDrop-LastTime? uint32 772 +--ro bfdSess-UpTime? uint32 773 +--ro bfdSess-PerfLastSessDownTime? uint32 774 +--ro bfdSess-PerfLastCommLostDiag? uint32 775 +--ro bfdSess-PerfSess-UpCount? uint32 776 +--ro bfdSess-Perf-DiscTime? uint32 778 augment 779 /goam:cv/goam:output/goam:maintenance-stats: 780 +--:(session-cvperform-bfd) 781 +--ro bfdSess-PerfCtrlPkt-In? uint32 782 +--ro bfdSess-PerfCtrlPkt-Out? uint32 783 +--ro bfdSess-PerfCtrlPkt-Drop? unit32 784 +--ro bfdSess-PerfCtrlPktDrop-LastTime? uint32 785 +--ro bfdSess-UpTime? uint32 786 +--ro bfdSess-PerfLastSessDownTime? uint32 787 +--ro bfdSess-PerfLastCommLostDiag? uint32 788 +--ro bfdSess-PerfSess-UpCount? uint32 789 +--ro bfdSess-Perf-DiscTime? uint32 791 augment 792 /moam: notifications/moam: defect-condition-notification: 793 +--ro bfdsess-status? uint32 794 +--ro bfdsess-bfd-Sess-Diag? enumeration 795 +--ro bfdsess-admin-status? enumeration 796 +--ro bfdsess-oper-status? enumeration 797 +--ro bfdsess-remote-heard? boolean 799 Data hierarchy of BFD OAM 801 6. OAM YANG Module 803 file "xxx.yang" 805 file "xxx.yang" 807 module bfd { 808 namespace "urn:ietf:params:xml:ns:yang:bfd"; 809 prefix bfd; 811 import gen-oam { 812 prefix goam; 813 } 814 import ietf-inet-types { 815 prefix inet; 816 } 817 import ietf-interfaces { 818 prefix if; 819 } 820 import ietf-yang-types { 821 prefix yang; 822 } 824 revision 2014-08-30 { 825 description 826 "Initial revision."; 827 } 829 identity bfd { 830 base bfd:technology-types; 831 description 832 "bfd type"; 833 } 835 identity bfd-contiuity-check { 836 base goam:command-sub-type; 837 } 839 identity bfd-connectity-verification { 840 base goam:command-sub-type; 841 } 843 grouping bfd-session{ 844 leaf bfdsess-version-num{ 845 type uint32; 846 default "1"; 847 description 848 " The version number of the BFD protocol that this session 849 is running in. Write access is available for this object 850 to provide the ability to set the desired version for this 851 BFD session ";} 853 leaf bfdsess-type{ 854 type enumeration{ 855 enum singleHop{value 1;} 856 enum multiHopTotallyArbitraryPaths{value 2;} 857 enum multiHopOutOfBandSignaling{value 3;} 858 enum multiHopUnidirectionalLinks{value 4;} 859 } 860 description 861 " This leaf specifies the type of this BFD session "; 862 } 863 leaf bfdsess-oper-mode { 864 type enumeration{ 865 enum asynchModeWEchoFunction{value 1;} 866 enum asynchModeWOEchoFunction{value 2;} 867 enum demandModeWEchoFunction{value 3;} 868 enum demandModeWOEchoFunction{value 4;} 869 } 870 description 871 " This object specifies the operational mode of this 872 BFD session "; 873 } 875 leaf bfdsess-demandmode-desired { 876 type boolean; 877 description 878 " This leaf indicates the local system's 879 desire to use Demand mode. Specifically, it is set 880 to true if the local system wishes to use 881 Demand mode or false if not "; 882 } 884  885 leaf bfdsess-controlplanel-indep { 886 type boolean; 887 description 888 " This leaf indicates the local system's 889 ability to continue to function through a disruption of 890 the control plane. Specifically, it is set 891 to true if the local system BFD implementation is 892 independent of the control plane. Otherwise, the 893 value is set to false "; 894 } 896 leaf bfdsess-multi-point { 897 type boolean; 898 description 899 " This leaf indicates the Multipoint (M) bit for this 900 session. It is set to true if the Multipoint (M) bit is 901 set to 1. Otherwise, the value is set to false "; 902 } 904 leaf bfdsess-detect-mult { 905 type uint32; 906 description 907 " This leaf specifies the Detect time multiplier "; 908 } 910 leaf bfdsess-authpres { 911 type boolean; 912 description 913 " This leaf indicates the local system's 914 desire to use authentication. Specifically, it is set 915 to true if the local system wishes the session 916 to be authenticated or false if not"; 917 } 919 leaf bfdsess-authentication-type { 920 type enumeration{ 921 enum noAuthentication; 922 enum reserved; 923 enum simplePassword; 924 enum keyedMD5; 925 enum meticulousKeyedMD5; 926 enum keyedSHA1; 927 enum meticulousKeyedSHA1; 928 } 929 description 930 " The authentication type used for this BFD session. 931 This field is valid only when the Authentication 932 Present bit is set "; 934 leaf bfdsess-authentication-key { 935 type uint32; 936 description 937 "This leaf specifies the authentication key in use for this session."; 938 } 939 bfdSess-authentication-keyID{ 940 type uint32; 941 description 942 " The authentication key ID in use for this session. This 943 leaf permits multiple keys to be active simultaneously."; 944 } 945 leaf bfdSess-DesiredMinTx-Interval{ 947 description 948 " This leaf specifies the minimum interval, in 949 microseconds, that the local system would like to use 950 when transmitting BFD Control packets. The value of 951 zero(0) is reserved in this case and should not be 952 used."; 953 type uint32; 954 } 955 leaf bfdSess-ReqMinRx-Interval { 956 description 957 " This leaf specifies the minimum interval, in 958 microseconds, between received BFD Control packets the 959 local system is capable of supporting. The value of 960 zero(0) can be specified when the transmitting system 961 does not want the remote system to send any periodic BFD 962 Control packets "; 963 type uint32; 964 } 965 leaf bfdSess-ReqMinEchoRx-Interval { 966 description 967 " This leaf specifies the minimum interval, in 968 microseconds, between received BFD Echo packets that this 969 system is capable of supporting. The value must be zero(0) if 970 this is a multihop BFD session "; 971 type uint32; 972 } 973 leaf bfdSess-Negotiated-Interval { 974 description 975 " This leaf specifies the negotiated interval, in 976 microseconds, that the local system is transmitting 977 BFD Control packets "; 978 type uint32; 979 } 980 leaf bfdSess-NegotiatedEcho-Interval { 981 description 982 " This leaf specifies the negotiated interval, in 983 microseconds, that the local system is transmitting 984 BFD Echo packets. The value is expected to be zero if 985 the sessions are not running in Echo mode "; 986 type uint32; 987 } 988 leaf bfdSess-Source-UdpPort { 989 description 990 " This leaf specifies the source UDP port number used 991 for this BFD session's Control packets. The value may be 992 0 if the session is in adminDown state. Upon 993 creation of a new BFD session via this, the value of 994 0 specified would permit the implementation to 995 choose its own source port number "; 996 } 997 leaf bfdSess-echoSrc-Udp{ 998 type uint32; 999 description 1000 " This leaf specifies the source UDP port number used for 1001 this BFD session's Echo packets. The value may be 0 1002 if the session is not running in the Echo mode, or the 1003 session is in adminDown state. Upon creation of a new 1004 BFD session via this, the value of 0 would 1005 permit the implementation to choose its own source port 1006 number "; 1007 } 1009 leaf bfdSess-Destination-UdpPort { 1010 type uint32; 1011 description 1012 " This leaf specifies the destination UDP port number 1013 used for this BFD session's Control packets. 1014 3784 represents single-hop BFD session. 1015 4784 represents multi-hop BFD session. 1016 6784 represents BFD on Link Aggregation Group (LAG) session. 1017 The value may be zero(0) if the session is in adminDown(1) state"; 1018 } 1019 } 1021 grouping bfd-session-stats{ 1022 leaf bfdsess-status { 1023 type uint32; 1024 description 1025 " Configured BFD session state "; 1026 } 1027 leaf bfd-Sess-Diag{ 1028 type enumeration{ 1029 enum noDiagnostic{value 0;} 1030 enum controlDetectionTimeExpired{value 1;} 1031 enum echoFunctionFailed{value 2;} 1032 enum neighborSignaledSessionDown{value 3;} 1033 enum forwardingPlaneReset{value 4;} 1034 enum pathDown{value 5;} 1035 enum concatenatedPathDown{value 6;} 1036 enum administrativelyDown{value 7;} 1037 enum reverseConcatenatedPathDown{value 8;} 1038 enum misConnectivityDefect{value 9;} 1039 } 1040 description 1041 "A diagnostic code specifying the local system's reason 1042 for the last transition of the session from up 1043 to some other state." 1044 } 1045 leaf bfdsess-admin-stats { 1046 type enumeration{ 1047 enum enabled{value 1;} 1048 enum disabled{value 2;} 1049 enum adminDown{value 3;} 1050 enum down{value 4;} 1051 } 1053 description 1054 " Denotes the desired operational status of the BFD session. 1055 A transition to enabled will start the BFD state machine 1056 for the session. The state machine will have an initial 1057 state of down. 1058 A transition to disabled will stop the BFD state machine 1059 for the session. The state machine may first transition to 1060 adminDown prior to stopping. 1061 A transition to adminDown will cause the BFD state 1062 machine to transition to adminDown and will cause the 1063 session to remain in this state. 1064 A transition to down will cause the BFD state machine 1065 to transition to down and will cause the session to 1066 remain in this state"; 1067 } 1068 leaf bfdsess-oper-status { 1069 type enumeration{ 1070 enum up{value 1;} 1071 enum down{value 2;} 1072 enum adminDown{value 3;} 1073 }; 1074 description 1075 " Denotes the actual operational status of the BFD session. 1076 If the value of bfdOperStatus is down, this value MUST 1077 eventually be down as well. If the value of 1078 bfdOperStatus is adminDown, this value MUST eventually 1079 be adminDown as well "; 1080 } 1081 leaf bfdsess-remote-heard { 1082 type boolean; 1083 description 1084 " This leaf specifies the status of BFD packet reception from 1085 the remote system. Specifically, it is set to true if 1086 the local system is actively receiving BFD packets from the 1087 remote system and is set to false if the local system 1088 has not received BFD packets recently (within the detection 1089 time) or if the local system is attempting to tear down 1090 the BFD session "; 1091 } 1092 } 1094 augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session" { 1095 identity technology-sub-type{ 1096 description 1097 "this is the base identity of sub-technology. 1098 It can be used to identify the encapsulation type 1099 such as MPLS, OSPFv2, OSPFv3, IS-IS, BGP, RIP, etc"; 1100 } 1101 } 1103 augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session" 1104 {using bfd-session;} 1105 augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session" 1106 {using bfd-session-stats;} 1108 augment 1109 "/goam:domains/goam:domain/goam:MAs/gam:MA/goam:MEP 1110 /goam:session/goam: connectivity-context" 1111 { 1112 case context-bfdsess { 1113 leaf bfdsess-discriminator { 1114 type uint32; 1115 description 1116 "This leaf specifies the local discriminator for this BFD 1117 session, which is used to uniquely identify it "; 1118 } 1119 leaf bfdsess-remotediscr { 1120 type uint32; 1121 description 1122 "This leaf specifies the session discriminator chosen 1123 by the remote system for this BFD session. The value may 1124 be zero(0) if the remote discriminator is not yet known 1125 or if the session is in the down or adminDown(1) state "; 1126 } 1127 leaf Interface{ 1128 type leafref{ 1129 path 1130 "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP" 1131 +"/goam:Interface"; 1132 } 1133 } 1134 leaf source-mep{ 1135 type leafref{ 1136 path 1137 "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP" 1138 +"/goam:session/goam:source-mep"; 1139 } 1140 } 1141 leaf destination-mep{ 1142 type leafref{ 1143 path 1144 "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP" 1145 +"/goam:session/goam:destination-mep" 1146 +"/goam:destination-mep/goam:MEP-ID/goam:MEP-ID-int" 1147 +"/goam:MEP-ID-int"; 1148 } 1149 } 1150 } 1151 } 1153 augment "/moam:cc/moam:output/moam: maintenance-stats " { 1154 case session-ccperform-bfd { 1155 leaf bfdSess-PerfCtrlPkt-In { 1156 type uint32; 1157 description 1158 " The total number of BFD control messages received for this 1159 BFD session"; 1160 } 1161 leaf bfdSess-PerfCtrlPkt-Out { 1162 type uint32; 1163 description 1164 " The total number of BFD control messages sent for this BFD 1165 session"; 1166 } 1167 leaf bfdSess-PerfCtrlPkt-Drop { 1168 type uint32; 1169 description 1170 " The total number of BFD control messages received for this 1171 session yet dropped for being invalid "; 1172 } 1173 leaf bfdSess-PerfCtrlPktDrop-LastTime { 1174 type uint32; 1175 description 1176 " The value of sysUpTime on the most recent occasion at 1177 which received the BFD control message for this session was 1178 dropped. If no such up event exists, this object contains 1179 a zero value "; 1180 } 1181 leaf bfdSess-PerfEchoPkt-In { 1182 type uint32; 1183 description 1184 " The total number of BFD Echo messages received for this 1185 BFD session "; 1186 } 1187 leaf bfdSess-PerfEchoPkt-Out { 1188 type uint32; 1189 description 1190 " The total number of BFD Echo messages sent for this BFD 1191 session "; 1192 } 1193 leaf bfdSess-PerfEchoPkt-Drop { 1194 type uint32; 1195 description 1196 " The total number of BFD Echo messages received for this 1197 session yet dropped for being invalid "; 1198 } 1199 leaf bfdSess-PerfEchoPktDrop-LastTime { 1200 type uint32; 1201 description 1202 " The value of sysUpTime on the most recent occasion at 1203 which received the BFD Echo message for this session was 1204 dropped. If no such up event has been issued, this 1205 object contains a zero value "; 1206 } 1207 leaf bfdSess-UpTime { 1208 type uint32; 1209 description 1210 "The value of sysUpTime on the most recent occasion at which 1211 the session came up. If no such event has been issued, 1212 this object contains a zero value"; 1213 } 1214 leaf bfdSess-PerfLastSessDownTime { 1215 type uint32; 1216 description 1217 " The value of sysUpTime on the most recent occasion at 1218 which the last time communication was lost with the 1219 neighbor. If no down event has been issued, this object 1220 contains a zero value "; 1222 } 1223 leaf bfdSess-PerfLastCommLostDiag { 1224 type uint32; 1225 description 1226 " The BFD diag code for the last time communication was lost 1227 with the neighbor. If such an event has not been issued, 1228 this object contains a zero value"; 1229 } 1230 leaf bfdSess-PerfSess-UpCount { 1231 type uint32; 1232 description 1233 " The number of times this session has gone into the Up 1234 state since the system last rebooted "; 1235 } 1236 leaf bfdSess-Perf-DiscTime { 1237 type uint32; 1238 description 1239 " The value of sysUpTime on the most recent occasion at 1240 which any one or more of the session counters suffered 1241 a discontinuity "; 1242 } 1243 } 1244 } 1246 augment "/moam: cv /moam:output/moam: maintenance-stats " { 1247 case session-cvperform-bfdctr { 1248 leaf bfdSess-PerfCtrlPkt-In { 1249 type uint32; 1250 description 1251 " The total number of BFD control messages received for this 1252 BFD session"; 1253 } 1254 leaf bfdSess-PerfCtrlPkt-Out { 1255 type uint32; 1256 description 1257 " The total number of BFD control messages sent for this BFD 1258 session"; 1259 } 1260 leaf bfdSess-PerfCtrlPkt-Drop { 1261 type uint32; 1262 description 1263 " The total number of BFD control messages received for this 1264 session yet dropped for being invalid "; 1265 } 1266 leaf bfdSess-PerfCtrlPktDrop-LastTime { 1267 type uint32; 1268 description 1269 " The value of sysUpTime on the most recent occasion at 1270 which received the BFD control message for this session was 1271 dropped. If no such up event exists, this object contains 1272 a zero value "; 1273 } 1274 } 1275 leaf bfdSess-UpTime { 1276 type uint32; 1277 description 1278 "The value of sysUpTime on the most recent occasion at which 1279 the session came up. If no such event has been issued, 1280 this object contains a zero value"; 1281 } 1282 leaf bfdSess-PerfLastSessDownTime { 1283 type uint32; 1284 description 1285 " The value of sysUpTime on the most recent occasion at 1286 which the last time communication was lost with the 1287 neighbor. If no down event has been issued, this object 1288 contains a zero value "; 1289 } 1290 leaf bfdSess-PerfLastCommLostDiag { 1291 type uint32; 1292 description 1293 " The BFD diag code for the last time communication was lost 1294 with the neighbor. If such an event has not been issued, 1295 this object contains a zero value"; 1296 } 1297 leaf bfdSess-PerfSess-UpCount { 1298 type uint32; 1299 description 1300 " The number of times this session has gone into the Up 1301 state since the system last rebooted "; 1302 } 1303 leaf bfdSess-Perf-DiscTime { 1304 type uint32; 1305 description 1306 " The value of sysUpTime on the most recent occasion at 1307 which any one or more of the session counters suffered 1308 a discontinuity "; 1309 } 1310 } 1311 } 1313 augment "/moam:notifications/moam:defect-condition-notification 1314 " { uses bfd-session-stats;} 1316 1318 7. Default Mode for BFD OAM 1320 This document defines default configuration that MUST be present in 1321 the devices that comply with this document. Base Mode allows users 1322 to have zero-touch experience. 1324 8. Security Considerations 1326 TBD. 1328 9. IANA Considerations 1330 TBD. 1332 10. Normative References 1334 [I-D.tissa-lime-yang-oam-model] 1335 Senevirathne, T., Finn, N., Kumar, D., Salam, S., and Q. 1336 Wu, "Generic YANG Data Model for Operations, 1337 Administration, and Maintenance (OAM)", draft-tissa-lime- 1338 yang-oam-model-03 (work in progress), November 2014. 1340 [I-D.wang-lime-rpc-yang-oam-management] 1341 Wang, Z. and Q. Wu, "Additional RPC definitions to Generic 1342 YANG Data Model for layer Independent OAM Management", 1343 draft-wang-lime-rpc-yang-oam-management-00 (work in 1344 progress), October 2014. 1346 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1347 Requirement Levels", March 1997. 1349 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1350 (BFD)", RFC 5880, June 2010. 1352 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1353 Network Configuration Protocol (NETCONF)", RFC 6020, 1354 October 2010. 1356 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1357 Bierman, "Network Configuration Protocol (NETCONF)", RFC 1358 6241, June 2011. 1360 [RFC7331] Nadeau, T., Ali, Z., and N. Akiya, "Bidirectional 1361 Forwarding Detection (BFD) Management Information Base", 1362 RFC 7331, August 2014. 1364 Authors' Addresses 1366 Zitao Wang 1367 Huawei Technologies,Co.,Ltd 1368 101 Software Avenue, Yuhua District 1369 Nanjing 210012 1370 China 1372 Email: wangzitao@huawei.com 1374 Liang Xia 1375 Huawei Technologies,Co.,Ltd 1376 101 Software Avenue, Yuhua District 1377 Nanjing 210012 1378 China 1380 Email: frank.xialiang@huawei.com 1382 Deepak Kumar 1383 Cisco Systems 1384 510 McCarthy Blvd Milpitas, 1385 CA 95035 1386 USA 1388 Email: dekumar@cisco.com 1390 Qin Wu 1391 Huawei 1392 101 Software Avenue, Yuhua District 1393 Nanjing, Jiangsu 210012 1394 China 1396 Email: bill.wu@huawei.com