idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- -- 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 (June 16, 2017) is 2505 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 2038, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 2042, 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-05 == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-12 == 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-04 == Outdated reference: A later version (-12) exists of draft-ietf-netmod-schema-mount-05 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-06 == Outdated reference: A later version (-10) exists of draft-zheng-mpls-lsp-ping-yang-cfg-04 Summary: 2 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: December 18, 2017 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 June 16, 2017 12 Generic YANG Data Model for Connectionless Operations, Administration, 13 and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-07 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 December 18, 2017. 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-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 . . . . . . . . . . . . . 33 74 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 33 75 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 33 76 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 36 77 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 38 78 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 38 79 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 39 80 6. Security Considerations . . . . . . . . . . . . . . . . . . . 41 81 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 82 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 43 83 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 84 9.1. Normative References . . . . . . . . . . . . . . . . . . 43 85 9.2. Informative References . . . . . . . . . . . . . . . . . 44 86 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 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-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 or path and has associated test points. OAM- 240 layers is referred to a list of server layer, client layer that are 241 related to current test point. This allows users to easily navigate 242 between related layer to efficiently troubleshoot a "loss of 243 continuity defect". In this model, we have kept level default as 0, 244 when all test points are located at the same layer. 'Level' defines 245 the relative technology level in a sequence of administrative 246 domains, and is provided to allow correlation of faults in related 247 OAM domains. For example, there is a network in which data traffic 248 between two customer edges is transported over three consecutive 249 administrative domains, where the current test point is located in 250 the second administrative domain. In this scenario second 251 administrative domain is acting as client to first administrative 252 domain and server to third administrative domain. For Test Point at 253 second administrative domain, client level is "-1", i.e. third 254 administrative domain and server level is "1", i.e. first 255 administrative domain. In another example, if the first 256 administrative domain and the second are in same level then it's 257 upstream or downstream administrative domain scenario and thus second 258 administrative domain level is set to "0". 260 list oam-layers { 261 key "index"; 262 leaf index { 263 type uint16 { 264 range "0..65535"; 265 } 266 } 267 leaf level { 268 type int32 { 269 range "-1..1"; 270 } 271 description 272 "Level"; 273 } 275 description 276 "List of related oam layers."; 277 } 279 3.4. Test Point Locations Information 281 This is a generic grouping for Test Point Locations Information. It 282 Provide details of Test Point Location using Tools, 'OAM-Layers' 283 grouping defined above. 285 3.5. Test Point Locations 287 This is a generic grouping for Test Point Locations. Choice 288 statement is used to define locations types, for example 'ipv4- 289 location-type', 'ipv6-location-type', etc. Container is defined 290 under each location type containing list keyed to test point address, 291 Test Point Location Information defined in section above, and routing 292 instance VRF name if required. 294 3.6. Path Discovery Data 296 This is a generic grouping for path discovery data model that can be 297 retrieved by any data retrieval methods including RPCs. Path 298 discovery data output from methods, includes 'src-test-point', 'dst- 299 test-point', 'sequence-number', 'hop-cnt', session statistics of 300 various kinds, path verification and path trace related information. 301 Path discovery includes data to be retrieved on a 'per-hop' basis via 302 a list of 'path-trace-info-list' which includes information like 303 'timestamps', 'ingress-interface', 'egress-interface' and 'app-meta- 304 data'. The path discovery data model is made generic enough to allow 305 different methods of data retrieval. None of the fields are made 306 mandatory for that reason. Noted that the retrieval methods are 307 defined in [I-D.ietf-lime-yang-connectionless-oam-methods]. 309 3.7. Continuity Check Data 311 This is a generic grouping for continuity check data model that can 312 be retrieved by any data retrieval methods including RPCs. 313 Continuity check data output from methods, includes 'src-test-point', 314 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics 315 of various kinds. The continuity check data model is made generic 316 enough to allow different methods of data retrieval. None of the 317 fields are made mandatory for that reason. Noted that the retrieval 318 methods are defined in 319 [I-D.ietf-lime-yang-connectionless-oam-methods]. 321 4. OAM YANG Module 323 file "ietf-connectionless-oam@2017-06-09.yang" 325 module ietf-connectionless-oam { 326 yang-version 1.1; 327 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 328 prefix coam; 330 import ietf-yang-schema-mount { 331 prefix yangmnt; 332 } 333 import ietf-network { 334 prefix nd; 335 } 336 import ietf-yang-types { 337 prefix yang; 338 } 339 import ietf-interfaces { 340 prefix if; 341 } 342 import ietf-inet-types { 343 prefix inet; 344 } 345 import ietf-network-instance { 346 prefix ni; 347 } 349 organization 350 "IETF LIME Working Group"; 351 contact 352 "Deepak Kumar dekumar@cisco.com 353 Qin Wu bill.wu@huawei.com 354 S Raghavan srihari@cisco.com 355 Zitao Wang wangzitao@huawei.com 356 R Rahman rrahman@cisco.com"; 357 description 358 "This YANG module defines the generic configuration, 359 data model, statistics for connectionless OAM to be 360 used within IETF in a protocol indpendent manner. 361 Functional level abstraction is indendent with 362 YANG modeling. It is assumed that each protocol maps 363 corresponding abstracts to its native format. 364 Each protocol may extend the YANG model defined 365 here to include protocol specific extensions"; 367 revision 2017-06-09 { 368 description 369 " Base model for Connectionless 370 Operations, Administration, 371 and Maintenance(OAM) "; 372 reference 373 " RFC XXXX: Connectionless 374 Operations, Administration, and 375 Maintenance(OAM)YANG Data Model"; 376 } 378 feature connection-less { 379 description 380 "This feature indicates that OAM solution is connection less."; 382 } 384 feature continuity-check { 385 description 386 "This feature indicates that the server supports 387 executing continuity check OAM command and 388 returning a response. Servers that do not advertise 389 this feature will not support executing 390 continuity check command or rpc model for 391 continuity check command."; 392 } 394 feature path-discovery { 395 description 396 "This feature indicates that the server supports 397 executing path discovery OAM command and 398 returning a response. Servers that do not advertise 399 this feature will not support executing 400 path discovery command or rpc model for 401 path discovery command."; 402 } 404 typedef router-id { 405 type yang:dotted-quad; 406 description 407 "A 32-bit number in the dotted quad format assigned to each 408 router. This number uniquely identifies the router within an 409 Autonomous System."; 410 } 412 typedef routing-instance-ref { 413 type leafref { 414 path "/ni:network-instances/ni:network-instance/ni:name"; 415 } 416 description 417 "This type is used for leafs that reference a routing instance 418 configuration."; 419 } 421 typedef ipv4-multicast-group-address { 422 type string { 423 pattern "(2((2[4-9])|(3[0-9]))\\.)"+" 424 (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.)" 425 +"{2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; 426 } 427 description 428 "The ipv4-multicast-group-address type 429 represents an IPv4 multicast address 430 in dotted-quad notation."; 431 reference "RFC4607"; 432 } 434 typedef ipv6-multicast-group-address { 435 type string { 436 pattern "(((FF|ff)[0-9a-fA-F]{2}):)" 437 +"([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)" 438 +"?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|" 439 +"[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|" 440 +"[01]?[0-9]?[0-9])))"; 441 pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|" 442 +"((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)"; 443 } 444 description 445 "The ipv6-multicast-group-address 446 type represents an IPv6 address in full, 447 mixed, shortened, and shortened-mixed 448 notation."; 449 reference 450 "RFC4291 2.7. 451 ietf-inet-types:ipv6-address"; 452 } 454 typedef ip-multicast-group-address { 455 type union { 456 type ipv4-multicast-group-address; 457 type ipv6-multicast-group-address; 458 } 459 description 460 "The ip-multicast-group-address type 461 represents an IP multicast address and 462 is IP version neutral. The format of the 463 textual representations implies the IP version."; 464 } 466 identity address-attribute-types { 467 description 468 "This is base identity of address 469 attribute types which are ip-prefix, 470 bgp, tunnel, pwe3, vpls, etc."; 471 } 473 typedef address-attribute-type { 474 type identityref { 475 base address-attribute-types; 476 } 477 description 478 "Target address attribute type."; 479 } 481 identity time-resolution { 482 description 483 "Time interval resolution"; 484 } 486 identity hours { 487 base time-resolution; 488 description 489 "Time resolution in Hours"; 490 } 492 identity minutes { 493 base time-resolution; 494 description 495 "Time resolution in Minutes"; 496 } 498 identity seconds { 499 base time-resolution; 500 description 501 "Time resolution in Seconds"; 502 } 504 identity milliseconds { 505 base time-resolution; 506 description 507 "Time resolution in Milliseconds"; 508 } 510 identity microseconds { 511 base time-resolution; 512 description 513 "Time resolution in Microseconds"; 514 } 516 identity nanoseconds { 517 base time-resolution; 518 description 519 "Time resolution in Nanoseconds"; 520 } 522 grouping cc-session-statistics { 523 description 524 "Grouping for session statistics."; 525 container cc-session-statistics { 526 description 527 "cc session counters"; 528 leaf session-count { 529 type uint32; 530 description 531 "Number of Continuity Check sessions."; 532 } 533 leaf session-up-count { 534 type uint32; 535 description 536 "Number of sessions which are up."; 537 } 538 leaf session-down-count { 539 type uint32; 540 description 541 "Number of sessions which are down."; 542 } 543 leaf session-admin-down-count { 544 type uint32; 545 description 546 "Number of sessions which are admin-down."; 547 } 548 } 549 } 551 grouping session-packet-statistics { 552 description 553 "Grouping for per session packet statistics"; 554 container session-packet-statistics { 555 description 556 "Per session packet statistics."; 557 leaf rx-packet-count { 558 type uint32; 559 description 560 "Total number of received OAM packet count."; 561 } 562 leaf tx-packet-count { 563 type uint32; 564 description 565 "Total number of transmitted OAM packet count."; 566 } 567 leaf rx-bad-packet { 568 type uint32; 569 description 570 "Total number of received bad OAM packet."; 571 } 572 leaf tx-packet-failed { 573 type uint32; 574 description 575 "Total number of send OAM packet failed."; 576 } 577 } 578 } 580 grouping cc-per-session-statistics { 581 description 582 "Grouping for per session statistics"; 583 container cc-per-session-statistics { 584 description 585 "per session statistics."; 586 leaf create-time { 587 type yang:date-and-time; 588 description 589 "Time and date when session is created."; 590 } 591 leaf last-down-time { 592 type yang:date-and-time; 593 description 594 "Time and date last time session is down."; 595 } 596 leaf last-up-time { 597 type yang:date-and-time; 598 description 599 "Time and date last time session is up."; 600 } 601 leaf down-count { 602 type uint32; 603 description 604 "Total Continuity Check sessions down count."; 605 } 606 leaf admin-down-count { 607 type uint32; 608 description 609 "Total Continuity Check sessions admin down count."; 610 } 611 uses session-packet-statistics; 612 } 613 } 615 grouping session-error-statistics { 616 description 617 "Grouping for per session error statistics"; 618 container session-error-statistics { 619 description 620 "Per session error statistics."; 621 leaf packet-drops-count { 622 type uint32; 623 description 624 "Total received packet drops count."; 625 } 626 leaf packet-reorder-count { 627 type uint32; 628 description 629 "Total received packet reordered count."; 630 } 631 leaf packets-out-of-seq-count { 632 type uint32; 633 description 634 "Total received out of sequence count."; 635 } 636 leaf packets-dup-count { 637 type uint32; 638 description 639 "Total received packet duplicates count."; 640 } 641 } 642 } 644 grouping session-delay-statistics { 645 description 646 "Grouping for per session delay statistics"; 647 container session-delay-statistics { 648 description 649 "Session delay summarised information."; 650 leaf time-resolution-value { 651 type identityref { 652 base time-resolution; 653 } 654 description 655 "Time units among choice of s,ms,ns etc."; 656 } 657 leaf min-delay-value { 658 type uint32; 659 description 660 "Minimum delay value observed."; 661 } 662 leaf max-delay-value { 663 type uint32; 664 description 665 "Maximum delay value observed."; 666 } 667 leaf average-delay-value { 668 type uint32; 669 description 670 "Average delay value observed."; 671 } 672 } 673 } 675 grouping session-jitter-statistics { 676 description 677 "Grouping for per session jitter statistics"; 678 container session-jitter-statistics { 679 description 680 "Session jitter summarised information."; 681 leaf time-resolution-value { 682 type identityref { 683 base time-resolution; 684 } 685 description 686 "Time units among choice of s,ms,ns etc."; 687 } 688 leaf min-jitter-value { 689 type uint32; 690 description 691 "Minimum jitter value observed."; 692 } 693 leaf max-jitter-value { 694 type uint32; 695 description 696 "Maximum jitter value observed."; 697 } 698 leaf average-jitter-value { 699 type uint32; 700 description 701 "Average jitter value observed."; 702 } 703 } 704 } 706 grouping session-path-verification-statistics { 707 description 708 "Grouping for per session path verification statistics"; 709 container session-path-verification-statistics { 710 description 711 "OAM per session path verification statistics."; 712 leaf verified-count { 713 type uint32; 714 description 715 "Total number of OAM packets that 716 went through a path as intended."; 717 } 718 leaf failed-count { 719 type uint32; 720 description 721 "Total number of OAM packets that 722 went through an unintended path."; 723 } 724 } 725 } 727 grouping session-type { 728 description 729 "This object indicates the current session 730 definition."; 731 leaf session-type-enum { 732 type enumeration { 733 enum "proactive" { 734 description 735 "The current session is proactive"; 736 } 737 enum "on-demand" { 738 description 739 "The current session is on-demand."; 740 } 741 } 742 default "on-demand"; 743 description 744 "Session type enum"; 745 } 746 } 748 identity tp-address-technology-type { 749 description 750 "Test point address type"; 751 } 753 identity mac-address-type { 754 base tp-address-technology-type; 755 description 756 "MAC address type"; 757 } 759 identity ipv4-address-type { 760 base tp-address-technology-type; 761 description 762 "IPv4 address type"; 763 } 765 identity ipv6-address-type { 766 base tp-address-technology-type; 767 description 768 "IPv6 address type"; 769 } 771 identity tp-attribute-type { 772 base tp-address-technology-type; 773 description 774 "Test point attribute type"; 775 } 777 identity system-id-address-type { 778 base tp-address-technology-type; 779 description 780 "System id address type"; 781 } 783 identity as-number-address-type { 784 base tp-address-technology-type; 785 description 786 "AS number address type"; 787 } 789 identity group-ip-address-type { 790 base tp-address-technology-type; 791 description 792 "Group IP address type"; 793 } 795 identity route-distinguisher-address-type { 796 base tp-address-technology-type; 797 description 798 "Route Distinguisher address type"; 799 } 801 identity ip-prefix-address-type { 802 base tp-address-technology-type; 803 description 804 "IP prefix address type"; 805 } 807 identity tunnel-address-type { 808 base tp-address-technology-type; 809 description 810 "Tunnel address type"; 811 } 813 grouping tp-address { 814 leaf tp-location-type-value { 815 type identityref { 816 base tp-address-technology-type; 817 } 819 description 820 "Test point address type."; 821 } 822 choice tp-address { 823 case mac-address { 824 when "'tp-location-type-value' = 'mac-address-type'" { 825 description 826 "MAC address type"; 827 } 828 leaf mac-address { 829 type yang:mac-address; 830 description 831 "MAC Address"; 832 } 833 description 834 "MAC Address based MP Addressing."; 835 } 836 case ipv4-address { 837 when "'tp-location-type-value' = 'ipv4-address-type'" { 838 description 839 "IPv4 address type"; 840 } 841 leaf ipv4-address { 842 type inet:ipv4-address; 843 description 844 "IPv4 Address"; 845 } 846 description 847 "IP Address based MP Addressing."; 848 } 849 case ipv6-address { 850 when "'tp-location-type-value' = 'ipv6-address-type'" { 851 description 852 "IPv6 address type"; 853 } 854 leaf ipv6-address { 855 type inet:ipv6-address; 856 description 857 "IPv6 Address"; 858 } 859 description 860 "ipv6 Address based MP Addressing."; 861 } 862 case tp-attribute { 863 when "'tp-location-type-value' = 'tp-attribute-type'" { 864 description 865 "Test point attribute type"; 866 } 867 leaf tp-attribute-type { 868 type address-attribute-type; 869 description 870 "Test point type."; 871 } 872 choice tp-attribute-value { 873 description 874 "Test point value."; 875 case ip-prefix { 876 leaf ip-prefix { 877 type inet:ip-prefix; 878 description 879 "IP prefix."; 880 } 881 } 882 case bgp { 883 leaf bgp { 884 type inet:ip-prefix; 885 description 886 "BGP Labeled Prefix "; 887 } 888 } 889 case tunnel { 890 leaf tunnel-interface { 891 type uint32; 892 description 893 "VPN Prefix "; 894 } 895 } 896 case pw { 897 leaf remote-pe-address { 898 type inet:ip-address; 899 description 900 "Remote pe address."; 901 } 902 leaf pw-id { 903 type uint32; 904 description 905 "Pseudowire ID is a non-zero 32-bit ID."; 906 reference 907 "RFC 4379 :Detecting Multi-Protocol Label 908 Switched (MPLS) Data Plane Failures"; 909 } 911 } 912 case vpls { 913 leaf route-distinguisher { 914 type uint32; 915 description 916 "Route Distinguisher is an 8 octets identifier 917 used to distinguish information about various 918 L2VPN advertised by a node."; 919 reference 920 "RFC 4379 :Detecting Multi-Protocol Label 921 Switched (MPLS) Data Plane Failures"; 922 } 923 leaf sender-ve-id { 924 type uint32; 925 description 926 "Sender's VE ID. The VE ID (VPLS Edge Identifier) 927 is a 2-octet identifier."; 928 reference 929 "RFC 4379 :Detecting Multi-Protocol Label 930 Switched (MPLS) Data Plane Failures"; 931 } 932 leaf receiver-ve-id { 933 type uint32; 934 description 935 "Receiver's VE ID.The VE ID (VPLS Edge Identifier) 936 is a 2-octet identifier."; 937 reference 938 "RFC 4379 :Detecting Multi-Protocol Label 939 Switched (MPLS) Data Plane Failures"; 940 } 941 } 942 case mpls-mldp { 943 choice root-address { 944 description 945 "Root address choice."; 946 case ip-address { 947 leaf source-address { 948 type inet:ip-address; 949 description 950 "IP address."; 951 } 952 leaf group-ip-address { 953 type ip-multicast-group-address; 954 description 955 "Group ip address."; 956 } 957 } 958 case vpn { 959 leaf as-number { 960 type inet:as-number; 961 description 962 "The AS number represents autonomous system 963 numbers which identify an Autonomous System."; 964 } 965 } 966 case global-id { 967 leaf lsp-id { 968 type string; 969 description 970 "LSP ID is an identifier of a LSP 971 within a MPLS network."; 972 reference 973 "RFC 4379 :Detecting Multi-Protocol Label 974 Switched (MPLS) Data Plane Failures"; 975 } 976 } 977 } 978 } 979 } 980 } 981 case system-info { 982 when "'tp-location-type-value' = 'system-id-address-type'" { 983 description 984 "System id address type"; 985 } 986 leaf system-id { 987 type router-id; 988 description 989 "System ID assigned to this node."; 990 } 991 } 992 description 993 "TP Addressing."; 994 } 995 description 996 "TP Address"; 997 } 999 grouping tp-address-vrf { 1000 description 1001 "Test point address with VRF."; 1002 leaf vrf { 1003 type routing-instance-ref; 1004 description 1005 "The vrf is used to describe the 1006 corresponding network instance"; 1008 } 1009 uses tp-address; 1010 } 1012 grouping connectionless-oam-layers { 1013 list oam-layers { 1014 key "index"; 1015 leaf index { 1016 type uint16 { 1017 range "0..65535"; 1018 } 1019 description 1020 "Index"; 1021 } 1022 leaf level { 1023 type int32 { 1024 range "-1..1"; 1025 } 1026 default "0"; 1027 description 1028 "Level 0 indicates default level, 1029 -1 means server and +1 means client layer. 1030 In relationship 0 means same layer."; 1031 } 1032 choice tp-location { 1033 case mac-address { 1034 leaf mac-address-location { 1035 type yang:mac-address; 1036 description 1037 "MAC Address"; 1038 } 1039 description 1040 "MAC Address based MP Addressing."; 1041 } 1042 case ipv4-address { 1043 leaf ipv4-location { 1044 type inet:ipv4-address; 1045 description 1046 "Ipv4 Address"; 1047 } 1048 description 1049 "IP Address based MP Addressing."; 1050 } 1051 case ipv6-location { 1052 leaf ipv6-address { 1053 type inet:ipv6-address; 1054 description 1055 "IPv6 Address"; 1057 } 1058 description 1059 "IPv6 Address based MP Addressing."; 1060 } 1061 case group-ip-address-location { 1062 leaf group-ip-address-location { 1063 type ip-multicast-group-address; 1064 description 1065 "Group IP address location"; 1066 } 1067 description 1068 "Group IP address"; 1069 } 1070 case as-number-location { 1071 leaf as-number-location { 1072 type inet:as-number; 1073 description 1074 "AS number location"; 1075 } 1076 description 1077 "AS number for point to multipoint OAM"; 1078 } 1079 case system-id-location { 1080 leaf system-id-location { 1081 type router-id; 1082 description 1083 "System id location"; 1084 } 1085 description 1086 "System ID"; 1087 } 1088 description 1089 "TP location."; 1090 } 1092 description 1093 "List of related oam layers. 1094 0 means they are in same level, especially 1095 interworking scenarios of stitching multiple 1096 technology at same layer. -1 means server layer, 1097 for eg:- in case of Overlay and Underlay, 1098 Underlay is server layer for Overlay Test Point. 1099 +1 means client layer, for example in case of 1100 Service OAM and Transport OAM, Service OAM is client 1101 layer to Transport OAM."; 1102 } 1103 description 1104 "Connectionless related OAM layer"; 1106 } 1108 grouping tp-technology { 1109 choice technology { 1110 default "technology-null"; 1111 case technology-null { 1112 description 1113 "This is a placeholder when no technology is needed."; 1114 leaf tech-null { 1115 type empty; 1116 description 1117 "There is no technology define"; 1118 } 1119 } 1120 description 1121 "Technology choice."; 1122 } 1123 description 1124 "OAM Technology"; 1125 } 1127 grouping tp-tools { 1128 description 1129 "Test Point OAM Toolset."; 1130 container tp-tools { 1131 leaf continuity-check { 1132 type boolean; 1133 mandatory true; 1134 description 1135 "A flag indicating whether or not the 1136 continuity check function is supported."; 1137 reference 1138 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1139 RFC 4443: Internet Control Message Protocol (ICMPv6) 1140 for the Internet Protocol Version 6 (IPv6) Specification. 1141 RFC 5880: Bidirectional Forwarding Detection. 1142 RFC 5881: BFD for IPv4 and IPv6. 1143 RFC 5883: BFD for Multihop Paths. 1144 RFC 5884: BFD for MPLS Label Switched Paths. 1145 RFC 5885: BFD for PW VCCV. 1146 RFC 6450: Multicast Ping Protocol."; 1147 } 1148 leaf path-discovery { 1149 type boolean; 1150 mandatory true; 1151 description 1152 "A flag indicating whether or not the 1153 path discovery function is supported."; 1155 reference 1156 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1157 RFC 4443: Internet Control Message Protocol (ICMPv6) 1158 for the Internet Protocol Version 6 (IPv6) Specification. 1159 RFC 4884: Extended ICMP to Support Multi-part Message. 1160 RFC 5837:Extending ICMP for Interface 1161 and Next-Hop Identification. 1162 RFC 4379: LSP-PING."; 1163 } 1164 description 1165 "Container for test point OAM tools set."; 1166 } 1167 } 1169 grouping test-point-location-info { 1170 uses tp-technology; 1171 uses tp-tools; 1172 anydata root { 1173 yangmnt:mount-point "root"; 1174 description 1175 "Root for models supported per 1176 test point"; 1177 } 1178 uses connectionless-oam-layers; 1179 description 1180 "Test point Location"; 1181 } 1183 grouping test-point-locations { 1184 description 1185 "Group of test point locations."; 1186 leaf tp-location-type-value { 1187 type identityref { 1188 base tp-address-technology-type; 1189 } 1190 description 1191 "Test point location type."; 1192 } 1193 choice location-type { 1194 case ipv4-location-type { 1195 when "'tp-location-type-value' = 'ipv4-address-type'" { 1196 description 1197 "When test point location type is equal to ipv4 address."; 1198 } 1199 container test-point-ipv4-location-list { 1200 list test-point-locations { 1201 key "ipv4-location"; 1202 leaf ipv4-location { 1203 type inet:ipv4-address; 1204 description 1205 "IPv4 Address."; 1206 } 1207 leaf vrf { 1208 type routing-instance-ref; 1209 description 1210 "The vrf is used to describe the 1211 corresponding network instance"; 1212 } 1213 uses test-point-location-info; 1215 description 1216 "List of test point locations."; 1217 } 1218 description 1219 "Serves as top-level container 1220 for test point location list."; 1221 } 1222 } 1223 case ipv6-location-type { 1224 when "'tp-location-type-value' = 'ipv6-address-type'" { 1225 description 1226 "when test point location is equal to ipv6 address"; 1227 } 1228 container test-point-ipv6-location-list { 1229 list test-point-locations { 1230 key "ipv6-location"; 1231 leaf ipv6-location { 1232 type inet:ipv6-address; 1233 description 1234 "IPv6 Address."; 1235 } 1236 leaf vrf { 1237 type routing-instance-ref; 1238 description 1239 "The vrf is used to describe the 1240 corresponding network instance"; 1241 } 1242 uses test-point-location-info; 1244 description 1245 "List of test point locations."; 1246 } 1247 description 1248 "Serves as top-level container 1249 for test point location list."; 1250 } 1252 } 1253 case mac-location-type { 1254 when "'tp-location-type-value' = 'mac-address-type'" { 1255 description 1256 "when test point location type is equal to mac address."; 1257 } 1258 container test-point-mac-address-location-list { 1259 list test-point-locations { 1260 key "mac-address-location"; 1261 leaf mac-address-location { 1262 type yang:mac-address; 1263 description 1264 "MAC Address"; 1265 } 1266 uses test-point-location-info; 1268 description 1269 "List of test point locations."; 1270 } 1271 description 1272 "Serves as top-level container 1273 for test point location list."; 1274 } 1275 } 1276 case group-ip-address-location-type { 1277 when "'tp-location-type-value' = 'group-ip-address-type'" { 1278 description 1279 "When test point location type is equal to 1280 group ip address."; 1281 } 1282 container test-point-group-ip-address-location-list { 1283 list test-point-locations { 1284 key "group-ip-address-location"; 1285 leaf group-ip-address-location { 1286 type ip-multicast-group-address; 1287 description 1288 "Group IP address."; 1289 } 1290 leaf vrf { 1291 type routing-instance-ref; 1292 description 1293 "The vrf is used to describe the 1294 corresponding network instance"; 1295 } 1296 uses test-point-location-info; 1298 description 1299 "List of test point locations."; 1301 } 1302 description 1303 "Serves as top-level container for 1304 test point location list."; 1305 } 1306 } 1307 case group-as-number-location-type { 1308 when "'tp-location-type-value' = 'as-number-address-type'" { 1309 description 1310 "When test point location type is equal to 1311 as-number."; 1312 } 1313 container test-point-as-number-location-list { 1314 list test-point-locations { 1315 key "as-number-location"; 1316 leaf as-number-location { 1317 type inet:as-number; 1318 description 1319 "AS number for point to multi point OAM."; 1320 } 1321 leaf vrf { 1322 type routing-instance-ref; 1323 description 1324 "The vrf is used to describe the 1325 corresponding network instance"; 1326 } 1327 uses test-point-location-info; 1329 description 1330 "List of test point locations."; 1331 } 1332 description 1333 "Serves as top-level container 1334 for test point location list."; 1335 } 1336 } 1337 case group-system-id-location-type { 1338 when "'tp-location-type-value' = 'system-id-address-type'" { 1339 description 1340 "When test point location is equal to 1341 system info."; 1342 } 1343 container test-point-system-info-location-list { 1344 list test-point-locations { 1345 key "system-id-location"; 1346 leaf system-id-location { 1347 type inet:uri; 1348 description 1349 "System Id."; 1350 } 1351 leaf vrf { 1352 type routing-instance-ref; 1353 description 1354 "The vrf is used to describe the 1355 corresponding network instance"; 1356 } 1357 uses test-point-location-info; 1359 description 1360 "List of test point locations."; 1361 } 1362 description 1363 "Serves as top-level container for 1364 test point location list."; 1365 } 1366 } 1367 description 1368 "Choice of address types."; 1369 } 1370 } 1372 augment "/nd:networks/nd:network/nd:node" { 1373 description 1374 "Augment test points of connectionless oam."; 1375 uses test-point-locations; 1376 } 1378 grouping uint64-timestamp { 1379 description 1380 "Grouping for timestamp."; 1381 leaf timestamp-sec { 1382 type uint32; 1383 description 1384 "Absolute timestamp in seconds as per IEEE1588v2 1385 or seconds part in 64-bit NTP timestamp."; 1386 } 1387 leaf timestamp-nanosec { 1388 type uint32; 1389 description 1390 "Fractional part in nanoseconds as per IEEE1588v2 1391 or Fractional part in 64-bit NTP timestamp."; 1392 } 1393 } 1395 grouping timestamp { 1396 description 1397 "Grouping for timestamp."; 1398 leaf timestamp-type { 1399 type uint32; 1400 description 1401 "Truncated PTP = 0, NTP = 1"; 1402 } 1403 uses uint64-timestamp; 1404 } 1406 grouping path-discovery-data { 1407 description 1408 "Path discovery related data output from nodes."; 1409 container src-test-point { 1410 description 1411 "Source test point."; 1412 uses tp-address-vrf; 1413 } 1414 container dest-test-point { 1415 description 1416 "Destination test point."; 1417 uses tp-address-vrf; 1418 } 1419 leaf sequence-number { 1420 type uint64; 1421 description 1422 "Sequence number in data packets."; 1423 } 1424 leaf hop-cnt { 1425 type uint8; 1426 description 1427 "Hop count."; 1428 } 1429 uses session-packet-statistics; 1430 uses session-error-statistics; 1431 uses session-delay-statistics; 1432 uses session-jitter-statistics; 1433 container path-verification { 1434 description 1435 "Optional path verification related information."; 1436 leaf flow-info { 1437 type string; 1438 description 1439 "Informations that refers to the flow."; 1440 } 1441 uses session-path-verification-statistics; 1442 } 1443 container path-trace-info { 1444 description 1445 "Optional path trace per-hop test point information. 1446 The list has typically a single element for per-hop 1447 cases like path-discovery RPC but allows a list of 1448 hop related information for other types of 1449 data retrieval methods."; 1450 list path-trace-info-list { 1451 key "index"; 1452 description 1453 "Path trace information list."; 1454 leaf index { 1455 type uint32; 1456 description 1457 "Trace information index."; 1458 } 1459 uses tp-address-vrf; 1460 uses timestamp; 1461 leaf ingress-intf-name { 1462 type if:interface-ref; 1463 description 1464 "Ingress interface name"; 1465 } 1466 leaf egress-intf-name { 1467 type if:interface-ref; 1468 description 1469 "Egress interface name"; 1470 } 1471 leaf queue-depth { 1472 type uint32; 1473 description 1474 "Length of the egress interface 1475 queue of the interface."; 1476 } 1477 leaf transit-delay { 1478 type uint32; 1479 description 1480 "Time in nano seconds 1481 packet spent transiting a node."; 1482 } 1483 leaf app-meta-data { 1484 type uint64; 1485 description 1486 "Application specific 1487 data added by node."; 1488 } 1489 } 1490 } 1491 } 1492 grouping continuity-check-data { 1493 description 1494 "Continuity check data output from nodes."; 1495 container src-test-point { 1496 description 1497 "Source test point."; 1498 uses tp-address-vrf; 1499 leaf egress-intf-name { 1500 type if:interface-ref; 1501 description 1502 "Egress interface name"; 1503 } 1504 } 1505 container dest-test-point { 1506 description 1507 "Destination test point."; 1508 uses tp-address-vrf; 1509 leaf ingress-intf-name { 1510 type if:interface-ref; 1511 description 1512 "Ingress interface name"; 1513 } 1514 } 1515 leaf sequence-number { 1516 type uint64; 1517 description 1518 "Sequence number."; 1519 } 1520 leaf hop-cnt { 1521 type uint8; 1522 description 1523 "Hop count."; 1524 } 1525 uses session-packet-statistics; 1526 uses session-error-statistics; 1527 uses session-delay-statistics; 1528 uses session-jitter-statistics; 1529 } 1531 container cc-session-statistics-data { 1532 if-feature "continuity-check"; 1533 config false; 1534 description 1535 "CC operational information."; 1536 container cc-ipv4-sessions-statistics { 1537 description 1538 "CC ipv4 sessions"; 1539 uses cc-session-statistics; 1541 } 1542 container cc-ipv6-sessions-statistics { 1543 description 1544 "CC ipv6 sessions"; 1545 uses cc-session-statistics; 1546 } 1547 } 1548 } 1550 1552 5. Connectionless model applicability 1554 "ietf-connectionless-oam" model defined in this document provides 1555 technology-independent abstraction of key OAM constructs for 1556 connectionless protocols. This model can be further extended to 1557 include technology specific details, e.g., adding new data nodes with 1558 technology specific functions and parameters into proper anchor 1559 points of the base model, so as to develop a technology-specific 1560 connectionless OAM model. 1562 This section demonstrates the usability of the connectionless YANG 1563 OAM data model to various connectionless OAM technologies, e.g., BFD, 1564 LSP ping. Note that, in this section, we only present several 1565 snippets of technology-specific model extensions for illustrative 1566 purposes. The complete model extensions should be worked on in 1567 respective protocol working groups. 1569 5.1. BFD Extension 1571 5.1.1. Augment Method 1573 The following sections shows how the "ietf-connectionless-oam" model 1574 can be extended to cover BFD technology. For this purpose, a set of 1575 extension are introduced such as technology-type extension and test- 1576 point attributes extension. 1578 Note that in BFD WG, there is a BFD yang data model 1579 [I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf- 1580 connectioless-oam" as basis and augment the "ietf-connectionless-oam" 1581 model with bfd specific details. The bfd specific details can be the 1582 grouping defined in the BFD model. 1584 5.1.1.1. Technology type extension 1586 No BFD technology type has been defined in the "ietf-connectionless- 1587 oam" model. Therefore a technology type extension is required in the 1588 model Extension. 1590 The snippet below depicts an example of augmenting "bfd" type into 1591 the ietf-connectionless-oam": 1593 augment "/nd:networks/nd:network/nd:node/" 1594 +"coam:location-type/coam:ipv4-location-type" 1595 +"/coam:test-point-ipv4-location-list/" 1596 +"coam:test-point-locations/coam:technology" 1597 +"/coam:technology-string" 1598 { 1599 leaf bfd{ 1600 type string; 1601 } 1602 } 1604 5.1.1.2. Test point attributes extension 1606 To support bfd technology, the "ietf-connectionless-oam" model can be 1607 extended and add bfd specific parameters under "test-point-location" 1608 list and/or add new location type such as "bfd over MPLS-TE" under 1609 "location-type". 1611 5.1.1.2.1. Define and insert new nodes into corresponding test-point- 1612 location 1614 In the "ietf-connectionless-oam" model, multiple "test-point- 1615 location" lists are defined under the "location-type" choice node. 1616 Therefore, to derive a model for some bfd technologies ( such as ip 1617 single-hop, ip multi-hops, etc), data nodes for bfd specific details 1618 need to be added into corresponding "test-point-locations" list. In 1619 this section, we reuse some groupings which are defined in 1620 [I-D.ietf-bfd-yang] as following: 1622 The snippet below shows how the "ietf-connectionless-oam" model can 1623 be extended to support "BFD IP single-hop": 1625 augment "/nd:networks/nd:network/nd:node/" 1626 +"coam:location-type/coam:ipv4-location-type" 1627 +"/coam:test-point-ipv4-location-list/" 1628 +"coam:test-point-locations" 1629 { 1630 container session-cfg { 1631 description "BFD IP single-hop session configuration"; 1632 list sessions { 1633 key "interface dest-addr"; 1634 description "List of IP single-hop sessions"; 1635 leaf interface { 1636 type if:interface-ref; 1637 description 1638 "Interface on which the BFD session is running."; 1639 } 1640 leaf dest-addr { 1641 type inet:ip-address; 1642 description "IP address of the peer"; 1643 } 1644 uses bfd:bfd-grouping-common-cfg-parms; 1645 uses bfd:bfd-grouping-echo-cfg-parms; 1646 } 1647 } 1648 } 1650 Similar augmentations can be defined to support other BFD 1651 technologies such as BFD IP multi-hop, BFD over MPLS, etc. 1653 5.1.1.2.2. Add new location-type cases 1655 In the "ietf-connectionless-oam" model, If there is no appropriate 1656 "location type" case that can be extended, a new "location-type" case 1657 can be defined and inserted into the "location-type" choice node. 1659 Therefore, the model user can flexibly add "location-type" to support 1660 other type of test point which are not defined in the "ietf- 1661 connectionless-oam" model. In this section, we add a new "location- 1662 type" case and reuse some groupings which are defined in 1663 [I-D.ietf-bfd-yang] as follows: 1665 The snippet below shows how the "ietf-connectionless-oam" model can 1666 be extended to support "BFD over MPLS-TE": 1668 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 1669 case te-location{ 1670 list test-point-location-list{ 1671 key "tunnel-name"; 1672 leaf tunnel-name{ 1673 type leafref{ 1674 path "/te:te/te:tunnels/te:tunnel/te:name"; 1675 } 1676 description 1677 "point to a te instance."; 1678 } 1679 uses bfd:bfd-grouping-common-cfg-parms; 1680 uses bfd-mpls:bfd-encap-cfg; 1681 } 1682 } 1683 } 1685 Similar augmentations can be defined to support other BFD 1686 technologies such as BFD over LAG, etc. 1688 5.1.2. Schema Mount 1690 And another alternative method is using schema mount mechanism 1691 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 1692 Within the "test-point-location" list, a "root" attribute is defined 1693 to provide a mounted point for models mounted per "test-point- 1694 location". Therefore, the "ietf-connectionless-oam" model can 1695 provide a place in the node hierarchy where other OAM YANG data 1696 models can be attached, without any special extension in the "ietf- 1697 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 1698 Note that the limitation of the Schema Mount method is it is not 1699 allowed to specify certain modules that are required to be mounted 1700 under a mount point. 1702 The snippet below depicts the definition of "root" attribute. 1704 anydata root { 1705 yangmnt:mount-point root; 1706 description 1707 "Root for models supported per 1708 test point"; 1709 } 1711 The following section shows how the "ietf-connectionless-oam" model 1712 can use schema mount to support BFD technology. 1714 5.1.2.1. BFD Modules be populated in schema-mount 1716 To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG 1717 modules might be populated in the "schema-mounts" container: 1719 1721 1722 ietf-connectionless-oam 1723 root 1724 1725 root 1726 1727 1728 1729 root 1730 1731 ietf-bfd-ip-sh 1732 2016-07-04 1733 1734 urn:ietf:params:xml:ns:yang: ietf-bfd-ip-sh 1735 1736 implement 1737 1738 1739 ietf-bfd-ip-mh 1740 2016-07-04 1741 1742 urn:ietf:params:xml:ns:yang: ietf-bfd-ip-mh 1743 1744 implement 1745 1746 1747 1749 and the " ietf-connectionless-oam " module might have: 1751 1753 ...... 1754 1755 192.0.2.1 1756 ...... 1757 1758 1759 1760 foo 1761 ...... 1762 1763 1764 1765 1766 foo 1767 ...... 1768 1769 1770 1771 1772 1774 5.2. LSP ping extension 1776 5.2.1. Augment Method 1778 The following sections shows how the "ietf-connectionless-oam" model 1779 can be extended to support LSP ping technology. For this purpose, a 1780 set of extension are introduced such as technology-type extension and 1781 test-point attributes extension. 1783 Note that in MPLS WG, there is a LSP Ping yang data model 1784 [I-D.zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can choose 1785 to use "ietf-connectioless-oam" as basis and augment the "ietf- 1786 connectionless-oam" model with LSP Ping specific details in the model 1787 extension. The LSP Ping specific details can be the grouping defined 1788 in the LSP ping model. 1790 5.2.1.1. Technology type extension 1792 No lsp-ping technology type has been defined in the "ietf- 1793 connectionless-oam" model. Therefore a technology type extension is 1794 required in the model extension. 1796 The snippet below depicts an example of augmenting the "ietf- 1797 connectionless-oam" with "lsp-ping" type: 1799 augment "/nd:networks/nd:network/nd:node/" 1800 +"coam:location-type/coam:ipv4-location-type" 1801 +"/coam:test-point-ipv4-location-list/" 1802 +"coam:test-point-locations/coam:technology" 1803 +"/coam:technology-string" 1804 { 1805 leaf lsp-ping{ 1806 type string; 1807 } 1808 } 1810 5.2.1.2. Test point attributes extension 1812 To support lsp-ping, the "ietf-connectionless-oam" model can be 1813 extended and add lsp-ping specific parameters can be defined and 1814 under "test-point-location" list. 1816 User can reuse the attributes or groupings which are defined in 1817 [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: 1819 The snippet below depicts an example of augmenting the "test-point- 1820 locations" list with lsp ping attributes: 1822 augment "/nd:networks/nd:network/nd:node/" 1823 +"coam:location-type/coam:ipv4-location-type" 1824 +"/coam:test-point-ipv4-location-list/" 1825 +"coam:test-point-locations" 1826 { 1827 list lsp-ping { 1828 key "lsp-ping-name"; 1829 leaf lsp-ping-name { 1830 type string { 1831 length "1..31"; 1832 } 1833 mandatory "true"; 1834 description "LSP Ping test name."; 1835 ...... 1836 } 1838 5.2.2. Schema Mount 1840 And another alternative method is using schema mount mechanism 1841 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 1842 Within the "test-point-location" list, a "root" attribute is defined 1843 to provide a mounted point for models mounted per "test-point- 1844 location". Therefore, the "ietf-connectionless-oam" model can 1845 provide a place in the node hierarchy where other OAM YANG data 1846 models can be attached, without any special extension in the "ietf- 1847 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 1848 Note that the limitation of the Schema Mount method is it is not 1849 allowed to specify certain modules that are required to be mounted 1850 under a mount point. 1852 The snippet below depicts the definition of "root" attribute. 1854 anydata root { 1855 yangmnt:mount-point root; 1856 description 1857 "Root for models supported per 1858 test point"; 1859 } 1861 The following section shows how the "ietf-connectionless-oam" model 1862 can use schema mount to support LSP-PING technology. 1864 5.2.2.1. LSP-PING Modules be populated in schema-mount 1866 To support LSP-PING technology, "ietf-lspping" YANG module 1867 [I-D.zheng-mpls-lsp-ping-yang-cfg] might be populated in the "schema- 1868 mounts" container: 1870 1872 1873 ietf-connectionless-oam 1874 root 1875 1876 root 1877 1878 1879 1880 root 1881 1882 ietf-lspping 1883 2016-03-18 1884 1885 urn:ietf:params:xml:ns:yang: ietf-lspping 1886 1887 implement 1888 1889 1890 1892 and the " ietf-connectionless-oam " module might have: 1894 1896 ...... 1897 1898 192.0.2.1 1899 ...... 1900 1901 1902 1903 foo 1904 ...... 1905 1906 1907 1908 1909 1911 6. Security Considerations 1913 The YANG module defined in this memo is designed to be accessed via 1914 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1915 secure transport layer and the mandatory-to-implement secure 1916 transport is SSH [RFC6242]. The NETCONF access control model 1917 [RFC6536] provides the means to restrict access for particular 1918 NETCONF users to a pre-configured subset of all available NETCONF 1919 protocol operations and content. 1921 There are a number of data nodes defined in the YANG module which are 1922 writable/creatable/deletable (i.e., config true, which is the 1923 default). These data nodes may be considered sensitive or vulnerable 1924 in some network environments. Write operations (e.g. ) 1925 to these data nodes without proper protection can have a negative 1926 effect on network operations. 1928 The vulnerable "config true" subtrees and data nodes are the 1929 following: 1931 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv4- 1932 location-type/coam:test-point-ipv4-location-list/coam:test-point- 1933 locations/ 1935 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv6- 1936 location-type/coam:test-point-ipv6-location-list/coam:test-point- 1937 locations/ 1939 /nd:networks/nd:network/nd:node/coam:location-type/coam:mac-location- 1940 type/coam:test-point-mac-address-location-list/coam:test-point- 1941 locations/ 1942 /nd:networks/nd:network/nd:node/coam:location-type/coam:tunnel- 1943 location-type/coam:test-point-tunnel-address-location-list/coam:test- 1944 point-locations/ 1946 /nd:networks/nd:network/nd:node/coam:location-type/coam:ip-prefix- 1947 location-type/coam:test-point-ip-prefix-location-list/coam:test- 1948 point-locations/ 1950 /nd:networks/nd:network/nd:node/coam:location-type/coam:route- 1951 distinguisher-location-type/coam:test-point-route-dist-location-list/ 1952 coam:test-point-locations/ 1954 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-ip- 1955 address-location-type/coam:test-point-group-ip-address-location-list/ 1956 coam:test-point-locations/ 1958 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-as- 1959 number-location-type/coam:test-point-as-number-location-list/ 1960 coam:test-point-locations/ 1962 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-lsp-id- 1963 location-type/coam:test-point-lsp-id-location-list/coam:test-point- 1964 locations/ 1966 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-system- 1967 id-location-type/coam:test-point-system-info-location-list/coam:test- 1968 point-locations/ 1970 Unauthorized access to any of these lists can adversely affect OAM 1971 management system handling of end-to-end OAM and coordination of OAM 1972 within underlying network layers. This may lead to inconsistent 1973 configuration, reporting, and presentation for the OAM mechanisms 1974 used to manage the network. 1976 7. IANA Considerations 1978 This document registers a URI in the IETF XML registry [RFC3688]. 1979 Following the format in [RFC3688] the following registration is 1980 requested to be made: 1982 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 1984 Registrant Contact: The IESG. 1986 XML: N/A, the requested URI is an XML namespace. 1988 This document registers a YANG module in the YANG Module Names 1989 registry [RFC6020]. 1991 name: ietf-connectionless-oam 1993 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 1995 prefix: coam 1997 reference: RFC XXXX 1999 8. Acknowlegements 2001 The authors of this document would like to thank Greg Mirsky and 2002 others for their sustainable review and comments, proposals to 2003 improve and stabilize document. 2005 9. References 2007 9.1. Normative References 2009 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2010 DOI 10.17487/RFC3688, January 2004, 2011 . 2013 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 2014 Control Message Protocol (ICMPv6) for the Internet 2015 Protocol Version 6 (IPv6) Specification", RFC 4443, 2016 DOI 10.17487/RFC4443, March 2006, 2017 . 2019 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2020 the Network Configuration Protocol (NETCONF)", RFC 6020, 2021 DOI 10.17487/RFC6020, October 2010, 2022 . 2024 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2025 and A. Bierman, Ed., "Network Configuration Protocol 2026 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2027 . 2029 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2030 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2031 . 2033 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2034 Protocol (NETCONF) Access Control Model", RFC 6536, 2035 DOI 10.17487/RFC6536, March 2012, 2036 . 2038 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2039 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2040 . 2042 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 2043 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 2044 . 2046 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2047 September 1981. 2049 9.2. Informative References 2051 [G.8013] "OAM functions and mechanisms for Ethernet based 2052 networks", ITU-T Recommendation G.8013/Y.1731, 2013. 2054 [I-D.ietf-bfd-yang] 2055 Rahman, R., Zheng, L., Networks, J., Jethanandani, M., and 2056 G. Mirsky, "Yang Data Model for Bidirectional Forwarding 2057 Detection (BFD)", draft-ietf-bfd-yang-05 (work in 2058 progress), March 2017. 2060 [I-D.ietf-i2rs-yang-network-topo] 2061 Clemm, A., Medved, J., Varga, R., Bahadur, N., 2062 Ananthakrishnan, H., and X. Liu, "A Data Model for Network 2063 Topologies", draft-ietf-i2rs-yang-network-topo-12 (work in 2064 progress), March 2017. 2066 [I-D.ietf-lime-yang-connection-oriented-oam-model] 2067 Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model 2068 for Connection Oriented Operations, Administration, and 2069 Maintenance(OAM) protocols", draft-ietf-lime-yang- 2070 connection-oriented-oam-model-00 (work in progress), June 2071 2017. 2073 [I-D.ietf-lime-yang-connectionless-oam-methods] 2074 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 2075 "Retrieval Methods YANG Data Model for Connectionless 2076 Operations, Administration, and Maintenance(OAM) 2077 protocols", draft-ietf-lime-yang-connectionless-oam- 2078 methods-04 (work in progress), June 2017. 2080 [I-D.ietf-netmod-schema-mount] 2081 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 2082 ietf-netmod-schema-mount-05 (work in progress), May 2017. 2084 [I-D.ietf-spring-sr-yang] 2085 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 2086 Data Model for Segment Routing", draft-ietf-spring-sr- 2087 yang-06 (work in progress), March 2017. 2089 [I-D.zheng-mpls-lsp-ping-yang-cfg] 2090 Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. 2091 Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- 2092 lsp-ping-yang-cfg-04 (work in progress), October 2016. 2094 [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual 2095 Private Network (L2VPN) Operations, Administration, and 2096 Maintenance (OAM) Requirements and Framework", RFC 6136, 2097 DOI 10.17487/RFC6136, March 2011, 2098 . 2100 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 2101 Weingarten, "An Overview of Operations, Administration, 2102 and Maintenance (OAM) Tools", RFC 7276, 2103 DOI 10.17487/RFC7276, June 2014, 2104 . 2106 Authors' Addresses 2108 Deepak Kumar 2109 CISCO Systems 2110 510 McCarthy Blvd 2111 Milpitas, CA 95035 2112 USA 2114 Email: dekumar@cisco.com 2116 Michael Wang 2117 Huawei Technologies,Co.,Ltd 2118 101 Software Avenue, Yuhua District 2119 Nanjing 210012 2120 China 2122 Email: wangzitao@huawei.com 2123 Qin Wu 2124 Huawei 2125 101 Software Avenue, Yuhua District 2126 Nanjing, Jiangsu 210012 2127 China 2129 Email: bill.wu@huawei.com 2131 Reshad Rahman 2132 CISCO Systems 2133 2000 Innovation Drive 2134 KANATA, ONTARIO K2K 3E8 2135 CANADA 2137 Email: rrahman@cisco.com 2139 Srihari Raghavan 2140 CISCO Systems 2141 TRIL INFOPARK SEZ, Ramanujan IT City 2142 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 2143 CHENNAI, TAMIL NADU 600113 2144 INDIA 2146 Email: srihari@cisco.com