idnits 2.17.00 (12 Aug 2021) /tmp/idnits22188/draft-ietf-lime-yang-connectionless-oam-methods-07.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 31 instances of too long lines in the document, the longest one being 6 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 301 has weird spacing: '...on-type ide...' == Line 304 has weird spacing: '...address yan...' == Line 306 has weird spacing: '...address ine...' == Line 308 has weird spacing: '...address ine...' == Line 337 has weird spacing: '...terface if:...' == (25 more instances...) -- The document date (September 15, 2017) is 1708 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: draft-ietf-lime-yang-connectionless-oam has been published as RFC 8532 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: draft-ietf-netconf-yang-push has been published as RFC 8641 -- 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: March 19, 2018 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 September 15, 2017 12 Retrieval Methods YANG Data Model for Connectionless Operations, 13 Administration, and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-methods-07 16 Abstract 18 This document presents a retrieval method YANG Data model for 19 connectionless OAM protocols. It provides technology-independent RPC 20 operations for connectionless OAM protocols. The retrieval methods 21 model presented here can be extended to include technology specific 22 details. This is leading to uniformity between OAM protocols and 23 support both nested OAM workflows (i.e., performing OAM functions at 24 different levels through a unified interface) and interacting OAM 25 workflows ( i.e., performing OAM functions at same levels through a 26 unified interface). 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at https://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on March 19, 2018. 45 Copyright Notice 47 Copyright (c) 2017 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (https://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 63 2. Conventions used in this document . . . . . . . . . . . . . . 3 64 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 65 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 66 3. Overview of the Connectionless OAM retrieval methods Model . 4 67 3.1. RPC operation definitions . . . . . . . . . . . . . . . . 5 68 3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 7 69 4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 14 70 5. Security Considerations . . . . . . . . . . . . . . . . . . . 19 71 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 72 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 73 7.1. Normative References . . . . . . . . . . . . . . . . . . 20 74 7.2. Informative References . . . . . . . . . . . . . . . . . 21 75 Appendix A. Appdendix A.1 Extending Connectionless OAM Method 76 Module Example . . . . . . . . . . . . . . . . . . . 21 77 Appendix B. Appendix A.2 Example of new retrieval procedures 78 Model . . . . . . . . . . . . . . . . . . . . . . . 22 79 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 81 1. Introduction 83 Operations, Administration, and Maintenance (OAM) are important 84 networking functions that allow operators to: 86 1. Monitor reachability of destinations (Reachability Verification, 87 Continuity Check). 89 2. Troubleshoot failures (Fault verification and localization). 91 3. Monitor Performance 92 An overview of OAM tools is presented at [RFC7276]. 94 Ping and Traceroute [RFC792], [RFC4443] and BFD [RFC5880] are well- 95 known fault verification and isolation tools, respectively, for IP 96 networks. Over the years, different technologies have developed 97 similar tools for similar purposes. 99 In this document, we present an on-demand retrieval method YANG Data 100 model for connectionless OAM protocols. This model provides 101 technology-independent RPC operations for connectionless OAM 102 protocols. It is separated from the generic YANG model for 103 connectionless OAM [I-D.ietf-lime-yang-connectionless-oam] and can 104 avoid mixing the models for the retrieved-data from the retrieval 105 procedures. It is expected that retrieval procedures would evolve 106 faster than the data model [I-D.ietf-lime-yang-connectionless-oam] 107 and will allow new procedures to be defined for retrieval of the same 108 data defined by the base data model. 110 2. Conventions used in this document 112 The following terms are defined in [RFC6241] and are not redefined 113 here: 115 o client 117 o configuration data 119 o server 121 o state data 123 The following terms are defined in [RFC6020] and are not redefined 124 here: 126 o augment 128 o data model 130 o data node 132 The terminology for describing YANG data models is found in 133 [RFC6020]. 135 2.1. Terminology 137 TP - Test Point 139 MAC - Media Access Control 140 RPC - A Remote Procedure Call 142 RPC operation - A specific Remote Procedure Call 144 2.2. Tree Diagrams 146 A simplified graphical representation of the data model is used in 147 this document. The meaning of the symbols in these diagrams is as 148 follows: 150 Each node is printed as: 152 154 is one of: 155 + for current 157 is one of: 159 rw for configuration data 160 ro for non-configuration data 161 -x for rpcs 162 -n for notifications 164 is the name of the node 166 If the node is augmented into the tree from another module, its name 167 is printed as :. 169 is one of: 171 ? for an optional leaf or choice 172 ! for a presence container 173 * for a leaf-list or list 174 [] for a list's keys 176 is the name of the type for leafs and leaf-lists 178 3. Overview of the Connectionless OAM retrieval methods Model 180 In this document, we present an on-demand retrieval method YANG Data 181 model for connectionless OAM protocols. This model provides 182 technology-independent retrieval procedures (RPC operations) for 183 connectionless OAM protocols. It provides a flexible way to retrieve 184 the data which defined by the "ietf-connectionless-oam.yang" 185 [I-D.ietf-lime-yang-connectionless-oam]. 187 3.1. RPC operation definitions 189 The RPC model facilitates issuing commands to a NETCONF server (in 190 this case to the device that need to execute the OAM command) and 191 obtaining a response. 193 Under 'connectionless-oam-methods' module, we summarize common OAM 194 functions and define two generic RPC operations: 'continuity-check' 195 and 'path-discovery'. In practice, these RPC operations are 196 activated on-demand and supported by corresponding technology- 197 specific OAM tools [RFC7276]. For example, for the IP OAM model, the 198 continuity-check RPC corresponds to the IP Ping [RFC792] [RFC4443], 199 while the path-discovery RPC operation corresponds to IP Traceroute 200 [RFC792] [RFC4443]. 202 Note that the RPC operation presented in this document is the base 203 building block, which is used to derive a model for a technology- 204 specific OAM (i.e., ICMP ping [RFC792] [RFC4443], LSP ping 205 [RFC8029]), the base building block should be extended with 206 corresponding technology specific parameters. To facilitate this for 207 future enhancements to data retrieval methods, the RPCs are captured 208 under a separate module. 210 The generic 'path-discovery-data' and 'continuity-check-data' 211 groupings are used as data outputs from different RPCs described in 212 this document. Similar methods including other RPCs can retrieve the 213 data using the same data model. 215 rpc continuity-check { 216 if-feature coam:continuity-check; 217 description 218 "Continuity-check RPC operation as per RFC7276."; 219 input { 220 uses rpc-input-parameters; 221 .... 222 } 223 output { 224 container error-code { 225 leaf status-code { 226 type identityref{ 227 base status-code; 228 } 229 mandatory true; 230 description 231 "Error code for CC."; 232 } 233 leaf status-sub-code { 234 type identityref{ 235 base status-sub-code; 236 } 237 mandatory true; 238 description 239 "Sub code for CC."; 240 } 241 description 242 "Error code and Sub Code for CC."; 243 } 244 uses coam:continuity-check-data; 245 } 246 } 248 rpc path-discovery { 249 description 250 "path discovery RPC operation as per RFC7276."; 251 input { 252 uses rpc-input-parameters; 253 ..... 254 } 255 output { 256 list response-list { 257 key "response-index"; 258 description 259 "Path discovery response list."; 260 leaf response-index { 261 type uint32; 262 mandatory true; 263 description 264 "Response index."; 265 } 267 leaf status-code { 268 type identityref{ 269 base status-code; 270 } 271 mandatory true; 272 description 273 "Error code for Path Discovery. "; 274 } 275 leaf status-sub-code { 276 type identityref{ 277 base status-sub-code; 278 } 279 mandatory true; 280 description 281 "Sub code for Path Discovery. "; 282 } 284 } 285 uses coam:path-discovery-data; 286 } 287 } 289 Snippet of data hierarchy related to RPC operations 291 3.2. OAM Retrieval Methods Hierarchy 293 The complete data hierarchy related to the Connectionless OAM 294 Retrieval Methods YANG model is presented below. 296 module: ietf-connectionless-oam-methods 297 rpcs: 298 +---x continuity-check {coam:continuity-check}? 299 | +---w input 300 | | +---w destination-tp 301 | | | +---w tp-location-type identityref 302 | | | +---w tp-address 303 | | | +---w mac-address 304 | | | | +---w mac-address yang:mac-address 305 | | | +---w ipv4-address 306 | | | | +---w ipv4-address inet:ipv4-address 307 | | | +---w ipv6-address 308 | | | | +---w ipv6-address inet:ipv6-address 309 | | | +---w tp-attribute 310 | | | | +---w tp-attribute-type? address-attribute-type 311 | | | | +---w (tp-attribute-value)? 312 | | | | +--:(ip-prefix) 313 | | | | | +---w ip-prefix? inet:ip-prefix 314 | | | | +--:(bgp) 315 | | | | | +---w bgp? inet:ip-prefix 316 | | | | +--:(tunnel) 317 | | | | | +---w tunnel-interface? uint32 318 | | | | +--:(pw) 319 | | | | | +---w remote-pe-address? inet:ip-address 320 | | | | | +---w pw-id? uint32 321 | | | | +--:(vpls) 322 | | | | | +---w route-distinguisher? rt:route-distinguisher 323 | | | | | +---w sender-ve-id? uint16 324 | | | | | +---w receiver-ve-id? uint16 325 | | | | +--:(mpls-mldp) 326 | | | | +---w (root-address)? 327 | | | | +--:(ip-address) 328 | | | | | +---w source-address? inet:ip-address 329 | | | | | +---w group-ip-address? inet:ip-address 330 | | | | +--:(vpn) 331 | | | | | +---w as-number? inet:as-number 332 | | | | +--:(global-id) 333 | | | | +---w lsp-id? string 334 | | | +---w system-info 335 | | | +---w system-id? rt:router-id 336 | | +---w source-interface if:interface-ref 337 | | +---w outbound-interface if:interface-ref 338 | | +---w vrf? coam:routing-instance-ref 339 | | +---w count? uint32 340 | | +---w ttl? uint8 341 | | +---w packet-size? uint32 342 | +--ro output 343 | +--ro error-code 344 | | +--ro status-code identityref 345 | | +--ro status-sub-code identityref 346 | +--ro src-test-point 347 | | +--ro ni? routing-instance-ref 348 | | +--ro tp-location-type identityref 349 | | +--ro tp-address 350 | | | +--ro mac-address 351 | | | | +--ro mac-address yang:mac-address 352 | | | +--ro ipv4-address 353 | | | | +--ro ipv4-address inet:ipv4-address 354 | | | +--ro ipv6-address 355 | | | | +--ro ipv6-address inet:ipv6-address 356 | | | +--ro tp-attribute 357 | | | | +--ro tp-attribute-type? address-attribute-type 358 | | | | +--ro (tp-attribute-value)? 359 | | | | +--:(ip-prefix) 360 | | | | | +--ro ip-prefix? inet:ip-prefix 361 | | | | +--:(bgp) 362 | | | | | +--ro bgp? inet:ip-prefix 363 | | | | +--:(tunnel) 364 | | | | | +--ro tunnel-interface? uint32 365 | | | | +--:(pw) 366 | | | | | +--ro remote-pe-address? inet:ip-address 367 | | | | | +--ro pw-id? uint32 368 | | | | +--:(vpls) 369 | | | | | +--ro route-distinguisher? rt:route-distinguisher 370 | | | | | +--ro sender-ve-id? uint16 371 | | | | | +--ro receiver-ve-id? uint16 372 | | | | +--:(mpls-mldp) 373 | | | | +--ro (root-address)? 374 | | | | +--:(ip-address) 375 | | | | | +--ro source-address? inet:ip-address 376 | | | | | +--ro group-ip-address? inet:ip-address 377 | | | | +--:(vpn) 378 | | | | | +--ro as-number? inet:as-number 379 | | | | +--:(global-id) 380 | | | | +--ro lsp-id? string 381 | | | +--ro system-info 382 | | | +--ro system-id? rt:router-id 383 | | +--ro egress-intf-name? if:interface-ref 384 | +--ro dest-test-point 385 | | +--ro ni? routing-instance-ref 386 | | +--ro tp-location-type identityref 387 | | +--ro tp-address 388 | | | +--ro mac-address 389 | | | | +--ro mac-address yang:mac-address 390 | | | +--ro ipv4-address 391 | | | | +--ro ipv4-address inet:ipv4-address 392 | | | +--ro ipv6-address 393 | | | | +--ro ipv6-address inet:ipv6-address 394 | | | +--ro tp-attribute 395 | | | | +--ro tp-attribute-type? address-attribute-type 396 | | | | +--ro (tp-attribute-value)? 397 | | | | +--:(ip-prefix) 398 | | | | | +--ro ip-prefix? inet:ip-prefix 399 | | | | +--:(bgp) 400 | | | | | +--ro bgp? inet:ip-prefix 401 | | | | +--:(tunnel) 402 | | | | | +--ro tunnel-interface? uint32 403 | | | | +--:(pw) 404 | | | | | +--ro remote-pe-address? inet:ip-address 405 | | | | | +--ro pw-id? uint32 406 | | | | +--:(vpls) 407 | | | | | +--ro route-distinguisher? rt:route-distinguisher 408 | | | | | +--ro sender-ve-id? uint16 409 | | | | | +--ro receiver-ve-id? uint16 410 | | | | +--:(mpls-mldp) 411 | | | | +--ro (root-address)? 412 | | | | +--:(ip-address) 413 | | | | | +--ro source-address? inet:ip-address 414 | | | | | +--ro group-ip-address? inet:ip-address 415 | | | | +--:(vpn) 416 | | | | | +--ro as-number? inet:as-number 417 | | | | +--:(global-id) 418 | | | | +--ro lsp-id? string 419 | | | +--ro system-info 420 | | | +--ro system-id? rt:router-id 421 | | +--ro ingress-intf-name? if:interface-ref 422 | +--ro sequence-number? uint64 423 | +--ro hop-cnt? uint8 424 | +--ro session-packet-statistics 425 | | +--ro rx-packet-count? uint32 426 | | +--ro tx-packet-count? uint32 427 | | +--ro rx-bad-packet? uint32 428 | | +--ro tx-packet-failed? uint32 429 | +--ro session-error-statistics 430 | | +--ro packet-drops-count? uint32 431 | | +--ro packet-reorder-count? uint32 432 | | +--ro packets-out-of-seq-count? uint32 433 | | +--ro packets-dup-count? uint32 434 | +--ro session-delay-statistics 435 | | +--ro time-resolution-value? identityref 436 | | +--ro min-delay-value? uint32 437 | | +--ro max-delay-value? uint32 438 | | +--ro average-delay-value? uint32 439 | +--ro session-jitter-statistics 440 | +--ro time-resolution-value? identityref 441 | +--ro min-jitter-value? uint32 442 | +--ro max-jitter-value? uint32 443 | +--ro average-jitter-value? uint32 444 +---x path-discovery {coam:path-discovery}? 445 +---w input 446 | +---w destination-tp 447 | | +---w tp-location-type identityref 448 | | +---w tp-address 449 | | +---w mac-address 450 | | | +---w mac-address yang:mac-address 451 | | +---w ipv4-address 452 | | | +---w ipv4-address inet:ipv4-address 453 | | +---w ipv6-address 454 | | | +---w ipv6-address inet:ipv6-address 455 | | +---w tp-attribute 456 | | | +---w tp-attribute-type? address-attribute-type 457 | | | +---w (tp-attribute-value)? 458 | | | +--:(ip-prefix) 459 | | | | +---w ip-prefix? inet:ip-prefix 460 | | | +--:(bgp) 461 | | | | +---w bgp? inet:ip-prefix 462 | | | +--:(tunnel) 463 | | | | +---w tunnel-interface? uint32 464 | | | +--:(pw) 465 | | | | +---w remote-pe-address? inet:ip-address 466 | | | | +---w pw-id? uint32 467 | | | +--:(vpls) 468 | | | | +---w route-distinguisher? rt:route-distinguisher 469 | | | | +---w sender-ve-id? uint16 470 | | | | +---w receiver-ve-id? uint16 471 | | | +--:(mpls-mldp) 472 | | | +---w (root-address)? 473 | | | +--:(ip-address) 474 | | | | +---w source-address? inet:ip-address 475 | | | | +---w group-ip-address? inet:ip-address 476 | | | +--:(vpn) 477 | | | | +---w as-number? inet:as-number 478 | | | +--:(global-id) 479 | | | +---w lsp-id? string 480 | | +---w system-info 481 | | +---w system-id? rt:router-id 482 | +---w source-interface if:interface-ref 483 | +---w outbound-interface if:interface-ref 484 | +---w vrf? coam:routing-instance-ref 485 | +---w max-ttl? uint8 486 +--ro output 487 +--ro response-list* [response-index] 488 | +--ro response-index uint32 489 | +--ro status-code identityref 490 | +--ro status-sub-code identityref 491 +--ro src-test-point 492 | +--ro ni? routing-instance-ref 493 | +--ro tp-location-type identityref 494 | +--ro tp-address 495 | +--ro mac-address 496 | | +--ro mac-address yang:mac-address 497 | +--ro ipv4-address 498 | | +--ro ipv4-address inet:ipv4-address 499 | +--ro ipv6-address 500 | | +--ro ipv6-address inet:ipv6-address 501 | +--ro tp-attribute 502 | | +--ro tp-attribute-type? address-attribute-type 503 | | +--ro (tp-attribute-value)? 504 | | +--:(ip-prefix) 505 | | | +--ro ip-prefix? inet:ip-prefix 506 | | +--:(bgp) 507 | | | +--ro bgp? inet:ip-prefix 508 | | +--:(tunnel) 509 | | | +--ro tunnel-interface? uint32 510 | | +--:(pw) 511 | | | +--ro remote-pe-address? inet:ip-address 512 | | | +--ro pw-id? uint32 513 | | +--:(vpls) 514 | | | +--ro route-distinguisher? rt:route-distinguisher 515 | | | +--ro sender-ve-id? uint16 516 | | | +--ro receiver-ve-id? uint16 517 | | +--:(mpls-mldp) 518 | | +--ro (root-address)? 519 | | +--:(ip-address) 520 | | | +--ro source-address? inet:ip-address 521 | | | +--ro group-ip-address? inet:ip-address 522 | | +--:(vpn) 523 | | | +--ro as-number? inet:as-number 524 | | +--:(global-id) 525 | | +--ro lsp-id? string 526 | +--ro system-info 527 | +--ro system-id? rt:router-id 528 +--ro dest-test-point 529 | +--ro ni? routing-instance-ref 530 | +--ro tp-location-type identityref 531 | +--ro tp-address 532 | +--ro mac-address 533 | | +--ro mac-address yang:mac-address 534 | +--ro ipv4-address 535 | | +--ro ipv4-address inet:ipv4-address 536 | +--ro ipv6-address 537 | | +--ro ipv6-address inet:ipv6-address 538 | +--ro tp-attribute 539 | | +--ro tp-attribute-type? address-attribute-type 540 | | +--ro (tp-attribute-value)? 541 | | +--:(ip-prefix) 542 | | | +--ro ip-prefix? inet:ip-prefix 543 | | +--:(bgp) 544 | | | +--ro bgp? inet:ip-prefix 545 | | +--:(tunnel) 546 | | | +--ro tunnel-interface? uint32 547 | | +--:(pw) 548 | | | +--ro remote-pe-address? inet:ip-address 549 | | | +--ro pw-id? uint32 550 | | +--:(vpls) 551 | | | +--ro route-distinguisher? rt:route-distinguisher 552 | | | +--ro sender-ve-id? uint16 553 | | | +--ro receiver-ve-id? uint16 554 | | +--:(mpls-mldp) 555 | | +--ro (root-address)? 556 | | +--:(ip-address) 557 | | | +--ro source-address? inet:ip-address 558 | | | +--ro group-ip-address? inet:ip-address 559 | | +--:(vpn) 560 | | | +--ro as-number? inet:as-number 561 | | +--:(global-id) 562 | | +--ro lsp-id? string 563 | +--ro system-info 564 | +--ro system-id? rt:router-id 565 +--ro sequence-number? uint64 566 +--ro hop-cnt? uint8 567 +--ro session-packet-statistics 568 | +--ro rx-packet-count? uint32 569 | +--ro tx-packet-count? uint32 570 | +--ro rx-bad-packet? uint32 571 | +--ro tx-packet-failed? uint32 572 +--ro session-error-statistics 573 | +--ro packet-drops-count? uint32 574 | +--ro packet-reorder-count? uint32 575 | +--ro packets-out-of-seq-count? uint32 576 | +--ro packets-dup-count? uint32 577 +--ro session-delay-statistics 578 | +--ro time-resolution-value? identityref 579 | +--ro min-delay-value? uint32 580 | +--ro max-delay-value? uint32 581 | +--ro average-delay-value? uint32 582 +--ro session-jitter-statistics 583 | +--ro time-resolution-value? identityref 584 | +--ro min-jitter-value? uint32 585 | +--ro max-jitter-value? uint32 586 | +--ro average-jitter-value? uint32 587 +--ro path-verification 588 | +--ro flow-info? string 589 | +--ro session-path-verification-statistics 590 | +--ro verified-count? uint32 591 | +--ro failed-count? uint32 592 +--ro path-trace-info 593 +--ro path-trace-info-list* [index] 594 +--ro index uint32 595 +--ro ni? routing-instance-ref 596 +--ro tp-location-type identityref 597 +--ro tp-address 598 | +--ro mac-address 599 | | +--ro mac-address yang:mac-address 600 | +--ro ipv4-address 601 | | +--ro ipv4-address inet:ipv4-address 602 | +--ro ipv6-address 603 | | +--ro ipv6-address inet:ipv6-address 604 | +--ro tp-attribute 605 | | +--ro tp-attribute-type? address-attribute-type 606 | | +--ro (tp-attribute-value)? 607 | | +--:(ip-prefix) 608 | | | +--ro ip-prefix? inet:ip-prefix 609 | | +--:(bgp) 610 | | | +--ro bgp? inet:ip-prefix 611 | | +--:(tunnel) 612 | | | +--ro tunnel-interface? uint32 613 | | +--:(pw) 614 | | | +--ro remote-pe-address? inet:ip-address 615 | | | +--ro pw-id? uint32 616 | | +--:(vpls) 617 | | | +--ro route-distinguisher? rt:route-distinguisher 618 | | | +--ro sender-ve-id? uint16 619 | | | +--ro receiver-ve-id? uint16 620 | | +--:(mpls-mldp) 621 | | +--ro (root-address)? 622 | | +--:(ip-address) 623 | | | +--ro source-address? inet:ip-address 624 | | | +--ro group-ip-address? inet:ip-address 625 | | +--:(vpn) 626 | | | +--ro as-number? inet:as-number 627 | | +--:(global-id) 628 | | +--ro lsp-id? string 629 | +--ro system-info 630 | +--ro system-id? rt:router-id 631 +--ro timestamp-type? uint32 632 +--ro timestamp-sec? uint32 633 +--ro timestamp-nanosec? uint32 634 +--ro ingress-intf-name? if:interface-ref 635 +--ro egress-intf-name? if:interface-ref 636 +--ro queue-depth? uint32 637 +--ro transit-delay? uint32 638 +--ro app-meta-data? uint64 640 data hierarchy of OAM Retrieval Methods 642 4. OAM Retrieval Methods YANG Module 644 file "ietf-connectionless-oam-methods@2017-09-06.yang" 646 module ietf-connectionless-oam-methods { 647 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; 648 prefix coam-methods; 649 import ietf-interfaces { 650 prefix if; 651 } 652 import ietf-connectionless-oam { 653 prefix coam; 654 } 655 organization 656 "IETF LIME Working Group"; 657 contact 658 "Deepak Kumar dekumar@cisco.com 659 Qin Wu bill.wu@huawei.com 660 S Raghavan srihari@cisco.com 661 Zitao Wang wangzitao@huawei.com 662 R Rahman rrahman@cisco.com"; 663 description 664 "This YANG module defines the RPC operations for 665 connectionless OAM to be used within IETF 666 in a protocol Independent manner. 667 It is assumed that each protocol maps 668 corresponding abstracts to its native format. 669 Each protocol may extend the YANG model defined 670 here to include protocol specific extensions"; 672 revision 2017-09-06{ 673 description 674 "08 version"; 675 reference "draft-ietf-lime-yang-connectionless-oam-methods"; 676 } 678 identity status-code{ 679 description 680 "Base status code"; 681 } 683 identity invalid-cc{ 684 base status-code; 685 description 686 "Indicates that the Continuity check message is invalid"; 687 } 689 identity invalid-pd { 690 base status-code; 691 description 692 "Indicates that the path discovery message is invalid"; 693 } 695 identity status-sub-code { 696 description 697 "Base status sub code"; 698 } 700 grouping rpc-input-parameters { 701 container destination-tp { 702 uses coam:tp-address; 703 description 704 "Destination test point."; 705 } 706 leaf source-interface { 707 type if:interface-ref; 708 mandatory true; 709 description 710 "Source interface."; 711 } 712 leaf outbound-interface { 713 type if:interface-ref; 714 mandatory true; 715 description 716 "Outbound interface."; 717 } 718 leaf vrf { 719 type coam:routing-instance-ref; 720 description 721 "VRF instance."; 722 } 723 description 724 "Grouping for RPC input parameters"; 725 } 726 rpc continuity-check { 727 if-feature "coam:continuity-check"; 728 description 729 "Continuity-check RPC operation as per RFC7276."; 730 input { 731 uses rpc-input-parameters; 732 uses coam:session-type { 733 description "If session-type is specified, then session-type 734 must be set to on-demand"; 735 } 736 leaf count { 737 type uint32; 738 default "5"; 739 description 740 "Specifies the number of 741 packets that will be sent. By 742 default, the packet number is 743 set to 5."; 744 } 745 leaf ttl { 746 type uint8; 747 default "255"; 748 description 749 "Time to live (TTL) used to limit lifetime 750 of data packet transmitted in the network 751 and prevent looping. The TTL value is decremented 752 for every hop which the packet traverses. If the 753 TTL is zero, the data packet will be discarded."; 754 } 755 leaf packet-size { 756 type uint32 { 757 range "64..10000"; 758 } 759 default "64"; 760 description 761 "Packet size of continuity-check message, in octets. 762 By default, the packet size is set to 64 octets."; 763 } 765 } 766 output { 767 container error-code { 768 leaf status-code { 769 type identityref{ 770 base status-code; 771 } 772 mandatory true; 773 description 774 "Error code for continuity-check message. For example, Error code in 775 ICMPv6 message includes 776 1-Destination Unreachable 777 2- Packet Too Big 778 3- Time Exceeded 779 4- Parameter Problem [RFC4443]."; 780 } 781 leaf status-sub-code { 782 type identityref{ 783 base status-sub-code; 784 } 785 mandatory true; 786 description 787 "Sub code for continuity-check message. For example Sub code in 788 ICMPv6 Parameter Problem Message includes: 789 1-Erroneous header field encountered 790 2-Unrecognized Next Header type encountered 791 3-Unrecognized IPv6 option encountered."; 792 } 793 description 794 "Error code and Sub Code for continuity-check message."; 795 } 796 uses coam:continuity-check-data; 797 } 798 } 800 rpc path-discovery { 801 if-feature "coam:path-discovery"; 802 description 803 "Path discovery RPC operation as per RFC7276."; 804 input { 805 uses rpc-input-parameters; 806 uses coam:session-type { 807 description "If session-type is specified, then session-type 808 must be set to on-demand"; 809 } 810 leaf max-ttl { 811 type uint8; 812 default "255"; 813 description 814 "Maximum TTL indicates the maixmum number of hops that 815 a packet is permitted to travel before being discarded 816 by a router. By default, the maximimum TTL is set to 255."; 817 } 818 } 819 output { 820 list response-list { 821 key "response-index"; 822 description 823 "Path discovery response list."; 824 leaf response-index { 825 type uint32; 826 mandatory true; 827 description 828 "Response index."; 829 } 830 leaf status-code { 831 type identityref{ 832 base status-code; 833 } 834 mandatory true; 835 description 836 "Error code for Path Discovery message. 837 For example, Error code in ICMPv6 message includes 838 1-Destination Unreachable 839 2- Packet Too Big 840 3- Time Exceeded 841 4- Parameter Problem [RFC4443]. "; 842 } 843 leaf status-sub-code { 844 type identityref{ 845 base status-sub-code; 846 } 847 mandatory true; 848 description 849 "Sub code for Path Discovery message. For example Sub code in 850 ICMPv6 Parameter Problem Message includes: 851 1-Erroneous header field encountered 852 2-Unrecognized Next Header type encountered 853 3-Unrecognized IPv6 option encountered "; 854 } 855 description 856 "List of Error code and Sub Code for Path Discovery."; 857 } 858 uses coam:path-discovery-data; 859 } 860 } 861 863 5. Security Considerations 865 The YANG module defined in this document is designed to be accessed 866 via network management protocols such as NETCONF [RFC6241] or 867 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 868 layer, and the mandatory-to-implement secure transport is Secure 869 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 870 mandatory-to-implement secure transport is TLS [RFC5246]. 872 The NETCONF access control model [RFC6536] provides the means to 873 restrict access for particular NETCONF or RESTCONF users to a 874 preconfigured subset of all available NETCONF or RESTCONF protocol 875 operations and content. 877 Some of the RPC operations in this YANG module may be considered 878 sensitive or vulnerable in some network environments. It is thus 879 important to control access to these operations. These are the 880 operations and their sensitivity/vulnerability: 882 o continuity-check: Generates continuity check. 884 o path-discovery: Generates path discovery. 886 which may lead to Denial-of-Service attack on both the local device 887 and the network or unauthorized source access to some sensitive 888 information. 890 6. IANA Considerations 892 This document registers a URI in the IETF XML registry [RFC3688]. 893 Following the format in [RFC3688], the following registration is 894 requested to be made: 896 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods 898 Registrant Contact: The IESG. 900 XML: N/A, the requested URI is an XML namespace. 902 This document registers a YANG module in the YANG Module Names 903 registry [RFC6020]. 905 name: ietf-connectionless-oam-methods 907 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- 908 methods 909 prefix: coam-methods 911 reference: RFC XXXX 913 7. References 915 7.1. Normative References 917 [I-D.ietf-lime-yang-connectionless-oam] 918 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 919 "Generic YANG Data Model for Connectionless Operations, 920 Administration, and Maintenance(OAM) protocols", draft- 921 ietf-lime-yang-connectionless-oam-09 (work in progress), 922 August 2017. 924 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 925 DOI 10.17487/RFC3688, January 2004, 926 . 928 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 929 (TLS) Protocol Version 1.2", RFC 5246, 930 DOI 10.17487/RFC5246, August 2008, 931 . 933 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 934 the Network Configuration Protocol (NETCONF)", RFC 6020, 935 DOI 10.17487/RFC6020, October 2010, 936 . 938 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 939 and A. Bierman, Ed., "Network Configuration Protocol 940 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 941 . 943 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 944 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 945 . 947 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 948 Protocol (NETCONF) Access Control Model", RFC 6536, 949 DOI 10.17487/RFC6536, March 2012, 950 . 952 [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, 953 "Specification of the IP Flow Information Export (IPFIX) 954 Protocol for the Exchange of Flow Information", STD 77, 955 RFC 7011, DOI 10.17487/RFC7011, September 2013, 956 . 958 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 959 September 1981. 961 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 962 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 963 . 965 7.2. Informative References 967 [I-D.ietf-netconf-yang-push] 968 Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- 969 Nygaard, E., Bierman, A., and B. Lengyel, "Subscribing to 970 YANG datastore push updates", draft-ietf-netconf-yang- 971 push-08 (work in progress), August 2017. 973 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 974 Control Message Protocol (ICMPv6) for the Internet 975 Protocol Version 6 (IPv6) Specification", STD 89, 976 RFC 4443, DOI 10.17487/RFC4443, March 2006, 977 . 979 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 980 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 981 . 983 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 984 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 985 January 2011, . 987 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 988 Weingarten, "An Overview of Operations, Administration, 989 and Maintenance (OAM) Tools", RFC 7276, 990 DOI 10.17487/RFC7276, June 2014, 991 . 993 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 994 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 995 Switched (MPLS) Data-Plane Failures", RFC 8029, 996 DOI 10.17487/RFC8029, March 2017, 997 . 999 Appendix A. Appdendix A.1 Extending Connectionless OAM Method Module 1000 Example 1002 The following is an example of extensions possible to "ietf- 1003 connectionless-oam-methods" YANG model defined in this document. 1005 The snippet below depicts an example of augmenting the "ietf- 1006 connectionless-oam-methods" YANG model with ICMP ping attributes: 1008 augment "/coam-methods:continutiy-check" 1009 +"/coam-methods:output"{ 1010 container session-rtt-statistics{ 1011 leaf min-rtt{ 1012 type uint32; 1013 description 1014 "This minimum ping round-trip-time(RTT) received."; 1015 } 1016 leaf max-rtt{ 1017 type uint32; 1018 description 1019 "This maximum ping round-trip-time(RTT) received."; 1020 } 1021 leaf avg-rtt{ 1022 type uint32; 1023 description 1024 "The current average ping round-trip-time(RTT)"; 1025 } 1026 description 1027 "This container presents the ping round-trip-time statistics."; 1028 } 1029 } 1031 Appendix B. Appendix A.2 Example of new retrieval procedures Model 1033 As discussed in introduction section of this document, the new 1034 retrieval procedures can be defined for retrieval of the same data 1035 defined by base YANG Data model for connectionless OAM protocols. 1036 This appendix demonstrates how the base connectionless OAM data model 1037 can be extended to support persistent data retrieval besides on 1038 demand retrieval procedures defined in section 3,i.e.,first retrieve 1039 persistent-id based on destination test point location information 1040 and then retrieve export details based on persistent-id. Internet 1041 Protocol Flow Information Export (IPFIX) [RFC7011] or YANG-push 1042 [I-D.ietf-netconf-yang-push]. are currently outlined here as data 1043 export options and more can be added in future. 1045 The YANG module "example-cl-oam-persistent-methods" shown below is 1046 intended as an illustration rather than a real definition of a RPC 1047 operation model for persistent data retrieval. For the sake of 1048 brevity, this module does not obey all the guidelines specified in 1049 [RFC6087]. 1051 module example-cl-oam-persistent-methods { 1052 namespace "http://example.com/cl-oam-persistent-methods"; 1053 prefix pcoam-methods; 1054 import ietf-interfaces { 1055 prefix if; 1056 } 1057 import ietf-connectionless-oam { 1058 prefix coam; 1059 } 1060 import ietf-yang-types { 1061 prefix yang; 1062 } 1063 identity export-method { 1064 description 1065 "Base identity to represent a conceptual export-method."; 1066 } 1067 identity ipfix-export { 1068 base export-method; 1069 description 1070 "IPFIX based export. Configuration provided separately."; 1071 } 1072 identity yang-push-export { 1073 base export-method; 1074 description 1075 "Yang-push from draft-ietf-netconf-yang-push"; 1076 } 1077 typedef export-method { 1078 type identityref { 1079 base export-method; 1080 } 1081 description 1082 "Export method type."; 1083 } 1084 typedef change-type { 1085 type enumeration { 1086 enum "create" { 1087 description 1088 "Change due to a create."; 1089 } 1090 enum "delete" { 1091 description 1092 "Change due to a delete."; 1093 } 1094 enum "modify" { 1095 description 1096 "Change due to an update."; 1097 } 1098 } 1099 description 1100 "Different types of changes that may occur."; 1102 } 1104 rpc cc-get-persistent-id { 1105 if-feature "coam:continuity-check"; 1106 description 1107 "Obtains continuity-check persistent identification given mapping 1108 parameters as input."; 1109 input { 1110 container destination-tp { 1111 uses coam:tp-address; 1112 description 1113 "Destination test point."; 1114 } 1115 uses coam:session-type; 1116 leaf source-interface { 1117 type if:interface-ref; 1118 description 1119 "Source interface."; 1120 } 1121 leaf outbound-interface { 1122 type if:interface-ref; 1123 description 1124 "Outbound interface."; 1125 } 1126 leaf vrf { 1127 type coam:routing-instance-ref; 1128 description 1129 "VRF instance."; 1130 } 1131 } 1132 output { 1133 container error-code { 1134 leaf status-code { 1135 type identityref{ 1136 base status-code; 1137 } 1138 mandatory true; 1139 description 1140 "Error code."; 1141 } 1142 leaf status-sub-code { 1143 type identityref{ 1144 base status-sub-code; 1145 } 1146 mandatory true; 1147 description 1148 "Sub code for CC."; 1149 } 1150 description 1151 "Error code and Sub Code."; 1152 } 1154 leaf cc-persistent-id { 1155 type string; 1156 description 1157 "Id to act as a cookie."; 1158 } 1159 } 1160 } 1162 rpc cc-persistent-get-export-details { 1163 if-feature "coam:continuity-check"; 1164 description 1165 "Given the persistent id, gets the configuration 1166 options, details related to the configured data 1167 export."; 1168 input { 1169 leaf cc-persistent-id { 1170 type string; 1171 description 1172 "Persistent Id for use as a key in search."; 1173 } 1174 } 1175 output { 1176 container error-code { 1177 leaf status-code { 1178 type identityref{ 1179 base status-code; 1180 } 1181 mandatory true; 1182 description 1183 "Error code."; 1184 } 1185 leaf status-sub-code { 1186 type identityref{ 1187 base status-sub-code; 1188 } 1189 mandatory true; 1190 description 1191 "Sub code for CC."; 1192 } 1193 description 1194 "Error code and Sub Code."; 1195 } 1197 leaf data-export-method { 1198 type export-method; 1199 description 1200 "Type of export in use."; 1201 } 1203 choice cc-trigger { 1204 description 1205 "Necessary conditions for 1206 periodic or on-change trigger."; 1207 case periodic { 1208 description 1209 "Periodic reports."; 1210 leaf period { 1211 type yang:timeticks; 1212 description 1213 "Time interval between reports."; 1214 } 1215 leaf start-time { 1216 type yang:date-and-time; 1217 description 1218 "Timestamp from which reports were started."; 1219 } 1220 } 1221 case on-change { 1222 description 1223 "On-change trigger and not periodic."; 1224 leaf all-data-on-start { 1225 type boolean; 1226 description 1227 "Full update done on start or not."; 1228 } 1229 leaf-list excluded-change { 1230 type change-type; 1231 description 1232 "Changes that will not trigger an update."; 1233 } 1234 } 1235 } 1236 } 1237 } 1239 rpc pd-get-persistent-id { 1240 if-feature "coam:path-discovery"; 1241 description 1242 "Obtains persistent path discovery identification."; 1244 input { 1245 container destination-tp { 1246 uses coam:tp-address; 1247 description 1248 "Destination test point."; 1249 } 1250 uses coam:session-type; 1251 leaf source-interface { 1252 type if:interface-ref; 1253 description 1254 "Source interface."; 1255 } 1256 leaf outbound-interface { 1257 type if:interface-ref; 1258 description 1259 "Outbound interface."; 1260 } 1261 leaf vrf { 1262 type coam:routing-instance-ref; 1263 description 1264 "VRF"; 1265 } 1266 } 1267 output { 1268 list response-list { 1269 key "response-index"; 1270 description 1271 "Path discovery response list."; 1272 leaf response-index { 1273 type uint32; 1274 mandatory true; 1275 description 1276 "Response index."; 1277 } 1278 leaf status-code { 1279 type identityref { 1280 base status-code; 1281 } 1282 mandatory true; 1283 description 1284 "Error code for Persistent Path Discovery Information. "; 1285 } 1286 leaf status-sub-code { 1287 type identityref{ 1288 base status-sub-code; 1289 } 1290 mandatory true; 1291 description 1292 "Sub code for Persistent Path Discovery Information. "; 1293 } 1294 leaf pd-persistent-id { 1295 type string; 1296 description 1297 "Id to act as a cookie."; 1298 } 1299 } 1300 } 1301 } 1303 rpc pd-persistent-get-export-details { 1304 if-feature "coam:path-discovery"; 1305 description 1306 "Given the persistent id, gets the configuration 1307 options, details related to the configured data 1308 export."; 1309 input { 1310 leaf cc-persistent-id { 1311 type string; 1312 description 1313 "Persistent Id for use as a key in search."; 1314 } 1315 } 1317 output { 1318 list response-list { 1319 key "response-index"; 1320 description 1321 "Path discovery response list."; 1322 leaf response-index { 1323 type uint32; 1324 mandatory true; 1325 description 1326 "Response index."; 1327 } 1328 leaf status-code { 1329 type identityref{ 1330 base status-code; 1331 } 1332 mandatory true; 1333 description 1334 "Error code for Persistent Path Discovery Creation. "; 1335 } 1336 leaf status-sub-code { 1337 type identityref{ 1338 base status-sub-code; 1339 } 1340 mandatory true; 1341 description 1342 "Sub code for Persistent Path Discovery Creation. "; 1343 } 1344 leaf data-export-method { 1345 type export-method; 1346 description 1347 "Type of export."; 1348 } 1349 choice pd-trigger { 1350 description 1351 "Necessary conditions 1352 for periodic or on-change 1353 trigger."; 1354 case periodic { 1355 description 1356 "Periodic reports."; 1357 leaf period { 1358 type yang:timeticks; 1359 description 1360 "Time interval between reports."; 1361 } 1362 leaf start-time { 1363 type yang:date-and-time; 1364 description 1365 "Timestamp from which reports are started."; 1366 } 1367 } 1368 case on-change { 1369 description 1370 "On-change trigger and not periodic."; 1371 leaf all-data-on-start { 1372 type boolean; 1373 description 1374 "Full update done on start or not."; 1375 } 1376 leaf-list excluded-change { 1377 type change-type; 1378 description 1379 "Changes that will not trigger an update."; 1380 } 1381 } 1382 } 1383 } 1384 } 1385 } 1386 } 1388 Authors' Addresses 1390 Deepak Kumar 1391 CISCO Systems 1392 510 McCarthy Blvd 1393 Milpitas, CA 95035 1394 USA 1396 Email: dekumar@cisco.com 1398 Michael Wang 1399 Huawei Technologies,Co.,Ltd 1400 101 Software Avenue, Yuhua District 1401 Nanjing 210012 1402 China 1404 Email: wangzitao@huawei.com 1406 Qin Wu 1407 Huawei 1408 101 Software Avenue, Yuhua District 1409 Nanjing, Jiangsu 210012 1410 China 1412 Email: bill.wu@huawei.com 1414 Reshad Rahman 1415 CISCO Systems 1416 2000 Innovation Drive 1417 Kanata, Ontario K2K 3E8 1418 Canada 1420 Email: rrahman@cisco.com 1422 Srihari Raghavan 1423 CISCO Systems 1424 Tril Infopark Sez, Ramanujan IT City 1425 Neville Block, 2nd floor, Old Mahabalipuram Road 1426 Chennai, Tamil Nadu 600113 1427 India 1429 Email: srihari@cisco.com