idnits 2.17.1 draft-kumar-lime-yang-connectionless-oam-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 38 instances of too long lines in the document, the longest one being 20 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 524 has weird spacing: '...ocation ine...' == Line 560 has weird spacing: '...w index uin...' == Line 565 has weird spacing: '...ocation ine...' == Line 601 has weird spacing: '...w index uin...' == Line 606 has weird spacing: '...ocation yan...' == (16 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 19, 2016) is 2835 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: 'RFC7276' is mentioned on line 334, but not defined == Missing Reference: 'RFC4443' is mentioned on line 95, but not defined == Missing Reference: 'RFC3688' is mentioned on line 2829, but not defined == Unused Reference: 'RFC6242' is defined on line 2861, but no explicit reference was found in the text Summary: 1 error (**), 0 flaws (~~), 12 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group D. Kumar 3 Internet-Draft Cisco 4 Intended status: Standards Track M. Wang 5 Expires: January 20, 2017 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 July 19, 2016 12 Generic YANG Data Model for Connection Less Operations, Administration, 13 and Maintenance(OAM) protocols 14 draft-kumar-lime-yang-connectionless-oam-05 16 Abstract 18 This document presents a base YANG Data model for connectionless OAM 19 protocols. It provides a technology-independent abstraction of key 20 OAM constructs for connectionless protocols. The Base model 21 presented here can be extended to include technology specific 22 details. This is leading to uniformity between OAM protocols and 23 support nested OAM workflows (i.e., performing OAM functions at 24 different or same levels through a unified interface). 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at http://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on January 20, 2017. 43 Copyright Notice 45 Copyright (c) 2016 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (http://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 61 2. Conventions used in this document . . . . . . . . . . . . . . 3 62 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 63 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 64 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 65 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 66 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 67 3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 68 3.4. Test Point Locations Information . . . . . . . . . . . . 7 69 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 70 3.6. Path discovery data . . . . . . . . . . . . . . . . . . . 7 71 3.7. Continuity check data . . . . . . . . . . . . . . . . . . 8 72 3.8. RPC definitions . . . . . . . . . . . . . . . . . . . . . 8 73 3.9. Relation with other OAM YANG Model . . . . . . . . . . . 11 74 3.10. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 11 75 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 29 76 5. Security Considerations . . . . . . . . . . . . . . . . . . . 60 77 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 60 78 7. Normative References . . . . . . . . . . . . . . . . . . . . 60 79 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 61 81 1. Introduction 83 Operations, Administration, and Maintenance (OAM) are important 84 networking functions that allow operators to: 86 1. Monitor networks connections (Reachability Verification, 87 Continuity Check). 89 2. Troubleshoot failures (Fault verification and localization). 91 3. Monitor Performance 93 An overview of OAM tools is presented at [RFC7276]. 95 Ping and Traceroute [RFC792], [RFC4443] are well-known fault 96 verification and isolation tools, respectively, for IP networks. 97 Over the years, different technologies have developed similar tools 98 for similar purposes. 100 In this document, we present two modules, one to represent the base 101 independent and stand-alone YANG data model for connectionless OAM 102 protocols and the other one focuses on data retrival procedures like 103 RPCs. The split module approach avoids mixing the models for the 104 retrieved-data from the retrieval procedures. It is expected that 105 retrieval procedures would evolve faster than the data model and will 106 allow new procedures to be defined for retrieval of the same data 107 defined by the base data model. This also allows the data model to 108 change at its own pace. 110 2. Conventions used in this document 112 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 113 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 114 document are to be interpreted as described in [RFC2119]. 116 The following terms are defined in [RFC6241] and are not redefined 117 here: 119 o client 121 o configuration data 123 o server 125 o state data 127 The following terms are defined in [RFC6020] and are not redefined 128 here: 130 o augment 132 o data model 134 o data node 136 The terminology for describing YANG data models is found in 137 [RFC6020]. 139 2.1. Terminology 141 TP - Test Point 143 MAC - Media Access Control 145 BFD - Bidirectional Forwarding Detection 147 TLV - Type Length Value 149 RPC - A Remote Procedure Call, as used within the NETCONF protocol 151 2.2. Tree Diagrams 153 A simplified graphical representation of the data model is used in 154 this document. The meaning of the symbols in these diagrams is as 155 follows: 157 Each node is printed as: 159 161 is one of: 162 + for current 163 x for deprecated 164 o for obsolete 166 is one of: 168 rw for configuration data 169 ro for non-configuration data 170 -x for rpcs 171 -n for notifications 173 is the name of the node 175 If the node is augmented into the tree from another module, its name 176 is printed as :. 178 is one of: 180 ? for an optional leaf or choice 181 ! for a presence container 182 * for a leaf-list or list 183 [] for a list's keys 185 is the name of the type for leafs and leaf-lists 187 3. Overview of the Connectionless OAM Model 189 At the top of the Model, there is an oper container for session 190 statistics. Grouping is also defined for common session statistics 191 and these are applicable for proactive OAM sessions. Multiple test- 192 point-locations keyed using technology specific keys (eg., IPv4 193 address for IPv4 locations) are possible by augmented network 194 topology nodes. Each test-point-location is chosen based on 195 location-type which when chosen, leads to a container that includes a 196 list of test-point-locations keyed by technology specific keys. Each 197 test point location includes a test-point-location-info. The test- 198 point-location-info includes tp-technology, tp-tools, and 199 connectionless-oam-layers. The groupings of tp-address and tp- 200 address-vrf are kept out of test-point-location-info to make it 201 addressing agnostic and allow varied composition. Depending upon the 202 choice of the location-type (determined by the tp-address-vrf), the 203 containers differ in its composition of test-point-locations while 204 the test-point-location-info, is a common aspect of every test-point- 205 location. The vrf is used to describe the corresponding network 206 instance. The tp-technology indicate oam technology details. The 207 tp-tools describe the oam tools supported. The connectionless-oam- 208 layers is used to describe the relationship of one test point with 209 other test points. The level in oam-layers indicate whether related 210 oam test point is client layer, server layer or same or stiched 211 layer. The Model is augmented to /nd:networks/nd:network/nd:node 212 using Test Point Locations defined below. 214 3.1. TP Address 216 In connectionless OAM, the tp address is defined with the following 217 type: 219 o MAC address 221 o IPv4 or IPv6 address 223 o a pair of source, destination addresses, and interface (Useful for 224 BFD) 226 o FEC 228 o TLV address (RFC6428 (Figure 4,5, and 6)) 230 o System-id to represent the device or node. 232 3.2. Tools 234 In connectionless OAM, the tools attribute is used to describe a 235 toolset for fault detection and isolation, and for performance 236 measurement. And it can serve as a constraint condition when the 237 base model be extended to specific OAM technology. For example, to 238 fulfill the icmp ping configuration, the "../coam:tools-ip/ 239 coam:rfc792" should be set to "true", and then the lime base model 240 should be augmented with icmp ping specific details. 242 3.3. OAM-layers 244 As typical networks have a multi-layer architecture, the set of OAM 245 protocols similarly take a multi-layer structure; each layer has its 246 own OAM protocols [RFC7276] and is corresponding to specific network 247 portion or pathand has associated test points. OAM-layers is 248 referred to a list of upper layer, lower layer that are related to 249 current test point. This allow users to easily navigate up and down 250 to efficiently troubleshoot a connectivity issue at different layer. 251 In this model, we have kept level default as 0, when all test points 252 are located at the same layer. Level is provided for scenarios where 253 it might be possible to define layering relationship as it can be 254 used to stitching fault at related oam layers. For example, there is 255 a network in which data traffic between two customer edges is 256 transported over three consecutive network portions, the current test 257 point is located in the second network portion. If there is a defect 258 in the first network portion is located at the upstream of the second 259 network portion, the level of the first network portion is set to 260 "-1". If the third network portion is located at the downstream of 261 the second network portion and the level is set to "1". In another 262 case, if the first network portion and the third network portion is 263 in the same level of thesecond network portion, the level is set to 264 "0". The snippet below depicts an example of OAM layers. 266 list oam-layers { 267 key "index"; 268 leaf index { 269 type uint16 { 270 range "0..65535"; 271 } 272 } 273 leaf level { 274 type int32 { 275 range "-1..1"; 276 } 277 description 278 "Level"; 279 } 280 ordered-by user; 281 description 282 "list of related oam layers."; 283 } 285 3.4. Test Point Locations Information 287 This is a generic grouping for Test Point Locations Information. It 288 Provide details of Test Point Location using Tools, OAM-Layers 289 grouping defined above. 291 3.5. Test Point Locations 293 This is a generic grouping for Test Point Locations. Choice 294 statement is used to define locations types, for example ipv4- 295 location-type, ipv6-location-type, etc. Container is defined under 296 each location type containing list keyed to test point address, Test 297 Point Location Information defined in section above, and routing 298 instance vrf name if required. 300 3.6. Path discovery data 302 This is a generic grouping for path discovery data model that can be 303 retrieved by any data retrieval methods including RPCs. Path 304 discovery data output from methods, includes src-test-point, dst- 305 test-point, sequence-number, hop-cnt, session statistics of various 306 kinds,path verification and path trace related information. Path 307 discovery includes data to be retrieved on a per-hop basis via a list 308 of path-trace-info-list which includes information like timestamps, 309 ingress-interface, egress-interface and app-meta-data. The path 310 discovery data model is made generic enough to allow active, passive 311 and hybrid OAMs to do the retrieval. None of the fields are made 312 mandatory for that reason. 314 3.7. Continuity check data 316 This is a generic grouping for continuity check data model that can 317 be retrieved by any data retrieval methods including RPCs. 318 Continuity check data output from methods, includes src-test-point, 319 dst-test-point, sequence-number, hop-cnt and session statistics of 320 various kinds. The continuity check data model is made generic 321 enough to allow active, passive and hybrid OAMs to do the retrieval. 322 None of the fields are made mandatory for that reason. 324 3.8. RPC definitions 326 The rpc model described here as a separate model outside of the data 327 model, facilitates issuing commands to a NETCONF server (in this case 328 to the device that need to execute the OAM command) and obtaining a 329 response. 331 Under connectionless-oam-methods module, we summarize the common OAM 332 functions and define the generic rpc commands: continuity-check and 333 path-discovery. In practice, these commands are supported by 334 corresponding technology-specific OAM tools [RFC7276]. For example, 335 for the IP OAM model, the continuity-check rpc corresponds to the IP 336 Ping, while the path-discovery rpc command corresponds to IP 337 Traceroute. 339 Note that the rpc command presented in this document is the base 340 building block, which is used to derive a model for a technology- 341 specific OAM(i.e., icmp ping, lsp ping), the base building block 342 should be extended with corresponding technology specific parameters. 343 To facilitate this and for future enhancements to data retrieval 344 methods, the RPCs are captured under a separate module. 346 The generic path-discovery-data and continuity-check-data are used as 347 data outputs from the different RPCs described in the document. 348 Similar methods including other RPCs can retrieve the data using the 349 same data model. 351 rpc continuity-check { 352 if-feature coam:continuity-check; 353 description 354 "Generates continuity-check as per RFC7276."; 355 input { 356 container destination-tp { 357 uses coam:tp-address; 358 description 359 "destination test point."; 360 } 361 uses coam:session-type; 362 leaf source-interface { 363 type if:interface-ref; 364 description 365 "source interface."; 366 } 367 leaf outbound-interface { 368 type if:interface-ref; 370 description 371 "outbound interface."; 372 } 373 leaf count { 374 type uint32; 375 default "5"; 376 description 377 "Specifies the number of packets that will be sent."; 378 } 379 leaf vrf { 380 type coam:routing-instance-ref; 381 description 382 "vrf instance."; 383 } 384 leaf ttl { 385 type uint8; 386 default "255"; 387 description 388 "Time to live (TTL)."; 389 } 390 leaf packet-size { 391 type uint32 { 392 range "64..10000"; 393 } 394 default "64"; 395 description 396 "Size of ping echo request packets, in octets"; 397 } 398 } 399 output { 400 list error-code-list { 401 key "response-index"; 402 leaf response-index { 403 type uint32; 404 description 405 "response index."; 406 } 407 leaf status-code { 408 type int32; 409 description 410 "error code is "; 411 } 412 leaf status-sub-code { 413 type uint8; 414 description 415 "sub code."; 416 } 417 description 418 "error code list."; 419 } 421 uses coam:continuity-check-data; 422 } 423 } 425 rpc path-discovery { 426 description 427 "Generates path discovery as per RFC7276."; 428 input { 429 container destination-tp { 430 uses coam:tp-address; 431 description 432 "destination test point."; 433 } 434 uses coam:session-type; 435 leaf source-interface { 436 type if:interface-ref; 437 description 438 "source interface."; 439 } 440 leaf outbound-interface { 441 type if:interface-ref; 442 description 443 "outbound interface."; 444 } 445 leaf vrf { 446 type coam:routing-instance-ref; 447 description 448 "vrf"; 449 } 450 leaf max-ttl { 451 type uint8; 452 default "255"; 453 description 454 "max ttl."; 455 } 456 } 457 output { 458 list response-list { 459 key "response-index"; 460 description 461 "path discovery response list."; 462 leaf response-index { 463 type uint32; 464 description 465 "response index."; 466 } 467 leaf status-code { 468 type int32; 469 description 470 "error code is "; 471 } 472 leaf status-sub-code { 473 type uint8; 475 description 476 "sub code is "; 477 } 478 } 480 uses coam:path-discovery-data; 481 } 482 } 484 Snippet of data hierarchy related to rpc calls 486 3.9. Relation with other OAM YANG Model 488 In this document we define a generic YANG data model for 489 connectionless OAM protocols. The other model defined adds generic 490 data-retrieval methods. The YANG data model defined here is generic 491 such that other technologies can extend it for technology specific 492 needs. The Generic YANG model acts as the root for other OAM YANG 493 models. This allows users to traverse between different OAM 494 protocols at ease through a uniform API set. The Generic YANG model 495 for OAM provides a framework where technology- specific YANG models 496 can choose to inherit constructs from the base YANG models without 497 needing to redefine them within the sub-technology. 499 3.10. OAM data hierarchy 501 The complete data hierarchy related to the OAM YANG model is 502 presented below. 504 module: ietf-connectionless-oam 505 +--ro oper {continuity-check}? 506 +--ro cc-ipv4-sessions-statistics 507 | +--ro cc-session-statistics 508 | +--ro session-count? uint32 509 | +--ro session-up-count? uint32 510 | +--ro session-down-count? uint32 511 | +--ro session-admin-down-count? uint32 512 +--ro cc-ipv6-sessions-statistics 513 +--ro cc-session-statistics 514 +--ro session-count? uint32 515 +--ro session-up-count? uint32 516 +--ro session-down-count? uint32 517 +--ro session-admin-down-count? uint32 518 augment /nd:networks/nd:network/nd:node: 519 +--rw tp-address-type-value? identityref 520 +--rw (location-type)? 521 +--:(ipv4-location-type) 522 | +--rw test-point-ipv4-location-list 523 | +--rw test-point-locations* [ipv4-location] 524 | +--rw ipv4-location inet:ipv4-address 525 | +--rw vrf? routing-instance-ref 526 | +--rw (technology)? 527 | | +--:(technology-null) 528 | | | +--rw tech-null? empty 529 | | +--:(technology-string) 530 | | +--rw ipv4-icmp? string 531 | +--rw (tools)? 532 | | +--:(tools-empty) 533 | | | +--rw tools-null? empty 534 | | +--:(tools-ip) 535 | | | +--rw rfc792? boolean 536 | | | +--rw rfc4443? boolean 537 | | | +--rw rfc4884? boolean 538 | | | +--rw rfc5837? boolean 539 | | +--:(tools-bfd) 540 | | | +--rw rfc5881? boolean 541 | | | +--rw rfc5883? boolean 542 | | | +--rw rfc5884? boolean 543 | | | +--rw rfc5885? boolean 544 | | +--:(tools-mpls) 545 | | | +--rw rfc4379? boolean 546 | | | +--rw rfc4687? boolean 547 | | | +--rw rfc4950? boolean 548 | | | +--rw mpls-rfc5884? boolean 549 | | +--:(tools-mpls-tp) 550 | | | +--rw rfc6426? boolean 551 | | | +--rw rfc6435? boolean 552 | | | +--rw rfc6374? boolean 553 | | +--:(tools-pw) 554 | | +--rw rfc5085? boolean 555 | | +--rw pw_rfc5885? boolean 556 | | +--rw rfc6423? boolean 557 | | +--rw rfc6310? boolean 558 | | +--rw rfc7023? boolean 559 | +--rw oam-layers* [index] 560 | +--rw index uint16 561 | +--rw level? int32 562 +--:(ipv6-location-type) 563 | +--rw test-point-ipv6-location-list 564 | +--rw test-point-locations* [ipv6-location] 565 | +--rw ipv6-location inet:ipv6-address 566 | +--rw vrf? routing-instance-ref 567 | +--rw (technology)? 568 | | +--:(technology-null) 569 | | | +--rw tech-null? empty 570 | | +--:(technology-string) 571 | | +--rw ipv4-icmp? string 572 | +--rw (tools)? 573 | | +--:(tools-empty) 574 | | | +--rw tools-null? empty 575 | | +--:(tools-ip) 576 | | | +--rw rfc792? boolean 577 | | | +--rw rfc4443? boolean 578 | | | +--rw rfc4884? boolean 579 | | | +--rw rfc5837? boolean 580 | | +--:(tools-bfd) 581 | | | +--rw rfc5881? boolean 582 | | | +--rw rfc5883? boolean 583 | | | +--rw rfc5884? boolean 584 | | | +--rw rfc5885? boolean 585 | | +--:(tools-mpls) 586 | | | +--rw rfc4379? boolean 587 | | | +--rw rfc4687? boolean 588 | | | +--rw rfc4950? boolean 589 | | | +--rw mpls-rfc5884? boolean 590 | | +--:(tools-mpls-tp) 591 | | | +--rw rfc6426? boolean 592 | | | +--rw rfc6435? boolean 593 | | | +--rw rfc6374? boolean 594 | | +--:(tools-pw) 595 | | +--rw rfc5085? boolean 596 | | +--rw pw_rfc5885? boolean 597 | | +--rw rfc6423? boolean 598 | | +--rw rfc6310? boolean 599 | | +--rw rfc7023? boolean 600 | +--rw oam-layers* [index] 601 | +--rw index uint16 602 | +--rw level? int32 603 +--:(mac-location-type) 604 | +--rw test-point-mac-address-location-list 605 | +--rw test-point-locations* [mac-address-location] 606 | +--rw mac-address-location yang:mac-address 607 | +--rw (technology)? 608 | | +--:(technology-null) 609 | | | +--rw tech-null? empty 610 | | +--:(technology-string) 611 | | +--rw ipv4-icmp? string 612 | +--rw (tools)? 613 | | +--:(tools-empty) 614 | | | +--rw tools-null? empty 615 | | +--:(tools-ip) 616 | | | +--rw rfc792? boolean 617 | | | +--rw rfc4443? boolean 618 | | | +--rw rfc4884? boolean 619 | | | +--rw rfc5837? boolean 620 | | +--:(tools-bfd) 621 | | | +--rw rfc5881? boolean 622 | | | +--rw rfc5883? boolean 623 | | | +--rw rfc5884? boolean 624 | | | +--rw rfc5885? boolean 625 | | +--:(tools-mpls) 626 | | | +--rw rfc4379? boolean 627 | | | +--rw rfc4687? boolean 628 | | | +--rw rfc4950? boolean 629 | | | +--rw mpls-rfc5884? boolean 630 | | +--:(tools-mpls-tp) 631 | | | +--rw rfc6426? boolean 632 | | | +--rw rfc6435? boolean 633 | | | +--rw rfc6374? boolean 634 | | +--:(tools-pw) 635 | | +--rw rfc5085? boolean 636 | | +--rw pw_rfc5885? boolean 637 | | +--rw rfc6423? boolean 638 | | +--rw rfc6310? boolean 639 | | +--rw rfc7023? boolean 640 | +--rw oam-layers* [index] 641 | +--rw index uint16 642 | +--rw level? int32 643 +--:(tunnel-location-type) 644 | +--rw test-point-tunnel-address-location-list 645 | +--rw test-point-locations* [tunnel-location] 646 | +--rw tunnel-location uint32 647 | +--rw vrf? routing-instance-ref 648 | +--rw (technology)? 649 | | +--:(technology-null) 650 | | | +--rw tech-null? empty 651 | | +--:(technology-string) 652 | | +--rw ipv4-icmp? string 653 | +--rw (tools)? 654 | | +--:(tools-empty) 655 | | | +--rw tools-null? empty 656 | | +--:(tools-ip) 657 | | | +--rw rfc792? boolean 658 | | | +--rw rfc4443? boolean 659 | | | +--rw rfc4884? boolean 660 | | | +--rw rfc5837? boolean 661 | | +--:(tools-bfd) 662 | | | +--rw rfc5881? boolean 663 | | | +--rw rfc5883? boolean 664 | | | +--rw rfc5884? boolean 665 | | | +--rw rfc5885? boolean 666 | | +--:(tools-mpls) 667 | | | +--rw rfc4379? boolean 668 | | | +--rw rfc4687? boolean 669 | | | +--rw rfc4950? boolean 670 | | | +--rw mpls-rfc5884? boolean 671 | | +--:(tools-mpls-tp) 672 | | | +--rw rfc6426? boolean 673 | | | +--rw rfc6435? boolean 674 | | | +--rw rfc6374? boolean 675 | | +--:(tools-pw) 676 | | +--rw rfc5085? boolean 677 | | +--rw pw_rfc5885? boolean 678 | | +--rw rfc6423? boolean 679 | | +--rw rfc6310? boolean 680 | | +--rw rfc7023? boolean 681 | +--rw oam-layers* [index] 682 | +--rw index uint16 683 | +--rw level? int32 684 +--:(ip-prefix-location-type) 685 | +--rw test-point-ip-prefix-location-list 686 | +--rw test-point-locations* [ip-prefix-location] 687 | +--rw ip-prefix-location inet:ip-prefix 688 | +--rw vrf? routing-instance-ref 689 | +--rw (technology)? 690 | | +--:(technology-null) 691 | | | +--rw tech-null? empty 692 | | +--:(technology-string) 693 | | +--rw ipv4-icmp? string 694 | +--rw (tools)? 695 | | +--:(tools-empty) 696 | | | +--rw tools-null? empty 697 | | +--:(tools-ip) 698 | | | +--rw rfc792? boolean 699 | | | +--rw rfc4443? boolean 700 | | | +--rw rfc4884? boolean 701 | | | +--rw rfc5837? boolean 702 | | +--:(tools-bfd) 703 | | | +--rw rfc5881? boolean 704 | | | +--rw rfc5883? boolean 705 | | | +--rw rfc5884? boolean 706 | | | +--rw rfc5885? boolean 707 | | +--:(tools-mpls) 708 | | | +--rw rfc4379? boolean 709 | | | +--rw rfc4687? boolean 710 | | | +--rw rfc4950? boolean 711 | | | +--rw mpls-rfc5884? boolean 712 | | +--:(tools-mpls-tp) 713 | | | +--rw rfc6426? boolean 714 | | | +--rw rfc6435? boolean 715 | | | +--rw rfc6374? boolean 716 | | +--:(tools-pw) 717 | | +--rw rfc5085? boolean 718 | | +--rw pw_rfc5885? boolean 719 | | +--rw rfc6423? boolean 720 | | +--rw rfc6310? boolean 721 | | +--rw rfc7023? boolean 722 | +--rw oam-layers* [index] 723 | +--rw index uint16 724 | +--rw level? int32 725 +--:(route-distinguisher-location-type) 726 | +--rw test-point-route-dist-location-list 727 | +--rw test-point-locations* [route-dist-location] 728 | +--rw route-dist-location uint32 729 | +--rw vrf? routing-instance-ref 730 | +--rw (technology)? 731 | | +--:(technology-null) 732 | | | +--rw tech-null? empty 733 | | +--:(technology-string) 734 | | +--rw ipv4-icmp? string 735 | +--rw (tools)? 736 | | +--:(tools-empty) 737 | | | +--rw tools-null? empty 738 | | +--:(tools-ip) 739 | | | +--rw rfc792? boolean 740 | | | +--rw rfc4443? boolean 741 | | | +--rw rfc4884? boolean 742 | | | +--rw rfc5837? boolean 743 | | +--:(tools-bfd) 744 | | | +--rw rfc5881? boolean 745 | | | +--rw rfc5883? boolean 746 | | | +--rw rfc5884? boolean 747 | | | +--rw rfc5885? boolean 748 | | +--:(tools-mpls) 749 | | | +--rw rfc4379? boolean 750 | | | +--rw rfc4687? boolean 751 | | | +--rw rfc4950? boolean 752 | | | +--rw mpls-rfc5884? boolean 753 | | +--:(tools-mpls-tp) 754 | | | +--rw rfc6426? boolean 755 | | | +--rw rfc6435? boolean 756 | | | +--rw rfc6374? boolean 757 | | +--:(tools-pw) 758 | | +--rw rfc5085? boolean 759 | | +--rw pw_rfc5885? boolean 760 | | +--rw rfc6423? boolean 761 | | +--rw rfc6310? boolean 762 | | +--rw rfc7023? boolean 763 | +--rw oam-layers* [index] 764 | +--rw index uint16 765 | +--rw level? int32 766 +--:(group-ip-address-location-type) 767 | +--rw test-point-group-ip-address-location-list 768 | +--rw test-point-locations* [group-ip-address-location] 769 | +--rw group-ip-address-location IP-Multicast-Group-Address 770 | +--rw vrf? routing-instance-ref 771 | +--rw (technology)? 772 | | +--:(technology-null) 773 | | | +--rw tech-null? empty 774 | | +--:(technology-string) 775 | | +--rw ipv4-icmp? string 776 | +--rw (tools)? 777 | | +--:(tools-empty) 778 | | | +--rw tools-null? empty 779 | | +--:(tools-ip) 780 | | | +--rw rfc792? boolean 781 | | | +--rw rfc4443? boolean 782 | | | +--rw rfc4884? boolean 783 | | | +--rw rfc5837? boolean 784 | | +--:(tools-bfd) 785 | | | +--rw rfc5881? boolean 786 | | | +--rw rfc5883? boolean 787 | | | +--rw rfc5884? boolean 788 | | | +--rw rfc5885? boolean 789 | | +--:(tools-mpls) 790 | | | +--rw rfc4379? boolean 791 | | | +--rw rfc4687? boolean 792 | | | +--rw rfc4950? boolean 793 | | | +--rw mpls-rfc5884? boolean 794 | | +--:(tools-mpls-tp) 795 | | | +--rw rfc6426? boolean 796 | | | +--rw rfc6435? boolean 797 | | | +--rw rfc6374? boolean 798 | | +--:(tools-pw) 799 | | +--rw rfc5085? boolean 800 | | +--rw pw_rfc5885? boolean 801 | | +--rw rfc6423? boolean 802 | | +--rw rfc6310? boolean 803 | | +--rw rfc7023? boolean 804 | +--rw oam-layers* [index] 805 | +--rw index uint16 806 | +--rw level? int32 807 +--:(group-as-number-location-type) 808 | +--rw test-point-as-number-location-list 809 | +--rw test-point-locations* [as-number-location] 810 | +--rw as-number-location inet:as-number 811 | +--rw vrf? routing-instance-ref 812 | +--rw (technology)? 813 | | +--:(technology-null) 814 | | | +--rw tech-null? empty 815 | | +--:(technology-string) 816 | | +--rw ipv4-icmp? string 817 | +--rw (tools)? 818 | | +--:(tools-empty) 819 | | | +--rw tools-null? empty 820 | | +--:(tools-ip) 821 | | | +--rw rfc792? boolean 822 | | | +--rw rfc4443? boolean 823 | | | +--rw rfc4884? boolean 824 | | | +--rw rfc5837? boolean 825 | | +--:(tools-bfd) 826 | | | +--rw rfc5881? boolean 827 | | | +--rw rfc5883? boolean 828 | | | +--rw rfc5884? boolean 829 | | | +--rw rfc5885? boolean 830 | | +--:(tools-mpls) 831 | | | +--rw rfc4379? boolean 832 | | | +--rw rfc4687? boolean 833 | | | +--rw rfc4950? boolean 834 | | | +--rw mpls-rfc5884? boolean 835 | | +--:(tools-mpls-tp) 836 | | | +--rw rfc6426? boolean 837 | | | +--rw rfc6435? boolean 838 | | | +--rw rfc6374? boolean 839 | | +--:(tools-pw) 840 | | +--rw rfc5085? boolean 841 | | +--rw pw_rfc5885? boolean 842 | | +--rw rfc6423? boolean 843 | | +--rw rfc6310? boolean 844 | | +--rw rfc7023? boolean 845 | +--rw oam-layers* [index] 846 | +--rw index uint16 847 | +--rw level? int32 848 +--:(group-lsp-id-location-type) 849 | +--rw test-point-lsp-id-location-list 850 | +--rw test-point-locations* [lsp-id-location] 851 | +--rw lsp-id-location string 852 | +--rw vrf? routing-instance-ref 853 | +--rw (technology)? 854 | | +--:(technology-null) 855 | | | +--rw tech-null? empty 856 | | +--:(technology-string) 857 | | +--rw ipv4-icmp? string 858 | +--rw (tools)? 859 | | +--:(tools-empty) 860 | | | +--rw tools-null? empty 861 | | +--:(tools-ip) 862 | | | +--rw rfc792? boolean 863 | | | +--rw rfc4443? boolean 864 | | | +--rw rfc4884? boolean 865 | | | +--rw rfc5837? boolean 866 | | +--:(tools-bfd) 867 | | | +--rw rfc5881? boolean 868 | | | +--rw rfc5883? boolean 869 | | | +--rw rfc5884? boolean 870 | | | +--rw rfc5885? boolean 871 | | +--:(tools-mpls) 872 | | | +--rw rfc4379? boolean 873 | | | +--rw rfc4687? boolean 874 | | | +--rw rfc4950? boolean 875 | | | +--rw mpls-rfc5884? boolean 876 | | +--:(tools-mpls-tp) 877 | | | +--rw rfc6426? boolean 878 | | | +--rw rfc6435? boolean 879 | | | +--rw rfc6374? boolean 880 | | +--:(tools-pw) 881 | | +--rw rfc5085? boolean 882 | | +--rw pw_rfc5885? boolean 883 | | +--rw rfc6423? boolean 884 | | +--rw rfc6310? boolean 885 | | +--rw rfc7023? boolean 886 | +--rw oam-layers* [index] 887 | +--rw index uint16 888 | +--rw level? int32 889 +--:(group-system-id-location-type) 890 +--rw test-point-system-info-location-list 891 +--rw test-point-locations* [system-id-location] 892 +--rw system-id-location inet:uri 893 +--rw vrf? routing-instance-ref 894 +--rw (technology)? 895 | +--:(technology-null) 896 | | +--rw tech-null? empty 897 | +--:(technology-string) 898 | +--rw ipv4-icmp? string 899 +--rw (tools)? 900 | +--:(tools-empty) 901 | | +--rw tools-null? empty 902 | +--:(tools-ip) 903 | | +--rw rfc792? boolean 904 | | +--rw rfc4443? boolean 905 | | +--rw rfc4884? boolean 906 | | +--rw rfc5837? boolean 907 | +--:(tools-bfd) 908 | | +--rw rfc5881? boolean 909 | | +--rw rfc5883? boolean 910 | | +--rw rfc5884? boolean 911 | | +--rw rfc5885? boolean 912 | +--:(tools-mpls) 913 | | +--rw rfc4379? boolean 914 | | +--rw rfc4687? boolean 915 | | +--rw rfc4950? boolean 916 | | +--rw mpls-rfc5884? boolean 917 | +--:(tools-mpls-tp) 918 | | +--rw rfc6426? boolean 919 | | +--rw rfc6435? boolean 920 | | +--rw rfc6374? boolean 921 | +--:(tools-pw) 922 | +--rw rfc5085? boolean 923 | +--rw pw_rfc5885? boolean 924 | +--rw rfc6423? boolean 925 | +--rw rfc6310? boolean 926 | +--rw rfc7023? boolean 927 +--rw oam-layers* [index] 928 +--rw index uint16 929 +--rw level? int32 931 module: ietf-connectionless-oam-methods 932 rpcs: 933 +---x continuity-check {coam:continuity-check}? 934 | +---w input 935 | | +---w destination-tp 936 | | | +---w (tp-address)? 937 | | | +--:(mac-address) 938 | | | | +---w mac-address? yang:mac-address 939 | | | +--:(ipv4-address) 940 | | | | +---w ipv4-address? inet:ipv4-address 941 | | | +--:(ipv6-address) 942 | | | | +---w ipv6-address? inet:ipv6-address 943 | | | +--:(src-dst-address) 944 | | | | +---w src-ip-address? inet:ip-address 945 | | | | +---w dst-ip-address? inet:ip-address 946 | | | | +---w Interface? if:interface-ref 947 | | | +--:(fec) 948 | | | | +---w fec-type? fec-type 949 | | | | +---w (fec-value)? 950 | | | | +--:(ip-prefix) 951 | | | | | +---w ip-prefix? inet:ip-prefix 952 | | | | +--:(bgp) 953 | | | | | +---w bgp? inet:ip-prefix 954 | | | | +--:(tunnel) 955 | | | | | +---w tunnel-interface? uint32 956 | | | | +--:(l3vpn) 957 | | | | | +---w l3vpn-id? uint32 958 | | | | +--:(pw) 959 | | | | | +---w remote-pe-address? inet:ip-address 960 | | | | | +---w pw-id? uint32 961 | | | | +--:(vpls) 962 | | | | | +---w route-distinguisher? uint32 963 | | | | | +---w sender-ve-id? uint32 964 | | | | | +---w receiver-ve-id? uint32 965 | | | | +--:(mpls-mldp) 966 | | | | +---w (root-address)? 967 | | | | +--:(ip-address) 968 | | | | | +---w source-address? inet:ip-address 969 | | | | | +---w group-ip-address? IP-Multicast-Group-Address 970 | | | | +--:(vpn) 971 | | | | | +---w as-number? inet:as-number 972 | | | | +--:(global-id) 973 | | | | +---w lsp-id? string 974 | | | +--:(tlv-address) 975 | | | | +---w tlv-type? int16 976 | | | | +---w tlv-len? int16 977 | | | | +---w tlv-value? binary 978 | | | +--:(system-info) 979 | | | +---w system-id? inet:uri 980 | | +---w session-type-enum? enumeration 981 | | +---w source-interface? if:interface-ref 982 | | +---w outbound-interface? if:interface-ref 983 | | +---w count? uint32 984 | | +---w vrf? coam:routing-instance-ref 985 | | +---w ttl? uint8 986 | | +---w packet-size? uint32 987 | +--ro output 988 | +--ro error-code-list* [response-index] 989 | | +--ro response-index uint32 990 | | +--ro status-code? int32 991 | | +--ro status-sub-code? uint8 992 | +--ro src-test-point 993 | | +--ro vrf? routing-instance-ref 994 | | +--ro (tp-address)? 995 | | | +--:(mac-address) 996 | | | | +--ro mac-address? yang:mac-address 997 | | | +--:(ipv4-address) 998 | | | | +--ro ipv4-address? inet:ipv4-address 999 | | | +--:(ipv6-address) 1000 | | | | +--ro ipv6-address? inet:ipv6-address 1001 | | | +--:(src-dst-address) 1002 | | | | +--ro src-ip-address? inet:ip-address 1003 | | | | +--ro dst-ip-address? inet:ip-address 1004 | | | | +--ro Interface? if:interface-ref 1005 | | | +--:(fec) 1006 | | | | +--ro fec-type? fec-type 1007 | | | | +--ro (fec-value)? 1008 | | | | +--:(ip-prefix) 1009 | | | | | +--ro ip-prefix? inet:ip-prefix 1010 | | | | +--:(bgp) 1011 | | | | | +--ro bgp? inet:ip-prefix 1012 | | | | +--:(tunnel) 1013 | | | | | +--ro tunnel-interface? uint32 1014 | | | | +--:(l3vpn) 1015 | | | | | +--ro l3vpn-id? uint32 1016 | | | | +--:(pw) 1017 | | | | | +--ro remote-pe-address? inet:ip-address 1018 | | | | | +--ro pw-id? uint32 1019 | | | | +--:(vpls) 1020 | | | | | +--ro route-distinguisher? uint32 1021 | | | | | +--ro sender-ve-id? uint32 1022 | | | | | +--ro receiver-ve-id? uint32 1023 | | | | +--:(mpls-mldp) 1024 | | | | +--ro (root-address)? 1025 | | | | +--:(ip-address) 1026 | | | | | +--ro source-address? inet:ip-address 1027 | | | | | +--ro group-ip-address? IP-Multicast-Group-Address 1028 | | | | +--:(vpn) 1029 | | | | | +--ro as-number? inet:as-number 1030 | | | | +--:(global-id) 1031 | | | | +--ro lsp-id? string 1032 | | | +--:(tlv-address) 1033 | | | | +--ro tlv-type? int16 1034 | | | | +--ro tlv-len? int16 1035 | | | | +--ro tlv-value? binary 1036 | | | +--:(system-info) 1037 | | | +--ro system-id? inet:uri 1038 | | +--ro egress-intf-name? if:interface-ref 1039 | +--ro dest-test-point 1040 | | +--ro vrf? routing-instance-ref 1041 | | +--ro (tp-address)? 1042 | | | +--:(mac-address) 1043 | | | | +--ro mac-address? yang:mac-address 1044 | | | +--:(ipv4-address) 1045 | | | | +--ro ipv4-address? inet:ipv4-address 1046 | | | +--:(ipv6-address) 1047 | | | | +--ro ipv6-address? inet:ipv6-address 1048 | | | +--:(src-dst-address) 1049 | | | | +--ro src-ip-address? inet:ip-address 1050 | | | | +--ro dst-ip-address? inet:ip-address 1051 | | | | +--ro Interface? if:interface-ref 1052 | | | +--:(fec) 1053 | | | | +--ro fec-type? fec-type 1054 | | | | +--ro (fec-value)? 1055 | | | | +--:(ip-prefix) 1056 | | | | | +--ro ip-prefix? inet:ip-prefix 1057 | | | | +--:(bgp) 1058 | | | | | +--ro bgp? inet:ip-prefix 1059 | | | | +--:(tunnel) 1060 | | | | | +--ro tunnel-interface? uint32 1061 | | | | +--:(l3vpn) 1062 | | | | | +--ro l3vpn-id? uint32 1063 | | | | +--:(pw) 1064 | | | | | +--ro remote-pe-address? inet:ip-address 1065 | | | | | +--ro pw-id? uint32 1066 | | | | +--:(vpls) 1067 | | | | | +--ro route-distinguisher? uint32 1068 | | | | | +--ro sender-ve-id? uint32 1069 | | | | | +--ro receiver-ve-id? uint32 1070 | | | | +--:(mpls-mldp) 1071 | | | | +--ro (root-address)? 1072 | | | | +--:(ip-address) 1073 | | | | | +--ro source-address? inet:ip-address 1074 | | | | | +--ro group-ip-address? IP-Multicast-Group-Address 1075 | | | | +--:(vpn) 1076 | | | | | +--ro as-number? inet:as-number 1077 | | | | +--:(global-id) 1078 | | | | +--ro lsp-id? string 1079 | | | +--:(tlv-address) 1080 | | | | +--ro tlv-type? int16 1081 | | | | +--ro tlv-len? int16 1082 | | | | +--ro tlv-value? binary 1083 | | | +--:(system-info) 1084 | | | +--ro system-id? inet:uri 1085 | | +--ro ingress-intf-name? if:interface-ref 1086 | +--ro sequence-number? uint64 1087 | +--ro hop-cnt? uint8 1088 | +--ro session-packet-statistics 1089 | | +--ro rx-packet-count? uint32 1090 | | +--ro tx-packet-count? uint32 1091 | | +--ro rx-bad-packet? uint32 1092 | | +--ro tx-packet-failed? uint32 1093 | +--ro session-error-statistics 1094 | | +--ro packet-drops-count? uint32 1095 | | +--ro packet-reorder-count? uint32 1096 | | +--ro packets-out-of-seq-count? uint32 1097 | | +--ro packets-dup-count? uint32 1098 | +--ro session-delay-statistics 1099 | | +--ro time-resolution-value? identityref 1100 | | +--ro min-delay-value? uint32 1101 | | +--ro max-delay-value? uint32 1102 | | +--ro average-delay-value? uint32 1103 | +--ro session-jitter-statistics 1104 | +--ro time-resolution-value? identityref 1105 | +--ro min-jitter-value? uint32 1106 | +--ro max-jitter-value? uint32 1107 | +--ro average-jitter-value? uint32 1108 +---x path-discovery 1109 +---w input 1110 | +---w destination-tp 1111 | | +---w (tp-address)? 1112 | | +--:(mac-address) 1113 | | | +---w mac-address? yang:mac-address 1114 | | +--:(ipv4-address) 1115 | | | +---w ipv4-address? inet:ipv4-address 1116 | | +--:(ipv6-address) 1117 | | | +---w ipv6-address? inet:ipv6-address 1118 | | +--:(src-dst-address) 1119 | | | +---w src-ip-address? inet:ip-address 1120 | | | +---w dst-ip-address? inet:ip-address 1121 | | | +---w Interface? if:interface-ref 1122 | | +--:(fec) 1123 | | | +---w fec-type? fec-type 1124 | | | +---w (fec-value)? 1125 | | | +--:(ip-prefix) 1126 | | | | +---w ip-prefix? inet:ip-prefix 1127 | | | +--:(bgp) 1128 | | | | +---w bgp? inet:ip-prefix 1129 | | | +--:(tunnel) 1130 | | | | +---w tunnel-interface? uint32 1131 | | | +--:(l3vpn) 1132 | | | | +---w l3vpn-id? uint32 1133 | | | +--:(pw) 1134 | | | | +---w remote-pe-address? inet:ip-address 1135 | | | | +---w pw-id? uint32 1136 | | | +--:(vpls) 1137 | | | | +---w route-distinguisher? uint32 1138 | | | | +---w sender-ve-id? uint32 1139 | | | | +---w receiver-ve-id? uint32 1140 | | | +--:(mpls-mldp) 1141 | | | +---w (root-address)? 1142 | | | +--:(ip-address) 1143 | | | | +---w source-address? inet:ip-address 1144 | | | | +---w group-ip-address? IP-Multicast-Group-Address 1145 | | | +--:(vpn) 1146 | | | | +---w as-number? inet:as-number 1147 | | | +--:(global-id) 1148 | | | +---w lsp-id? string 1149 | | +--:(tlv-address) 1150 | | | +---w tlv-type? int16 1151 | | | +---w tlv-len? int16 1152 | | | +---w tlv-value? binary 1153 | | +--:(system-info) 1154 | | +---w system-id? inet:uri 1155 | +---w session-type-enum? enumeration 1156 | +---w source-interface? if:interface-ref 1157 | +---w outbound-interface? if:interface-ref 1158 | +---w vrf? coam:routing-instance-ref 1159 | +---w max-ttl? uint8 1160 +--ro output 1161 +--ro response-list* [response-index] 1162 | +--ro response-index uint32 1163 | +--ro status-code? int32 1164 | +--ro status-sub-code? uint8 1165 +--ro src-test-point 1166 | +--ro vrf? routing-instance-ref 1167 | +--ro (tp-address)? 1168 | +--:(mac-address) 1169 | | +--ro mac-address? yang:mac-address 1170 | +--:(ipv4-address) 1171 | | +--ro ipv4-address? inet:ipv4-address 1172 | +--:(ipv6-address) 1173 | | +--ro ipv6-address? inet:ipv6-address 1174 | +--:(src-dst-address) 1175 | | +--ro src-ip-address? inet:ip-address 1176 | | +--ro dst-ip-address? inet:ip-address 1177 | | +--ro Interface? if:interface-ref 1178 | +--:(fec) 1179 | | +--ro fec-type? fec-type 1180 | | +--ro (fec-value)? 1181 | | +--:(ip-prefix) 1182 | | | +--ro ip-prefix? inet:ip-prefix 1183 | | +--:(bgp) 1184 | | | +--ro bgp? inet:ip-prefix 1185 | | +--:(tunnel) 1186 | | | +--ro tunnel-interface? uint32 1187 | | +--:(l3vpn) 1188 | | | +--ro l3vpn-id? uint32 1189 | | +--:(pw) 1190 | | | +--ro remote-pe-address? inet:ip-address 1191 | | | +--ro pw-id? uint32 1192 | | +--:(vpls) 1193 | | | +--ro route-distinguisher? uint32 1194 | | | +--ro sender-ve-id? uint32 1195 | | | +--ro receiver-ve-id? uint32 1196 | | +--:(mpls-mldp) 1197 | | +--ro (root-address)? 1198 | | +--:(ip-address) 1199 | | | +--ro source-address? inet:ip-address 1200 | | | +--ro group-ip-address? IP-Multicast-Group-Address 1201 | | +--:(vpn) 1202 | | | +--ro as-number? inet:as-number 1203 | | +--:(global-id) 1204 | | +--ro lsp-id? string 1205 | +--:(tlv-address) 1206 | | +--ro tlv-type? int16 1207 | | +--ro tlv-len? int16 1208 | | +--ro tlv-value? binary 1209 | +--:(system-info) 1210 | +--ro system-id? inet:uri 1211 +--ro dest-test-point 1212 | +--ro vrf? routing-instance-ref 1213 | +--ro (tp-address)? 1214 | +--:(mac-address) 1215 | | +--ro mac-address? yang:mac-address 1216 | +--:(ipv4-address) 1217 | | +--ro ipv4-address? inet:ipv4-address 1218 | +--:(ipv6-address) 1219 | | +--ro ipv6-address? inet:ipv6-address 1220 | +--:(src-dst-address) 1221 | | +--ro src-ip-address? inet:ip-address 1222 | | +--ro dst-ip-address? inet:ip-address 1223 | | +--ro Interface? if:interface-ref 1224 | +--:(fec) 1225 | | +--ro fec-type? fec-type 1226 | | +--ro (fec-value)? 1227 | | +--:(ip-prefix) 1228 | | | +--ro ip-prefix? inet:ip-prefix 1229 | | +--:(bgp) 1230 | | | +--ro bgp? inet:ip-prefix 1231 | | +--:(tunnel) 1232 | | | +--ro tunnel-interface? uint32 1233 | | +--:(l3vpn) 1234 | | | +--ro l3vpn-id? uint32 1235 | | +--:(pw) 1236 | | | +--ro remote-pe-address? inet:ip-address 1237 | | | +--ro pw-id? uint32 1238 | | +--:(vpls) 1239 | | | +--ro route-distinguisher? uint32 1240 | | | +--ro sender-ve-id? uint32 1241 | | | +--ro receiver-ve-id? uint32 1242 | | +--:(mpls-mldp) 1243 | | +--ro (root-address)? 1244 | | +--:(ip-address) 1245 | | | +--ro source-address? inet:ip-address 1246 | | | +--ro group-ip-address? IP-Multicast-Group-Address 1247 | | +--:(vpn) 1248 | | | +--ro as-number? inet:as-number 1249 | | +--:(global-id) 1250 | | +--ro lsp-id? string 1251 | +--:(tlv-address) 1252 | | +--ro tlv-type? int16 1253 | | +--ro tlv-len? int16 1254 | | +--ro tlv-value? binary 1255 | +--:(system-info) 1256 | +--ro system-id? inet:uri 1257 +--ro sequence-number? uint64 1258 +--ro hop-cnt? uint8 1259 +--ro session-packet-statistics 1260 | +--ro rx-packet-count? uint32 1261 | +--ro tx-packet-count? uint32 1262 | +--ro rx-bad-packet? uint32 1263 | +--ro tx-packet-failed? uint32 1264 +--ro session-error-statistics 1265 | +--ro packet-drops-count? uint32 1266 | +--ro packet-reorder-count? uint32 1267 | +--ro packets-out-of-seq-count? uint32 1268 | +--ro packets-dup-count? uint32 1269 +--ro session-delay-statistics 1270 | +--ro time-resolution-value? identityref 1271 | +--ro min-delay-value? uint32 1272 | +--ro max-delay-value? uint32 1273 | +--ro average-delay-value? uint32 1274 +--ro session-jitter-statistics 1275 | +--ro time-resolution-value? identityref 1276 | +--ro min-jitter-value? uint32 1277 | +--ro max-jitter-value? uint32 1278 | +--ro average-jitter-value? uint32 1279 +--ro path-verification 1280 | +--ro flow-info? string 1281 | +--ro session-path-verification-statistics 1282 | +--ro verified-count? uint32 1283 | +--ro failed-count? uint32 1284 +--ro path-trace-info 1285 +--ro path-trace-info-list* [index] 1286 +--ro index uint32 1287 +--ro vrf? routing-instance-ref 1288 +--ro (tp-address)? 1289 | +--:(mac-address) 1290 | | +--ro mac-address? yang:mac-address 1291 | +--:(ipv4-address) 1292 | | +--ro ipv4-address? inet:ipv4-address 1293 | +--:(ipv6-address) 1294 | | +--ro ipv6-address? inet:ipv6-address 1295 | +--:(src-dst-address) 1296 | | +--ro src-ip-address? inet:ip-address 1297 | | +--ro dst-ip-address? inet:ip-address 1298 | | +--ro Interface? if:interface-ref 1299 | +--:(fec) 1300 | | +--ro fec-type? fec-type 1301 | | +--ro (fec-value)? 1302 | | +--:(ip-prefix) 1303 | | | +--ro ip-prefix? inet:ip-prefix 1304 | | +--:(bgp) 1305 | | | +--ro bgp? inet:ip-prefix 1306 | | +--:(tunnel) 1307 | | | +--ro tunnel-interface? uint32 1308 | | +--:(l3vpn) 1309 | | | +--ro l3vpn-id? uint32 1310 | | +--:(pw) 1311 | | | +--ro remote-pe-address? inet:ip-address 1312 | | | +--ro pw-id? uint32 1313 | | +--:(vpls) 1314 | | | +--ro route-distinguisher? uint32 1315 | | | +--ro sender-ve-id? uint32 1316 | | | +--ro receiver-ve-id? uint32 1317 | | +--:(mpls-mldp) 1318 | | +--ro (root-address)? 1319 | | +--:(ip-address) 1320 | | | +--ro source-address? inet:ip-address 1321 | | | +--ro group-ip-address? IP-Multicast-Group-Address 1322 | | +--:(vpn) 1323 | | | +--ro as-number? inet:as-number 1324 | | +--:(global-id) 1325 | | +--ro lsp-id? string 1326 | +--:(tlv-address) 1327 | | +--ro tlv-type? int16 1328 | | +--ro tlv-len? int16 1329 | | +--ro tlv-value? binary 1330 | +--:(system-info) 1331 | +--ro system-id? inet:uri 1332 +--ro timestamp-val? yang:date-and-time 1333 +--ro ingress-intf-name? if:interface-ref 1334 +--ro egress-intf-name? if:interface-ref 1335 +--ro app-meta-data? uint32 1337 data hierarchy of OAM 1339 4. OAM YANG Module 1341 file "ietf-connectionless-oam.yang" 1343 module ietf-connectionless-oam { 1344 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 1345 prefix coam; 1347 import ietf-network{ 1348 prefix nd; 1349 } 1350 import ietf-yang-types { 1351 prefix yang; 1352 } 1353 import ietf-interfaces { 1354 prefix if; 1355 } 1356 import ietf-inet-types { 1357 prefix inet; 1358 } 1359 import ietf-network-instance { 1360 prefix "ni"; 1361 } 1363 organization "IETF LIME Working Group"; 1364 contact 1365 "Deepak Kumar dekumar@cisco.com 1366 Qin Wu bill.wu@huawei.com 1367 S Raghavan srihari@cisco.com"; 1368 description 1369 "This YANG module defines the generic configuration, 1370 data model, statistics for connectionless OAM to be 1371 used within IETF in a protocol indpendent manner. 1372 Functional level abstraction is indendent with 1373 YANG modeling. It is assumed that each protocol maps 1374 corresponding abstracts to its native format. 1375 Each protocol may extend the YANG model defined 1376 here to include protocol specific extensions"; 1377 revision 2015-12-22 { 1378 description 1379 "Initial revision. - 01 version"; 1380 reference ""; 1381 } 1382 /* features */ 1383 feature connection-less { 1384 description 1385 "this feature indicates that OAM solution is connection less."; 1386 } 1387 feature continuity-check { 1388 description 1389 "This feature indicates that the server supports 1390 executing continuity check OAM command and 1391 returning a response. Servers that do not advertise 1392 this feature will not support executing 1393 continuity check command or rpc model for 1394 continuity check command."; 1395 } 1396 feature path-discovery { 1397 description 1398 "This feature indicates that the server supports 1399 executing path discovery OAM command and 1400 returning a response. Servers that do not advertise 1401 this feature will not support executing 1402 path discovery command or rpc model for 1403 path discovery command."; 1404 } 1406 /* Identities */ 1407 /* typedefs */ 1408 typedef routing-instance-ref { 1409 type leafref { 1410 path "/ni:network-instances/ni:network-instance/ni:name"; 1411 } 1412 description 1413 "This type is used for leafs that reference a routing instance 1414 configuration."; 1415 } 1416 typedef IPv4-Multicast-Group-Address { 1417 type string { 1418 pattern '(2((2[4-9])|(3[0-9]))\.)' 1419 +'(([0-9]|[1-9][0-9]|1[0-9][0-9]|' 1420 +'2[0-4][0-9]|25[0-5])\.){2}' 1421 +'([0-9]|[1-9][0-9]|1[0-9][0-9]' 1422 +'|2[0-4][0-9]|25[0-5])'; 1423 } 1424 description 1425 "The IPv4-Multicast-Group-Address type 1426 represents an IPv4 multicast address 1427 in dotted-quad notation."; 1428 reference "RFC4607"; 1429 } // typedef IPv4-Multicast-Group-Address 1430 typedef IPv6-Multicast-Group-Address { 1431 type string { 1432 pattern 1433 '(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]' 1434 +'{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?' 1435 +'(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4]' 1436 +'[0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|' 1437 +'2[0-4][0-9]|[01]?[0-9]?[0-9])))'; 1438 pattern 1439 '(([^:]+:){6}(([^:]+:[^:]+)|' 1440 +'(.*\..*)))|((([^:]+:)*[^:]+)' 1441 +'?::(([^:]+:)*[^:]+)?)'; 1442 } 1443 description 1444 "The IPv6-Multicast-Group-Address 1445 type represents an IPv6 address in full, 1446 mixed, shortened, and shortened-mixed 1447 notation."; 1448 reference "RFC4291 2.7. 1449 ietf-inet-types:ipv6-address"; 1450 } 1451 typedef IP-Multicast-Group-Address { 1452 type union { 1453 type IPv4-Multicast-Group-Address; 1454 type IPv6-Multicast-Group-Address; 1455 } 1456 description 1457 "The IP-Multicast-Group-Address type 1458 represents an IP multicast address and 1459 is IP version neutral. The format of the 1460 textual representations implies the IP version."; 1461 } // typedef IP-Multicast-Group-Address 1463 identity fec-types { 1464 description 1465 "This is base identity of fec types which are ip-prefix, 1466 bgp, tunnel, l3vpn, pwe3, vpls, etc."; 1467 } 1469 typedef fec-type { 1470 type identityref { 1471 base fec-types; 1472 } 1473 description "Target FEC type."; 1474 } 1476 typedef oam-counter32 { 1477 type yang:zero-based-counter32; 1478 description 1479 "defines 32 bit counter for OAM"; 1480 } 1482 identity time-resolution{ 1483 description 1484 "Time interval resolution"; 1485 } //base identity 1487 identity hours { 1488 base time-resolution; 1489 description 1490 "Hours"; 1491 } 1493 identity minutes { 1494 base time-resolution; 1495 description 1496 "Minutes"; 1497 } 1499 identity seconds { 1500 base time-resolution; 1501 description 1502 "Seconds"; 1503 } 1505 identity milliseconds { 1506 base time-resolution; 1507 description 1508 "Milliseconds"; 1509 } 1511 identity microseconds { 1512 base time-resolution; 1513 description 1514 "Microseconds"; 1515 } 1517 identity nanoseconds { 1518 base time-resolution; 1519 description 1520 "Nanoseconds"; 1521 } 1523 /* groupings */ 1524 grouping cc-session-statsitics { 1525 description "Grouping for session statistics."; 1526 container cc-session-statistics { 1527 description "cc session counters"; 1528 leaf session-count { 1529 type uint32; 1530 description "Number of cc sessions."; 1531 } 1532 leaf session-up-count { 1533 type uint32; 1534 description "Number of sessions which are up."; 1535 } 1536 leaf session-down-count { 1537 type uint32; 1538 description "Number of sessions which are down."; 1539 } 1540 leaf session-admin-down-count { 1541 type uint32; 1542 description "Number of sessions which are admin-down."; 1543 } 1544 } 1545 } 1547 grouping session-packet-statistics { 1548 description "Grouping for per session packet statistics"; 1549 container session-packet-statistics { 1550 description "Per session packet statistics."; 1551 leaf rx-packet-count { 1552 type uint32; 1553 description "Total received packet count."; 1554 } 1555 leaf tx-packet-count { 1556 type uint32; 1557 description "Total transmitted packet count."; 1558 } 1559 leaf rx-bad-packet { 1560 type uint32; 1561 description "Total received bad packet."; 1562 } 1563 leaf tx-packet-failed { 1564 type uint32; 1565 description "Total send packet failed."; 1566 } 1567 } 1568 } 1570 grouping cc-per-session-statistics { 1571 description "Grouping for per session statistics"; 1572 container cc-per-session-statistics { 1573 description "per session statistics."; 1574 leaf create-time { 1575 type yang:date-and-time; 1576 description "Time and date when session is created."; 1577 } 1578 leaf last-down-time { 1579 type yang:date-and-time; 1580 description "Time and date last time session is down."; 1581 } 1582 leaf last-up-time { 1583 type yang:date-and-time; 1584 description "Time and date last time session is up."; 1585 } 1586 leaf down-count { 1587 type uint32; 1588 description "Total down count."; 1589 } 1590 leaf admin-down-count { 1591 type uint32; 1592 description "Total down count."; 1593 } 1595 uses session-packet-statistics; 1596 } 1597 } 1599 grouping session-error-statistics { 1600 description "Grouping for per session error statistics"; 1601 container session-error-statistics { 1602 description "Per session error statistics."; 1603 leaf packet-drops-count { 1604 type uint32; 1605 description "Total received packet drops count."; 1606 } 1607 leaf packet-reorder-count { 1608 type uint32; 1609 description "Total received packet reordered count."; 1610 } 1611 leaf packets-out-of-seq-count { 1612 type uint32; 1613 description "Total received out of sequence count."; 1614 } 1615 leaf packets-dup-count { 1616 type uint32; 1617 description "Total received packet duplicates count."; 1618 } 1619 } 1620 } 1622 grouping session-delay-statistics { 1623 description "Grouping for per session delay statistics"; 1624 container session-delay-statistics { 1625 description "Session delay summarised information."; 1626 leaf time-resolution-value { 1627 type identityref { 1628 base time-resolution; 1629 } 1630 description "Time units among choice of s,ms,ns etc."; 1631 } 1632 leaf min-delay-value { 1633 type uint32; 1634 description "Minimum delay value observed."; 1635 } 1636 leaf max-delay-value { 1637 type uint32; 1638 description "Maximum delay value observed."; 1639 } 1640 leaf average-delay-value { 1641 type uint32; 1642 description "Average delay value observed."; 1643 } 1644 } 1645 } 1647 grouping session-jitter-statistics { 1648 description "Grouping for per session jitter statistics"; 1649 container session-jitter-statistics { 1650 description "Session jitter summarised information."; 1651 leaf time-resolution-value { 1652 type identityref { 1653 base time-resolution; 1654 } 1655 description "Time units among choice of s,ms,ns etc."; 1657 } 1658 leaf min-jitter-value { 1659 type uint32; 1660 description "Minimum jitter value observed."; 1661 } 1662 leaf max-jitter-value { 1663 type uint32; 1664 description "Maximum jitter value observed."; 1665 } 1666 leaf average-jitter-value { 1667 type uint32; 1668 description "Average jitter value observed."; 1669 } 1670 } 1671 } 1673 grouping session-path-verification-statistics { 1674 description "Grouping for per session path verification statistics"; 1675 container session-path-verification-statistics{ 1676 description "OAM per session path verification statistics."; 1677 leaf verified-count { 1678 type uint32; 1679 description "Total number of packets that went through a path as intended."; 1680 } 1681 leaf failed-count { 1682 type uint32; 1683 description "Total number of packets that went through an unintended path."; 1684 } 1685 } 1686 } 1688 grouping session-type { 1689 description 1690 "This object indicates the current session 1691 definition."; 1692 leaf session-type-enum { 1693 type enumeration { 1694 enum proactive { 1695 description 1696 "The current session is proactive"; 1697 } 1698 enum on-demand { 1699 description 1700 "The current session is on-demand."; 1701 } 1702 } 1703 default "on-demand"; 1704 description 1705 "session type enum"; 1706 } 1707 } 1709 identity tp-address-type { 1710 description 1711 "Test point address type"; 1712 } //base identity 1714 identity mac-address-type { 1715 base tp-address-type; 1716 description 1717 "MAC address type"; 1718 } 1720 identity ipv4-address-type { 1721 base tp-address-type; 1722 description 1723 "IPv4 address type"; 1724 } 1726 identity ipv6-address-type { 1727 base tp-address-type; 1728 description 1729 "IPv6 address type"; 1730 } 1732 identity src-dst-address-type { 1733 base tp-address-type; 1734 description 1735 "Source/Dest address type"; 1736 } 1738 identity fec-address-type { 1739 base tp-address-type; 1740 description 1741 "FEC address type"; 1742 } 1744 identity tlv-address-type { 1745 base tp-address-type; 1746 description 1747 "TLV address type"; 1748 } 1750 identity system-id-address-type { 1751 base tp-address-type; 1752 description 1753 "System id address type"; 1754 } 1756 identity lsp-id-address-type { 1757 base tp-address-type; 1758 description 1759 "LSP ID address type"; 1760 } 1762 identity as-number-address-type { 1763 base tp-address-type; 1764 description 1765 "AS number address type"; 1766 } 1768 identity group-ip-address-type { 1769 base tp-address-type; 1770 description 1771 "Group IP address type"; 1772 } 1774 identity route-distinguisher-address-type { 1775 base tp-address-type; 1776 description 1777 "Route Distinguisher address type"; 1778 } 1780 identity ip-prefix-address-type { 1781 base tp-address-type; 1782 description 1783 "IP prefix address type"; 1784 } 1786 identity tunnel-address-type { 1787 base tp-address-type; 1788 description 1789 "Tunnel address type"; 1790 } 1792 grouping tp-address { 1793 leaf tp-address-type-value { 1794 type identityref { 1795 base tp-address-type; 1796 } 1797 description "Test point address type."; 1798 } 1800 choice tp-address { 1801 case mac-address { 1802 when "tp-address-type-value = mac-address-type" { 1803 description "MAC address type"; 1804 } 1805 leaf mac-address { 1806 type yang:mac-address; 1807 description 1808 "MAC Address"; 1809 } 1810 description 1811 "MAC Address based MP Addressing."; 1812 } 1813 case ipv4-address { 1814 when "tp-address-type-value = ipv4-address-type" { 1815 description "IPv4 address type"; 1816 } 1817 leaf ipv4-address { 1818 type inet:ipv4-address; 1819 description 1820 "Ipv4 Address"; 1821 } 1822 description 1823 "Ip Address based MP Addressing."; 1824 } 1825 case ipv6-address { 1826 when "tp-address-type-value = ipv6-address-type" { 1827 description "IPv6 address type"; 1828 } 1829 leaf ipv6-address { 1830 type inet:ipv6-address; 1831 description 1832 "Ipv6 Address"; 1833 } 1834 description 1835 "ipv6 Address based MP Addressing."; 1836 } 1837 case src-dst-address { 1838 when "tp-address-type-value = src-dst-address-type" { 1839 description "Src dest address type for BFD"; 1840 } 1841 leaf src-ip-address { 1842 type inet:ip-address; 1843 description 1844 "source ip address."; 1845 } 1846 leaf dst-ip-address { 1847 type inet:ip-address; 1848 description 1849 "destination ip address."; 1850 } 1851 leaf Interface { 1852 type if:interface-ref; 1853 description 1854 "interface."; 1855 } 1856 } 1857 case fec { 1858 when "tp-address-type-value = fec-address-type" { 1859 description "FEC address type"; 1860 } 1861 leaf fec-type { 1862 type fec-type; 1863 description 1864 "fec type."; 1865 } 1866 choice fec-value { 1867 description 1868 "fec value."; 1869 case ip-prefix { 1870 leaf ip-prefix { 1871 type inet:ip-prefix; 1872 description 1873 "ip prefix."; 1874 } 1875 } 1876 case bgp { 1877 leaf bgp { 1878 type inet:ip-prefix; 1879 description 1880 "BGP Labeled Prefix "; 1881 } 1882 } 1883 case tunnel { 1884 leaf tunnel-interface { 1885 type uint32; 1886 description 1887 "VPN Prefix "; 1888 } 1889 } 1890 case l3vpn { 1891 leaf l3vpn-id { 1892 type uint32; 1893 description 1894 "FEC layer 3 vpn."; 1895 } 1896 } 1897 case pw { 1898 leaf remote-pe-address{ 1899 type inet:ip-address; 1900 description 1901 "remote pe address."; 1902 } 1903 leaf pw-id { 1904 type uint32; 1905 description 1906 "Pseudowire id."; 1907 } 1908 } 1909 case vpls { 1910 leaf route-distinguisher { 1911 type uint32; 1912 description 1913 "Route Distinguisher(8 octets)."; 1914 } 1915 leaf sender-ve-id{ 1916 type uint32; 1917 description 1918 "Sender's VE ID."; 1919 } 1920 leaf receiver-ve-id{ 1921 type uint32; 1922 description 1923 "Receiver's VE ID."; 1924 } 1925 } 1926 case mpls-mldp{ 1927 choice root-address{ 1928 description 1929 "root address choice."; 1930 case ip-address{ 1931 leaf source-address{ 1932 type inet:ip-address; 1933 description 1934 "ip address."; 1935 } 1936 leaf group-ip-address{ 1937 type IP-Multicast-Group-Address; 1938 description 1939 "group ip address."; 1940 } 1941 } 1942 case vpn{ 1943 leaf as-number{ 1944 type inet:as-number; 1945 description 1946 "AS number."; 1947 } 1948 } 1949 case global-id{ 1950 leaf lsp-id{ 1951 type string; 1952 description 1953 "lsp id."; 1954 } 1955 } 1956 } 1957 } 1958 } 1959 } 1960 case tlv-address { 1961 when "tp-address-type-value = tlv-address-type" { 1962 description "TLV address type"; 1963 } 1964 leaf tlv-type { 1965 type int16; 1966 description 1967 "Type of MEP-ID"; 1968 } 1969 leaf tlv-len { 1970 type int16; 1971 description 1972 "Length of MEP-ID value"; 1973 } 1974 leaf tlv-value { 1975 type binary { 1976 length "12..255"; 1977 } 1978 description 1979 "Value please refer RFC6428 (Figure 4,5,6)."; 1980 } 1981 description 1982 "MEP-ID"; 1983 } 1984 case system-info { 1985 when "tp-address-type-value = system-id-address-type" { 1986 description "System id address type"; 1987 } 1988 leaf system-id { 1989 type inet:uri; 1990 description 1991 "System ID assigned to this node."; 1992 } 1994 } 1995 description 1996 "TP Addressing."; 1997 } 1998 description 1999 "TP Address"; 2000 } 2002 grouping tp-address-vrf { 2003 description 2004 "Test point address with VRF."; 2005 leaf vrf { 2006 type routing-instance-ref; 2007 description 2008 "The vrf is used to describe the 2009 corresponding network instance"; 2010 } 2012 uses tp-address; 2013 } 2015 grouping connectionless-oam-layers { 2016 list oam-layers { 2017 key "index"; 2018 leaf index { 2019 type uint16 { 2020 range "0..65535"; 2021 } 2022 description 2023 "Index"; 2024 } 2025 leaf level { 2026 type int32 { 2027 range "-1..1"; 2028 } 2029 default 0; 2030 description 2031 "Level 0 indicates default level, -1 means server 2032 and +1 means client layer. 2033 In relationship 0 means same layer."; 2034 } 2035 ordered-by user; 2036 description 2037 "list of related oam layers. 2038 0 means they are in same level, especially 2039 interworking scenarios of stiching multiple 2040 technology at same layer. 2041 -1 means server layer, for eg:- in case of 2042 Overlay and Underlay, Underlay is server layer for 2043 Overlay Test Point. 2044 +1 means client layer, for eg:- in case of 2045 Service OAM and Transport OAM, Service OAM is client 2046 layer to Transport OAM."; 2047 } 2048 description 2049 "connectionless related OAM layer"; 2050 } 2052 grouping tp-technology { 2053 choice technology { 2054 default technology-null; 2055 case technology-null { 2056 description 2057 "this is a placeholder when no technology is needed."; 2058 leaf tech-null { 2059 type empty; 2060 description 2061 "there is no technology define"; 2062 } 2063 } 2064 description 2065 "technology choice null"; 2066 case technology-string { 2067 description 2068 "oam technology string"; 2069 leaf ipv4-icmp { 2070 type string; 2071 description 2072 "name to identify oam technology"; 2073 } 2074 } 2075 } 2076 description 2077 "OAM Technology"; 2078 } 2080 grouping tp-tools { 2081 description 2082 "Test Point OAM Toolset."; 2083 choice tools { 2084 default tools-empty; 2085 description 2086 "choice of test point tools. 2087 Empty tools means based on Test Point it's implicit 2088 all OAM tools are present and no further configuration 2089 is supported."; 2090 case tools-empty { 2091 description 2092 "this is a placeholder when oam toolset is not needed."; 2093 leaf tools-null { 2094 type empty; 2095 description 2096 "there is no oam toolset defined."; 2097 } 2098 } 2099 case tools-ip{ 2100 description 2101 "Oam Toolset for Ip"; 2102 leaf rfc792 { 2103 type boolean; 2104 description 2105 "rfc792 (icmpv4) supported."; 2106 } 2107 leaf rfc4443 { 2108 type boolean; 2109 description 2110 "rfc4443 supported."; 2111 } 2112 leaf rfc4884 { 2113 type boolean; 2114 description 2115 "rfc4884 supported."; 2116 } 2117 leaf rfc5837 { 2118 type boolean; 2119 description 2120 "rfc5837 supported."; 2121 } 2122 } 2123 case tools-bfd { 2124 leaf rfc5881 { 2125 type boolean; 2126 description 2127 "rfc5881 supported."; 2128 } 2129 leaf rfc5883 { 2130 type boolean; 2131 description 2132 "rfc5883 supported."; 2133 } 2134 leaf rfc5884 { 2135 type boolean; 2136 description 2137 "rfc5884 supported."; 2138 } 2139 leaf rfc5885 { 2140 type boolean; 2141 description 2142 "rfc5885 supported."; 2143 } 2144 } 2145 case tools-mpls { 2146 description 2147 "Oam Toolset for mpls"; 2148 leaf rfc4379 { 2149 type boolean; 2150 description 2151 "rfc4379 supported."; 2152 } 2153 leaf rfc4687 { 2154 type boolean; 2155 description 2156 "rfc4687 supported."; 2157 } 2158 leaf rfc4950 { 2159 type boolean; 2160 description 2161 "rfc4950 supported."; 2162 } 2163 leaf mpls-rfc5884 { 2164 type boolean; 2165 description 2166 "rfc5884 supported."; 2167 } 2168 } 2169 case tools-mpls-tp { 2170 description 2171 "Oam Toolset for mpls TP."; 2172 leaf rfc6426 { 2173 type boolean; 2174 description 2175 "rfc6426 supported."; 2176 } 2177 leaf rfc6435 { 2178 type boolean; 2179 description 2180 "rfc6435 supported."; 2181 } 2182 leaf rfc6374 { 2183 type boolean; 2184 description 2185 "rfc6374 supported."; 2186 } 2187 } 2188 case tools-pw { 2189 description 2190 "Oam Toolset for pw oam."; 2191 leaf rfc5085 { 2192 type boolean; 2193 description 2194 "rfc5085 supported."; 2195 } 2196 leaf pw_rfc5885 { 2197 type boolean; 2198 description 2199 "rfc5885 supported."; 2200 } 2201 leaf rfc6423 { 2202 type boolean; 2203 description 2204 "rfc6423 supported."; 2205 } 2206 leaf rfc6310 { 2207 type boolean; 2208 description 2209 "rfc6310 supported."; 2210 } 2211 leaf rfc7023 { 2212 type boolean; 2213 description 2214 "rfc7023 supported."; 2215 } 2216 } 2217 } 2218 } 2220 grouping test-point-location-info { 2221 uses tp-technology; 2222 uses tp-tools; 2223 uses connectionless-oam-layers; 2224 description 2225 "Test point Location"; 2226 } 2228 grouping test-point-locations { 2229 description "Group of test point locations."; 2230 leaf tp-address-type-value { 2231 type identityref { 2232 base tp-address-type; 2233 } 2234 description "Test point address type."; 2235 } 2236 choice location-type { 2237 case ipv4-location-type { 2238 when "tp-address-type-value = ipv4-address-type" { 2239 description 2240 "when test point address is equal to ipv4 address."; 2241 } 2242 container test-point-ipv4-location-list { 2243 list test-point-locations { 2244 key "ipv4-location"; 2245 leaf ipv4-location { 2246 type inet:ipv4-address; 2247 description 2248 "Ipv4 Address."; 2249 } 2250 leaf vrf { 2251 type routing-instance-ref; 2252 description 2253 "The vrf is used to describe the 2254 corresponding network instance"; 2255 } 2256 uses test-point-location-info; 2257 ordered-by user; 2258 description 2259 "list of test point locations."; 2260 } 2261 description 2262 "Serves as top-level container for test point location list."; 2263 } 2264 } 2265 case ipv6-location-type { 2266 when "tp-address-type-value = ipv6-address-type" { 2267 description 2268 "when test point address is equal to ipv6 address"; 2269 } 2270 container test-point-ipv6-location-list { 2271 list test-point-locations { 2272 key "ipv6-location"; 2273 leaf ipv6-location { 2274 type inet:ipv6-address; 2275 description 2276 "Ipv6 Address."; 2277 } 2278 leaf vrf { 2279 type routing-instance-ref; 2280 description 2281 "The vrf is used to describe the 2282 corresponding network instance"; 2283 } 2284 uses test-point-location-info; 2285 ordered-by user; 2286 description 2287 "list of test point locations."; 2288 } 2289 description 2290 "Serves as top-level container for test point location list."; 2291 } 2292 } 2293 case mac-location-type { 2294 when "tp-address-type-value = mac-address-type" { 2295 description 2296 "when test point address is equal to mac address."; 2297 } 2298 container test-point-mac-address-location-list { 2299 list test-point-locations { 2300 key "mac-address-location"; 2301 leaf mac-address-location { 2302 type yang:mac-address; 2303 description 2304 "MAC Address"; 2305 } 2306 uses test-point-location-info; 2307 ordered-by user; 2308 description 2309 "list of test point locations."; 2310 } 2311 description 2312 "Serves as top-level container for test point location list."; 2313 } 2314 } 2315 case tunnel-location-type { 2316 when "tp-address-type-value = tunnel-address-type" { 2317 description 2318 "when test point address is equal to tunnel type."; 2319 } 2320 container test-point-tunnel-address-location-list { 2321 list test-point-locations { 2322 key "tunnel-location"; 2323 leaf tunnel-location { 2324 type uint32; 2325 description 2326 "VPN Prefix"; 2328 } 2329 leaf vrf { 2330 type routing-instance-ref; 2331 description 2332 "The vrf is used to describe the 2333 corresponding network instance"; 2334 } 2335 uses test-point-location-info; 2336 ordered-by user; 2337 description 2338 "list of test point locations."; 2339 } 2340 description 2341 "Serves as top-level container for test point location list."; 2342 } 2343 } 2344 case ip-prefix-location-type { 2345 when "tp-address-type-value = ip-prefix-address-type" { 2346 description 2347 "when test point address is equal to ip prefix."; 2348 } 2349 container test-point-ip-prefix-location-list { 2350 list test-point-locations { 2351 key "ip-prefix-location"; 2352 leaf ip-prefix-location { 2353 type inet:ip-prefix; 2354 description 2355 "IP Prefix"; 2356 } 2357 leaf vrf { 2358 type routing-instance-ref; 2359 description 2360 "The vrf is used to describe the 2361 corresponding network instance"; 2362 } 2363 uses test-point-location-info; 2364 ordered-by user; 2365 description 2366 "list of test point locations."; 2367 } 2368 description 2369 "Serves as top-level container for test point location list."; 2370 } 2371 } 2372 case route-distinguisher-location-type { 2373 when "tp-address-type-value = route-distinguisher-address-type" { 2374 description "when test point address is equal to 2375 route distinguiher."; 2377 } 2378 container test-point-route-dist-location-list { 2379 list test-point-locations { 2380 key "route-dist-location"; 2381 leaf route-dist-location { 2382 type uint32; 2383 description 2384 "Route Distinguisher(8 octets)."; 2385 } 2386 leaf vrf { 2387 type routing-instance-ref; 2388 description 2389 "The vrf is used to describe the 2390 corresponding network instance"; 2391 } 2392 uses test-point-location-info; 2393 ordered-by user; 2394 description 2395 "list of test point locations."; 2396 } 2397 description 2398 "Serves as top-level container for test point location list."; 2399 } 2400 } 2401 case group-ip-address-location-type { 2402 when "tp-address-type-value = group-ip-address-type" { 2403 description "when test point address is equal to 2404 group ip address."; 2405 } 2406 container test-point-group-ip-address-location-list { 2407 list test-point-locations { 2408 key "group-ip-address-location"; 2409 leaf group-ip-address-location { 2410 type IP-Multicast-Group-Address; 2411 description 2412 "Group IP address."; 2413 } 2414 leaf vrf { 2415 type routing-instance-ref; 2416 description 2417 "The vrf is used to describe the 2418 corresponding network instance"; 2419 } 2420 uses test-point-location-info; 2421 ordered-by user; 2422 description 2423 "list of test point locations."; 2424 } 2425 description 2426 "Serves as top-level container for test point location list."; 2427 } 2428 } 2429 case group-as-number-location-type { 2430 when "tp-address-type-value = as-number-address-type" { 2431 description "when test point address is equal to 2432 as-number."; 2433 } 2434 container test-point-as-number-location-list { 2435 list test-point-locations { 2436 key "as-number-location"; 2437 leaf as-number-location { 2438 type inet:as-number; 2439 description 2440 "AS number."; 2441 } 2442 leaf vrf { 2443 type routing-instance-ref; 2444 description 2445 "The vrf is used to describe the 2446 corresponding network instance"; 2447 } 2448 uses test-point-location-info; 2449 ordered-by user; 2450 description 2451 "list of test point locations."; 2452 } 2453 description 2454 "Serves as top-level container for test point location list."; 2455 } 2456 } 2457 case group-lsp-id-location-type { 2458 when "tp-address-type-value = lsp-id-address-type" { 2459 description "when test point address is equal to lspid."; 2460 } 2461 container test-point-lsp-id-location-list { 2462 list test-point-locations { 2463 key "lsp-id-location"; 2464 leaf lsp-id-location { 2465 type string; 2466 description 2467 "LSP Id."; 2468 } 2469 leaf vrf { 2470 type routing-instance-ref; 2471 description 2472 "The vrf is used to describe the 2473 corresponding network instance"; 2474 } 2475 uses test-point-location-info; 2476 ordered-by user; 2477 description 2478 "list of test point locations."; 2479 } 2480 description 2481 "Serves as top-level container for test point location list."; 2482 } 2483 } 2484 case group-system-id-location-type { 2485 when "tp-address-type-value = system-id-address-type" { 2486 description "when test point address is equal to 2487 system info."; 2488 } 2489 container test-point-system-info-location-list { 2490 list test-point-locations { 2491 key "system-id-location"; 2492 leaf system-id-location { 2493 type inet:uri; 2494 description 2495 "System Id."; 2496 } 2497 leaf vrf { 2498 type routing-instance-ref; 2499 description 2500 "The vrf is used to describe the 2501 corresponding network instance"; 2502 } 2503 uses test-point-location-info; 2504 ordered-by user; 2505 description 2506 "list of test point locations."; 2507 } 2508 description 2509 "Serves as top-level container for test point location list."; 2510 } 2511 } 2512 description 2513 "Choice of address types."; 2514 } 2515 } 2517 augment "/nd:networks/nd:network/nd:node"{ 2518 description 2519 "Augment test points of connectionless oam."; 2520 uses test-point-locations; 2522 } 2524 grouping path-discovery-data { 2525 description "Path discovery related data output from nodes."; 2526 container src-test-point { 2527 description "Source test point."; 2528 uses tp-address-vrf; 2529 } 2530 container dest-test-point { 2531 description "Destination test point."; 2532 uses tp-address-vrf; 2533 } 2534 leaf sequence-number { 2535 type uint64; 2536 description "Sequence number in data packets."; 2537 } 2538 leaf hop-cnt { 2539 type uint8; 2540 description "hop count."; 2541 } 2543 uses session-packet-statistics; 2544 uses session-error-statistics; 2545 uses session-delay-statistics; 2546 uses session-jitter-statistics; 2548 container path-verification { 2549 description "Optional path verification related information."; 2550 leaf flow-info { 2551 type string; 2552 description 2553 "ACL name that refers to the flow, if any."; 2554 } 2555 uses session-path-verification-statistics; 2556 } 2558 container path-trace-info { 2559 description "Optional path trace per-hop test point information. 2560 The list has typically a single element for per-hop 2561 cases like path-discovery RPC but allows a list of 2562 hop related information for other types of 2563 data retrieval methods."; 2564 list path-trace-info-list { 2565 key "index"; 2566 description 2567 "Path trace information list."; 2568 leaf index { 2569 type uint32; 2570 description "Trace information index."; 2571 } 2573 uses tp-address-vrf; 2575 leaf timestamp-val { 2576 type yang:date-and-time; 2577 description "Timestamp value"; 2578 } 2579 leaf ingress-intf-name { 2580 type if:interface-ref; 2581 description 2582 "Ingress interface name"; 2583 } 2584 leaf egress-intf-name { 2585 type if:interface-ref; 2586 description 2587 "Egress interface name"; 2588 } 2589 leaf app-meta-data { 2590 type uint32; 2591 description 2592 "Application specific data added by node."; 2593 } 2594 } 2595 } 2596 } 2598 grouping continuity-check-data { 2599 description "Continuity check data output from nodes."; 2600 container src-test-point { 2601 description "Source test point."; 2602 uses tp-address-vrf; 2604 leaf egress-intf-name { 2605 type if:interface-ref; 2606 description 2607 "Egress interface name"; 2608 } 2609 } 2610 container dest-test-point { 2611 description "Destination test point."; 2612 uses tp-address-vrf; 2614 leaf ingress-intf-name { 2615 type if:interface-ref; 2616 description 2617 "Ingress interface name"; 2619 } 2620 } 2621 leaf sequence-number { 2622 type uint64; 2623 description "Sequence number."; 2624 } 2625 leaf hop-cnt { 2626 type uint8; 2627 description "hop count."; 2628 } 2630 uses session-packet-statistics; 2631 uses session-error-statistics; 2632 uses session-delay-statistics; 2633 uses session-jitter-statistics; 2634 } 2636 container oper { 2637 if-feature continuity-check; 2638 config "false"; 2639 description "cc operational information."; 2640 container cc-ipv4-sessions-statistics { 2641 description "cc ipv4 sessions"; 2642 uses cc-session-statsitics; 2643 } 2644 container cc-ipv6-sessions-statistics { 2645 description "cc ipv6 sessions"; 2646 uses cc-session-statsitics; 2647 } 2648 } 2649 } 2651 module ietf-connectionless-oam-methods { 2652 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; 2653 prefix coam-methods; 2655 import ietf-interfaces { 2656 prefix if; 2657 } 2658 import ietf-connectionless-oam { 2659 prefix coam; 2660 } 2662 organization "IETF LIME Working Group"; 2663 contact 2664 "Deepak Kumar dekumar@cisco.com 2665 Qin Wu bill.wu@huawei.com 2666 S Raghavan srihari@cisco.com"; 2668 description 2669 "This YANG module defines the RPCs for , 2670 connectionless OAM to be used within IETF 2671 in a protocol Independent manner. 2672 Functional level abstraction is indendent with 2673 YANG modeling. It is assumed that each protocol maps 2674 corresponding abstracts to its native format. 2675 Each protocol may extend the YANG model defined 2676 here to include protocol specific extensions"; 2677 revision 2015-12-22 { 2678 description 2679 "Initial revision. - 01 version"; 2680 reference ""; 2681 } 2683 rpc continuity-check { 2684 if-feature coam:continuity-check; 2685 description 2686 "Generates continuity-check as per RFC7276."; 2687 input { 2688 container destination-tp { 2689 uses coam:tp-address; 2690 description 2691 "destination test point."; 2692 } 2693 uses coam:session-type; 2694 leaf source-interface { 2695 type if:interface-ref; 2696 description 2697 "source interface."; 2698 } 2699 leaf outbound-interface { 2700 type if:interface-ref; 2702 description 2703 "outbound interface."; 2704 } 2705 leaf count { 2706 type uint32; 2707 default "5"; 2708 description 2709 "Specifies the number of packets that will be sent."; 2710 } 2711 leaf vrf { 2712 type coam:routing-instance-ref; 2713 description 2714 "vrf instance."; 2715 } 2716 leaf ttl { 2717 type uint8; 2718 default "255"; 2719 description 2720 "Time to live (TTL)."; 2721 } 2722 leaf packet-size { 2723 type uint32 { 2724 range "64..10000"; 2725 } 2726 default "64"; 2727 description 2728 "Size of ping echo request packets, in octets"; 2729 } 2730 } 2731 output { 2732 list error-code-list { 2733 key "response-index"; 2734 leaf response-index { 2735 type uint32; 2736 description 2737 "response index."; 2738 } 2739 leaf status-code { 2740 type int32; 2741 description 2742 "error code is "; 2743 } 2744 leaf status-sub-code { 2745 type uint8; 2746 description 2747 "sub code."; 2748 } 2749 description 2750 "error code list."; 2751 } 2753 uses coam:continuity-check-data; 2754 } 2755 } 2756 rpc path-discovery { 2757 description 2758 "Generates path discovery as per RFC7276."; 2759 input { 2760 container destination-tp { 2761 uses coam:tp-address; 2762 description 2763 "destination test point."; 2765 } 2766 uses coam:session-type; 2767 leaf source-interface { 2768 type if:interface-ref; 2769 description 2770 "source interface."; 2771 } 2772 leaf outbound-interface { 2773 type if:interface-ref; 2774 description 2775 "outbound interface."; 2776 } 2777 leaf vrf { 2778 type coam:routing-instance-ref; 2779 description 2780 "vrf"; 2781 } 2782 leaf max-ttl { 2783 type uint8; 2784 default "255"; 2785 description 2786 "max ttl."; 2787 } 2788 } 2789 output { 2790 list response-list { 2791 key "response-index"; 2792 description 2793 "path discovery response list."; 2794 leaf response-index { 2795 type uint32; 2796 description 2797 "response index."; 2798 } 2799 leaf status-code { 2800 type int32; 2801 description 2802 "error code is "; 2803 } 2804 leaf status-sub-code { 2805 type uint8; 2807 description 2808 "sub code is "; 2809 } 2810 } 2812 uses coam:path-discovery-data; 2814 } 2815 } 2816 } 2818 YANG module of OAM 2820 2822 5. Security Considerations 2824 TBD. 2826 6. IANA Considerations 2828 This document registers a URI in the IETF XML registry [RFC3688] 2829 [RFC3688]. Following the format in RFC 3688, the following 2830 registration is requested to be made: 2832 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2834 Registrant Contact: The IESG. 2836 XML: N/A, the requested URI is an XML namespace. 2838 This document registers a YANG module in the YANG Module Names 2839 registry [RFC6020]. 2841 name: ietf-connectionless-oam namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2842 prefix: goam reference: RFC XXXX 2844 7. Normative References 2846 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2847 Requirement Levels", BCP 14, RFC 2119, 2848 DOI 10.17487/RFC2119, March 1997, 2849 . 2851 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2852 the Network Configuration Protocol (NETCONF)", RFC 6020, 2853 DOI 10.17487/RFC6020, October 2010, 2854 . 2856 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2857 and A. Bierman, Ed., "Network Configuration Protocol 2858 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2859 . 2861 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2862 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2863 . 2865 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2866 September 1981. 2868 Authors' Addresses 2870 Deepak Kumar 2871 CISCO Systems 2872 510 McCarthy Blvd 2873 Milpitas, CA 95035 2874 USA 2876 Email: dekumar@cisco.com 2878 Michael Wang 2879 Huawei Technologies,Co.,Ltd 2880 101 Software Avenue, Yuhua District 2881 Nanjing 210012 2882 China 2884 Email: wangzitao@huawei.com 2886 Qin Wu 2887 Huawei 2888 101 Software Avenue, Yuhua District 2889 Nanjing, Jiangsu 210012 2890 China 2892 Email: bill.wu@huawei.com 2894 Reshad Rahman 2895 CISCO Systems 2896 2000 Innovation Drive 2897 KANATA, ONTARIO K2K 3E8 2898 CANADA 2900 Email: rrahman@cisco.com 2901 Srihari Raghavan 2902 CISCO Systems 2903 TRIL INFOPARK SEZ, Ramanujan IT City 2904 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 2905 CHENNAI, TAMIL NADU 600113 2906 INDIA 2908 Email: srihari@cisco.com