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