idnits 2.17.00 (12 Aug 2021) /tmp/idnits40948/draft-ietf-lime-yang-connectionless-oam-09.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 16 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 == Line 368 has weird spacing: '...y-check boo...' == Line 394 has weird spacing: '...y-check boo...' == Line 419 has weird spacing: '...y-check boo...' == Line 445 has weird spacing: '...y-check boo...' == Line 471 has weird spacing: '...y-check boo...' -- The document date (August 31, 2017) is 1723 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 2140, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 2144, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) == Outdated reference: draft-ietf-bfd-yang has been published as RFC 9127 == Outdated reference: draft-ietf-i2rs-yang-network-topo has been published as RFC 8345 == Outdated reference: draft-ietf-lime-yang-connection-oriented-oam-model has been published as RFC 8531 == Outdated reference: draft-ietf-lime-yang-connectionless-oam-methods has been published as RFC 8533 == Outdated reference: draft-ietf-netmod-schema-mount has been published as RFC 8528 == Outdated reference: draft-ietf-spring-sr-yang has been published as RFC 9020 == Outdated reference: A later version (-10) exists of draft-zheng-mpls-lsp-ping-yang-cfg-05 Summary: 4 errors (**), 0 flaws (~~), 15 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 4, 2018 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 August 31, 2017 12 Generic YANG Data Model for Connectionless Operations, Administration, 13 and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-09 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 4, 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 . . . . . . . . . . . . . . . . . 6 68 3.4. Test Point Locations Information . . . . . . . . . . . . 7 69 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 70 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 8 71 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 72 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 73 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 11 74 5. Connectionless model applicability . . . . . . . . . . . . . 35 75 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 36 76 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 36 77 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 38 78 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 40 79 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 40 80 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 41 81 6. Security Considerations . . . . . . . . . . . . . . . . . . . 43 82 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 83 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 45 84 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 85 9.1. Normative References . . . . . . . . . . . . . . . . . . 45 86 9.2. Informative References . . . . . . . . . . . . . . . . . 46 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 89 1. Introduction 91 Operations, Administration, and Maintenance (OAM) are important 92 networking functions that allow operators to: 94 1. Monitor networks connections (Reachability Verification, 95 Continuity Check). 97 2. Troubleshoot failures (Fault verification and localization). 99 3. Monitor Performance 101 An overview of OAM tools is presented at [RFC7276]. 103 Ping and Traceroute [RFC792], [RFC4443] are well-known fault 104 verification and isolation tools, respectively, for IP networks. 105 Over the years, different technologies have developed similar tools 106 for similar purposes. 108 The different OAM tools may support connection-oriented technologies 109 or connectionless technologies. In connection-oriented technologies, 110 a connection is established prior to the transmission of data. In 111 connectionless technologies, data is typically sent between end 112 points without prior arrangement [RFC7276]. Note that the 113 Connection-Oriented OAM YANG DATA model is defined in 114 [I-D.ietf-lime-yang-connection-oriented-oam-model]. 116 In this document, we presents a base YANG Data model for 117 connectionless OAM protocols. The generic YANG model for 118 connectionless OAM only includes configuration data and state data. 119 It can be used in conjunction with data retrieval method model 120 [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on 121 data retrieval procedures like RPC. However it also can be used 122 independently of data retrieval method model. 124 2. Conventions used in this document 126 The following terms are defined in [RFC6241] and are not redefined 127 here: 129 o client 131 o configuration data 133 o server 135 o state data 137 The following terms are defined in [RFC6020] and are not redefined 138 here: 140 o augment 142 o data model 144 o data node 145 The terminology for describing YANG data models is found in 146 [RFC6020]. 148 2.1. Terminology 150 TP - Test Point 152 MAC - Media Access Control 154 BFD - Bidirectional Forwarding Detection 156 RPC - A Remote Procedure Call 158 RPC operation - A specific Remote Procedure Call. 160 CC - Continuity Check [RFC7276] , Continuity Checks are used to 161 verify that a destination is reachable and therefore also referred to 162 as reachability verification 164 3. Overview of the Connectionless OAM Model 166 The model is augmented to "/nd:networks/nd:network/nd:node" using 167 'test-point-locations' defined below. 'tp-tools' grouping defined in 168 this model supports both proactive and on-demand activation. 170 At the top of the model, there is an 'cc-oper-data' container for 171 session statistics. Grouping is also defined for common session 172 statistics and these are only applicable for proactive OAM sessions. 174 Multiple 'test-point-locations' keyed using technology specific keys 175 (eg., IPv4 address for IPv4 locations) are augmented into network 176 nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] to 177 describe the network hierarchies and the inventory of nodes contained 178 in a network. Each test point location under 'test-point-locations 179 'grouping is chosen based on 'tp-location-type' leaf which when 180 chosen, leads to a container that includes a list of 'test-point- 181 locations' keyed by technology specific keys(e.g., 182 'ipv4-location'leaf). Each test point location under 'test-point- 183 locations 'grouping includes a 'test-point-location-info' grouping. 184 The 'test-point-location-info' grouping includes 'tp-technology' 185 grouping, 'tp-tools' grouping, and 'connectionless-oam-layers' 186 grouping. The groupings of 'tp-address' and 'tp-address-ni' are kept 187 out of 'test-point-location-info' grouping to make it addressing 188 agnostic and allow varied composition. Depending upon the choice of 189 the 'tp-location-type' (determined by the 'tp-address-ni'), the 190 containers differ in its composition of 'test- point-locations' while 191 the 'test-point-location-info', is a common aspect of every 'test- 192 point-location'. The 'tp-address-ni' grouping is used to describe 193 the corresponding network instance. The 'tp-technology'grouping 194 indicate OAM technology details. The 'tp-tools' grouping describe 195 the OAM tools supported. The 'connectionless-oam-layers' grouping is 196 used to describe the relationship of one test point with other test 197 points. The 'technology-level' in 'oam-neighboring-layers'indicate 198 relative technology level of neighboring test point corresponding to 199 the current test point. 201 3.1. TP Address 203 In connectionless OAM, the TP address is defined with the following 204 type: 206 o MAC address [RFC6136] 208 o IPv4 or IPv6 address 210 o TP-attribute 212 o System-id to represent the device or 213 node.[I-D.ietf-spring-sr-yang] 215 To define a forwarding treatment of a test packet, the 'tp- 216 address'grouping needs to be associated with additional parameters, 217 e.g. DSCP for IP or EXP for MPLS. In generic connectionless OAM 218 YANG model, these parameters are not explicit configured. The model 219 user can add corresponding parameters according to their 220 requirements. 222 3.2. Tools 224 The different OAM tools may be used in one of two basic types of 225 activation: proactive and on-demand. The proactive OAM refers to OAM 226 actions which are carried out continuously to permit proactive 227 reporting of fault. The proactive OAM method requires persistent 228 configuration. The on-demand OAM refers to OAM actions which are 229 initiated via manual intervention for a limited time to carry out 230 diagnostics. The on-demand OAM method requires only transient 231 configuration.[RFC7276] [G.8013]. In connectionless OAM, 'session- 232 type' grouping is defined to indicate which kind of activation will 233 be used by the current session. 235 In connectionless OAM, the tools attribute is used to describe a 236 toolset for fault detection and isolation. And it can serve as a 237 constraint condition when the base model be extended to specific OAM 238 technology. For example, to fulfill the ICMP PING configuration, the 239 "../coam:continuity-check" leaf should be set to "true", and then the 240 lime base model should be augmented with ICMP PING specific details. 242 3.3. OAM neighboring layers 244 As typical networks have a multi-layer architecture, the set of OAM 245 protocols similarly take a multi-layer structure; each layer may has 246 its own OAM protocol [RFC7276] and is corresponding to specific 247 administrative domain and has associated test points. OAM- 248 neighboring-layers is referred to a list of neighboring test points 249 in the upstream layer and/or downstream layer and the same layer that 250 are related to current test point. This allows users to easily 251 navigate between related neighboring layer to efficiently 252 troubleshoot a defect. In this model, we have kept level default as 253 0, when a list of neighboring test points under 'oam-neighboring- 254 layers' list are located at the same layer as the current test point. 255 'Technology-Level'leaf defines the relative technology level of 256 neighboring test point corresponding to the current test point in 257 multi-layer and multi-technology networks , and is provided to allow 258 correlation of faults at different administrative and technology 259 layers . If there is one neighboring test point at higher layer of 260 the current test point, 'Technology-level'leaf is set to 1. If there 261 is one neighboring test point at lower layer of the current test 262 point, 'Technology-level'leaf is set to -1. 264 list oam-neighboring-layers { 265 key "index"; 266 leaf index { 267 type uint8 { 268 range "0..128"; 269 } 270 description 271 "Index of a list of neighboring test points 272 in the upstream layer and/or downstream layer 273 and/or same layer "; 274 } 275 leaf technology-level { 276 type int8 { 277 range "-1..1"; 278 } 279 description 280 "The relative technology level 281 of neighboring test point 282 corresponding to the current 283 test point"; 284 } 286 description 287 "List of related neighboring test points at upstream layer 288 and or downstream layer or at the same layer."; 290 } 292 3.4. Test Point Locations Information 294 This is a generic grouping for Test Point Locations Information 295 (i.e., test-point-location-info grouping). It Provide details of 296 Test Point Location using 'tp-technology','tp-tool'grouping, 'OAM- 297 neighboring Layers' grouping defined above. 299 3.5. Test Point Locations 301 This is a generic grouping for Test Point Locations. 'tp-location- 302 type 'leaf is used to define locations types, for example 'ipv4- 303 location-type', 'ipv6-location-type', etc. Container is defined 304 under each location type containing list keyed to test point address, 305 Test Point Location Information defined in section above, and network 306 instance name(e.g.,VRF instance name) if required. 308 3.6. Path Discovery Data 310 This is a generic grouping for path discovery data model that can be 311 retrieved by any data retrieval methods including RPC operations. 312 Path discovery data output from methods, includes 'src-test-point' 313 container, 'dst- test-point' container, 'sequence-number'leaf, 'hop- 314 cnt'leaf, session statistics of various kinds, path verification and 315 path trace related information. Path discovery includes data to be 316 retrieved on a 'per- hop' basis via a list of 'path-trace-info- 317 list'list which includes information like 'timestamp'grouping, ' 318 ingress-intf-name ', ' egress-intf-name ' and 'app-meta-data'. The 319 path discovery data model is made generic enough to allow different 320 methods of data retrieval. None of the fields are made mandatory for 321 that reason. Noted that the retrieval methods are defined in 322 [I-D.ietf-lime-yang-connectionless-oam-methods]. 324 3.7. Continuity Check Data 326 This is a generic grouping for continuity check data model that can 327 be retrieved by any data retrieval methods including RPC operations. 328 Continuity check data output from methods, includes 'src-test- 329 point'container, 'dst-test-point'container, 'sequence-number' leaf, 330 'hop-cnt'leaf and session statistics of various kinds. The 331 continuity check data model is made generic enough to allow different 332 methods of data retrieval. None of the fields are made mandatory for 333 that reason. Noted that the retrieval methods are defined in 334 [I-D.ietf-lime-yang-connectionless-oam-methods]. 336 3.8. OAM data hierarchy 338 The complete data hierarchy related to the OAM YANG model is 339 presented below. 341 module: ietf-connectionless-oam 342 +--ro cc-session-statistics-data {continuity-check}? 343 +--ro cc-ipv4-sessions-statistics 344 | +--ro cc-session-statistics 345 | +--ro session-count? uint32 346 | +--ro session-up-count? uint32 347 | +--ro session-down-count? uint32 348 | +--ro session-admin-down-count? uint32 349 +--ro cc-ipv6-sessions-statistics 350 +--ro cc-session-statistics 351 +--ro session-count? uint32 352 +--ro session-up-count? uint32 353 +--ro session-down-count? uint32 354 +--ro session-admin-down-count? uint32 355 augment /nd:networks/nd:network/nd:node: 357 +--rw tp-location-type? identityref 358 +--rw location-type 359 +--rw ipv4-location-type 360 | +--rw test-point-ipv4-location-list 361 | +--rw test-point-locations* [ipv4-location ni] 362 | +--rw ipv4-location inet:ipv4-address 363 | +--rw ni routing-instance-ref 364 | +--rw (technology)? 365 | | +--:(technology-null) 366 | | +--rw tech-null? empty 367 | +--rw tp-tools 368 | | +--rw continuity-check boolean 369 | | +--rw path-discovery boolean 370 | +--rw root? 371 | +--rw oam-neighboring-layers* [index] 372 | +--rw index uint8 373 | +--rw level? int8 374 | +--rw (tp-location)? 375 | +--:(mac-address) 376 | | +--rw mac-address-location? yang:mac-address 377 | +--:(ipv4-address) 378 | | +--rw ipv4-address-location? inet:ipv4-address 379 | +--:(ipv6-address) 380 | | +--rw ipv6-address-location? inet:ipv6-address 381 | +--:(as-number) 382 | | +--rw as-number-location? inet:as-number 383 | +--:(system-id) 384 | +--rw system-id-location? router-id 385 +--rw ipv6-location-type 386 | +--rw test-point-ipv6-location-list 387 | +--rw test-point-locations* [ipv6-location ni] 388 | +--rw ipv6-location inet:ipv6-address 389 | +--rw ni routing-instance-ref 390 | +--rw (technology)? 391 | | +--:(technology-null) 392 | | +--rw tech-null? empty 393 | +--rw tp-tools 394 | | +--rw continuity-check boolean 395 | | +--rw path-discovery boolean 396 | +--rw root? 397 | +--rw oam-neighboring-layers* [index] 398 | +--rw index uint8 399 | +--rw level? int8 400 | +--rw (tp-location)? 401 | +--:(mac-address) 402 | | +--rw mac-address-location? yang:mac-address 403 | +--:(ipv4-address) 404 | | +--rw ipv4-address-location? inet:ipv4-address 405 | +--:(ipv6-address) 406 | | +--rw ipv6-address-location? inet:ipv6-address 407 | +--:(as-number) 408 | | +--rw as-number-location? inet:as-number 409 | +--:(system-id) 410 | +--rw system-id-location? router-id 411 +--rw mac-location-type 412 | +--rw test-point-mac-address-location-list 413 | +--rw test-point-locations* [mac-address-location] 414 | +--rw mac-address-location yang:mac-address 415 | +--rw (technology)? 416 | | +--:(technology-null) 417 | | +--rw tech-null? empty 418 | +--rw tp-tools 419 | | +--rw continuity-check boolean 420 | | +--rw path-discovery boolean 421 | +--rw root? 422 | +--rw oam-neighboring-layers* [index] 423 | +--rw index uint8 424 | +--rw level? int8 425 | +--rw (tp-location)? 426 | +--:(mac-address) 427 | | +--rw mac-address-location? yang:mac-address 428 | +--:(ipv4-address) 429 | | +--rw ipv4-address-location? inet:ipv4-address 430 | +--:(ipv6-address) 431 | | +--rw ipv6-address-location? inet:ipv6-address 432 | +--:(as-number) 433 | | +--rw as-number-location? inet:as-number 434 | +--:(system-id) 435 | +--rw system-id-location? router-id 436 +--rw group-as-number-location-type 437 | +--rw test-point-as-number-location-list 438 | +--rw test-point-locations* [as-number-location] 439 | +--rw as-number-location inet:as-number 440 | +--rw ni? routing-instance-ref 441 | +--rw (technology)? 442 | | +--:(technology-null) 443 | | +--rw tech-null? empty 444 | +--rw tp-tools 445 | | +--rw continuity-check boolean 446 | | +--rw path-discovery boolean 447 | +--rw root? 448 | +--rw oam-neighboring-layers* [index] 449 | +--rw index uint8 450 | +--rw level? int8 451 | +--rw (tp-location)? 452 | +--:(mac-address) 453 | | +--rw mac-address-location? yang:mac-address 454 | +--:(ipv4-address) 455 | | +--rw ipv4-address-location? inet:ipv4-address 456 | +--:(ipv6-address) 457 | | +--rw ipv6-address-location? inet:ipv6-address 458 | +--:(as-number) 459 | | +--rw as-number-location? inet:as-number 460 | +--:(system-id) 461 | +--rw system-id-location? router-id 462 +--rw group-system-id-location-type 463 +--rw test-point-system-info-location-list 464 +--rw test-point-locations* [system-id-location] 465 +--rw system-id-location inet:uri 466 +--rw ni? routing-instance-ref 467 +--rw (technology)? 468 | +--:(technology-null) 469 | +--rw tech-null? empty 470 +--rw tp-tools 471 | +--rw continuity-check boolean 472 | +--rw path-discovery boolean 473 +--rw root? 474 +--rw oam-neighboring-layers* [index] 475 +--rw index uint8 476 +--rw level? int8 477 +--rw (tp-location)? 478 +--:(mac-address) 479 | +--rw mac-address-location? yang:mac-address 480 +--:(ipv4-address) 481 | +--rw ipv4-address-location? inet:ipv4-address 482 +--:(ipv6-address) 483 | +--rw ipv6-address-location? inet:ipv6-address 484 +--:(as-number) 485 | +--rw as-number-location? inet:as-number 486 +--:(system-id) 487 +--rw system-id-location? router-id 489 4. OAM YANG Module 491 file "ietf-connectionless-oam@2017-08-30.yang" 493 module ietf-connectionless-oam { 494 yang-version 1.1; 495 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 496 prefix coam; 498 import ietf-yang-schema-mount { 499 prefix yangmnt; 500 } 501 import ietf-network { 502 prefix nd; 503 } 504 import ietf-yang-types { 505 prefix yang; 506 } 507 import ietf-interfaces { 508 prefix if; 509 } 510 import ietf-inet-types { 511 prefix inet; 512 } 513 import ietf-network-instance { 514 prefix ni; 515 } 517 organization 518 "IETF LIME Working Group"; 519 contact 520 "Deepak Kumar dekumar@cisco.com 521 Qin Wu bill.wu@huawei.com 522 S Raghavan srihari@cisco.com 523 Zitao Wang wangzitao@huawei.com 524 R Rahman rrahman@cisco.com"; 525 description 526 "This YANG module defines the generic configuration, 527 data model, statistics for connectionless OAM to be 528 used within IETF in a protocol independent manner. 529 It is assumed that each protocol maps corresponding 530 abstracts to its native format.Each protocol may 531 extend the YANG model defined here to include protocol 532 specific extensions"; 534 revision 2017-08-30 { 535 description 536 " Base model for Connectionless 537 Operations, Administration, 538 and Maintenance(OAM) "; 539 reference 540 " RFC XXXX: Connectionless 541 Operations, Administration, and 542 Maintenance(OAM)YANG Data Model"; 543 } 545 feature connection-less { 546 description 547 "This feature indicates that OAM solution is connection less."; 548 } 549 feature continuity-check { 550 description 551 "This feature indicates that the server supports 552 executing continuity check OAM command and 553 returning a response. Servers that do not advertise 554 this feature will not support executing 555 continuity check command or rpc operation model for 556 continuity check command."; 557 } 559 feature path-discovery { 560 description 561 "This feature indicates that the server supports 562 executing path discovery OAM command and 563 returning a response. Servers that do not advertise 564 this feature will not support executing 565 path discovery command or rpc operation model for 566 path discovery command."; 567 } 569 typedef router-id { 570 type yang:dotted-quad; 571 description 572 "A 32-bit number in the dotted quad format assigned to each 573 router. This number uniquely identifies the router within an 574 Autonomous System."; 575 } 577 typedef routing-instance-ref { 578 type leafref { 579 path "/ni:network-instances/ni:network-instance/ni:name"; 580 } 581 description 582 "This type is used for leafs that reference a routing instance 583 configuration."; 584 } 586 identity address-attribute-types { 587 description 588 "This is base identity of address 589 attribute types which are ip-prefix, 590 bgp, tunnel, pwe3, vpls, etc."; 591 } 593 typedef address-attribute-type { 594 type identityref { 595 base address-attribute-types; 596 } 597 description 598 "Target address attribute type."; 599 } 601 identity time-resolution { 602 description 603 "Time interval resolution"; 604 } 606 identity hours { 607 base time-resolution; 608 description 609 "Time resolution in Hours"; 610 } 612 identity minutes { 613 base time-resolution; 614 description 615 "Time resolution in Minutes"; 616 } 618 identity seconds { 619 base time-resolution; 620 description 621 "Time resolution in Seconds"; 622 } 624 identity milliseconds { 625 base time-resolution; 626 description 627 "Time resolution in Milliseconds"; 628 } 630 identity microseconds { 631 base time-resolution; 632 description 633 "Time resolution in Microseconds"; 634 } 636 identity nanoseconds { 637 base time-resolution; 638 description 639 "Time resolution in Nanoseconds"; 640 } 642 grouping cc-session-statistics { 643 description 644 "Grouping for session statistics."; 646 container cc-session-statistics { 647 description 648 "cc session counters"; 649 leaf session-count { 650 type uint32; 651 description 652 "Number of Continuity Check sessions."; 653 } 654 leaf session-up-count { 655 type uint32; 656 description 657 "Number of sessions which are up."; 658 } 659 leaf session-down-count { 660 type uint32; 661 description 662 "Number of sessions which are down."; 663 } 664 leaf session-admin-down-count { 665 type uint32; 666 description 667 "Number of sessions which are admin-down."; 668 } 669 } 670 } 672 grouping session-packet-statistics { 673 description 674 "Grouping for per session packet statistics"; 675 container session-packet-statistics { 676 description 677 "Per session packet statistics."; 678 leaf rx-packet-count { 679 type uint32; 680 description 681 "Total number of received OAM packet count."; 682 } 683 leaf tx-packet-count { 684 type uint32; 685 description 686 "Total number of transmitted OAM packet count."; 687 } 688 leaf rx-bad-packet { 689 type uint32; 690 description 691 "Total number of received bad OAM packet."; 692 } 693 leaf tx-packet-failed { 694 type uint32; 695 description 696 "Total number of send OAM packet failed."; 697 } 698 } 699 } 701 grouping cc-per-session-statistics { 702 description 703 "Grouping for per session statistics"; 704 container cc-per-session-statistics { 705 description 706 "per session statistics."; 707 leaf create-time { 708 type yang:date-and-time; 709 description 710 "Time and date when session is created."; 711 } 712 leaf last-down-time { 713 type yang:date-and-time; 714 description 715 "Time and date last time session is down."; 716 } 717 leaf last-up-time { 718 type yang:date-and-time; 719 description 720 "Time and date last time session is up."; 721 } 722 leaf down-count { 723 type uint32; 724 description 725 "Total Continuity Check sessions down count."; 726 } 727 leaf admin-down-count { 728 type uint32; 729 description 730 "Total Continuity Check sessions admin down count."; 731 } 732 uses session-packet-statistics; 733 } 734 } 736 grouping session-error-statistics { 737 description 738 "Grouping for per session error statistics"; 739 container session-error-statistics { 740 description 741 "Per session error statistics."; 743 leaf packet-drops-count { 744 type uint32; 745 description 746 "Total received packet drops count."; 747 } 748 leaf packet-reorder-count { 749 type uint32; 750 description 751 "Total received packet reordered count."; 752 } 753 leaf packets-out-of-seq-count { 754 type uint32; 755 description 756 "Total received out of sequence count."; 757 } 758 leaf packets-dup-count { 759 type uint32; 760 description 761 "Total received packet duplicates count."; 762 } 763 } 764 } 766 grouping session-delay-statistics { 767 description 768 "Grouping for per session delay statistics"; 769 container session-delay-statistics { 770 description 771 "Session delay summarised information."; 772 leaf time-resolution-value { 773 type identityref { 774 base time-resolution; 775 } 776 description 777 "Time units among choice of s,ms,ns etc."; 778 } 779 leaf min-delay-value { 780 type uint32; 781 description 782 "Minimum delay value observed."; 783 } 784 leaf max-delay-value { 785 type uint32; 786 description 787 "Maximum delay value observed."; 788 } 789 leaf average-delay-value { 790 type uint32; 791 description 792 "Average delay value observed."; 793 } 794 } 795 } 797 grouping session-jitter-statistics { 798 description 799 "Grouping for per session jitter statistics"; 800 container session-jitter-statistics { 801 description 802 "Session jitter summarised information."; 803 leaf time-resolution-value { 804 type identityref { 805 base time-resolution; 806 } 807 description 808 "Time units among choice of s,ms,ns etc."; 809 } 810 leaf min-jitter-value { 811 type uint32; 812 description 813 "Minimum jitter value observed."; 814 } 815 leaf max-jitter-value { 816 type uint32; 817 description 818 "Maximum jitter value observed."; 819 } 820 leaf average-jitter-value { 821 type uint32; 822 description 823 "Average jitter value observed."; 824 } 825 } 826 } 828 grouping session-path-verification-statistics { 829 description 830 "Grouping for per session path verification statistics"; 831 container session-path-verification-statistics { 832 description 833 "OAM per session path verification statistics."; 834 leaf verified-count { 835 type uint32; 836 description 837 "Total number of OAM packets that 838 went through a path as intended."; 840 } 841 leaf failed-count { 842 type uint32; 843 description 844 "Total number of OAM packets that 845 went through an unintended path."; 846 } 847 } 848 } 850 grouping session-type { 851 description 852 "This object indicatesindicate which kind 853 of activation will be used by the current 854 session."; 855 leaf session-type { 856 type enumeration { 857 enum "proactive" { 858 description 859 "The current session is proactive session."; 860 } 861 enum "on-demand" { 862 description 863 "The current session is on-demand session."; 864 } 865 } 866 default "on-demand"; 867 description 868 "Indicate which kind of activation will be used 869 by the current session"; 870 } 871 } 873 identity tp-address-technology-type { 874 description 875 "Test point address type"; 876 } 878 identity mac-address-type { 879 base tp-address-technology-type; 880 description 881 "MAC address type"; 882 } 884 identity ipv4-address-type { 885 base tp-address-technology-type; 886 description 887 "IPv4 address type"; 889 } 891 identity ipv6-address-type { 892 base tp-address-technology-type; 893 description 894 "IPv6 address type"; 895 } 897 identity tp-attribute-type { 898 base tp-address-technology-type; 899 description 900 "Test point attribute type"; 901 } 903 identity system-id-address-type { 904 base tp-address-technology-type; 905 description 906 "System id address type"; 907 } 909 identity as-number-address-type { 910 base tp-address-technology-type; 911 description 912 "AS number address type"; 913 } 915 identity route-distinguisher-address-type { 916 base tp-address-technology-type; 917 description 918 "Route Distinguisher address type"; 919 } 921 grouping tp-address { 922 leaf tp-location-type { 923 type identityref { 924 base tp-address-technology-type; 925 } 927 description 928 "Test point address type."; 929 } 930 container tp-address { 931 container mac-address { 932 when "derived-from-or-self('../tp-location-type', 'mac-address-type')" { 933 description 934 "MAC address type"; 935 } 936 leaf mac-address { 937 type yang:mac-address; 938 description 939 "MAC Address"; 940 } 941 description 942 "MAC Address based MP Addressing."; 943 } 944 container ipv4-address { 945 when "derived-from-or-self('../tp-location-type', 'ipv4-address-type')" { 946 description 947 "IPv4 address type"; 948 } 949 leaf ipv4-address { 950 type inet:ipv4-address; 951 description 952 "IPv4 Address"; 953 } 954 description 955 "IP Address based MP Addressing."; 956 } 957 container ipv6-address { 958 when "derived-from-or-self('../tp-location-type', 'ipv6-address-type')" { 959 description 960 "IPv6 address type"; 961 } 962 leaf ipv6-address { 963 type inet:ipv6-address; 964 description 965 "IPv6 Address"; 966 } 967 description 968 "ipv6 Address based MP Addressing."; 969 } 970 container tp-attribute { 971 when "derived-from-or-self('../tp-location-type', 'tp-attribute-type')" { 972 description 973 "Test point attribute type"; 974 } 975 leaf tp-attribute-type { 976 type address-attribute-type; 977 description 978 "Test point type."; 979 } 980 choice tp-attribute-value { 981 description 982 "Test point value."; 983 case ip-prefix { 984 leaf ip-prefix { 985 type inet:ip-prefix; 986 description 987 "IP prefix."; 988 } 989 } 990 case bgp { 991 leaf bgp { 992 type inet:ip-prefix; 993 description 994 "BGP Labeled Prefix "; 995 } 996 } 997 case tunnel { 998 leaf tunnel-interface { 999 type uint32; 1000 description 1001 "VPN Prefix "; 1002 } 1003 } 1004 case pw { 1005 leaf remote-pe-address { 1006 type inet:ip-address; 1007 description 1008 "Remote pe address."; 1009 } 1010 leaf pw-id { 1011 type uint32; 1012 description 1013 "Pseudowire ID is a non-zero 32-bit ID."; 1014 reference 1015 "RFC 4379 :Detecting Multi-Protocol Label 1016 Switched (MPLS) Data Plane Failures"; 1017 } 1018 } 1019 case vpls { 1020 leaf route-distinguisher { 1021 type uint64; 1022 description 1023 "Route Distinguisher is an 8 octets identifier 1024 used to distinguish information about various 1025 L2VPN advertised by a node."; 1026 reference 1027 "RFC 4379 :Detecting Multi-Protocol Label 1028 Switched (MPLS) Data Plane Failures"; 1029 } 1030 leaf sender-ve-id { 1031 type uint16; 1032 description 1033 "Sender's VE ID. The VE ID (VPLS Edge Identifier) 1034 is a 2-octet identifier."; 1035 reference 1036 "RFC 4379 :Detecting Multi-Protocol Label 1037 Switched (MPLS) Data Plane Failures"; 1038 } 1039 leaf receiver-ve-id { 1040 type uint16; 1041 description 1042 "Receiver's VE ID.The VE ID (VPLS Edge Identifier) 1043 is a 2-octet identifier."; 1044 reference 1045 "RFC 4379 :Detecting Multi-Protocol Label 1046 Switched (MPLS) Data Plane Failures"; 1047 } 1048 } 1049 case mpls-mldp { 1050 choice root-address { 1051 description 1052 "Root address choice."; 1053 case ip-address { 1054 leaf source-address { 1055 type inet:ip-address; 1056 description 1057 "IP address."; 1058 } 1059 leaf group-ip-address { 1060 type inet:ip-address; 1061 description 1062 "Group ip address."; 1063 } 1064 } 1065 case vpn { 1066 leaf as-number { 1067 type inet:as-number; 1068 description 1069 "The AS number represents autonomous system 1070 numbers which identify an Autonomous System."; 1071 } 1072 } 1073 case global-id { 1074 leaf lsp-id { 1075 type string; 1076 description 1077 "LSP ID is an identifier of a LSP 1078 within a MPLS network."; 1079 reference 1080 "RFC 4379 :Detecting Multi-Protocol Label 1081 Switched (MPLS) Data Plane Failures"; 1082 } 1083 } 1084 } 1085 } 1086 } 1087 description 1088 "Test Point Attribute Container"; 1089 } 1090 container system-info { 1091 when "derived-from-or-self('../tp-location-type', 'system-id-address-type')" { 1092 description 1093 "System id address type"; 1094 } 1095 leaf system-id { 1096 type router-id; 1097 description 1098 "System ID assigned to this node."; 1099 } 1100 description 1101 "system ID container."; 1102 } 1103 description 1104 "TP Addressing."; 1105 } 1106 description 1107 "TP Address"; 1108 } 1110 grouping tp-address-ni { 1111 description 1112 "Test point address with VRF."; 1113 leaf ni { 1114 type routing-instance-ref; 1115 description 1116 "The ni is used to describe virtual resource partitioning 1117 that may be present on a network device.Example of common 1118 industry terms for virtual resource partitioning is VRF 1119 instance."; 1120 } 1121 uses tp-address; 1122 } 1124 grouping connectionless-oam-layers { 1125 list oam-neighboring-layers { 1126 key "index"; 1127 leaf index { 1128 type uint8{ 1129 range "0..128";} 1130 description 1131 "Index of a list of neighboring test points 1132 in the upstream layer and/or downstream layer 1133 and/or same layer"; 1134 } 1135 leaf technology-level { 1136 type int8 { 1137 range "-1..1"; 1138 } 1139 default "0"; 1140 description 1141 "The relative technology level 1142 of neighboring test point 1143 corresponding to the current 1144 test point.Level 0 indicates default level, 1145 -1 means downstream layer related to current layer and +1 1146 means upstream layer related to current layer. 1147 In relationship 0 means same layer."; 1148 } 1149 choice tp-location { 1150 case mac-address { 1151 leaf mac-address-location { 1152 type yang:mac-address; 1153 description 1154 "MAC Address"; 1155 } 1156 description 1157 "MAC Address based MP Addressing."; 1158 } 1159 case ipv4-address { 1160 leaf ipv4-address-location { 1161 type inet:ipv4-address; 1162 description 1163 "Ipv4 Address"; 1164 } 1165 description 1166 "IP Address based MP Addressing."; 1167 } 1168 case ipv6-address { 1169 leaf ipv6-address-location { 1170 type inet:ipv6-address; 1171 description 1172 "IPv6 Address"; 1173 } 1174 description 1175 "IPv6 Address based MP Addressing."; 1176 } 1177 case as-number { 1178 leaf as-number-location { 1179 type inet:as-number; 1180 description 1181 "AS number location"; 1182 } 1183 description 1184 "AS number for point to multipoint OAM"; 1185 } 1186 case system-id { 1187 leaf system-id-location { 1188 type router-id; 1189 description 1190 "System id location"; 1191 } 1192 description 1193 "System ID"; 1194 } 1195 description 1196 "TP location."; 1197 } 1199 description 1200 "List of neighboring test points in the upstream layer and/or 1201 downstream layer or same layer that are related to current test 1202 point. If neighboring test-point in the upstream layer exist, the 1203 technology-level is specified as +1. If neighboring test-point 1204 in the downstream layer exist, the technology-level is specified 1205 as -1, if neighboring test-points are located at the same layer 1206 as the current test-point, the technology-level is specified as 1207 0."; 1208 } 1209 description 1210 "Connectionless related OAM neighboring layer"; 1211 } 1213 grouping tp-technology { 1214 choice technology { 1215 default "technology-null"; 1216 case technology-null { 1217 description 1218 "This is a placeholder when no technology is needed."; 1219 leaf tech-null { 1220 type empty; 1221 description 1222 "There is no technology define"; 1223 } 1224 } 1225 description 1226 "Technology choice."; 1227 } 1228 description 1229 "OAM Technology"; 1230 } 1232 grouping tp-tools { 1233 description 1234 "Test Point OAM Toolset."; 1235 container tp-tools { 1236 leaf continuity-check { 1237 type boolean; 1238 mandatory true; 1239 description 1240 "A flag indicating whether or not the 1241 continuity check function is supported."; 1242 reference 1243 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1244 RFC 4443: Internet Control Message Protocol (ICMPv6) 1245 for the Internet Protocol Version 6 (IPv6) Specification. 1246 RFC 5880: Bidirectional Forwarding Detection. 1247 RFC 5881: BFD for IPv4 and IPv6. 1248 RFC 5883: BFD for Multihop Paths. 1249 RFC 5884: BFD for MPLS Label Switched Paths. 1250 RFC 5885: BFD for PW VCCV. 1251 RFC 6450: Multicast Ping Protocol."; 1252 } 1253 leaf path-discovery { 1254 type boolean; 1255 mandatory true; 1256 description 1257 "A flag indicating whether or not the 1258 path discovery function is supported."; 1259 reference 1260 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1261 RFC 4443: Internet Control Message Protocol (ICMPv6) 1262 for the Internet Protocol Version 6 (IPv6) Specification. 1263 RFC 4884: Extended ICMP to Support Multi-part Message. 1264 RFC 5837:Extending ICMP for Interface 1265 and Next-Hop Identification. 1266 RFC 4379: LSP-PING."; 1267 } 1268 description 1269 "Container for test point OAM tools set."; 1270 } 1271 } 1272 grouping test-point-location-info { 1273 uses tp-technology; 1274 uses tp-tools; 1275 anydata root { 1276 yangmnt:mount-point "root"; 1277 description 1278 "Root for models supported per 1279 test point"; 1280 } 1281 uses connectionless-oam-layers; 1282 description 1283 "Test point Location"; 1284 } 1286 grouping test-point-locations { 1287 description 1288 "Group of test point locations."; 1289 leaf tp-location-type { 1290 type identityref { 1291 base tp-address-technology-type; 1292 } 1293 description 1294 "Test point location type."; 1295 } 1296 container location-type { 1297 container ipv4-location-type { 1298 when "derived-from-or-self('../tp-location-type', 'ipv4-address-type')" { 1299 description 1300 "When test point location type is equal to ipv4 address."; 1301 } 1302 container test-point-ipv4-location-list { 1303 list test-point-locations { 1304 key "ipv4-location ni"; 1305 leaf ipv4-location { 1306 type inet:ipv4-address; 1307 description 1308 "IPv4 Address."; 1309 } 1310 leaf ni { 1311 type routing-instance-ref; 1312 description 1313 "The ni is used to describe the 1314 corresponding network instance"; 1315 } 1316 uses test-point-location-info; 1317 description 1318 "List of test point locations."; 1319 } 1320 description 1321 "Serves as top-level container 1322 for test point location list."; 1323 } 1324 description 1325 "ipv4 location type container."; 1326 } 1327 container ipv6-location-type { 1328 when "derived-from-or-self('../tp-location-type', 'ipv6-address-type')" { 1329 description 1330 "when test point location is equal to ipv6 address"; 1331 } 1332 container test-point-ipv6-location-list { 1333 list test-point-locations { 1334 key "ipv6-location ni"; 1335 leaf ipv6-location { 1336 type inet:ipv6-address; 1337 description 1338 "IPv6 Address."; 1339 } 1340 leaf ni { 1341 type routing-instance-ref; 1342 description 1343 "The ni is used to describe the 1344 corresponding network instance"; 1345 } 1346 uses test-point-location-info; 1348 description 1349 "List of test point locations."; 1350 } 1351 description 1352 "Serves as top-level container 1353 for test point location list."; 1354 } 1355 description 1356 "ipv6 location type container."; 1357 } 1358 container mac-location-type { 1359 when "derived-from-or-self('../tp-location-type', 'mac-address-type')" { 1360 description 1361 "when test point location type is equal to mac address."; 1362 } 1363 container test-point-mac-address-location-list { 1364 list test-point-locations { 1365 key "mac-address-location"; 1366 leaf mac-address-location { 1367 type yang:mac-address; 1368 description 1369 "MAC Address"; 1370 } 1371 uses test-point-location-info; 1373 description 1374 "List of test point locations."; 1375 } 1376 description 1377 "Serves as top-level container 1378 for test point location list."; 1379 } 1380 description 1381 "mac address location type container."; 1382 } 1383 container group-as-number-location-type { 1384 when "'tp-location-type' = 'as-number-address-type'" { 1385 description 1386 "When test point location type is equal to 1387 as-number."; 1388 } 1389 container test-point-as-number-location-list { 1390 list test-point-locations { 1391 key "as-number-location"; 1392 leaf as-number-location { 1393 type inet:as-number; 1394 description 1395 "AS number for point to multi point OAM."; 1396 } 1397 leaf ni { 1398 type routing-instance-ref; 1399 description 1400 "The ni is used to describe the 1401 corresponding network instance"; 1402 } 1403 uses test-point-location-info; 1405 description 1406 "List of test point locations."; 1407 } 1408 description 1409 "Serves as top-level container 1410 for test point location list."; 1411 } 1412 description 1413 "as number location type container."; 1414 } 1415 container group-system-id-location-type { 1416 when "'tp-location-type' = 'system-id-address-type'" { 1417 description 1418 "When test point location is equal to 1419 system info."; 1420 } 1421 container test-point-system-info-location-list { 1422 list test-point-locations { 1423 key "system-id-location"; 1424 leaf system-id-location { 1425 type inet:uri; 1426 description 1427 "System Id."; 1428 } 1429 leaf ni { 1430 type routing-instance-ref; 1431 description 1432 "The ni is used to describe the 1433 corresponding network instance"; 1434 } 1435 uses test-point-location-info; 1437 description 1438 "List of test point locations."; 1439 } 1440 description 1441 "Serves as top-level container for 1442 test point location list."; 1443 } 1444 description 1445 "system ID location type container."; 1446 } 1447 description 1448 "Choice of address types."; 1449 } 1450 } 1452 augment "/nd:networks/nd:network/nd:node" { 1453 description 1454 "Augment test points of connectionless oam."; 1455 uses test-point-locations; 1456 } 1458 grouping uint64-timestamp { 1459 description 1460 "Grouping for timestamp."; 1461 leaf timestamp-sec { 1462 type uint32; 1463 description 1464 "Absolute timestamp in seconds as per IEEE1588v2 1465 or seconds part in 64-bit NTP timestamp."; 1466 } 1467 leaf timestamp-nanosec { 1468 type uint32; 1469 description 1470 "Fractional part in nanoseconds as per IEEE1588v2 1471 or Fractional part in 64-bit NTP timestamp."; 1472 } 1473 } 1475 grouping timestamp { 1476 description 1477 "Grouping for timestamp."; 1478 leaf timestamp-type { 1479 type uint32; 1480 description 1481 "Truncated PTP = 0, NTP = 1"; 1482 } 1483 uses uint64-timestamp; 1484 } 1486 grouping path-discovery-data { 1487 description 1488 "Path discovery related data output from nodes."; 1489 container src-test-point { 1490 description 1491 "Source test point."; 1492 uses tp-address-ni; 1493 } 1494 container dest-test-point { 1495 description 1496 "Destination test point."; 1497 uses tp-address-ni; 1498 } 1499 leaf sequence-number { 1500 type uint64; 1501 description 1502 "Sequence number in data packets."; 1503 } 1504 leaf hop-cnt { 1505 type uint8; 1506 description 1507 "Hop count."; 1508 } 1509 uses session-packet-statistics; 1510 uses session-error-statistics; 1511 uses session-delay-statistics; 1512 uses session-jitter-statistics; 1513 container path-verification { 1514 description 1515 "Optional path verification related information."; 1516 leaf flow-info { 1517 type string; 1518 description 1519 "Informations that refers to the flow."; 1520 } 1521 uses session-path-verification-statistics; 1522 } 1523 container path-trace-info { 1524 description 1525 "Optional path trace per-hop test point information. 1526 The list has typically a single element for per-hop 1527 cases like path-discovery RPC operation but allows 1528 a list of hop related information for other types of 1529 data retrieval methods."; 1530 list path-trace-info-list { 1531 key "index"; 1532 description 1533 "Path trace information list."; 1534 leaf index { 1535 type uint32; 1536 description 1537 "Trace information index."; 1538 } 1539 uses tp-address-ni; 1540 uses timestamp; 1541 leaf ingress-intf-name { 1542 type if:interface-ref; 1543 description 1544 "Ingress interface name"; 1545 } 1546 leaf egress-intf-name { 1547 type if:interface-ref; 1548 description 1549 "Egress interface name"; 1550 } 1551 leaf queue-depth { 1552 type uint32; 1553 description 1554 "Length of the queue of the interface from where 1555 the packet is forwarded out. The queue depth could 1556 be the current number of memory buffers used by the 1557 queue and a packet can consume one or more memory buffers 1558 thus constituting device-level information."; 1559 } 1560 leaf transit-delay { 1561 type uint32; 1562 description 1563 "Time in nano seconds 1564 packet spent transiting a node."; 1565 } 1566 leaf app-meta-data { 1567 type uint64; 1568 description 1569 "Application specific 1570 data added by node."; 1571 } 1572 } 1573 } 1574 } 1576 grouping continuity-check-data { 1577 description 1578 "Continuity check data output from nodes."; 1579 container src-test-point { 1580 description 1581 "Source test point."; 1582 uses tp-address-ni; 1583 leaf egress-intf-name { 1584 type if:interface-ref; 1585 description 1586 "Egress interface name"; 1587 } 1588 } 1589 container dest-test-point { 1590 description 1591 "Destination test point."; 1592 uses tp-address-ni; 1593 leaf ingress-intf-name { 1594 type if:interface-ref; 1595 description 1596 "Ingress interface name"; 1597 } 1598 } 1599 leaf sequence-number { 1600 type uint64; 1601 description 1602 "Sequence number."; 1603 } 1604 leaf hop-cnt { 1605 type uint8; 1606 description 1607 "Hop count."; 1609 } 1610 uses session-packet-statistics; 1611 uses session-error-statistics; 1612 uses session-delay-statistics; 1613 uses session-jitter-statistics; 1614 } 1616 container cc-session-statistics-data { 1617 if-feature "continuity-check"; 1618 config false; 1619 description 1620 "CC operational information."; 1621 container cc-ipv4-sessions-statistics { 1622 description 1623 "CC ipv4 sessions"; 1624 uses cc-session-statistics; 1625 } 1626 container cc-ipv6-sessions-statistics { 1627 description 1628 "CC ipv6 sessions"; 1629 uses cc-session-statistics; 1630 } 1631 } 1632 } 1634 1636 5. Connectionless model applicability 1638 "ietf-connectionless-oam" model defined in this document provides 1639 technology-independent abstraction of key OAM constructs for 1640 connectionless protocols. This model can be further extended to 1641 include technology specific details, e.g., adding new data nodes with 1642 technology specific functions and parameters into proper anchor 1643 points of the base model, so as to develop a technology-specific 1644 connectionless OAM model. 1646 This section demonstrates the usability of the connectionless YANG 1647 OAM data model to various connectionless OAM technologies, e.g., BFD, 1648 LSP ping. Note that, in this section, we only present several 1649 snippets of technology-specific model extensions for illustrative 1650 purposes. The complete model extensions should be worked on in 1651 respective protocol working groups. 1653 5.1. BFD Extension 1655 5.1.1. Augment Method 1657 The following sections shows how the "ietf-connectionless-oam" model 1658 can be extended to cover BFD technology. For this purpose, a set of 1659 extension are introduced such as technology-type extension and test- 1660 point attributes extension. 1662 Note that in BFD WG, there is a BFD YANG data model 1663 [I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf- 1664 connectioless-oam" as basis and augment the "ietf-connectionless-oam" 1665 model with bfd specific details. The bfd specific details can be the 1666 grouping defined in the BFD model. 1668 5.1.1.1. Technology type extension 1670 No BFD technology type has been defined in the "ietf-connectionless- 1671 oam" model. Therefore a technology type extension is required in the 1672 model Extension. 1674 The snippet below depicts an example of augmenting "bfd" type into 1675 the ietf-connectionless-oam": 1677 augment "/nd:networks/nd:network/nd:node/" 1678 +"coam:location-type/coam:ipv4-location-type" 1679 +"/coam:test-point-ipv4-location-list/" 1680 +"coam:test-point-locations/coam:technology" 1681 { 1682 leaf bfd{ 1683 type string; 1684 } 1685 } 1687 5.1.1.2. Test point attributes extension 1689 To support bfd technology, the "ietf-connectionless-oam" model can be 1690 extended and add bfd specific parameters under "test-point-location" 1691 list and/or add new location type such as "bfd over MPLS-TE" under 1692 "location-type". 1694 5.1.1.2.1. Define and insert new nodes into corresponding test-point- 1695 location 1697 In the "ietf-connectionless-oam" model, multiple "test-point- 1698 location" lists are defined under the "location-type" choice node. 1699 Therefore, to derive a model for some bfd technologies ( such as ip 1700 single-hop, ip multi-hops, etc), data nodes for bfd specific details 1701 need to be added into corresponding "test-point-locations" list. In 1702 this section, we reuse some groupings which are defined in 1703 [I-D.ietf-bfd-yang] as following: 1705 The snippet below shows how the "ietf-connectionless-oam" model can 1706 be extended to support "BFD IP single-hop": 1708 augment "/nd:networks/nd:network/nd:node/" 1709 +"coam:location-type/coam:ipv4-location-type" 1710 +"/coam:test-point-ipv4-location-list/" 1711 +"coam:test-point-locations" 1712 { 1713 container session-cfg { 1714 description "BFD IP single-hop session configuration"; 1715 list sessions { 1716 key "interface dest-addr"; 1717 description "List of IP single-hop sessions"; 1718 leaf interface { 1719 type if:interface-ref; 1720 description 1721 "Interface on which the BFD session is running."; 1722 } 1723 leaf dest-addr { 1724 type inet:ip-address; 1725 description "IP address of the peer"; 1726 } 1727 uses bfd:bfd-grouping-common-cfg-parms; 1728 uses bfd:bfd-grouping-echo-cfg-parms; 1729 } 1730 } 1731 } 1733 Similar augmentations can be defined to support other BFD 1734 technologies such as BFD IP multi-hop, BFD over MPLS, etc. 1736 5.1.1.2.2. Add new location-type cases 1738 In the "ietf-connectionless-oam" model, If there is no appropriate 1739 "location type" case that can be extended, a new "location-type" case 1740 can be defined and inserted into the "location-type" choice node. 1742 Therefore, the model user can flexibly add "location-type" to support 1743 other type of test point which are not defined in the "ietf- 1744 connectionless-oam" model. In this section, we add a new "location- 1745 type" case and reuse some groupings which are defined in 1746 [I-D.ietf-bfd-yang] as follows: 1748 The snippet below shows how the "ietf-connectionless-oam" model can 1749 be extended to support "BFD over MPLS-TE": 1751 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 1752 case te-location{ 1753 list test-point-location-list{ 1754 key "tunnel-name"; 1755 leaf tunnel-name{ 1756 type leafref{ 1757 path "/te:te/te:tunnels/te:tunnel/te:name"; 1758 } 1759 description 1760 "point to a te instance."; 1761 } 1762 uses bfd:bfd-grouping-common-cfg-parms; 1763 uses bfd-mpls:bfd-encap-cfg; 1764 } 1765 } 1766 } 1768 Similar augmentations can be defined to support other BFD 1769 technologies such as BFD over LAG, etc. 1771 5.1.2. Schema Mount 1773 And another alternative method is using schema mount mechanism 1774 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 1775 Within the "test-point-location" list, a "root" attribute is defined 1776 to provide a mounted point for models mounted per "test-point- 1777 location". Therefore, the "ietf-connectionless-oam" model can 1778 provide a place in the node hierarchy where other OAM YANG data 1779 models can be attached, without any special extension in the "ietf- 1780 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 1781 Note that the limitation of the Schema Mount method is it is not 1782 allowed to specify certain modules that are required to be mounted 1783 under a mount point. 1785 The snippet below depicts the definition of "root" attribute. 1787 anydata root { 1788 yangmnt:mount-point root; 1789 description 1790 "Root for models supported per 1791 test point"; 1792 } 1794 The following section shows how the "ietf-connectionless-oam" model 1795 can use schema mount to support BFD technology. 1797 5.1.2.1. BFD Modules be populated in schema-mount 1799 To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG 1800 modules might be populated in the "schema-mounts" container: 1802 1804 1805 ietf-connectionless-oam 1806 root 1807 1808 root 1809 1810 1811 1812 root 1813 1814 ietf-bfd-ip-sh 1815 2016-07-04 1816 1817 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 1818 1819 implement 1820 1821 1822 ietf-bfd-ip-mh 1823 2016-07-04 1824 1825 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 1826 1827 implement 1828 1829 1830 1832 and the " ietf-connectionless-oam " module might have: 1834 1836 ...... 1837 1838 192.0.2.1 1839 ...... 1840 1841 1842 1843 foo 1844 ...... 1845 1846 1847 1848 1849 foo 1850 ...... 1851 1852 1853 1854 1855 1857 5.2. LSP ping extension 1859 5.2.1. Augment Method 1861 The following sections shows how the "ietf-connectionless-oam" model 1862 can be extended to support LSP ping technology. For this purpose, a 1863 set of extension are introduced such as technology-type extension and 1864 test-point attributes extension. 1866 Note that in MPLS WG, there is a LSP Ping YANG data model 1867 [I-D.zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can choose 1868 to use "ietf-connectioless-oam" as basis and augment the "ietf- 1869 connectionless-oam" model with LSP Ping specific details in the model 1870 extension. The LSP Ping specific details can be the grouping defined 1871 in the LSP ping model. 1873 5.2.1.1. Technology type extension 1875 No lsp-ping technology type has been defined in the "ietf- 1876 connectionless-oam" model. Therefore a technology type extension is 1877 required in the model extension. 1879 The snippet below depicts an example of augmenting the "ietf- 1880 connectionless-oam" with "lsp-ping" type: 1882 augment "/nd:networks/nd:network/nd:node/" 1883 +"coam:location-type/coam:ipv4-location-type" 1884 +"/coam:test-point-ipv4-location-list/" 1885 +"coam:test-point-locations/coam:technology" 1886 { 1887 leaf lsp-ping{ 1888 type string; 1889 } 1890 } 1892 5.2.1.2. Test point attributes extension 1894 To support lsp-ping, the "ietf-connectionless-oam" model can be 1895 extended and add lsp-ping specific parameters can be defined and 1896 under "test-point-location" list. 1898 User can reuse the attributes or groupings which are defined in 1899 [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: 1901 The snippet below depicts an example of augmenting the "test-point- 1902 locations" list with lsp ping attributes: 1904 augment "/nd:networks/nd:network/nd:node/" 1905 +"coam:location-type/coam:ipv4-location-type" 1906 +"/coam:test-point-ipv4-location-list/" 1907 +"coam:test-point-locations" 1908 { 1909 list lsp-ping { 1910 key "lsp-ping-name"; 1911 leaf lsp-ping-name { 1912 type string { 1913 length "1..31"; 1914 } 1915 mandatory "true"; 1916 description "LSP Ping test name."; 1917 ...... 1918 } 1920 5.2.2. Schema Mount 1922 And another alternative method is using schema mount mechanism 1923 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 1924 Within the "test-point-location" list, a "root" attribute is defined 1925 to provide a mounted point for models mounted per "test-point- 1926 location". Therefore, the "ietf-connectionless-oam" model can 1927 provide a place in the node hierarchy where other OAM YANG data 1928 models can be attached, without any special extension in the "ietf- 1929 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 1931 Note that the limitation of the Schema Mount method is it is not 1932 allowed to specify certain modules that are required to be mounted 1933 under a mount point. 1935 The snippet below depicts the definition of "root" attribute. 1937 anydata root { 1938 yangmnt:mount-point root; 1939 description 1940 "Root for models supported per 1941 test point"; 1942 } 1944 The following section shows how the "ietf-connectionless-oam" model 1945 can use schema mount to support LSP-PING technology. 1947 5.2.2.1. LSP-PING Modules be populated in schema-mount 1949 To support LSP-PING technology, "ietf-lspping" YANG module 1950 [I-D.zheng-mpls-lsp-ping-yang-cfg] might be populated in the "schema- 1951 mounts" container: 1953 1955 1956 ietf-connectionless-oam 1957 root 1958 1959 root 1960 1961 1962 1963 root 1964 1965 ietf-lspping 1966 2016-03-18 1967 1968 urn:ietf:params:xml:ns:yang: ietf-lspping 1969 1970 implement 1971 1972 1973 1975 and the " ietf-connectionless-oam " module might have: 1977 1979 ...... 1980 1981 192.0.2.1 1982 ...... 1983 1984 1985 1986 foo 1987 ...... 1988 1989 1990 1991 1992 1994 6. Security Considerations 1996 The YANG module defined in this document is designed to be accessed 1997 via network management protocols such as NETCONF [RFC6241] or 1998 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 1999 layer, and the mandatory-to-implement secure transport is Secure 2000 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 2001 mandatory-to-implement secure transport is TLS [RFC5246]. 2003 The NETCONF access control model [RFC6536] provides the means to 2004 restrict access for particular NETCONF or RESTCONF users to a 2005 preconfigured subset of all available NETCONF or RESTCONF protocol 2006 operations and content. 2008 There are a number of data nodes defined in this YANG module that are 2009 writable/creatable/deletable (i.e., config true, which is the 2010 default). These data nodes may be considered sensitive or vulnerable 2011 in some network environments. Write operations (e.g., edit-config) 2012 to these data nodes without proper protection can have a negative 2013 effect on network operations. 2015 The vulnerable "config true" subtrees and data nodes are the 2016 following: 2018 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv4- 2019 location-type/coam:test-point-ipv4-location-list/coam:test-point- 2020 locations/ 2022 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv6- 2023 location-type/coam:test-point-ipv6-location-list/coam:test-point- 2024 locations/ 2025 /nd:networks/nd:network/nd:node/coam:location-type/coam:mac- 2026 location-type/coam:test-point-mac-address-location-list/coam:test- 2027 point-locations/ 2029 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-as- 2030 number-location-type/coam:test-point-as-number-location-list/ 2031 coam:test-point-locations/ 2033 /nd:networks/nd:network/nd:node/coam:location-type/coam:group- 2034 system-id-location-type/coam:test-point-system-info-location-list/ 2035 coam:test-point-locations/ 2037 Unauthorized access to any of these lists can adversely affect OAM 2038 management system handling of end-to-end OAM and coordination of OAM 2039 within underlying network layers. This may lead to inconsistent 2040 configuration, reporting, and presentation for the OAM mechanisms 2041 used to manage the network. 2043 Some of the readable data nodes in this YANG module may be considered 2044 sensitive or vulnerable in some network environments. It is thus 2045 important to control read access (e.g., via get, get-config, or 2046 notification) to these data nodes. These are the subtrees and data 2047 nodes and their sensitivity/vulnerability: 2049 /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ 2050 coam:cc-session-statistics/coam:session-count/ 2052 /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ 2053 coam:cc-session-statistics/coam:session-up-count/ 2055 /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ 2056 coam:cc-session-statistics/coam: session-down-count/ 2058 /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ 2059 coam:cc-session-statistics/coam:session-admin-down-count/ 2061 /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ 2062 coam:cc-session-statistics/coam:session-count/ 2064 /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ 2065 coam:cc-session-statistics/coam:session-up-count// 2067 /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ 2068 coam:cc-session-statistics/coam:session-down-count/ 2070 /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ 2071 coam:cc-session-statistics/coam:session-admin-down-count/ 2073 7. IANA Considerations 2075 This document registers a URI in the IETF XML registry [RFC3688]. 2076 Following the format in [RFC3688] the following registration is 2077 requested to be made: 2079 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2081 Registrant Contact: The IESG. 2083 XML: N/A, the requested URI is an XML namespace. 2085 This document registers a YANG module in the YANG Module Names 2086 registry [RFC6020]. 2088 name: ietf-connectionless-oam 2090 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2092 prefix: coam 2094 reference: RFC XXXX 2096 8. Acknowlegements 2098 The authors of this document would like to thank Greg Mirsky and 2099 others for their sustainable review and comments, proposals to 2100 improve and stabilize document. 2102 9. References 2104 9.1. Normative References 2106 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2107 DOI 10.17487/RFC3688, January 2004, . 2110 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 2111 Control Message Protocol (ICMPv6) for the Internet 2112 Protocol Version 6 (IPv6) Specification", STD 89, 2113 RFC 4443, DOI 10.17487/RFC4443, March 2006, 2114 . 2116 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2117 (TLS) Protocol Version 1.2", RFC 5246, 2118 DOI 10.17487/RFC5246, August 2008, . 2121 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2122 the Network Configuration Protocol (NETCONF)", RFC 6020, 2123 DOI 10.17487/RFC6020, October 2010, . 2126 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2127 and A. Bierman, Ed., "Network Configuration Protocol 2128 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2129 . 2131 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2132 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2133 . 2135 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2136 Protocol (NETCONF) Access Control Model", RFC 6536, 2137 DOI 10.17487/RFC6536, March 2012, . 2140 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2141 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2142 . 2144 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 2145 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 2146 . 2148 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2149 September 1981. 2151 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2152 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2153 . 2155 9.2. Informative References 2157 [G.8013] "OAM functions and mechanisms for Ethernet based 2158 networks", ITU-T Recommendation G.8013/Y.1731, 2013. 2160 [I-D.ietf-bfd-yang] 2161 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 2162 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 2163 Detection (BFD)", draft-ietf-bfd-yang-06 (work in 2164 progress), June 2017. 2166 [I-D.ietf-i2rs-yang-network-topo] 2167 Clemm, A., Medved, J., Varga, R., Bahadur, N., 2168 Ananthakrishnan, H., and X. Liu, "A Data Model for Network 2169 Topologies", draft-ietf-i2rs-yang-network-topo-14 (work in 2170 progress), June 2017. 2172 [I-D.ietf-lime-yang-connection-oriented-oam-model] 2173 Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model 2174 for Connection Oriented Operations, Administration, and 2175 Maintenance(OAM) protocols", draft-ietf-lime-yang- 2176 connection-oriented-oam-model-00 (work in progress), June 2177 2017. 2179 [I-D.ietf-lime-yang-connectionless-oam-methods] 2180 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 2181 "Retrieval Methods YANG Data Model for Connectionless 2182 Operations, Administration, and Maintenance(OAM) 2183 protocols", draft-ietf-lime-yang-connectionless-oam- 2184 methods-05 (work in progress), June 2017. 2186 [I-D.ietf-netmod-schema-mount] 2187 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 2188 ietf-netmod-schema-mount-06 (work in progress), July 2017. 2190 [I-D.ietf-spring-sr-yang] 2191 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 2192 Data Model for Segment Routing", draft-ietf-spring-sr- 2193 yang-07 (work in progress), July 2017. 2195 [I-D.zheng-mpls-lsp-ping-yang-cfg] 2196 Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. 2197 Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- 2198 lsp-ping-yang-cfg-05 (work in progress), June 2017. 2200 [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual 2201 Private Network (L2VPN) Operations, Administration, and 2202 Maintenance (OAM) Requirements and Framework", RFC 6136, 2203 DOI 10.17487/RFC6136, March 2011, . 2206 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 2207 Weingarten, "An Overview of Operations, Administration, 2208 and Maintenance (OAM) Tools", RFC 7276, 2209 DOI 10.17487/RFC7276, June 2014, . 2212 Authors' Addresses 2214 Deepak Kumar 2215 CISCO Systems 2216 510 McCarthy Blvd 2217 Milpitas, CA 95035 2218 USA 2220 Email: dekumar@cisco.com 2222 Michael Wang 2223 Huawei Technologies,Co.,Ltd 2224 101 Software Avenue, Yuhua District 2225 Nanjing 210012 2226 China 2228 Email: wangzitao@huawei.com 2230 Qin Wu 2231 Huawei 2232 101 Software Avenue, Yuhua District 2233 Nanjing, Jiangsu 210012 2234 China 2236 Email: bill.wu@huawei.com 2238 Reshad Rahman 2239 Cisco Systems 2240 2000 Innovation Drive 2241 Kanata, Ontario K2K 3E8 2242 Canada 2244 Email: rrahman@cisco.com 2246 Srihari Raghavan 2247 Cisco Systems 2248 Tril Infopark Sez, Ramanujan IT City 2249 Neville Block, 2nd floor, Old Mahabalipuram Road 2250 Chennai, Tamil Nadu 600113 2251 India 2253 Email: srihari@cisco.com