idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-methods-13.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 11 instances of too long lines in the document, the longest one being 8 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 341 has weird spacing: '...on-type ide...' == Line 343 has weird spacing: '...address yan...' == Line 345 has weird spacing: '...address ine...' == Line 347 has weird spacing: '...address ine...' == Line 376 has weird spacing: '...terface if:...' == (23 more instances...) -- The document date (November 12, 2017) is 2355 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) == Outdated reference: A later version (-18) exists of draft-ietf-lime-yang-connectionless-oam-16 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-25) exists of draft-ietf-netconf-yang-push-11 -- Obsolete informational reference (is this intentional?): RFC 6087 (Obsoleted by RFC 8407) Summary: 3 errors (**), 0 flaws (~~), 9 warnings (==), 2 comments (--). 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: May 16, 2018 Q. Wu, Ed. 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 November 12, 2017 12 Retrieval Methods YANG Data Model for the Management of Operations, 13 Administration, and Maintenance (OAM) Protocols that use Connectionless 14 Communications 15 draft-ietf-lime-yang-connectionless-oam-methods-13 17 Abstract 19 This document presents a retrieval method YANG Data model for 20 connectionless OAM protocols. It provides technology-independent RPC 21 operations for OAM protocols that use connectionless communication. 22 The retrieval methods model herein presented can be extended to 23 include technology specific details. There are two key benefits of 24 this approach: First, it leads to uniformity between OAM protocols. 25 And second, it support both nested OAM workflows (i.e., performing 26 OAM functions at different or same levels through a unified 27 interface) as well as interactive OAM workflows (i.e., performing OAM 28 functions at same levels through a unified interface). 30 Status of This Memo 32 This Internet-Draft is submitted in full conformance with the 33 provisions of BCP 78 and BCP 79. 35 Internet-Drafts are working documents of the Internet Engineering 36 Task Force (IETF). Note that other groups may also distribute 37 working documents as Internet-Drafts. The list of current Internet- 38 Drafts is at https://datatracker.ietf.org/drafts/current/. 40 Internet-Drafts are draft documents valid for a maximum of six months 41 and may be updated, replaced, or obsoleted by other documents at any 42 time. It is inappropriate to use Internet-Drafts as reference 43 material or to cite them other than as "work in progress." 45 This Internet-Draft will expire on May 16, 2018. 47 Copyright Notice 49 Copyright (c) 2017 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (https://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 65 2. Conventions used in this document . . . . . . . . . . . . . . 3 66 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 67 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 68 3. Overview of the Connectionless OAM retrieval methods Model . 5 69 3.1. RPC operation definitions . . . . . . . . . . . . . . . . 5 70 3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 8 71 4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 15 72 5. Security Considerations . . . . . . . . . . . . . . . . . . . 23 73 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 74 7. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 24 75 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 76 8.1. Normative References . . . . . . . . . . . . . . . . . . 24 77 8.2. Informative References . . . . . . . . . . . . . . . . . 25 78 Appendix A. Appdendix A.1 Extending Connectionless OAM Method 79 Module Example . . . . . . . . . . . . . . . . . . . 26 80 Appendix B. Appendix A.2 Example of new retrieval procedures 81 Model . . . . . . . . . . . . . . . . . . . . . . . 26 82 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 84 1. Introduction 86 Operations, Administration, and Maintenance (OAM) are important 87 networking functions that allow operators to: 89 1. Monitor network communications (i.e., Reachability Verification, 90 Continuity Check) 92 2. Troubleshoot failures (i.e., Fault verification and Localization) 93 3. Monitor service-level agreements and performance (i.e., 94 Performance Management) 96 An overview of OAM tools is presented at [RFC7276]. 98 Ping and Traceroute [RFC792] [RFC4443], as well as BFD [RFC5880] are 99 well-known fault verification and isolation tools, respectively, for 100 IP networks. Over the years, different technologies have developed 101 similar toolsets for equivalent purposes. 103 This document presents an on-demand retrieval method YANG Data model 104 for OAM protocols that use connectionless communication. This model 105 provides technology-independent RPC operations for OAM protocols that 106 use connectionless communication (i.e., connectionless oam). It is 107 separated from the generic YANG model for connectionless OAM 108 [I-D.ietf-lime-yang-connectionless-oam] and can avoid mixing the 109 models for the retrieved-data from the retrieval procedures. It is 110 expected that retrieval procedures would evolve faster than the data 111 model [I-D.ietf-lime-yang-connectionless-oam] and will allow new 112 procedures to be defined for retrieval of the same data defined by 113 the generic YANG data model for connectionless OAM. 115 2. Conventions used in this document 117 The following terms are defined in [RFC6241] and are used in this 118 document: 120 o client 122 o configuration data 124 o server 126 o state data 128 The following terms are defined in [RFC6020] and are used in this 129 document: 131 o augment 133 o data model 135 o data node 137 The terminology for describing YANG data models is found in 138 [RFC6020]. 140 2.1. Terminology 142 TP - Test Point 144 MAC - Media Access Control 146 RPC - Remote Procedure Call 148 RPC Operation - A specific Remote Procedure Call 150 2.2. Tree Diagrams 152 A simplified graphical representation of the data model is used in 153 this document. The meaning of the symbols in these diagrams is as 154 follows: 156 Each node is printed as: 158 160 is one of: 161 + for current 163 is one of: 165 rw for configuration data 166 ro for non-configuration data 167 -x for rpcs 168 -n for notifications 170 is the name of the node 172 If the node is augmented into the tree from another module, its name 173 is printed as :. 175 is one of: 177 ? for an optional leaf or choice 178 ! for a presence container 179 * for a leaf-list or list 180 [] for a list's keys 182 is the name of the type for leafs and leaf-lists 184 3. Overview of the Connectionless OAM retrieval methods Model 186 This document describes an On-demand retrieval method YANG Data model 187 for OAM protocols that use connectionless communication. This model 188 provides technology-independent retrieval procedures (RPC operations) 189 for connectionless OAM protocols. It provides a flexible way to 190 retrieve the data which defined by the "ietf-connectionless-oam.yang" 191 module [I-D.ietf-lime-yang-connectionless-oam]. 193 3.1. RPC operation definitions 195 The RPC model facilitates issuing commands to a NETCONF server (in 196 this case to the device that need to execute the OAM command) and 197 obtaining a response. 199 Under 'connectionless-oam-methods' module, we summarize common OAM 200 functions and define two generic RPC operations: 'continuity-check' 201 and 'path-discovery'. In practice, these RPC operations are 202 activated on-demand and supported by corresponding technology- 203 specific OAM tools [RFC7276]. For example, for the IP OAM model, the 204 continuity-check RPC corresponds to the IP Ping [RFC792] [RFC4443], 205 while the path-discovery RPC operation corresponds to IP Traceroute 206 [RFC792] [RFC4443]. 208 Note that the RPC operation presented in this document is the base 209 building block, which is used to derive a model for a technology- 210 specific OAM (i.e., ICMP Ping [RFC792] [RFC4443], and LSP Ping 211 [RFC8029]). This base building block should be extended with 212 corresponding technology specific parameters. To facilitate this for 213 future enhancements to data retrieval methods, the RPCs are captured 214 under a separate module. 216 The generic 'tp-address' grouping is used as data input from 217 different RPCs described in this document. The generic 'path- 218 discovery-data' and 'continuity-check-data' groupings defined by the 219 "ietf-connectionless-oam.yang" module 220 [I-D.ietf-lime-yang-connectionless-oam]are used as data outputs from 221 different RPCs described in this document. Similar methods including 222 other RPCs can retrieve the data using the same data model (i.e., the 223 "ietf-connectionless-oam.yang" module). 225 rpc continuity-check { 226 if-feature cl-oam:continuity-check; 227 description 228 "Continuity-check RPC operation as per RFC7276."; 229 input { 230 uses rpc-input-parameters; 231 .... 233 } 234 output { 235 container response-info { 236 leaf protocol-id { 237 type identityref { 238 base protocol-id; 239 } 240 mandatory true; 241 description 242 "Protocol used in CC. "; 243 } 244 leaf protocol-id-meta-data { 245 type identityref { 246 base protocol-id-meta-data; 247 } 248 description 249 "An optional meta-data related to the protocol ID."; 250 } 251 leaf status-code { 252 type identityref{ 253 base status-code; 254 } 255 mandatory true; 256 description 257 "Status code for Continuity Check RPC operation."; 258 } 259 leaf status-sub-code { 260 type identityref{ 261 base status-sub-code; 262 } 263 mandatory true; 264 description 265 "Status Sub code for Continuity Check RPC operation."; 266 } 267 description 268 "Status Code and Status Sub Code for continuity check RPC operation."; 269 } 270 uses cl-oam:continuity-check-data; 271 } 272 } 274 rpc path-discovery { 275 description 276 "path discovery RPC operation as per RFC7276."; 277 input { 278 uses rpc-input-parameters; 279 ..... 280 } 282 output { 283 list response-list { 284 key "response-index"; 285 description 286 "Path discovery response list."; 287 leaf response-index { 288 type uint32; 289 mandatory true; 290 description 291 "Response index."; 292 } 293 leaf protocol-id { 294 type identityref { 295 base protocol-id; 296 } 297 mandatory true; 298 description 299 "Protocol used in PD. "; 300 } 301 leaf protocol-id-meta-data { 302 type identityref { 303 base protocol-id-meta-data; 304 } 305 description 306 "An optional meta-data related to the protocol ID."; 307 } 308 leaf status-code { 309 type identityref{ 310 base status-code; 311 } 312 mandatory true; 313 description 314 "Status code for Path Discovery RPC operation. "; 315 } 316 leaf status-sub-code { 317 type identityref{ 318 base status-sub-code; 319 } 320 mandatory true; 321 description 322 "Status Sub code for Path Discovery RPC operation. "; 323 } 324 } 325 uses cl-oam:path-discovery-data; 326 } 327 } 329 Snippet of data hierarchy related to RPC operations 331 3.2. OAM Retrieval Methods Hierarchy 333 The complete data hierarchy related to the Connectionless OAM 334 Retrieval Methods YANG model is presented below. 336 module: ietf-connectionless-oam-methods 337 rpcs: 338 +---x continuity-check {cl-oam:continuity-check}? 339 | +---w input 340 | | +---w destination-tp 341 | | | +---w tp-location-type identityref 342 | | | +---w mac-address 343 | | | | +---w mac-address yang:mac-address 344 | | | +---w ipv4-address 345 | | | | +---w ipv4-address inet:ipv4-address 346 | | | +---w ipv6-address 347 | | | | +---w ipv6-address inet:ipv6-address 348 | | | +---w tp-attribute 349 | | | | +---w tp-attribute-type? address-attribute-type 350 | | | | +---w (tp-attribute-value)? 351 | | | | +--:(ip-prefix) 352 | | | | | +---w ip-prefix? inet:ip-prefix 353 | | | | +--:(bgp) 354 | | | | | +---w bgp? inet:ip-prefix 355 | | | | +--:(tunnel) 356 | | | | | +---w tunnel-interface? uint32 357 | | | | +--:(pw) 358 | | | | | +---w remote-pe-address? inet:ip-address 359 | | | | | +---w pw-id? uint32 360 | | | | +--:(vpls) 361 | | | | | +---w route-distinguisher? rt:route-distinguisher 362 | | | | | +---w sender-ve-id? uint16 363 | | | | | +---w receiver-ve-id? uint16 364 | | | | +--:(mpls-mldp) 365 | | | | +---w (root-address)? 366 | | | | +--:(ip-address) 367 | | | | | +---w source-address? inet:ip-address 368 | | | | | +---w group-ip-address? inet:ip-address 369 | | | | +--:(vpn) 370 | | | | | +---w as-number? inet:as-number 371 | | | | +--:(global-id) 372 | | | | +---w lsp-id? string 373 | | | +---w system-info 374 | | | +---w router-id? rt:router-id 375 | | +---w source-interface if:interface-ref 376 | | +---w outbound-interface if:interface-ref 377 | | +---w vrf? cl-oam:routing-instance-ref 378 | | +---w session-type? enumeration 379 | | +---w count? uint32 380 | | +---w ttl? uint8 381 | | +---w packet-size? uint32 382 | +--ro output 383 | +--ro response-info 384 | | +--ro protocol-id identityref 385 | | +--ro protocol-id-meta-data? identityref 386 | | +--ro status-code identityref 387 | | +--ro status-sub-code identityref 388 | +--ro src-test-point 389 | | +--ro ni? routing-instance-ref 390 | | +--ro tp-location-type identityref 391 | | +--ro mac-address 392 | | | +--ro mac-address yang:mac-address 393 | | +--ro ipv4-address 394 | | | +--ro ipv4-address inet:ipv4-address 395 | | +--ro ipv6-address 396 | | | +--ro ipv6-address inet:ipv6-address 397 | | +--ro tp-attribute 398 | | | +--ro tp-attribute-type? address-attribute-type 399 | | | +--ro (tp-attribute-value)? 400 | | | +--:(ip-prefix) 401 | | | | +--ro ip-prefix? inet:ip-prefix 402 | | | +--:(bgp) 403 | | | | +--ro bgp? inet:ip-prefix 404 | | | +--:(tunnel) 405 | | | | +--ro tunnel-interface? uint32 406 | | | +--:(pw) 407 | | | | +--ro remote-pe-address? inet:ip-address 408 | | | | +--ro pw-id? uint32 409 | | | +--:(vpls) 410 | | | | +--ro route-distinguisher? rt:route-distinguisher 411 | | | | +--ro sender-ve-id? uint16 412 | | | | +--ro receiver-ve-id? uint16 413 | | | +--:(mpls-mldp) 414 | | | +--ro (root-address)? 415 | | | +--:(ip-address) 416 | | | | +--ro source-address? inet:ip-address 417 | | | | +--ro group-ip-address? inet:ip-address 418 | | | +--:(vpn) 419 | | | | +--ro as-number? inet:as-number 420 | | | +--:(global-id) 421 | | | +--ro lsp-id? string 422 | | +--ro system-info 423 | | | +--ro router-id? rt:router-id 424 | | +--ro egress-intf-name? if:interface-ref 425 | +--ro dest-test-point 426 | | +--ro ni? routing-instance-ref 427 | | +--ro tp-location-type identityref 428 | | +--ro mac-address 429 | | | +--ro mac-address yang:mac-address 430 | | +--ro ipv4-address 431 | | | +--ro ipv4-address inet:ipv4-address 432 | | +--ro ipv6-address 433 | | | +--ro ipv6-address inet:ipv6-address 434 | | +--ro tp-attribute 435 | | | +--ro tp-attribute-type? address-attribute-type 436 | | | +--ro (tp-attribute-value)? 437 | | | +--:(ip-prefix) 438 | | | | +--ro ip-prefix? inet:ip-prefix 439 | | | +--:(bgp) 440 | | | | +--ro bgp? inet:ip-prefix 441 | | | +--:(tunnel) 442 | | | | +--ro tunnel-interface? uint32 443 | | | +--:(pw) 444 | | | | +--ro remote-pe-address? inet:ip-address 445 | | | | +--ro pw-id? uint32 446 | | | +--:(vpls) 447 | | | | +--ro route-distinguisher? rt:route-distinguisher 448 | | | | +--ro sender-ve-id? uint16 449 | | | | +--ro receiver-ve-id? uint16 450 | | | +--:(mpls-mldp) 451 | | | +--ro (root-address)? 452 | | | +--:(ip-address) 453 | | | | +--ro source-address? inet:ip-address 454 | | | | +--ro group-ip-address? inet:ip-address 455 | | | +--:(vpn) 456 | | | | +--ro as-number? inet:as-number 457 | | | +--:(global-id) 458 | | | +--ro lsp-id? string 459 | | +--ro system-info 460 | | | +--ro router-id? rt:router-id 461 | | +--ro ingress-intf-name? if:interface-ref 462 | +--ro sequence-number? uint64 463 | +--ro hop-cnt? uint8 464 | +--ro session-packet-statistics 465 | | +--ro rx-packet-count? uint32 466 | | +--ro tx-packet-count? uint32 467 | | +--ro rx-bad-packet? uint32 468 | | +--ro tx-packet-failed? uint32 469 | +--ro session-error-statistics 470 | | +--ro packet-loss-count? uint32 471 | | +--ro loss-ratio? percentage 472 | | +--ro packet-reorder-count? uint32 473 | | +--ro packets-out-of-seq-count? uint32 474 | | +--ro packets-dup-count? uint32 475 | +--ro session-delay-statistics 476 | | +--ro time-unit-value? identityref 477 | | +--ro min-delay-value? uint32 478 | | +--ro max-delay-value? uint32 479 | | +--ro average-delay-value? uint32 480 | +--ro session-jitter-statistics 481 | +--ro unit-value? identityref 482 | +--ro min-jitter-value? uint32 483 | +--ro max-jitter-value? uint32 484 | +--ro average-jitter-value? uint32 485 +---x path-discovery {cl-oam:path-discovery}? 486 +---w input 487 | +---w destination-tp 488 | | +---w tp-location-type identityref 489 | | +---w mac-address 490 | | | +---w mac-address yang:mac-address 491 | | +---w ipv4-address 492 | | | +---w ipv4-address inet:ipv4-address 493 | | +---w ipv6-address 494 | | | +---w ipv6-address inet:ipv6-address 495 | | +---w tp-attribute 496 | | | +---w tp-attribute-type? address-attribute-type 497 | | | +---w (tp-attribute-value)? 498 | | | +--:(ip-prefix) 499 | | | | +---w ip-prefix? inet:ip-prefix 500 | | | +--:(bgp) 501 | | | | +---w bgp? inet:ip-prefix 502 | | | +--:(tunnel) 503 | | | | +---w tunnel-interface? uint32 504 | | | +--:(pw) 505 | | | | +---w remote-pe-address? inet:ip-address 506 | | | | +---w pw-id? uint32 507 | | | +--:(vpls) 508 | | | | +---w route-distinguisher? rt:route-distinguisher 509 | | | | +---w sender-ve-id? uint16 510 | | | | +---w receiver-ve-id? uint16 511 | | | +--:(mpls-mldp) 512 | | | +---w (root-address)? 513 | | | +--:(ip-address) 514 | | | | +---w source-address? inet:ip-address 515 | | | | +---w group-ip-address? inet:ip-address 516 | | | +--:(vpn) 517 | | | | +---w as-number? inet:as-number 518 | | | +--:(global-id) 519 | | | +---w lsp-id? string 520 | | +---w system-info 521 | | +---w router-id? rt:router-id 522 | +---w source-interface if:interface-ref 523 | +---w outbound-interface if:interface-ref 524 | +---w vrf? cl-oam:routing-instance-ref 525 | +---w session-type? enumeration 526 | +---w max-ttl? uint8 527 +--ro output 528 +--ro response-list* [response-index] 529 | +--ro response-index uint32 530 | +--ro protocol-id identityref 531 | +--ro protocol-id-meta-data? identityref 532 | +--ro status-code identityref 533 | +--ro status-sub-code identityref 534 +--ro src-test-point 535 | +--ro ni? routing-instance-ref 536 | +--ro tp-location-type identityref 537 | +--ro mac-address 538 | | +--ro mac-address yang:mac-address 539 | +--ro ipv4-address 540 | | +--ro ipv4-address inet:ipv4-address 541 | +--ro ipv6-address 542 | | +--ro ipv6-address inet:ipv6-address 543 | +--ro tp-attribute 544 | | +--ro tp-attribute-type? address-attribute-type 545 | | +--ro (tp-attribute-value)? 546 | | +--:(ip-prefix) 547 | | | +--ro ip-prefix? inet:ip-prefix 548 | | +--:(bgp) 549 | | | +--ro bgp? inet:ip-prefix 550 | | +--:(tunnel) 551 | | | +--ro tunnel-interface? uint32 552 | | +--:(pw) 553 | | | +--ro remote-pe-address? inet:ip-address 554 | | | +--ro pw-id? uint32 555 | | +--:(vpls) 556 | | | +--ro route-distinguisher? rt:route-distinguisher 557 | | | +--ro sender-ve-id? uint16 558 | | | +--ro receiver-ve-id? uint16 559 | | +--:(mpls-mldp) 560 | | +--ro (root-address)? 561 | | +--:(ip-address) 562 | | | +--ro source-address? inet:ip-address 563 | | | +--ro group-ip-address? inet:ip-address 564 | | +--:(vpn) 565 | | | +--ro as-number? inet:as-number 566 | | +--:(global-id) 567 | | +--ro lsp-id? string 568 | +--ro system-info 569 | +--ro router-id? rt:router-id 570 +--ro dest-test-point 571 | +--ro ni? routing-instance-ref 572 | +--ro tp-location-type identityref 573 | +--ro mac-address 574 | | +--ro mac-address yang:mac-address 575 | +--ro ipv4-address 576 | | +--ro ipv4-address inet:ipv4-address 577 | +--ro ipv6-address 578 | | +--ro ipv6-address inet:ipv6-address 579 | +--ro tp-attribute 580 | | +--ro tp-attribute-type? address-attribute-type 581 | | +--ro (tp-attribute-value)? 582 | | +--:(ip-prefix) 583 | | | +--ro ip-prefix? inet:ip-prefix 584 | | +--:(bgp) 585 | | | +--ro bgp? inet:ip-prefix 586 | | +--:(tunnel) 587 | | | +--ro tunnel-interface? uint32 588 | | +--:(pw) 589 | | | +--ro remote-pe-address? inet:ip-address 590 | | | +--ro pw-id? uint32 591 | | +--:(vpls) 592 | | | +--ro route-distinguisher? rt:route-distinguisher 593 | | | +--ro sender-ve-id? uint16 594 | | | +--ro receiver-ve-id? uint16 595 | | +--:(mpls-mldp) 596 | | +--ro (root-address)? 597 | | +--:(ip-address) 598 | | | +--ro source-address? inet:ip-address 599 | | | +--ro group-ip-address? inet:ip-address 600 | | +--:(vpn) 601 | | | +--ro as-number? inet:as-number 602 | | +--:(global-id) 603 | | +--ro lsp-id? string 604 | +--ro system-info 605 | +--ro router-id? rt:router-id 606 +--ro sequence-number? uint64 607 +--ro hop-cnt? uint8 608 +--ro session-packet-statistics 609 | +--ro rx-packet-count? uint32 610 | +--ro tx-packet-count? uint32 611 | +--ro rx-bad-packet? uint32 612 | +--ro tx-packet-failed? uint32 613 +--ro session-error-statistics 614 | +--ro packet-loss-count? uint32 615 | +--ro loss-ratio? percentage 616 | +--ro packet-reorder-count? uint32 617 | +--ro packets-out-of-seq-count? uint32 618 | +--ro packets-dup-count? uint32 619 +--ro session-delay-statistics 620 | +--ro time-unit-value? identityref 621 | +--ro min-delay-value? uint32 622 | +--ro max-delay-value? uint32 623 | +--ro average-delay-value? uint32 624 +--ro session-jitter-statistics 625 | +--ro unit-value? identityref 626 | +--ro min-jitter-value? uint32 627 | +--ro max-jitter-value? uint32 628 | +--ro average-jitter-value? uint32 629 +--ro path-verification 630 | +--ro flow-info? string 631 | +--ro session-path-verification-statistics 632 | +--ro verified-count? uint32 633 | +--ro failed-count? uint32 634 +--ro path-trace-info 635 +--ro path-trace-info-list* [index] 636 +--ro index uint32 637 +--ro ni? routing-instance-ref 638 +--ro tp-location-type identityref 639 +--ro mac-address 640 | +--ro mac-address yang:mac-address 641 +--ro ipv4-address 642 | +--ro ipv4-address inet:ipv4-address 643 +--ro ipv6-address 644 | +--ro ipv6-address inet:ipv6-address 645 +--ro tp-attribute 646 | +--ro tp-attribute-type? address-attribute-type 647 | +--ro (tp-attribute-value)? 648 | +--:(ip-prefix) 649 | | +--ro ip-prefix? inet:ip-prefix 650 | +--:(bgp) 651 | | +--ro bgp? inet:ip-prefix 652 | +--:(tunnel) 653 | | +--ro tunnel-interface? uint32 654 | +--:(pw) 655 | | +--ro remote-pe-address? inet:ip-address 656 | | +--ro pw-id? uint32 657 | +--:(vpls) 658 | | +--ro route-distinguisher? rt:route-distinguisher 659 | | +--ro sender-ve-id? uint16 660 | | +--ro receiver-ve-id? uint16 661 | +--:(mpls-mldp) 662 | +--ro (root-address)? 663 | +--:(ip-address) 664 | | +--ro source-address? inet:ip-address 665 | | +--ro group-ip-address? inet:ip-address 666 | +--:(vpn) 667 | | +--ro as-number? inet:as-number 668 | +--:(global-id) 669 | +--ro lsp-id? string 670 +--ro system-info 671 | +--ro router-id? rt:router-id 672 +--ro timestamp-type? identityref 673 +--ro timestamp-64bit 674 | +--ro timestamp-sec? uint32 675 | +--ro timestamp-nanosec? uint32 676 +--ro timestamp-80bit {ptp-long-format}? 677 | +--ro timestamp-sec? uint64 678 | +--ro timestamp-nanosec? uint32 679 +--ro ntp-timestamp-32bit {ntp-short-format}? 680 | +--ro timestamp-sec? uint16 681 | +--ro timestamp-nanosec? uint16 682 +--ro icmp-timestamp-32bit {icmp-timestamp}? 683 | +--ro timestamp-millisec? uint32 684 +--ro ingress-intf-name? if:interface-ref 685 +--ro egress-intf-name? if:interface-ref 686 +--ro queue-depth? uint32 687 +--ro transit-delay? uint32 688 +--ro app-meta-data? uint64 690 data hierarchy of OAM Retrieval Methods 692 4. OAM Retrieval Methods YANG Module 694 file "ietf-connectionless-oam-methods@2017-09-06.yang" 696 module ietf-connectionless-oam-methods { 697 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; 698 prefix cloam-methods; 699 import ietf-interfaces { 700 prefix if; 701 } 702 import ietf-connectionless-oam { 703 prefix cl-oam; 704 } 705 organization 706 "IETF LIME Working Group"; 707 contact 708 "Deepak Kumar dekumar@cisco.com 709 Qin Wu bill.wu@huawei.com 710 S Raghavan srihari@cisco.com 711 Zitao Wang wangzitao@huawei.com 712 R Rahman rrahman@cisco.com"; 713 description 714 "This YANG module defines the RPC operations for 715 connectionless OAM to be used within IETF 716 in a protocol Independent manner. 717 It is assumed that each protocol maps 718 corresponding abstracts to its native format. 719 Each protocol may extend the YANG model defined 720 here to include protocol specific extensions"; 722 revision 2017-09-06{ 723 description 724 "08 version"; 725 reference "draft-ietf-lime-yang-connectionless-oam-methods"; 726 } 727 identity protocol-id { 728 description 729 "This is base identity for a generic protocol ID. The protocol 730 registry can be found in https://www.iana.org/protocols."; 731 } 732 identity protocol-id-internet { 733 base protocol-id; 734 description 735 "Identity for Internet Protocols."; 736 } 737 identity protocol-id-proprietary { 738 base protocol-id; 739 description 740 "Identity for proprietary protocol (e.g.,IP SLA)."; 741 } 742 identity protocol-id-sfc { 743 base protocol-id; 744 description 745 "Identity for Service Function Chaining."; 746 } 747 identity protocol-id-mpls { 748 base protocol-id; 749 description 750 "MPLS protocol."; 751 } 752 identity protocol-id-mpls-tp { 753 base protocol-id; 754 description 755 "MPLS-TP protocol."; 756 } 757 identity protocol-id-twamp { 758 base protocol-id; 759 description 760 "TWAMP protocol."; 761 } 762 identity protocol-id-bier { 763 base protocol-id; 764 description 765 "BIER protocol."; 766 } 767 identity status-code { 768 description 769 "This is Base Identity for status code."; 770 } 771 identity success-reach { 772 base status-code; 773 description 774 "Indicate that the destination being verified 775 is reachable (See RFC7276)."; 776 } 777 identity fail-reach { 778 base status-code; 779 description 780 "Indicate that the destination being verified 781 is not reachable (See RFC7276)."; 782 } 783 identity success-path-verification { 784 base status-code; 785 description 786 "Indicate that the path verification is performed 787 successfully (See RFC7276)."; 788 } 789 identity fail-path-verification { 790 base status-code; 791 description 792 "Indicate that the path verification fails (See RFC7276)."; 793 } 794 identity status-sub-code { 795 description 796 "IdentityBase status sub code."; 797 } 798 identity invalid-cc { 799 base status-sub-code; 800 description 801 "Indicates that the Continuity check message is invalid (See RFC7276)."; 802 } 803 identity invalid-pd { 804 base status-sub-code; 805 description 806 "Indicates that the path discovery message is invalid (See RFC7276)."; 807 } 808 identity protocol-id-meta-data { 809 description 810 "This is base identity for meta-data corresponding 811 to protocol ID."; 812 } 813 identity protocol-internet-number { 814 base protocol-id-meta-data; 815 description 816 "Internet Protocol Number for standard 817 Internet Protocols (IANA assigned Internet 818 Protocol numbers) to help in protocol processing. 819 The protocol IDs registry can be found in 820 https://www.iana.org/assignments/protocol-numbers 821 /protocol-numbers.xhtml."; 822 } 824 grouping rpc-input-parameters { 825 container destination-tp { 826 uses cl-oam:tp-address; 827 description 828 "Destination test point."; 829 } 830 leaf source-interface { 831 type if:interface-ref; 832 mandatory true; 833 description 834 "Source interface."; 835 } 836 leaf outbound-interface { 837 type if:interface-ref; 838 mandatory true; 839 description 840 "Outbound interface."; 841 } 842 leaf vrf { 843 type cl-oam:routing-instance-ref; 844 description 845 "VRF instance."; 846 } 847 description 848 "Grouping for RPC input parameters"; 849 } 850 rpc continuity-check { 851 if-feature "cl-oam:continuity-check"; 852 description 853 "Continuity-check RPC operation as per RFC7276."; 854 input { 855 uses rpc-input-parameters; 856 uses cl-oam:session-type { 857 description 858 "If session-type is specified, then session-type 859 must be set to on-demand"; 860 } 861 leaf count { 862 type uint32 { 863 range 0..4294967295 { 864 description 865 "The overall number of packet to be transmitted 866 by the sender. The value of count will be set 867 to zero (0) on creation and will thereafter increase 868 monotonically until it reaches a maximum value of 2^32-1 869 (4294967295 decimal), when it wraps around and starts 870 increasing again from zero."; 871 } 872 } 873 default "5"; 874 description 875 "Specifies the number of 876 packets that will be sent. By 877 default, the packet number is 878 set to 5."; 879 } 880 leaf ttl { 881 type uint8; 882 default "255"; 883 description 884 "Time to live (TTL) used to limit lifetime 885 of data packet transmitted in the network 886 and prevent looping. The TTL value is decremented 887 for every hop which the packet traverses. If the 888 TTL is zero, the data packet will be discarded."; 889 } 890 leaf packet-size { 891 type uint32 { 892 range "64..10000"; 893 } 894 default "64"; 895 description 896 "Packet size of continuity-check message, in octets. 897 By default, the packet size is set to 64 octets."; 898 } 899 } 900 output { 901 container response-info { 902 leaf protocol-id { 903 type identityref { 904 base protocol-id; 905 } 906 mandatory true; 907 description 908 "Protocol used in continuity check message. 909 This could be a standard protocol (e.g., 910 TCP/IP protocols, MPLS etc.,) or a proprietary 911 protocol as identified by this field."; 912 } 913 leaf protocol-id-meta-data { 914 type identityref { 915 base protocol-id-meta-data; 916 } 917 description 918 "An optional meta-data related to the protocol ID. 919 For e.g., this could be the Internet Protocol number 920 for standard Internet Protocols for help in protocol 921 processing."; 922 } 923 leaf status-code { 924 type identityref{ 925 base status-code; 926 } 927 mandatory true; 928 description 929 "Status code for continuity check RPC operation. 930 This could be a basic status code (e.g., destination 931 is reachable or destination is not reachable (See RFC7276)) 932 or some customized status code as identified by this field."; 933 } 934 leaf status-sub-code { 935 type identityref{ 936 base status-sub-code; 937 } 938 mandatory true; 939 description 940 "An optional status sub code for continuity check 941 RPC operation. If the basic status code is destination 942 reachable, this status-sub-code doesn't need to be specified. 943 If the basic status code is destination unreachable, the 944 status-sub-code can be used to specify the detailed reasons. 945 This could be a basic sub-status-code (such as invalid cc) or 946 other error codes specific to the protocol under use for CC 947 For example if ICMP is the protocol under use, the error codes 948 defined in [RFC4443] can be used to specify the reasons specific to 949 ICMP. These technology specific status-sub-code can be defined 950 in technology specific models."; 951 } 952 description 953 "Status Code and Status sub code for continuity check RPC operation."; 954 } 955 uses cl-oam:continuity-check-data; 956 } 957 } 959 rpc path-discovery { 960 if-feature "cl-oam:path-discovery"; 961 description 962 "Path discovery RPC operation as per RFC7276."; 963 input { 964 uses rpc-input-parameters; 965 uses cl-oam:session-type { 966 description 967 "If session-type is specified, then session-type 968 must be set to on-demand"; 969 } 970 leaf max-ttl { 971 type uint8; 972 default "255"; 973 description 974 "Maximum TTL indicates the maixmum number of hops that 975 a packet is permitted to travel before being discarded 976 by a router. By default, the maximimum TTL is set to 255."; 977 } 978 } 979 output { 980 list response-list { 981 key "response-index"; 982 description 983 "Path discovery response list."; 984 leaf response-index { 985 type uint32; 986 mandatory true; 987 description 988 "Response index."; 989 } 990 leaf protocol-id { 991 type identityref { 992 base protocol-id; 993 } 994 mandatory true; 995 description 996 "Protocol used in PD. This could be a standard 997 protocol (e.g., TCP/IP protocols, MPLS etc.,) 998 or a proprietary protocol as identified by 999 this field."; 1000 } 1001 leaf protocol-id-meta-data { 1002 type identityref { 1003 base protocol-id-meta-data; 1004 } 1005 description 1006 "An optional meta-data related to the protocol ID. 1007 For e.g., this could be the Internet Protocol number 1008 for standard Internet Protocols for help in protocol 1009 processing."; 1010 } 1011 leaf status-code { 1012 type identityref{ 1013 base status-code; 1014 } 1015 mandatory true; 1016 description 1017 "Status code for continuity check RPC operation. 1018 This could be a basic status code (e.g., destination 1019 is reachable or destination is not reachable) or some 1020 customized status code as identified by this field."; 1021 } 1022 leaf status-sub-code { 1023 type identityref{ 1024 base status-sub-code; 1025 } 1026 mandatory true; 1027 description 1028 "An optional status sub code for continuity check 1029 RPC operation. If the basic status code is destination 1030 reachable, this status-sub-code doesn't need to be specified. 1031 If the basic status code is destination unreachable, the 1032 status-sub-code can be used to specify the detailed reasons. 1033 This could be a basic sub-status-code (such as invalid cc) or 1034 other error codes specific to the protocol under use for CC 1035 For example if ICMP is the protocol under use, the error codes 1036 defined in [RFC4443] can be used to specify the reasons specific to 1037 ICMP. These technology specific status-sub-code can be defined 1038 in technology specific models."; 1039 } 1040 } 1041 uses cl-oam:path-discovery-data; 1042 } 1043 } 1044 } 1046 1048 5. Security Considerations 1050 The YANG module defined in this document is designed to be accessed 1051 via network management protocols such as NETCONF [RFC6241] or 1052 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 1053 layer, and the mandatory-to-implement secure transport is Secure 1054 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 1055 mandatory-to-implement secure transport is TLS [RFC5246]. 1057 The NETCONF access control model [RFC6536] provides the means to 1058 restrict access for particular NETCONF or RESTCONF users to a 1059 preconfigured subset of all available NETCONF or RESTCONF protocol 1060 operations and content. 1062 Some of the RPC operations in this YANG module may be considered 1063 sensitive or vulnerable in some network environments. It is thus 1064 important to control access to these operations. These are the 1065 operations and their sensitivity/vulnerability: 1067 o continuity-check: Generates continuity check. 1069 o path-discovery: Generates path discovery. 1071 These operations are used to retrieve the data from the device that 1072 need to execute the OAM command. Unauthorized source access to some 1073 sensitive information in the above data may be used for network 1074 reconnaissance or lead to Denial-of-Service attack on both the local 1075 device and the network. 1077 6. IANA Considerations 1079 This document registers a URI in the IETF XML registry [RFC3688]. 1080 Following the format in [RFC3688], the following registration is 1081 requested to be made: 1083 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods 1085 Registrant Contact: The IESG. 1087 XML: N/A, the requested URI is an XML namespace. 1089 This document registers a YANG module in the YANG Module Names 1090 registry [RFC6020]. 1092 name: ietf-connectionless-oam-methods 1094 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- 1095 methods 1096 prefix: cloam-methods 1098 reference: RFC XXXX 1100 7. Acknowlegements 1102 The authors of this document would like to thank Elwyn Davies, Alia 1103 Atlas, Brian E Carpenter, Greg Mirsky, Adam Roach, Alissa Cooper, 1104 Eric Rescorla, Ben Campbell, Benoit Claise, Kathleen Moriarty, Carlos 1105 Pignataro, Benjamin Kaduk, and others for their substantive review, 1106 comments, an d proposals to improve the document. 1108 8. References 1110 8.1. Normative References 1112 [I-D.ietf-lime-yang-connectionless-oam] 1113 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 1114 "Generic YANG Data Model for the Management of Operations, 1115 Administration, and Maintenance (OAM) Protocols that use 1116 Connectionless Communications", draft-ietf-lime-yang- 1117 connectionless-oam-16 (work in progress), October 2017. 1119 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1120 DOI 10.17487/RFC3688, January 2004, 1121 . 1123 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1124 (TLS) Protocol Version 1.2", RFC 5246, 1125 DOI 10.17487/RFC5246, August 2008, 1126 . 1128 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1129 the Network Configuration Protocol (NETCONF)", RFC 6020, 1130 DOI 10.17487/RFC6020, October 2010, 1131 . 1133 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1134 and A. Bierman, Ed., "Network Configuration Protocol 1135 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1136 . 1138 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1139 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1140 . 1142 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1143 Protocol (NETCONF) Access Control Model", RFC 6536, 1144 DOI 10.17487/RFC6536, March 2012, 1145 . 1147 [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, 1148 "Specification of the IP Flow Information Export (IPFIX) 1149 Protocol for the Exchange of Flow Information", STD 77, 1150 RFC 7011, DOI 10.17487/RFC7011, September 2013, 1151 . 1153 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 1154 September 1981. 1156 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1157 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1158 . 1160 8.2. Informative References 1162 [I-D.ietf-netconf-yang-push] 1163 Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- 1164 Nygaard, E., Bierman, A., and B. Lengyel, "YANG Datastore 1165 Subscription", draft-ietf-netconf-yang-push-11 (work in 1166 progress), October 2017. 1168 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 1169 Control Message Protocol (ICMPv6) for the Internet 1170 Protocol Version 6 (IPv6) Specification", STD 89, 1171 RFC 4443, DOI 10.17487/RFC4443, March 2006, 1172 . 1174 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1175 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1176 . 1178 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1179 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 1180 January 2011, . 1182 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 1183 Weingarten, "An Overview of Operations, Administration, 1184 and Maintenance (OAM) Tools", RFC 7276, 1185 DOI 10.17487/RFC7276, June 2014, 1186 . 1188 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 1189 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 1190 Switched (MPLS) Data-Plane Failures", RFC 8029, 1191 DOI 10.17487/RFC8029, March 2017, 1192 . 1194 Appendix A. Appdendix A.1 Extending Connectionless OAM Method Module 1195 Example 1197 The following is an example of extensions possible to "ietf- 1198 connectionless-oam-methods" YANG model defined in this document. 1200 The snippet below depicts an example of augmenting the "ietf- 1201 connectionless-oam-methods" YANG model with ICMP ping attributes: 1203 augment "/cloam-methods:continutiy-check" 1204 +"/cloam-methods:output"{ 1205 container session-rtt-statistics{ 1206 leaf min-rtt{ 1207 type uint32; 1208 description 1209 "This minimum ping round-trip-time (RTT) received."; 1210 } 1211 leaf max-rtt{ 1212 type uint32; 1213 description 1214 "This maximum ping round-trip-time (RTT) received."; 1215 } 1216 leaf avg-rtt{ 1217 type uint32; 1218 description 1219 "The current average ping round-trip-time (RTT)"; 1220 } 1221 description 1222 "This container presents the ping round-trip-time statistics."; 1223 } 1224 } 1226 Appendix B. Appendix A.2 Example of new retrieval procedures Model 1228 As discussed in the Introduction section of this document, the new 1229 retrieval procedures can be defined for retrieval of the same data 1230 defined by base YANG Data model for connectionless OAM protocols. 1231 This appendix demonstrates how the base connectionless OAM data model 1232 can be extended to support persistent data retrieval besides on 1233 demand retrieval procedures defined in section 3, i.e., first 1234 retrieve a persistent-id based on the destination test point location 1235 information and then retrieve the export details based on persistent- 1236 id. Internet Protocol Flow Information Export (IPFIX) [RFC7011] or 1237 YANG-push [I-D.ietf-netconf-yang-push] are currently outlined here as 1238 data export options. Additional export options can be added in 1239 future. 1241 The YANG module "example-cl-oam-persistent-methods" shown below is 1242 intended as an illustration rather than a real definition of a RPC 1243 operation model for persistent data retrieval. For the sake of 1244 brevity, this module does not obey all the guidelines specified in 1245 [RFC6087]. 1247 module example-cl-oam-persistent-methods { 1248 namespace "http://example.com/cl-oam-persistent-methods"; 1249 prefix pcloam-methods; 1250 import ietf-interfaces { 1251 prefix if; 1252 } 1253 import ietf-connectionless-oam { 1254 prefix cl-oam; 1255 } 1256 import ietf-yang-types { 1257 prefix yang; 1258 } 1259 identity export-method { 1260 description 1261 "Base identity to represent a conceptual export-method."; 1262 } 1263 identity ipfix-export { 1264 base export-method; 1265 description 1266 "IPFIX based export. Configuration provided separately."; 1267 } 1268 identity yang-push-export { 1269 base export-method; 1270 description 1271 "Yang-push from draft-ietf-netconf-yang-push"; 1272 } 1273 identity protocol-id { 1274 description 1275 "A generic protocol identifier."; 1276 } 1277 identity status-code { 1278 description 1279 "Base status code"; 1280 } 1281 identity success-reach { 1282 base status-code; 1283 description 1284 "Indicate that the destination being verified 1285 is reachable"; 1286 } 1287 identity fail-reach { 1288 base status-code; 1289 description 1290 "Indicate that the destination being verified 1291 is not reachable"; 1292 } 1293 identity success-path-verification { 1294 base status-code; 1295 description 1296 "Indicate that the path verification is performed 1297 successfully."; 1298 } 1299 identity fail-path-verification { 1300 base status-code; 1301 description 1302 "Indicate that the path verification fails."; 1303 } 1304 identity status-sub-code { 1305 description 1306 "Base status sub code"; 1307 } 1308 identity invalid-cc { 1309 base status-sub-code; 1310 description 1311 "Indicates that the Continuity check message is invalid"; 1312 } 1313 identity invalid-pd { 1314 base status-sub-code; 1315 description 1316 "Indicates that the path discovery message is invalid"; 1317 } 1318 typedef export-method { 1319 type identityref { 1320 base export-method; 1321 } 1322 description 1323 "Export method type."; 1324 } 1325 typedef change-type { 1326 type enumeration { 1327 enum "create" { 1328 description 1329 "Change due to a create."; 1330 } 1331 enum "delete" { 1332 description 1333 "Change due to a delete."; 1334 } 1335 enum "modify" { 1336 description 1337 "Change due to an update."; 1338 } 1339 } 1340 description 1341 "Different types of changes that may occur."; 1342 } 1344 rpc cc-get-persistent-id { 1345 if-feature "cl-oam:continuity-check"; 1346 description 1347 "Obtains continuity-check persistent identification given mapping 1348 parameters as input."; 1349 input { 1350 container destination-tp { 1351 uses cl-oam:tp-address; 1352 description 1353 "Destination test point."; 1354 } 1355 uses cl-oam:session-type; 1356 leaf source-interface { 1357 type if:interface-ref; 1358 description 1359 "Source interface."; 1360 } 1361 leaf outbound-interface { 1362 type if:interface-ref; 1363 description 1364 "Outbound interface."; 1365 } 1366 leaf vrf { 1367 type cl-oam:routing-instance-ref; 1368 description 1369 "VRF instance."; 1370 } 1371 } 1372 output { 1373 container error-code { 1374 leaf protocol-id { 1375 type identityref { 1376 base protocol-id; 1377 } 1378 mandatory true; 1379 description 1380 "Protocol used. This could be a standard 1381 protocol (e.g., TCP/IP protocols, MPLS etc.,) 1382 or a proprietary protocol as identified by 1383 this field."; 1384 } 1385 leaf protocol-id-meta-data { 1386 type uint64; 1387 description 1388 "An optional meta-data related to the protocol ID. 1389 For e.g., this could be the Internet Protocol number 1390 for standard Internet Protocols for help in protocol 1391 processing."; 1392 } 1393 leaf status-code { 1394 type identityref{ 1395 base status-code; 1396 } 1397 mandatory true; 1398 description 1399 "Status code."; 1400 } 1401 leaf status-sub-code { 1402 type identityref{ 1403 base status-sub-code; 1404 } 1405 mandatory true; 1406 description 1407 "Sub code for CC."; 1408 } 1409 description 1410 "Status code and Sub Code."; 1411 } 1413 leaf cc-persistent-id { 1414 type string; 1415 description 1416 "Id to act as a cookie."; 1417 } 1418 } 1419 } 1421 rpc cc-persistent-get-export-details { 1422 if-feature "cl-oam:continuity-check"; 1423 description 1424 "Given the persistent id, gets the configuration 1425 options, details related to the configured data 1426 export."; 1427 input { 1428 leaf cc-persistent-id { 1429 type string; 1430 description 1431 "Persistent Id for use as a key in search."; 1432 } 1433 } 1434 output { 1435 container error-code { 1436 leaf protocol-id { 1437 type identityref { 1438 base protocol-id; 1439 } 1440 mandatory true; 1441 description 1442 "Protocol used. This could be a standard 1443 protocol (e.g., TCP/IP protocols, MPLS etc.,) 1444 or a proprietary protocol as identified by 1445 this field."; 1446 } 1447 leaf protocol-id-meta-data { 1448 type uint64; 1449 description 1450 "An optional meta-data related to the protocol ID. 1451 For e.g., this could be the Internet Protocol number 1452 for standard Internet Protocols for help in protocol 1453 processing."; 1454 } 1455 leaf status-code { 1456 type identityref{ 1457 base status-code; 1458 } 1459 mandatory true; 1460 description 1461 "Status code."; 1462 } 1463 leaf status-sub-code { 1464 type identityref{ 1465 base status-sub-code; 1466 } 1467 mandatory true; 1468 description 1469 "Sub code for CC."; 1470 } 1471 description 1472 "Status code and Sub Code."; 1473 } 1475 leaf data-export-method { 1476 type export-method; 1477 description 1478 "Type of export in use."; 1479 } 1481 choice cc-trigger { 1482 description 1483 "Necessary conditions for 1484 periodic or on-change trigger."; 1485 case periodic { 1486 description 1487 "Periodic reports."; 1488 leaf period { 1489 type yang:timeticks; 1490 description 1491 "Time interval between reports."; 1492 } 1493 leaf start-time { 1494 type yang:date-and-time; 1495 description 1496 "Timestamp from which reports were started."; 1497 } 1498 } 1499 case on-change { 1500 description 1501 "On-change trigger and not periodic."; 1502 leaf all-data-on-start { 1503 type boolean; 1504 description 1505 "Full update done on start or not."; 1506 } 1507 leaf-list excluded-change { 1508 type change-type; 1509 description 1510 "Changes that will not trigger an update."; 1511 } 1512 } 1513 } 1514 } 1515 } 1517 rpc pd-get-persistent-id { 1518 if-feature "cl-oam:path-discovery"; 1519 description 1520 "Obtains persistent path discovery identification."; 1522 input { 1523 container destination-tp { 1524 uses cl-oam:tp-address; 1525 description 1526 "Destination test point."; 1527 } 1528 uses cl-oam:session-type; 1529 leaf source-interface { 1530 type if:interface-ref; 1531 description 1532 "Source interface."; 1533 } 1534 leaf outbound-interface { 1535 type if:interface-ref; 1536 description 1537 "Outbound interface."; 1538 } 1539 leaf vrf { 1540 type cl-oam:routing-instance-ref; 1541 description 1542 "VRF"; 1543 } 1544 } 1545 output { 1546 list response-list { 1547 key "response-index"; 1548 description 1549 "Path discovery response list."; 1550 leaf response-index { 1551 type uint32; 1552 mandatory true; 1553 description 1554 "Response index."; 1555 } 1556 leaf protocol-id { 1557 type identityref { 1558 base protocol-id; 1559 } 1560 mandatory true; 1561 description 1562 "Protocol used. This could be a standard 1563 protocol (e.g., TCP/IP protocols, MPLS etc.,) 1564 or a proprietary protocol as identified by 1565 this field."; 1566 } 1567 leaf protocol-id-meta-data { 1568 type uint64; 1569 description 1570 "An optional meta-data related to the protocol ID. 1571 For e.g., this could be the Internet Protocol number 1572 for standard Internet Protocols for help in protocol 1573 processing."; 1574 } 1575 leaf status-code { 1576 type identityref { 1577 base status-code; 1578 } 1579 mandatory true; 1580 description 1581 "Status code for Persistent Path Discovery Information. "; 1582 } 1583 leaf status-sub-code { 1584 type identityref{ 1585 base status-sub-code; 1586 } 1587 mandatory true; 1588 description 1589 "Sub code for Persistent Path Discovery Information. "; 1590 } 1591 leaf pd-persistent-id { 1592 type string; 1593 description 1594 "Id to act as a cookie."; 1595 } 1596 } 1597 } 1598 } 1600 rpc pd-persistent-get-export-details { 1601 if-feature "cl-oam:path-discovery"; 1602 description 1603 "Given the persistent id, gets the configuration 1604 options, details related to the configured data 1605 export."; 1606 input { 1607 leaf cc-persistent-id { 1608 type string; 1609 description 1610 "Persistent ID for use as a key in search."; 1611 } 1612 } 1614 output { 1615 list response-list { 1616 key "response-index"; 1617 description 1618 "Path discovery response list."; 1619 leaf response-index { 1620 type uint32; 1621 mandatory true; 1622 description 1623 "Response index."; 1624 } 1625 leaf protocol-id { 1626 type identityref { 1627 base protocol-id; 1628 } 1629 mandatory true; 1630 description 1631 "Protocol used. This could be a standard 1632 protocol (e.g., TCP/IP protocols, MPLS etc.,) 1633 or a proprietary protocol as identified by 1634 this field."; 1635 } 1636 leaf protocol-id-meta-data { 1637 type uint64; 1638 description 1639 "An optional meta-data related to the protocol ID. 1640 For e.g., this could be the Internet Protocol number 1641 for standard Internet Protocols for help in protocol 1642 processing."; 1643 } 1644 leaf status-code { 1645 type identityref{ 1646 base status-code; 1647 } 1648 mandatory true; 1649 description 1650 "Status code for Persistent Path Discovery Creation. "; 1651 } 1652 leaf status-sub-code { 1653 type identityref{ 1654 base status-sub-code; 1655 } 1656 mandatory true; 1657 description 1658 "Sub code for Persistent Path Discovery Creation. "; 1659 } 1660 leaf data-export-method { 1661 type export-method; 1662 description 1663 "Type of export."; 1664 } 1665 choice pd-trigger { 1666 description 1667 "Necessary conditions 1668 for periodic or on-change 1669 trigger."; 1670 case periodic { 1671 description 1672 "Periodic reports."; 1673 leaf period { 1674 type yang:timeticks; 1675 description 1676 "Time interval between reports."; 1677 } 1678 leaf start-time { 1679 type yang:date-and-time; 1680 description 1681 "Timestamp from which reports are started."; 1682 } 1683 } 1684 case on-change { 1685 description 1686 "On-change trigger and not periodic."; 1687 leaf all-data-on-start { 1688 type boolean; 1689 description 1690 "Full update done on start or not."; 1691 } 1692 leaf-list excluded-change { 1693 type change-type; 1694 description 1695 "Changes that will not trigger an update."; 1696 } 1697 } 1698 } 1699 } 1700 } 1701 } 1702 } 1704 Authors' Addresses 1706 Deepak Kumar 1707 CISCO Systems 1708 510 McCarthy Blvd 1709 Milpitas, CA 95035 1710 USA 1712 Email: dekumar@cisco.com 1713 Michael Wang 1714 Huawei Technologies, Co., Ltd 1715 101 Software Avenue, Yuhua District 1716 Nanjing 210012 1717 China 1719 Email: wangzitao@huawei.com 1721 Qin Wu (editor) 1722 Huawei 1723 101 Software Avenue, Yuhua District 1724 Nanjing, Jiangsu 210012 1725 China 1727 Email: bill.wu@huawei.com 1729 Reshad Rahman 1730 CISCO Systems 1731 2000 Innovation Drive 1732 Kanata, Ontario K2K 3E8 1733 Canada 1735 Email: rrahman@cisco.com 1737 Srihari Raghavan 1738 CISCO Systems 1739 Tril Infopark Sez, Ramanujan IT City 1740 Neville Block, 2nd floor, Old Mahabalipuram Road 1741 Chennai, Tamil Nadu 600113 1742 India 1744 Email: srihari@cisco.com