idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-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 15 instances of too long lines in the document, the longest one being 55 characters in excess of 72. -- The document has examples using IPv4 documentation addresses according to RFC6890, but does not use any IPv6 documentation addresses. Maybe there should be IPv6 examples, too? Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (August 30, 2017) is 2430 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) == Unused Reference: 'RFC6991' is defined on line 1949, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1953, but no explicit reference was found in the text ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) == Outdated reference: A later version (-17) exists of draft-ietf-bfd-yang-06 == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-14 == Outdated reference: A later version (-07) exists of draft-ietf-lime-yang-connection-oriented-oam-model-00 == Outdated reference: A later version (-13) exists of draft-ietf-lime-yang-connectionless-oam-methods-05 == Outdated reference: A later version (-12) exists of draft-ietf-netmod-schema-mount-06 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-07 == Outdated reference: A later version (-10) exists of draft-zheng-mpls-lsp-ping-yang-cfg-05 Summary: 3 errors (**), 0 flaws (~~), 10 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 3, 2018 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 August 30, 2017 12 Generic YANG Data Model for Connectionless Operations, Administration, 13 and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-08 16 Abstract 18 This document presents a base YANG Data model for connectionless 19 Operations Administration, and Maintenance(OAM) protocols. It 20 provides a technology-independent abstraction of key OAM constructs 21 for connectionless protocols. The base model presented here can be 22 extended to include technology specific details. This is leading to 23 uniformity between OAM protocols and support both nested OAM 24 workflows (i.e., performing OAM functions at different or same levels 25 through a unified interface). 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at http://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on March 3, 2018. 44 Copyright Notice 46 Copyright (c) 2017 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (http://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 62 2. Conventions used in this document . . . . . . . . . . . . . . 3 63 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 64 3. Overview of the Connectionless OAM Model . . . . . . . . . . 4 65 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 66 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 5 67 3.3. OAM neighboring layers . . . . . . . . . . . . . . . . . 5 68 3.4. Test Point Locations Information . . . . . . . . . . . . 6 69 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 70 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7 71 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 7 72 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 7 73 5. Connectionless model applicability . . . . . . . . . . . . . 31 74 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 31 75 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 31 76 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 34 77 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 36 78 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 36 79 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 37 80 6. Security Considerations . . . . . . . . . . . . . . . . . . . 39 81 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 82 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 41 83 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 84 9.1. Normative References . . . . . . . . . . . . . . . . . . 41 85 9.2. Informative References . . . . . . . . . . . . . . . . . 42 86 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 88 1. Introduction 90 Operations, Administration, and Maintenance (OAM) are important 91 networking functions that allow operators to: 93 1. Monitor networks connections (Reachability Verification, 94 Continuity Check). 96 2. Troubleshoot failures (Fault verification and localization). 98 3. Monitor Performance 100 An overview of OAM tools is presented at [RFC7276]. 102 Ping and Traceroute [RFC792], [RFC4443] are well-known fault 103 verification and isolation tools, respectively, for IP networks. 104 Over the years, different technologies have developed similar tools 105 for similar purposes. 107 The different OAM tools may support connection-oriented technologies 108 or connectionless technologies. In connection-oriented technologies, 109 a connection is established prior to the transmission of data. In 110 connectionless technologies, data is typically sent between end 111 points without prior arrangement [RFC7276]. Note that the 112 Connection-Oriented OAM YANG DATA model is defined in 113 [I-D.ietf-lime-yang-connection-oriented-oam-model]. 115 In this document, we presents a base YANG Data model for 116 connectionless OAM protocols. The generic YANG model for 117 connectionless OAM only includes configuration data and state data. 118 It can be used in conjunction with data retrieval method model 119 [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on 120 data retrieval procedures like RPC. However it also can be used 121 independently of data retrieval method model. 123 2. Conventions used in this document 125 The following terms are defined in [RFC6241] and are not redefined 126 here: 128 o client 130 o configuration data 132 o server 134 o state data 136 The following terms are defined in [RFC6020] and are not redefined 137 here: 139 o augment 141 o data model 143 o data node 144 The terminology for describing YANG data models is found in 145 [RFC6020]. 147 2.1. Terminology 149 TP - Test Point 151 MAC - Media Access Control 153 BFD - Bidirectional Forwarding Detection 155 RPC - A Remote Procedure Call, as used within the NETCONF protocol 157 CC - Continuity Check [RFC7276] , Continuity Checks are used to 158 verify that a destination is reachable and therefore also referred to 159 as reachability verification 161 3. Overview of the Connectionless OAM Model 163 At the top of the model, there is an 'cc-oper-data' container for 164 session statistics. Grouping is also defined for common session 165 statistics and these are applicable for proactive OAM sessions. 166 Multiple 'test-point-locations' keyed using technology specific keys 167 (eg., IPv4 address for IPv4 locations) are possible by augmented 168 network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] 169 to describe the network hierarchies and the inventory of nodes 170 contained in a network. Each 'test-point-location' is chosen based 171 on 'location-type' which when chosen, leads to a container that 172 includes a list of 'test-point-locations' keyed by technology 173 specific keys. Each test point location includes a 'test-point- 174 location-info'. The 'test-point-location-info' includes 'tp- 175 technology', 'tp-tools', and 'connectionless-oam-layers'. The 176 groupings of 'tp-address' and 'tp-address-vrf' are kept out of 'test- 177 point-location-info' to make it addressing agnostic and allow varied 178 composition. Depending upon the choice of the 'location-type' 179 (determined by the 'tp-address-vrf'), the containers differ in its 180 composition of 'test-point-locations' while the 'test-point-location- 181 info', is a common aspect of every 'test-point-location'. The vrf is 182 used to describe the corresponding network instance. The 'tp- 183 technology' indicate OAM technology details. The 'tp-tools' describe 184 the OAM tools supported. The 'connectionless-oam-layers' is used to 185 describe the relationship of one test point with other test points. 186 The level in 'oam-layers' indicate whether related OAM test point is 187 The level in oam-layers indicate whether related oam test point is in 188 client layer(lower layer described in section 3.3), server layer 189 (upper layer described in section 3.3) or the same layer as the 190 current test point under Test point Locations. The model is 191 augmented to "/nd:networks/nd:network/nd:node" using 'test-point- 192 locations' defined below. 194 3.1. TP Address 196 In connectionless OAM, the tp address is defined with the following 197 type: 199 o MAC address [RFC6136] 201 o IPv4 or IPv6 address 203 o TP-attribute 205 o System-id to represent the device or 206 node.[I-D.ietf-spring-sr-yang] 208 To define a forwarding treatment of a test packet, the 'tp-address' 209 needs to be associated with additional parameters, e.g. DSCP for IP 210 or TC for MPLS. In generic connectionless OAM YANG model, these 211 parameters are not explicit configured. The model user can add 212 corresponding parameters according to their requirements. 214 3.2. Tools 216 The different OAM tools may be used in one of two basic types of 217 activation: proactive and on-demand. The proactive OAM refers to OAM 218 actions which are carried out continuously to permit proactive 219 reporting of fault. The proactive OAM method requires persistent 220 configuration. The on-demand OAM refers to OAM actions which are 221 initiated via manual intervention for a limited time to carry out 222 diagnostics. The on-demand OAM method requires only transient 223 configuration.[RFC7276] [G.8013]. In connectionless OAM, 'session- 224 type' is defined to indicate which kind of activation will be used by 225 the current session. 227 In connectionless OAM, the tools attribute is used to describe a 228 toolset for fault detection and isolation. And it can serve as a 229 constraint condition when the base model be extended to specific OAM 230 technology. For example, to fulfill the ICMP PING configuration, the 231 "../coam:continuity-check" should be set to "true", and then the lime 232 base model should be augmented with ICMP PING specific details. 234 3.3. OAM neighboring layers 236 As typical networks have a multi-layer architecture, the set of OAM 237 protocols similarly take a multi-layer structure; each layer may has 238 its own OAM protocol [RFC7276] and is corresponding to specific 239 administrative domain and has associated test points. OAM- - 240 neighboring-layers is referred to a list of neighboring test points 241 in the upstream layer and/or downstream layer that are related to 242 current test point. This allows users to easily navigate between 243 related neighboring layer to efficiently troubleshoot a defect. In 244 this model, we have kept level default as 0, when a list of 245 neighboring test points under oam-neighboring-layer are located at 246 the same layer as the current test point. 'Technology-Level' defines 247 the relative technology level of neighboring test point corresponding 248 to the current test point in multi-layer and multi-technology 249 networks , and is provided to allow correlation of faults at 250 different administrative and technology layers . If there is one 251 neighboring test point at higher layer of the current test point, 252 ?Technology-level? is set to 1. If there is one neighboring test 253 point at lower layer of the current test point, ?Technology-level? is 254 set to -1. 256 list oam-neighboring-layers { 257 key "index"; 258 leaf index { 259 type uint16 { 260 range "0..65535"; 261 } 262 description 263 ?index?; 264 } 265 leaf technology-level { 266 type int32 { 267 range "-1..1"; 268 } 269 description 270 "Level"; 271 } 273 description 274 "List of related neighboring test points at upstream layer and or downstream layer or at the same layer."; 276 } 278 3.4. Test Point Locations Information 280 This is a generic grouping for Test Point Locations Information. It 281 Provide details of Test Point Location using Tools, 'OAM-Layers' 282 grouping defined above. 284 3.5. Test Point Locations 286 This is a generic grouping for Test Point Locations. Choice 287 statement is used to define locations types, for example 'ipv4- 288 location-type', 'ipv6-location-type', etc. Container is defined 289 under each location type containing list keyed to test point address, 290 Test Point Location Information defined in section above, and routing 291 instance VRF name if required. 293 3.6. Path Discovery Data 295 This is a generic grouping for path discovery data model that can be 296 retrieved by any data retrieval methods including RPCs. Path 297 discovery data output from methods, includes 'src-test-point', 'dst- 298 test-point', 'sequence-number', 'hop-cnt', session statistics of 299 various kinds, path verification and path trace related information. 300 Path discovery includes data to be retrieved on a 'per-hop' basis via 301 a list of 'path-trace-info-list' which includes information like 302 'timestamps', 'ingress-interface', 'egress-interface' and 'app-meta- 303 data'. The path discovery data model is made generic enough to allow 304 different methods of data retrieval. None of the fields are made 305 mandatory for that reason. Noted that the retrieval methods are 306 defined in [I-D.ietf-lime-yang-connectionless-oam-methods]. 308 3.7. Continuity Check Data 310 This is a generic grouping for continuity check data model that can 311 be retrieved by any data retrieval methods including RPCs. 312 Continuity check data output from methods, includes 'src-test-point', 313 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics 314 of various kinds. The continuity check data model is made generic 315 enough to allow different methods of data retrieval. None of the 316 fields are made mandatory for that reason. Noted that the retrieval 317 methods are defined in 318 [I-D.ietf-lime-yang-connectionless-oam-methods]. 320 4. OAM YANG Module 322 file "ietf-connectionless-oam@2017-08-30.yang" 324 module ietf-connectionless-oam { 325 yang-version 1.1; 326 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 327 prefix coam; 329 import ietf-yang-schema-mount { 330 prefix yangmnt; 331 } 332 import ietf-network { 333 prefix nd; 334 } 335 import ietf-yang-types { 336 prefix yang; 337 } 338 import ietf-interfaces { 339 prefix if; 340 } 341 import ietf-inet-types { 342 prefix inet; 343 } 344 import ietf-network-instance { 345 prefix ni; 346 } 348 organization 349 "IETF LIME Working Group"; 350 contact 351 "Deepak Kumar dekumar@cisco.com 352 Qin Wu bill.wu@huawei.com 353 S Raghavan srihari@cisco.com 354 Zitao Wang wangzitao@huawei.com 355 R Rahman rrahman@cisco.com"; 356 description 357 "This YANG module defines the generic configuration, 358 data model, statistics for connectionless OAM to be 359 used within IETF in a protocol indpendent manner, 360 Also Functional level abstraction is independent with 361 YANG modeling. It is assumed that each protocol maps 362 corresponding abstracts to its native format. 363 Each protocol may extend the YANG model defined 364 here to include protocol specific extensions"; 366 revision 2017-08-30 { 367 description 368 " Base model for Connectionless 369 Operations, Administration, 370 and Maintenance(OAM) "; 371 reference 372 " RFC XXXX: Connectionless 373 Operations, Administration, and 374 Maintenance(OAM)YANG Data Model"; 375 } 377 feature connection-less { 378 description 379 "This feature indicates that OAM solution is connection less."; 381 } 383 feature continuity-check { 384 description 385 "This feature indicates that the server supports 386 executing continuity check OAM command and 387 returning a response. Servers that do not advertise 388 this feature will not support executing 389 continuity check command or rpc model for 390 continuity check command."; 391 } 393 feature path-discovery { 394 description 395 "This feature indicates that the server supports 396 executing path discovery OAM command and 397 returning a response. Servers that do not advertise 398 this feature will not support executing 399 path discovery command or rpc model for 400 path discovery command."; 401 } 403 typedef router-id { 404 type yang:dotted-quad; 405 description 406 "A 32-bit number in the dotted quad format assigned to each 407 router. This number uniquely identifies the router within an 408 Autonomous System."; 409 } 411 typedef routing-instance-ref { 412 type leafref { 413 path "/ni:network-instances/ni:network-instance/ni:name"; 414 } 415 description 416 "This type is used for leafs that reference a routing instance 417 configuration."; 418 } 420 identity address-attribute-types { 421 description 422 "This is base identity of address 423 attribute types which are ip-prefix, 424 bgp, tunnel, pwe3, vpls, etc."; 425 } 427 typedef address-attribute-type { 428 type identityref { 429 base address-attribute-types; 430 } 431 description 432 "Target address attribute type."; 433 } 435 identity time-resolution { 436 description 437 "Time interval resolution"; 438 } 440 identity hours { 441 base time-resolution; 442 description 443 "Time resolution in Hours"; 444 } 446 identity minutes { 447 base time-resolution; 448 description 449 "Time resolution in Minutes"; 450 } 452 identity seconds { 453 base time-resolution; 454 description 455 "Time resolution in Seconds"; 456 } 458 identity milliseconds { 459 base time-resolution; 460 description 461 "Time resolution in Milliseconds"; 462 } 464 identity microseconds { 465 base time-resolution; 466 description 467 "Time resolution in Microseconds"; 468 } 470 identity nanoseconds { 471 base time-resolution; 472 description 473 "Time resolution in Nanoseconds"; 474 } 476 grouping cc-session-statistics { 477 description 478 "Grouping for session statistics."; 479 container cc-session-statistics { 480 description 481 "cc session counters"; 482 leaf session-count { 483 type uint32; 484 description 485 "Number of Continuity Check sessions."; 486 } 487 leaf session-up-count { 488 type uint32; 489 description 490 "Number of sessions which are up."; 491 } 492 leaf session-down-count { 493 type uint32; 494 description 495 "Number of sessions which are down."; 496 } 497 leaf session-admin-down-count { 498 type uint32; 499 description 500 "Number of sessions which are admin-down."; 501 } 502 } 503 } 505 grouping session-packet-statistics { 506 description 507 "Grouping for per session packet statistics"; 508 container session-packet-statistics { 509 description 510 "Per session packet statistics."; 511 leaf rx-packet-count { 512 type uint32; 513 description 514 "Total number of received OAM packet count."; 515 } 516 leaf tx-packet-count { 517 type uint32; 518 description 519 "Total number of transmitted OAM packet count."; 520 } 521 leaf rx-bad-packet { 522 type uint32; 523 description 524 "Total number of received bad OAM packet."; 526 } 527 leaf tx-packet-failed { 528 type uint32; 529 description 530 "Total number of send OAM packet failed."; 531 } 532 } 533 } 535 grouping cc-per-session-statistics { 536 description 537 "Grouping for per session statistics"; 538 container cc-per-session-statistics { 539 description 540 "per session statistics."; 541 leaf create-time { 542 type yang:date-and-time; 543 description 544 "Time and date when session is created."; 545 } 546 leaf last-down-time { 547 type yang:date-and-time; 548 description 549 "Time and date last time session is down."; 550 } 551 leaf last-up-time { 552 type yang:date-and-time; 553 description 554 "Time and date last time session is up."; 555 } 556 leaf down-count { 557 type uint32; 558 description 559 "Total Continuity Check sessions down count."; 560 } 561 leaf admin-down-count { 562 type uint32; 563 description 564 "Total Continuity Check sessions admin down count."; 565 } 566 uses session-packet-statistics; 567 } 568 } 570 grouping session-error-statistics { 571 description 572 "Grouping for per session error statistics"; 573 container session-error-statistics { 574 description 575 "Per session error statistics."; 576 leaf packet-drops-count { 577 type uint32; 578 description 579 "Total received packet drops count."; 580 } 581 leaf packet-reorder-count { 582 type uint32; 583 description 584 "Total received packet reordered count."; 585 } 586 leaf packets-out-of-seq-count { 587 type uint32; 588 description 589 "Total received out of sequence count."; 590 } 591 leaf packets-dup-count { 592 type uint32; 593 description 594 "Total received packet duplicates count."; 595 } 596 } 597 } 599 grouping session-delay-statistics { 600 description 601 "Grouping for per session delay statistics"; 602 container session-delay-statistics { 603 description 604 "Session delay summarised information."; 605 leaf time-resolution-value { 606 type identityref { 607 base time-resolution; 608 } 609 description 610 "Time units among choice of s,ms,ns etc."; 611 } 612 leaf min-delay-value { 613 type uint32; 614 description 615 "Minimum delay value observed."; 616 } 617 leaf max-delay-value { 618 type uint32; 619 description 620 "Maximum delay value observed."; 621 } 622 leaf average-delay-value { 623 type uint32; 624 description 625 "Average delay value observed."; 626 } 627 } 628 } 630 grouping session-jitter-statistics { 631 description 632 "Grouping for per session jitter statistics"; 633 container session-jitter-statistics { 634 description 635 "Session jitter summarised information."; 636 leaf time-resolution-value { 637 type identityref { 638 base time-resolution; 639 } 640 description 641 "Time units among choice of s,ms,ns etc."; 642 } 643 leaf min-jitter-value { 644 type uint32; 645 description 646 "Minimum jitter value observed."; 647 } 648 leaf max-jitter-value { 649 type uint32; 650 description 651 "Maximum jitter value observed."; 652 } 653 leaf average-jitter-value { 654 type uint32; 655 description 656 "Average jitter value observed."; 657 } 658 } 659 } 661 grouping session-path-verification-statistics { 662 description 663 "Grouping for per session path verification statistics"; 664 container session-path-verification-statistics { 665 description 666 "OAM per session path verification statistics."; 667 leaf verified-count { 668 type uint32; 669 description 670 "Total number of OAM packets that 671 went through a path as intended."; 672 } 673 leaf failed-count { 674 type uint32; 675 description 676 "Total number of OAM packets that 677 went through an unintended path."; 678 } 679 } 680 } 682 grouping session-type { 683 description 684 "This object indicates the current session 685 definition."; 686 leaf session-type { 687 type enumeration { 688 enum "proactive" { 689 description 690 "The current session is proactive"; 691 } 692 enum "on-demand" { 693 description 694 "The current session is on-demand."; 695 } 696 } 697 default "on-demand"; 698 description 699 "Session type enum"; 700 } 701 } 703 identity tp-address-technology-type { 704 description 705 "Test point address type"; 706 } 708 identity mac-address-type { 709 base tp-address-technology-type; 710 description 711 "MAC address type"; 712 } 714 identity ipv4-address-type { 715 base tp-address-technology-type; 716 description 717 "IPv4 address type"; 719 } 721 identity ipv6-address-type { 722 base tp-address-technology-type; 723 description 724 "IPv6 address type"; 725 } 727 identity tp-attribute-type { 728 base tp-address-technology-type; 729 description 730 "Test point attribute type"; 731 } 733 identity system-id-address-type { 734 base tp-address-technology-type; 735 description 736 "System id address type"; 737 } 739 identity as-number-address-type { 740 base tp-address-technology-type; 741 description 742 "AS number address type"; 743 } 745 identity route-distinguisher-address-type { 746 base tp-address-technology-type; 747 description 748 "Route Distinguisher address type"; 749 } 751 grouping tp-address { 752 leaf tp-location-type { 753 type identityref { 754 base tp-address-technology-type; 755 } 757 description 758 "Test point address type."; 759 } 760 container tp-address { 761 container mac-address { 762 when "derived-from-or-self(../tp-location-type, 'mac-address-type')" { 763 description 764 "MAC address type"; 765 } 766 leaf mac-address { 767 type yang:mac-address; 768 description 769 "MAC Address"; 770 } 771 description 772 "MAC Address based MP Addressing."; 773 } 774 container ipv4-address { 775 when "derived-from-or-self(../tp-location-type, 'ipv4-address-type')" { 776 description 777 "IPv4 address type"; 778 } 779 leaf ipv4-address { 780 type inet:ipv4-address; 781 description 782 "IPv4 Address"; 783 } 784 description 785 "IP Address based MP Addressing."; 786 } 787 container ipv6-address { 788 when "derived-from-or-self(../tp-location-type, 'ipv6-address-type')" { 789 description 790 "IPv6 address type"; 791 } 792 leaf ipv6-address { 793 type inet:ipv6-address; 794 description 795 "IPv6 Address"; 796 } 797 description 798 "ipv6 Address based MP Addressing."; 799 } 800 container tp-attribute { 801 when "derived-from-or-self(../tp-location-type, 'tp-attribute-type')" { 802 description 803 "Test point attribute type"; 804 } 805 leaf tp-attribute-type { 806 type address-attribute-type; 807 description 808 "Test point type."; 809 } 810 choice tp-attribute-value { 811 description 812 "Test point value."; 813 case ip-prefix { 814 leaf ip-prefix { 815 type inet:ip-prefix; 816 description 817 "IP prefix."; 818 } 819 } 820 case bgp { 821 leaf bgp { 822 type inet:ip-prefix; 823 description 824 "BGP Labeled Prefix "; 825 } 826 } 827 case tunnel { 828 leaf tunnel-interface { 829 type uint32; 830 description 831 "VPN Prefix "; 832 } 833 } 834 case pw { 835 leaf remote-pe-address { 836 type inet:ip-address; 837 description 838 "Remote pe address."; 839 } 840 leaf pw-id { 841 type uint32; 842 description 843 "Pseudowire ID is a non-zero 32-bit ID."; 844 reference 845 "RFC 4379 :Detecting Multi-Protocol Label 846 Switched (MPLS) Data Plane Failures"; 847 } 848 } 849 case vpls { 850 leaf route-distinguisher { 851 type uint64; 852 description 853 "Route Distinguisher is an 8 octets identifier 854 used to distinguish information about various 855 L2VPN advertised by a node."; 856 reference 857 "RFC 4379 :Detecting Multi-Protocol Label 858 Switched (MPLS) Data Plane Failures"; 859 } 860 leaf sender-ve-id { 861 type uint16; 862 description 863 "Sender's VE ID. The VE ID (VPLS Edge Identifier) 864 is a 2-octet identifier."; 865 reference 866 "RFC 4379 :Detecting Multi-Protocol Label 867 Switched (MPLS) Data Plane Failures"; 868 } 869 leaf receiver-ve-id { 870 type uint16; 871 description 872 "Receiver's VE ID.The VE ID (VPLS Edge Identifier) 873 is a 2-octet identifier."; 874 reference 875 "RFC 4379 :Detecting Multi-Protocol Label 876 Switched (MPLS) Data Plane Failures"; 877 } 878 } 879 case mpls-mldp { 880 choice root-address { 881 description 882 "Root address choice."; 883 case ip-address { 884 leaf source-address { 885 type inet:ip-address; 886 description 887 "IP address."; 888 } 889 leaf group-ip-address { 890 type inet:ip-address; 891 description 892 "Group ip address."; 893 } 894 } 895 case vpn { 896 leaf as-number { 897 type inet:as-number; 898 description 899 "The AS number represents autonomous system 900 numbers which identify an Autonomous System."; 901 } 902 } 903 case global-id { 904 leaf lsp-id { 905 type string; 906 description 907 "LSP ID is an identifier of a LSP 908 within a MPLS network."; 909 reference 910 "RFC 4379 :Detecting Multi-Protocol Label 911 Switched (MPLS) Data Plane Failures"; 912 } 913 } 914 } 915 } 916 } 917 description 918 "Test Point Attribute Container"; 919 } 920 container system-info { 921 when "derived-from-or-self(../tp-location-type, 'system-id-address-type')" { 922 description 923 "System id address type"; 924 } 925 leaf system-id { 926 type router-id; 927 description 928 "System ID assigned to this node."; 929 } 930 description 931 "system ID container."; 932 } 933 description 934 "TP Addressing."; 935 } 936 description 937 "TP Address"; 938 } 940 grouping tp-address-ni { 941 description 942 "Test point address with VRF."; 943 leaf ni { 944 type routing-instance-ref; 945 description 946 "The ni is used to describe the 947 corresponding network instance"; 948 } 949 uses tp-address; 950 } 952 grouping connectionless-oam-layers { 953 list oam-neighboring-layers { 954 key "index"; 955 leaf index { 956 type uint16; 957 description 958 "Index"; 960 } 961 leaf level { 962 type int32 { 963 range "-1..1"; 964 } 965 default "0"; 966 description 967 "Level 0 indicates default level, 968 -1 means downstream layer related to current layer and +1 969 means upstream layer related to current layer. 970 In relationship 0 means same layer."; 971 } 972 choice tp-location { 973 case mac-address { 974 leaf mac-address-location { 975 type yang:mac-address; 976 description 977 "MAC Address"; 978 } 979 description 980 "MAC Address based MP Addressing."; 981 } 982 case ipv4-address { 983 leaf ipv4-address-location { 984 type inet:ipv4-address; 985 description 986 "Ipv4 Address"; 987 } 988 description 989 "IP Address based MP Addressing."; 990 } 991 case ipv6-address { 992 leaf ipv6-address-location { 993 type inet:ipv6-address; 994 description 995 "IPv6 Address"; 996 } 997 description 998 "IPv6 Address based MP Addressing."; 999 } 1000 case as-number { 1001 leaf as-number-location { 1002 type inet:as-number; 1003 description 1004 "AS number location"; 1005 } 1006 description 1007 "AS number for point to multipoint OAM"; 1009 } 1010 case system-id { 1011 leaf system-id-location { 1012 type router-id; 1013 description 1014 "System id location"; 1015 } 1016 description 1017 "System ID"; 1018 } 1019 description 1020 "TP location."; 1021 } 1023 description 1024 "List of neighboring test points in the upstream layer and/or 1025 downstream layer or same layer that are related to current test 1026 point. If neighboring test-point in the upstream layer exist, the 1027 technology-level is specified as +1. If neighboring test-point 1028 in the downstream layer exist, the technology-level is specified 1029 as -1, if neighboring test-points are located at the same layer 1030 as the current test-point, the technology-level is specified as 1031 0."; 1032 } 1033 description 1034 "Connectionless related OAM neighboring layer"; 1035 } 1037 grouping tp-technology { 1038 choice technology { 1039 default "technology-null"; 1040 case technology-null { 1041 description 1042 "This is a placeholder when no technology is needed."; 1043 leaf tech-null { 1044 type empty; 1045 description 1046 "There is no technology define"; 1047 } 1048 } 1049 description 1050 "Technology choice."; 1051 } 1052 description 1053 "OAM Technology"; 1054 } 1056 grouping tp-tools { 1057 description 1058 "Test Point OAM Toolset."; 1059 container tp-tools { 1060 leaf continuity-check { 1061 type boolean; 1062 mandatory true; 1063 description 1064 "A flag indicating whether or not the 1065 continuity check function is supported."; 1066 reference 1067 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1068 RFC 4443: Internet Control Message Protocol (ICMPv6) 1069 for the Internet Protocol Version 6 (IPv6) Specification. 1070 RFC 5880: Bidirectional Forwarding Detection. 1071 RFC 5881: BFD for IPv4 and IPv6. 1072 RFC 5883: BFD for Multihop Paths. 1073 RFC 5884: BFD for MPLS Label Switched Paths. 1074 RFC 5885: BFD for PW VCCV. 1075 RFC 6450: Multicast Ping Protocol."; 1076 } 1077 leaf path-discovery { 1078 type boolean; 1079 mandatory true; 1080 description 1081 "A flag indicating whether or not the 1082 path discovery function is supported."; 1083 reference 1084 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1085 RFC 4443: Internet Control Message Protocol (ICMPv6) 1086 for the Internet Protocol Version 6 (IPv6) Specification. 1087 RFC 4884: Extended ICMP to Support Multi-part Message. 1088 RFC 5837:Extending ICMP for Interface 1089 and Next-Hop Identification. 1090 RFC 4379: LSP-PING."; 1091 } 1092 description 1093 "Container for test point OAM tools set."; 1094 } 1095 } 1097 grouping test-point-location-info { 1098 uses tp-technology; 1099 uses tp-tools; 1100 anydata root { 1101 yangmnt:mount-point "root"; 1102 description 1103 "Root for models supported per 1104 test point"; 1106 } 1107 uses connectionless-oam-layers; 1108 description 1109 "Test point Location"; 1110 } 1112 grouping test-point-locations { 1113 description 1114 "Group of test point locations."; 1115 leaf tp-location-type { 1116 type identityref { 1117 base tp-address-technology-type; 1118 } 1119 description 1120 "Test point location type."; 1121 } 1122 container location-type { 1123 container ipv4-location-type { 1124 when "derived-from-or-self(../tp-location-type, 'ipv4-address-type')" { 1125 description 1126 "When test point location type is equal to ipv4 address."; 1127 } 1128 container test-point-ipv4-location-list { 1129 list test-point-locations { 1130 key "ipv4-location ni"; 1131 leaf ipv4-location { 1132 type inet:ipv4-address; 1133 description 1134 "IPv4 Address."; 1135 } 1136 leaf ni { 1137 type routing-instance-ref; 1138 description 1139 "The ni is used to describe the 1140 corresponding network instance"; 1141 } 1142 uses test-point-location-info; 1143 description 1144 "List of test point locations."; 1145 } 1146 description 1147 "Serves as top-level container 1148 for test point location list."; 1149 } 1150 description 1151 "ipv4 location type container."; 1152 } 1153 container ipv6-location-type { 1154 when "derived-from-or-self(../tp-location-type, 'ipv6-address-type')" { 1155 description 1156 "when test point location is equal to ipv6 address"; 1157 } 1158 container test-point-ipv6-location-list { 1159 list test-point-locations { 1160 key "ipv6-location ni"; 1161 leaf ipv6-location { 1162 type inet:ipv6-address; 1163 description 1164 "IPv6 Address."; 1165 } 1166 leaf ni { 1167 type routing-instance-ref; 1168 description 1169 "The ni is used to describe the 1170 corresponding network instance"; 1171 } 1172 uses test-point-location-info; 1174 description 1175 "List of test point locations."; 1176 } 1177 description 1178 "Serves as top-level container 1179 for test point location list."; 1180 } 1181 description 1182 "ipv6 location type container."; 1183 } 1184 container mac-location-type { 1185 when "derived-from-or-self(../tp-location-type, 'mac-address-type')" { 1186 description 1187 "when test point location type is equal to mac address."; 1188 } 1189 container test-point-mac-address-location-list { 1190 list test-point-locations { 1191 key "mac-address-location"; 1192 leaf mac-address-location { 1193 type yang:mac-address; 1194 description 1195 "MAC Address"; 1196 } 1197 uses test-point-location-info; 1199 description 1200 "List of test point locations."; 1201 } 1202 description 1203 "Serves as top-level container 1204 for test point location list."; 1205 } 1206 description 1207 "mac address location type container."; 1208 } 1209 container group-as-number-location-type { 1210 when "'tp-location-type' = 'as-number-address-type'" { 1211 description 1212 "When test point location type is equal to 1213 as-number."; 1214 } 1215 container test-point-as-number-location-list { 1216 list test-point-locations { 1217 key "as-number-location"; 1218 leaf as-number-location { 1219 type inet:as-number; 1220 description 1221 "AS number for point to multi point OAM."; 1222 } 1223 leaf ni { 1224 type routing-instance-ref; 1225 description 1226 "The ni is used to describe the 1227 corresponding network instance"; 1228 } 1229 uses test-point-location-info; 1231 description 1232 "List of test point locations."; 1233 } 1234 description 1235 "Serves as top-level container 1236 for test point location list."; 1237 } 1238 description 1239 "as number location type container."; 1240 } 1241 container group-system-id-location-type { 1242 when "'tp-location-type' = 'system-id-address-type'" { 1243 description 1244 "When test point location is equal to 1245 system info."; 1246 } 1247 container test-point-system-info-location-list { 1248 list test-point-locations { 1249 key "system-id-location"; 1250 leaf system-id-location { 1251 type inet:uri; 1252 description 1253 "System Id."; 1254 } 1255 leaf ni { 1256 type routing-instance-ref; 1257 description 1258 "The ni is used to describe the 1259 corresponding network instance"; 1260 } 1261 uses test-point-location-info; 1263 description 1264 "List of test point locations."; 1265 } 1266 description 1267 "Serves as top-level container for 1268 test point location list."; 1269 } 1270 description 1271 "system ID location type container."; 1272 } 1273 description 1274 "Choice of address types."; 1275 } 1276 } 1278 augment "/nd:networks/nd:network/nd:node" { 1279 description 1280 "Augment test points of connectionless oam."; 1281 uses test-point-locations; 1282 } 1284 grouping uint64-timestamp { 1285 description 1286 "Grouping for timestamp."; 1287 leaf timestamp-sec { 1288 type uint32; 1289 description 1290 "Absolute timestamp in seconds as per IEEE1588v2 1291 or seconds part in 64-bit NTP timestamp."; 1292 } 1293 leaf timestamp-nanosec { 1294 type uint32; 1295 description 1296 "Fractional part in nanoseconds as per IEEE1588v2 1297 or Fractional part in 64-bit NTP timestamp."; 1299 } 1300 } 1302 grouping timestamp { 1303 description 1304 "Grouping for timestamp."; 1305 leaf timestamp-type { 1306 type uint32; 1307 description 1308 "Truncated PTP = 0, NTP = 1"; 1309 } 1310 uses uint64-timestamp; 1311 } 1313 grouping path-discovery-data { 1314 description 1315 "Path discovery related data output from nodes."; 1316 container src-test-point { 1317 description 1318 "Source test point."; 1319 uses tp-address-ni; 1320 } 1321 container dest-test-point { 1322 description 1323 "Destination test point."; 1324 uses tp-address-ni; 1325 } 1326 leaf sequence-number { 1327 type uint64; 1328 description 1329 "Sequence number in data packets."; 1330 } 1331 leaf hop-cnt { 1332 type uint8; 1333 description 1334 "Hop count."; 1335 } 1336 uses session-packet-statistics; 1337 uses session-error-statistics; 1338 uses session-delay-statistics; 1339 uses session-jitter-statistics; 1340 container path-verification { 1341 description 1342 "Optional path verification related information."; 1343 leaf flow-info { 1344 type string; 1345 description 1346 "Informations that refers to the flow."; 1348 } 1349 uses session-path-verification-statistics; 1350 } 1351 container path-trace-info { 1352 description 1353 "Optional path trace per-hop test point information. 1354 The list has typically a single element for per-hop 1355 cases like path-discovery RPC but allows a list of 1356 hop related information for other types of 1357 data retrieval methods."; 1358 list path-trace-info-list { 1359 key "index"; 1360 description 1361 "Path trace information list."; 1362 leaf index { 1363 type uint32; 1364 description 1365 "Trace information index."; 1366 } 1367 uses tp-address-ni; 1368 uses timestamp; 1369 leaf ingress-intf-name { 1370 type if:interface-ref; 1371 description 1372 "Ingress interface name"; 1373 } 1374 leaf egress-intf-name { 1375 type if:interface-ref; 1376 description 1377 "Egress interface name"; 1378 } 1379 leaf queue-depth { 1380 type uint32; 1381 description 1382 "Length of the queue of the interface from where 1383 the packet is forwarded out. The queue depth could 1384 be the current number of memory buffers used by the 1385 queue and a packet can consume one or more memory buffers 1386 thus constituting device-level information."; 1387 } 1388 leaf transit-delay { 1389 type uint32; 1390 description 1391 "Time in nano seconds 1392 packet spent transiting a node."; 1393 } 1394 leaf app-meta-data { 1395 type uint64; 1396 description 1397 "Application specific 1398 data added by node."; 1399 } 1400 } 1401 } 1402 } 1404 grouping continuity-check-data { 1405 description 1406 "Continuity check data output from nodes."; 1407 container src-test-point { 1408 description 1409 "Source test point."; 1410 uses tp-address-ni; 1411 leaf egress-intf-name { 1412 type if:interface-ref; 1413 description 1414 "Egress interface name"; 1415 } 1416 } 1417 container dest-test-point { 1418 description 1419 "Destination test point."; 1420 uses tp-address-ni; 1421 leaf ingress-intf-name { 1422 type if:interface-ref; 1423 description 1424 "Ingress interface name"; 1425 } 1426 } 1427 leaf sequence-number { 1428 type uint64; 1429 description 1430 "Sequence number."; 1431 } 1432 leaf hop-cnt { 1433 type uint8; 1434 description 1435 "Hop count."; 1436 } 1437 uses session-packet-statistics; 1438 uses session-error-statistics; 1439 uses session-delay-statistics; 1440 uses session-jitter-statistics; 1441 } 1443 container cc-session-statistics-data { 1444 if-feature "continuity-check"; 1445 config false; 1446 description 1447 "CC operational information."; 1448 container cc-ipv4-sessions-statistics { 1449 description 1450 "CC ipv4 sessions"; 1451 uses cc-session-statistics; 1452 } 1453 container cc-ipv6-sessions-statistics { 1454 description 1455 "CC ipv6 sessions"; 1456 uses cc-session-statistics; 1457 } 1458 } 1459 } 1461 1463 5. Connectionless model applicability 1465 "ietf-connectionless-oam" model defined in this document provides 1466 technology-independent abstraction of key OAM constructs for 1467 connectionless protocols. This model can be further extended to 1468 include technology specific details, e.g., adding new data nodes with 1469 technology specific functions and parameters into proper anchor 1470 points of the base model, so as to develop a technology-specific 1471 connectionless OAM model. 1473 This section demonstrates the usability of the connectionless YANG 1474 OAM data model to various connectionless OAM technologies, e.g., BFD, 1475 LSP ping. Note that, in this section, we only present several 1476 snippets of technology-specific model extensions for illustrative 1477 purposes. The complete model extensions should be worked on in 1478 respective protocol working groups. 1480 5.1. BFD Extension 1482 5.1.1. Augment Method 1484 The following sections shows how the "ietf-connectionless-oam" model 1485 can be extended to cover BFD technology. For this purpose, a set of 1486 extension are introduced such as technology-type extension and test- 1487 point attributes extension. 1489 Note that in BFD WG, there is a BFD yang data model 1490 [I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf- 1491 connectioless-oam" as basis and augment the "ietf-connectionless-oam" 1492 model with bfd specific details. The bfd specific details can be the 1493 grouping defined in the BFD model. 1495 5.1.1.1. Technology type extension 1497 No BFD technology type has been defined in the "ietf-connectionless- 1498 oam" model. Therefore a technology type extension is required in the 1499 model Extension. 1501 The snippet below depicts an example of augmenting "bfd" type into 1502 the ietf-connectionless-oam": 1504 augment "/nd:networks/nd:network/nd:node/" 1505 +"coam:location-type/coam:ipv4-location-type" 1506 +"/coam:test-point-ipv4-location-list/" 1507 +"coam:test-point-locations/coam:technology" 1508 +"/coam:technology-string" 1509 { 1510 leaf bfd{ 1511 type string; 1512 } 1513 } 1515 5.1.1.2. Test point attributes extension 1517 To support bfd technology, the "ietf-connectionless-oam" model can be 1518 extended and add bfd specific parameters under "test-point-location" 1519 list and/or add new location type such as "bfd over MPLS-TE" under 1520 "location-type". 1522 5.1.1.2.1. Define and insert new nodes into corresponding test-point- 1523 location 1525 In the "ietf-connectionless-oam" model, multiple "test-point- 1526 location" lists are defined under the "location-type" choice node. 1527 Therefore, to derive a model for some bfd technologies ( such as ip 1528 single-hop, ip multi-hops, etc), data nodes for bfd specific details 1529 need to be added into corresponding "test-point-locations" list. In 1530 this section, we reuse some groupings which are defined in 1531 [I-D.ietf-bfd-yang] as following: 1533 The snippet below shows how the "ietf-connectionless-oam" model can 1534 be extended to support "BFD IP single-hop": 1536 augment "/nd:networks/nd:network/nd:node/" 1537 +"coam:location-type/coam:ipv4-location-type" 1538 +"/coam:test-point-ipv4-location-list/" 1539 +"coam:test-point-locations" 1540 { 1541 container session-cfg { 1542 description "BFD IP single-hop session configuration"; 1543 list sessions { 1544 key "interface dest-addr"; 1545 description "List of IP single-hop sessions"; 1546 leaf interface { 1547 type if:interface-ref; 1548 description 1549 "Interface on which the BFD session is running."; 1550 } 1551 leaf dest-addr { 1552 type inet:ip-address; 1553 description "IP address of the peer"; 1554 } 1555 uses bfd:bfd-grouping-common-cfg-parms; 1556 uses bfd:bfd-grouping-echo-cfg-parms; 1557 } 1558 } 1559 } 1561 Similar augmentations can be defined to support other BFD 1562 technologies such as BFD IP multi-hop, BFD over MPLS, etc. 1564 5.1.1.2.2. Add new location-type cases 1566 In the "ietf-connectionless-oam" model, If there is no appropriate 1567 "location type" case that can be extended, a new "location-type" case 1568 can be defined and inserted into the "location-type" choice node. 1570 Therefore, the model user can flexibly add "location-type" to support 1571 other type of test point which are not defined in the "ietf- 1572 connectionless-oam" model. In this section, we add a new "location- 1573 type" case and reuse some groupings which are defined in 1574 [I-D.ietf-bfd-yang] as follows: 1576 The snippet below shows how the "ietf-connectionless-oam" model can 1577 be extended to support "BFD over MPLS-TE": 1579 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 1580 case te-location{ 1581 list test-point-location-list{ 1582 key "tunnel-name"; 1583 leaf tunnel-name{ 1584 type leafref{ 1585 path "/te:te/te:tunnels/te:tunnel/te:name"; 1586 } 1587 description 1588 "point to a te instance."; 1589 } 1590 uses bfd:bfd-grouping-common-cfg-parms; 1591 uses bfd-mpls:bfd-encap-cfg; 1592 } 1593 } 1594 } 1596 Similar augmentations can be defined to support other BFD 1597 technologies such as BFD over LAG, etc. 1599 5.1.2. Schema Mount 1601 And another alternative method is using schema mount mechanism 1602 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 1603 Within the "test-point-location" list, a "root" attribute is defined 1604 to provide a mounted point for models mounted per "test-point- 1605 location". Therefore, the "ietf-connectionless-oam" model can 1606 provide a place in the node hierarchy where other OAM YANG data 1607 models can be attached, without any special extension in the "ietf- 1608 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 1609 Note that the limitation of the Schema Mount method is it is not 1610 allowed to specify certain modules that are required to be mounted 1611 under a mount point. 1613 The snippet below depicts the definition of "root" attribute. 1615 anydata root { 1616 yangmnt:mount-point root; 1617 description 1618 "Root for models supported per 1619 test point"; 1620 } 1622 The following section shows how the "ietf-connectionless-oam" model 1623 can use schema mount to support BFD technology. 1625 5.1.2.1. BFD Modules be populated in schema-mount 1627 To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG 1628 modules might be populated in the "schema-mounts" container: 1630 1632 1633 ietf-connectionless-oam 1634 root 1635 1636 root 1637 1638 1639 1640 root 1641 1642 ietf-bfd-ip-sh 1643 2016-07-04 1644 1645 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 1646 1647 implement 1648 1649 1650 ietf-bfd-ip-mh 1651 2016-07-04 1652 1653 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 1654 1655 implement 1656 1657 1658 1660 and the " ietf-connectionless-oam " module might have: 1662 1664 ...... 1665 1666 192.0.2.1 1667 ...... 1668 1669 1670 1671 foo 1672 ...... 1673 1674 1675 1676 1677 foo 1678 ...... 1679 1680 1681 1682 1683 1685 5.2. LSP ping extension 1687 5.2.1. Augment Method 1689 The following sections shows how the "ietf-connectionless-oam" model 1690 can be extended to support LSP ping technology. For this purpose, a 1691 set of extension are introduced such as technology-type extension and 1692 test-point attributes extension. 1694 Note that in MPLS WG, there is a LSP Ping yang data model 1695 [I-D.zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can choose 1696 to use "ietf-connectioless-oam" as basis and augment the "ietf- 1697 connectionless-oam" model with LSP Ping specific details in the model 1698 extension. The LSP Ping specific details can be the grouping defined 1699 in the LSP ping model. 1701 5.2.1.1. Technology type extension 1703 No lsp-ping technology type has been defined in the "ietf- 1704 connectionless-oam" model. Therefore a technology type extension is 1705 required in the model extension. 1707 The snippet below depicts an example of augmenting the "ietf- 1708 connectionless-oam" with "lsp-ping" type: 1710 augment "/nd:networks/nd:network/nd:node/" 1711 +"coam:location-type/coam:ipv4-location-type" 1712 +"/coam:test-point-ipv4-location-list/" 1713 +"coam:test-point-locations/coam:technology" 1714 +"/coam:technology-string" 1715 { 1716 leaf lsp-ping{ 1717 type string; 1718 } 1719 } 1721 5.2.1.2. Test point attributes extension 1723 To support lsp-ping, the "ietf-connectionless-oam" model can be 1724 extended and add lsp-ping specific parameters can be defined and 1725 under "test-point-location" list. 1727 User can reuse the attributes or groupings which are defined in 1728 [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: 1730 The snippet below depicts an example of augmenting the "test-point- 1731 locations" list with lsp ping attributes: 1733 augment "/nd:networks/nd:network/nd:node/" 1734 +"coam:location-type/coam:ipv4-location-type" 1735 +"/coam:test-point-ipv4-location-list/" 1736 +"coam:test-point-locations" 1737 { 1738 list lsp-ping { 1739 key "lsp-ping-name"; 1740 leaf lsp-ping-name { 1741 type string { 1742 length "1..31"; 1743 } 1744 mandatory "true"; 1745 description "LSP Ping test name."; 1746 ...... 1747 } 1749 5.2.2. Schema Mount 1751 And another alternative method is using schema mount mechanism 1752 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 1753 Within the "test-point-location" list, a "root" attribute is defined 1754 to provide a mounted point for models mounted per "test-point- 1755 location". Therefore, the "ietf-connectionless-oam" model can 1756 provide a place in the node hierarchy where other OAM YANG data 1757 models can be attached, without any special extension in the "ietf- 1758 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 1759 Note that the limitation of the Schema Mount method is it is not 1760 allowed to specify certain modules that are required to be mounted 1761 under a mount point. 1763 The snippet below depicts the definition of "root" attribute. 1765 anydata root { 1766 yangmnt:mount-point root; 1767 description 1768 "Root for models supported per 1769 test point"; 1770 } 1772 The following section shows how the "ietf-connectionless-oam" model 1773 can use schema mount to support LSP-PING technology. 1775 5.2.2.1. LSP-PING Modules be populated in schema-mount 1777 To support LSP-PING technology, "ietf-lspping" YANG module 1778 [I-D.zheng-mpls-lsp-ping-yang-cfg] might be populated in the "schema- 1779 mounts" container: 1781 1783 1784 ietf-connectionless-oam 1785 root 1786 1787 root 1788 1789 1790 1791 root 1792 1793 ietf-lspping 1794 2016-03-18 1795 1796 urn:ietf:params:xml:ns:yang: ietf-lspping 1797 1798 implement 1799 1800 1801 1803 and the " ietf-connectionless-oam " module might have: 1805 1807 ...... 1808 1809 192.0.2.1 1810 ...... 1811 1812 1813 1814 foo 1815 ...... 1816 1817 1818 1819 1820 1822 6. Security Considerations 1824 The YANG module defined in this memo is designed to be accessed via 1825 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1826 secure transport layer and the mandatory-to-implement secure 1827 transport is SSH [RFC6242]. The NETCONF access control model 1828 [RFC6536] provides the means to restrict access for particular 1829 NETCONF users to a pre-configured subset of all available NETCONF 1830 protocol operations and content. 1832 There are a number of data nodes defined in the YANG module which are 1833 writable/creatable/deletable (i.e., config true, which is the 1834 default). These data nodes may be considered sensitive or vulnerable 1835 in some network environments. Write operations (e.g. ) 1836 to these data nodes without proper protection can have a negative 1837 effect on network operations. 1839 The vulnerable "config true" subtrees and data nodes are the 1840 following: 1842 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv4- 1843 location-type/coam:test-point-ipv4-location-list/coam:test-point- 1844 locations/ 1846 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv6- 1847 location-type/coam:test-point-ipv6-location-list/coam:test-point- 1848 locations/ 1850 /nd:networks/nd:network/nd:node/coam:location-type/coam:mac-location- 1851 type/coam:test-point-mac-address-location-list/coam:test-point- 1852 locations/ 1853 /nd:networks/nd:network/nd:node/coam:location-type/coam:tunnel- 1854 location-type/coam:test-point-tunnel-address-location-list/coam:test- 1855 point-locations/ 1857 /nd:networks/nd:network/nd:node/coam:location-type/coam:ip-prefix- 1858 location-type/coam:test-point-ip-prefix-location-list/coam:test- 1859 point-locations/ 1861 /nd:networks/nd:network/nd:node/coam:location-type/coam:route- 1862 distinguisher-location-type/coam:test-point-route-dist-location-list/ 1863 coam:test-point-locations/ 1865 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-ip- 1866 address-location-type/coam:test-point-group-ip-address-location-list/ 1867 coam:test-point-locations/ 1869 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-as- 1870 number-location-type/coam:test-point-as-number-location-list/ 1871 coam:test-point-locations/ 1873 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-lsp-id- 1874 location-type/coam:test-point-lsp-id-location-list/coam:test-point- 1875 locations/ 1877 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-system- 1878 id-location-type/coam:test-point-system-info-location-list/coam:test- 1879 point-locations/ 1881 Unauthorized access to any of these lists can adversely affect OAM 1882 management system handling of end-to-end OAM and coordination of OAM 1883 within underlying network layers. This may lead to inconsistent 1884 configuration, reporting, and presentation for the OAM mechanisms 1885 used to manage the network. 1887 7. IANA Considerations 1889 This document registers a URI in the IETF XML registry [RFC3688]. 1890 Following the format in [RFC3688] the following registration is 1891 requested to be made: 1893 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 1895 Registrant Contact: The IESG. 1897 XML: N/A, the requested URI is an XML namespace. 1899 This document registers a YANG module in the YANG Module Names 1900 registry [RFC6020]. 1902 name: ietf-connectionless-oam 1904 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 1906 prefix: coam 1908 reference: RFC XXXX 1910 8. Acknowlegements 1912 The authors of this document would like to thank Greg Mirsky and 1913 others for their sustainable review and comments, proposals to 1914 improve and stabilize document. 1916 9. References 1918 9.1. Normative References 1920 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1921 DOI 10.17487/RFC3688, January 2004, . 1924 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 1925 Control Message Protocol (ICMPv6) for the Internet 1926 Protocol Version 6 (IPv6) Specification", STD 89, 1927 RFC 4443, DOI 10.17487/RFC4443, March 2006, 1928 . 1930 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1931 the Network Configuration Protocol (NETCONF)", RFC 6020, 1932 DOI 10.17487/RFC6020, October 2010, . 1935 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1936 and A. Bierman, Ed., "Network Configuration Protocol 1937 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1938 . 1940 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1941 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1942 . 1944 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1945 Protocol (NETCONF) Access Control Model", RFC 6536, 1946 DOI 10.17487/RFC6536, March 2012, . 1949 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1950 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1951 . 1953 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1954 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1955 . 1957 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 1958 September 1981. 1960 9.2. Informative References 1962 [G.8013] "OAM functions and mechanisms for Ethernet based 1963 networks", ITU-T Recommendation G.8013/Y.1731, 2013. 1965 [I-D.ietf-bfd-yang] 1966 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 1967 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 1968 Detection (BFD)", draft-ietf-bfd-yang-06 (work in 1969 progress), June 2017. 1971 [I-D.ietf-i2rs-yang-network-topo] 1972 Clemm, A., Medved, J., Varga, R., Bahadur, N., 1973 Ananthakrishnan, H., and X. Liu, "A Data Model for Network 1974 Topologies", draft-ietf-i2rs-yang-network-topo-14 (work in 1975 progress), June 2017. 1977 [I-D.ietf-lime-yang-connection-oriented-oam-model] 1978 Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model 1979 for Connection Oriented Operations, Administration, and 1980 Maintenance(OAM) protocols", draft-ietf-lime-yang- 1981 connection-oriented-oam-model-00 (work in progress), June 1982 2017. 1984 [I-D.ietf-lime-yang-connectionless-oam-methods] 1985 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 1986 "Retrieval Methods YANG Data Model for Connectionless 1987 Operations, Administration, and Maintenance(OAM) 1988 protocols", draft-ietf-lime-yang-connectionless-oam- 1989 methods-05 (work in progress), June 2017. 1991 [I-D.ietf-netmod-schema-mount] 1992 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 1993 ietf-netmod-schema-mount-06 (work in progress), July 2017. 1995 [I-D.ietf-spring-sr-yang] 1996 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1997 Data Model for Segment Routing", draft-ietf-spring-sr- 1998 yang-07 (work in progress), July 2017. 2000 [I-D.zheng-mpls-lsp-ping-yang-cfg] 2001 Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. 2002 Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- 2003 lsp-ping-yang-cfg-05 (work in progress), June 2017. 2005 [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual 2006 Private Network (L2VPN) Operations, Administration, and 2007 Maintenance (OAM) Requirements and Framework", RFC 6136, 2008 DOI 10.17487/RFC6136, March 2011, . 2011 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 2012 Weingarten, "An Overview of Operations, Administration, 2013 and Maintenance (OAM) Tools", RFC 7276, 2014 DOI 10.17487/RFC7276, June 2014, . 2017 Authors' Addresses 2019 Deepak Kumar 2020 CISCO Systems 2021 510 McCarthy Blvd 2022 Milpitas, CA 95035 2023 USA 2025 Email: dekumar@cisco.com 2027 Michael Wang 2028 Huawei Technologies,Co.,Ltd 2029 101 Software Avenue, Yuhua District 2030 Nanjing 210012 2031 China 2033 Email: wangzitao@huawei.com 2034 Qin Wu 2035 Huawei 2036 101 Software Avenue, Yuhua District 2037 Nanjing, Jiangsu 210012 2038 China 2040 Email: bill.wu@huawei.com 2042 Reshad Rahman 2043 CISCO Systems 2044 2000 Innovation Drive 2045 KANATA, ONTARIO K2K 3E8 2046 CANADA 2048 Email: rrahman@cisco.com 2050 Srihari Raghavan 2051 CISCO Systems 2052 TRIL INFOPARK SEZ, Ramanujan IT City 2053 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 2054 CHENNAI, TAMIL NADU 600113 2055 INDIA 2057 Email: srihari@cisco.com