idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-methods-08.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 20, 2017) is 2409 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-10 ** 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-09 -- 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 24, 2018 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 September 20, 2017 12 Retrieval Methods YANG Data Model for Connectionless Operations, 13 Administration, and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-methods-08 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 24, 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 } 856 uses coam:path-discovery-data; 857 } 858 } 859 } 860 862 5. Security Considerations 864 The YANG module defined in this document is designed to be accessed 865 via network management protocols such as NETCONF [RFC6241] or 866 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 867 layer, and the mandatory-to-implement secure transport is Secure 868 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 869 mandatory-to-implement secure transport is TLS [RFC5246]. 871 The NETCONF access control model [RFC6536] provides the means to 872 restrict access for particular NETCONF or RESTCONF users to a 873 preconfigured subset of all available NETCONF or RESTCONF protocol 874 operations and content. 876 Some of the RPC operations in this YANG module may be considered 877 sensitive or vulnerable in some network environments. It is thus 878 important to control access to these operations. These are the 879 operations and their sensitivity/vulnerability: 881 o continuity-check: Generates continuity check. 883 o path-discovery: Generates path discovery. 885 which may lead to Denial-of-Service attack on both the local device 886 and the network or unauthorized source access to some sensitive 887 information. 889 6. IANA Considerations 891 This document registers a URI in the IETF XML registry [RFC3688]. 892 Following the format in [RFC3688], the following registration is 893 requested to be made: 895 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods 897 Registrant Contact: The IESG. 899 XML: N/A, the requested URI is an XML namespace. 901 This document registers a YANG module in the YANG Module Names 902 registry [RFC6020]. 904 name: ietf-connectionless-oam-methods 906 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- 907 methods 908 prefix: coam-methods 910 reference: RFC XXXX 912 7. References 914 7.1. Normative References 916 [I-D.ietf-lime-yang-connectionless-oam] 917 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 918 "Generic YANG Data Model for Connectionless Operations, 919 Administration, and Maintenance(OAM) protocols", draft- 920 ietf-lime-yang-connectionless-oam-10 (work in progress), 921 September 2017. 923 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 924 DOI 10.17487/RFC3688, January 2004, 925 . 927 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 928 (TLS) Protocol Version 1.2", RFC 5246, 929 DOI 10.17487/RFC5246, August 2008, 930 . 932 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 933 the Network Configuration Protocol (NETCONF)", RFC 6020, 934 DOI 10.17487/RFC6020, October 2010, 935 . 937 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 938 and A. Bierman, Ed., "Network Configuration Protocol 939 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 940 . 942 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 943 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 944 . 946 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 947 Protocol (NETCONF) Access Control Model", RFC 6536, 948 DOI 10.17487/RFC6536, March 2012, 949 . 951 [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, 952 "Specification of the IP Flow Information Export (IPFIX) 953 Protocol for the Exchange of Flow Information", STD 77, 954 RFC 7011, DOI 10.17487/RFC7011, September 2013, 955 . 957 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 958 September 1981. 960 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 961 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 962 . 964 7.2. Informative References 966 [I-D.ietf-netconf-yang-push] 967 Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- 968 Nygaard, E., Bierman, A., and B. Lengyel, "Subscribing to 969 YANG datastore push updates", draft-ietf-netconf-yang- 970 push-09 (work in progress), September 2017. 972 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 973 Control Message Protocol (ICMPv6) for the Internet 974 Protocol Version 6 (IPv6) Specification", STD 89, 975 RFC 4443, DOI 10.17487/RFC4443, March 2006, 976 . 978 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 979 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 980 . 982 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 983 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 984 January 2011, . 986 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 987 Weingarten, "An Overview of Operations, Administration, 988 and Maintenance (OAM) Tools", RFC 7276, 989 DOI 10.17487/RFC7276, June 2014, 990 . 992 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 993 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 994 Switched (MPLS) Data-Plane Failures", RFC 8029, 995 DOI 10.17487/RFC8029, March 2017, 996 . 998 Appendix A. Appdendix A.1 Extending Connectionless OAM Method Module 999 Example 1001 The following is an example of extensions possible to "ietf- 1002 connectionless-oam-methods" YANG model defined in this document. 1004 The snippet below depicts an example of augmenting the "ietf- 1005 connectionless-oam-methods" YANG model with ICMP ping attributes: 1007 augment "/coam-methods:continutiy-check" 1008 +"/coam-methods:output"{ 1009 container session-rtt-statistics{ 1010 leaf min-rtt{ 1011 type uint32; 1012 description 1013 "This minimum ping round-trip-time(RTT) received."; 1014 } 1015 leaf max-rtt{ 1016 type uint32; 1017 description 1018 "This maximum ping round-trip-time(RTT) received."; 1019 } 1020 leaf avg-rtt{ 1021 type uint32; 1022 description 1023 "The current average ping round-trip-time(RTT)"; 1024 } 1025 description 1026 "This container presents the ping round-trip-time statistics."; 1027 } 1028 } 1030 Appendix B. Appendix A.2 Example of new retrieval procedures Model 1032 As discussed in introduction section of this document, the new 1033 retrieval procedures can be defined for retrieval of the same data 1034 defined by base YANG Data model for connectionless OAM protocols. 1035 This appendix demonstrates how the base connectionless OAM data model 1036 can be extended to support persistent data retrieval besides on 1037 demand retrieval procedures defined in section 3,i.e.,first retrieve 1038 persistent-id based on destination test point location information 1039 and then retrieve export details based on persistent-id. Internet 1040 Protocol Flow Information Export (IPFIX) [RFC7011] or YANG-push 1041 [I-D.ietf-netconf-yang-push]. are currently outlined here as data 1042 export options and more can be added in future. 1044 The YANG module "example-cl-oam-persistent-methods" shown below is 1045 intended as an illustration rather than a real definition of a RPC 1046 operation model for persistent data retrieval. For the sake of 1047 brevity, this module does not obey all the guidelines specified in 1048 [RFC6087]. 1050 module example-cl-oam-persistent-methods { 1051 namespace "http://example.com/cl-oam-persistent-methods"; 1052 prefix pcoam-methods; 1053 import ietf-interfaces { 1054 prefix if; 1055 } 1056 import ietf-connectionless-oam { 1057 prefix coam; 1058 } 1059 import ietf-yang-types { 1060 prefix yang; 1061 } 1062 identity export-method { 1063 description 1064 "Base identity to represent a conceptual export-method."; 1065 } 1066 identity ipfix-export { 1067 base export-method; 1068 description 1069 "IPFIX based export. Configuration provided separately."; 1070 } 1071 identity yang-push-export { 1072 base export-method; 1073 description 1074 "Yang-push from draft-ietf-netconf-yang-push"; 1075 } 1076 identity status-code{ 1077 description 1078 "Base status code"; 1079 } 1081 identity invalid-cc{ 1082 base status-code; 1083 description 1084 "Indicates that the Continuity check message is invalid"; 1085 } 1087 identity invalid-pd { 1088 base status-code; 1089 description 1090 "Indicates that the path discovery message is invalid"; 1091 } 1093 identity status-sub-code { 1094 description 1095 "Base status sub code"; 1096 } 1097 typedef export-method { 1098 type identityref { 1099 base export-method; 1101 } 1102 description 1103 "Export method type."; 1104 } 1105 typedef change-type { 1106 type enumeration { 1107 enum "create" { 1108 description 1109 "Change due to a create."; 1110 } 1111 enum "delete" { 1112 description 1113 "Change due to a delete."; 1114 } 1115 enum "modify" { 1116 description 1117 "Change due to an update."; 1118 } 1119 } 1120 description 1121 "Different types of changes that may occur."; 1122 } 1124 rpc cc-get-persistent-id { 1125 if-feature "coam:continuity-check"; 1126 description 1127 "Obtains continuity-check persistent identification given mapping 1128 parameters as input."; 1129 input { 1130 container destination-tp { 1131 uses coam:tp-address; 1132 description 1133 "Destination test point."; 1134 } 1135 uses coam:session-type; 1136 leaf source-interface { 1137 type if:interface-ref; 1138 description 1139 "Source interface."; 1140 } 1141 leaf outbound-interface { 1142 type if:interface-ref; 1143 description 1144 "Outbound interface."; 1145 } 1146 leaf vrf { 1147 type coam:routing-instance-ref; 1148 description 1149 "VRF instance."; 1150 } 1151 } 1152 output { 1153 container error-code { 1154 leaf status-code { 1155 type identityref{ 1156 base status-code; 1157 } 1158 mandatory true; 1159 description 1160 "Error code."; 1161 } 1162 leaf status-sub-code { 1163 type identityref{ 1164 base status-sub-code; 1165 } 1166 mandatory true; 1167 description 1168 "Sub code for CC."; 1169 } 1170 description 1171 "Error code and Sub Code."; 1172 } 1174 leaf cc-persistent-id { 1175 type string; 1176 description 1177 "Id to act as a cookie."; 1178 } 1179 } 1180 } 1182 rpc cc-persistent-get-export-details { 1183 if-feature "coam:continuity-check"; 1184 description 1185 "Given the persistent id, gets the configuration 1186 options, details related to the configured data 1187 export."; 1188 input { 1189 leaf cc-persistent-id { 1190 type string; 1191 description 1192 "Persistent Id for use as a key in search."; 1193 } 1194 } 1195 output { 1196 container error-code { 1197 leaf status-code { 1198 type identityref{ 1199 base status-code; 1200 } 1201 mandatory true; 1202 description 1203 "Error code."; 1204 } 1205 leaf status-sub-code { 1206 type identityref{ 1207 base status-sub-code; 1208 } 1209 mandatory true; 1210 description 1211 "Sub code for CC."; 1212 } 1213 description 1214 "Error code and Sub Code."; 1215 } 1217 leaf data-export-method { 1218 type export-method; 1219 description 1220 "Type of export in use."; 1221 } 1223 choice cc-trigger { 1224 description 1225 "Necessary conditions for 1226 periodic or on-change trigger."; 1227 case periodic { 1228 description 1229 "Periodic reports."; 1230 leaf period { 1231 type yang:timeticks; 1232 description 1233 "Time interval between reports."; 1234 } 1235 leaf start-time { 1236 type yang:date-and-time; 1237 description 1238 "Timestamp from which reports were started."; 1239 } 1240 } 1241 case on-change { 1242 description 1243 "On-change trigger and not periodic."; 1244 leaf all-data-on-start { 1245 type boolean; 1246 description 1247 "Full update done on start or not."; 1248 } 1249 leaf-list excluded-change { 1250 type change-type; 1251 description 1252 "Changes that will not trigger an update."; 1253 } 1254 } 1255 } 1256 } 1257 } 1259 rpc pd-get-persistent-id { 1260 if-feature "coam:path-discovery"; 1261 description 1262 "Obtains persistent path discovery identification."; 1264 input { 1265 container destination-tp { 1266 uses coam:tp-address; 1267 description 1268 "Destination test point."; 1269 } 1270 uses coam:session-type; 1271 leaf source-interface { 1272 type if:interface-ref; 1273 description 1274 "Source interface."; 1275 } 1276 leaf outbound-interface { 1277 type if:interface-ref; 1278 description 1279 "Outbound interface."; 1280 } 1281 leaf vrf { 1282 type coam:routing-instance-ref; 1283 description 1284 "VRF"; 1285 } 1286 } 1287 output { 1288 list response-list { 1289 key "response-index"; 1290 description 1291 "Path discovery response list."; 1292 leaf response-index { 1293 type uint32; 1294 mandatory true; 1295 description 1296 "Response index."; 1297 } 1298 leaf status-code { 1299 type identityref { 1300 base status-code; 1301 } 1302 mandatory true; 1303 description 1304 "Error code for Persistent Path Discovery Information. "; 1305 } 1306 leaf status-sub-code { 1307 type identityref{ 1308 base status-sub-code; 1309 } 1310 mandatory true; 1311 description 1312 "Sub code for Persistent Path Discovery Information. "; 1313 } 1314 leaf pd-persistent-id { 1315 type string; 1316 description 1317 "Id to act as a cookie."; 1318 } 1319 } 1320 } 1321 } 1323 rpc pd-persistent-get-export-details { 1324 if-feature "coam:path-discovery"; 1325 description 1326 "Given the persistent id, gets the configuration 1327 options, details related to the configured data 1328 export."; 1329 input { 1330 leaf cc-persistent-id { 1331 type string; 1332 description 1333 "Persistent Id for use as a key in search."; 1334 } 1335 } 1337 output { 1338 list response-list { 1339 key "response-index"; 1340 description 1341 "Path discovery response list."; 1342 leaf response-index { 1343 type uint32; 1344 mandatory true; 1345 description 1346 "Response index."; 1347 } 1348 leaf status-code { 1349 type identityref{ 1350 base status-code; 1351 } 1352 mandatory true; 1353 description 1354 "Error code for Persistent Path Discovery Creation. "; 1355 } 1356 leaf status-sub-code { 1357 type identityref{ 1358 base status-sub-code; 1359 } 1360 mandatory true; 1361 description 1362 "Sub code for Persistent Path Discovery Creation. "; 1363 } 1364 leaf data-export-method { 1365 type export-method; 1366 description 1367 "Type of export."; 1368 } 1369 choice pd-trigger { 1370 description 1371 "Necessary conditions 1372 for periodic or on-change 1373 trigger."; 1374 case periodic { 1375 description 1376 "Periodic reports."; 1377 leaf period { 1378 type yang:timeticks; 1379 description 1380 "Time interval between reports."; 1381 } 1382 leaf start-time { 1383 type yang:date-and-time; 1384 description 1385 "Timestamp from which reports are started."; 1386 } 1387 } 1388 case on-change { 1389 description 1390 "On-change trigger and not periodic."; 1391 leaf all-data-on-start { 1392 type boolean; 1393 description 1394 "Full update done on start or not."; 1395 } 1396 leaf-list excluded-change { 1397 type change-type; 1398 description 1399 "Changes that will not trigger an update."; 1400 } 1401 } 1402 } 1403 } 1404 } 1405 } 1406 } 1408 Authors' Addresses 1410 Deepak Kumar 1411 CISCO Systems 1412 510 McCarthy Blvd 1413 Milpitas, CA 95035 1414 USA 1416 Email: dekumar@cisco.com 1418 Michael Wang 1419 Huawei Technologies,Co.,Ltd 1420 101 Software Avenue, Yuhua District 1421 Nanjing 210012 1422 China 1424 Email: wangzitao@huawei.com 1426 Qin Wu 1427 Huawei 1428 101 Software Avenue, Yuhua District 1429 Nanjing, Jiangsu 210012 1430 China 1432 Email: bill.wu@huawei.com 1433 Reshad Rahman 1434 CISCO Systems 1435 2000 Innovation Drive 1436 Kanata, Ontario K2K 3E8 1437 Canada 1439 Email: rrahman@cisco.com 1441 Srihari Raghavan 1442 CISCO Systems 1443 Tril Infopark Sez, Ramanujan IT City 1444 Neville Block, 2nd floor, Old Mahabalipuram Road 1445 Chennai, Tamil Nadu 600113 1446 India 1448 Email: srihari@cisco.com