idnits 2.17.00 (12 Aug 2021) /tmp/idnits37269/draft-ietf-lime-yang-connectionless-oam-15.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 7 instances of too long lines in the document, the longest one being 19 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 428 has weird spacing: '...y-check boo...' == Line 454 has weird spacing: '...y-check boo...' == Line 474 has weird spacing: '...ocation yan...' == Line 479 has weird spacing: '...y-check boo...' == Line 505 has weird spacing: '...y-check boo...' == (1 more instance...) -- The document date (October 28, 2017) is 1665 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) == Missing Reference: 'RFC5880' is mentioned on line 161, but not defined == Missing Reference: 'RFC1831' is mentioned on line 163, but not defined ** Obsolete undefined reference: RFC 1831 (Obsoleted by RFC 5531) == Missing Reference: 'RFC 4382' is mentioned on line 167, but not defined == Missing Reference: 'RFC 4656' is mentioned on line 169, but not defined == Missing Reference: 'RFC 5357' is mentioned on line 171, but not defined == Unused Reference: 'I-D.ietf-rtgwg-routing-types' is defined on line 2486, but no explicit reference was found in the text == Unused Reference: 'RFC6021' is defined on line 2511, but no explicit reference was found in the text == Unused Reference: 'RFC6991' is defined on line 2529, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 2533, but no explicit reference was found in the text == Unused Reference: 'RFC8029' is defined on line 2544, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-rtgwg-ni-model' is defined on line 2587, but no explicit reference was found in the text == Outdated reference: draft-ietf-i2rs-yang-network-topo has been published as RFC 8345 == Outdated reference: draft-ietf-rtgwg-routing-types has been published as RFC 8294 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6021 (Obsoleted by RFC 6991) ** 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-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-rtgwg-ni-model has been published as RFC 8529 == 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: 6 errors (**), 0 flaws (~~), 27 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: May 1, 2018 Q. Wu, Ed. 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 October 28, 2017 12 Generic YANG Data Model for the Management of Operations, 13 Administration, and Maintenance (OAM) Protocols that use Connectionless 14 Communications 15 draft-ietf-lime-yang-connectionless-oam-15 17 Abstract 19 This document presents a base YANG Data model for Operations 20 Administration, and Maintenance(OAM) protocols that use 21 Connectionless Communications. The data model is defined using the 22 YANG in RFC7950 data modeling language. It provides a technology- 23 independent abstraction of key OAM constructs for OAM protocols that 24 use connectionless communication. The base model presented here can 25 be extended to include technology specific details. This is leading 26 to uniformity between OAM protocols and support both nested OAM 27 workflows (i.e., performing OAM functions at different or same levels 28 through a unified interface) and interacting OAM workflows (i.e., 29 performing OAM functions at same levels through a unified interface). 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at https://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on May 1, 2018. 48 Copyright Notice 50 Copyright (c) 2017 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (https://trustee.ietf.org/license-info) in effect on the date of 56 publication of this document. Please review these documents 57 carefully, as they describe your rights and restrictions with respect 58 to this document. Code Components extracted from this document must 59 include Simplified BSD License text as described in Section 4.e of 60 the Trust Legal Provisions and are provided without warranty as 61 described in the Simplified BSD License. 63 Table of Contents 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 66 2. Conventions used in this document . . . . . . . . . . . . . . 3 67 2.1. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 4 68 2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 69 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 70 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 6 71 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 72 3.3. OAM neighboring test points . . . . . . . . . . . . . . . 7 73 3.4. Test Point Locations Information . . . . . . . . . . . . 8 74 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 8 75 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 9 76 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 9 77 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 9 78 4. LIME Common Types YANG Module . . . . . . . . . . . . . . . . 12 79 5. Connectionless OAM YANG Module . . . . . . . . . . . . . . . 14 80 6. Connectionless model applicability . . . . . . . . . . . . . 42 81 6.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 43 82 6.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 43 83 6.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 46 84 6.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 48 85 6.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 48 86 6.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 49 87 7. Security Considerations . . . . . . . . . . . . . . . . . . . 51 88 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 53 89 9. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 53 90 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 91 10.1. Normative References . . . . . . . . . . . . . . . . . . 53 92 10.2. Informative References . . . . . . . . . . . . . . . . . 55 93 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 95 1. Introduction 97 Operations, Administration, and Maintenance (OAM) are important 98 networking functions that allow operators to: 100 1. Monitor networks communication (Reachability Verification, 101 Continuity Check). 103 2. Troubleshoot failures (Fault verification and localization). 105 3. Monitor Performance 107 An overview of OAM tools is presented at [RFC7276]. 109 Ping and Traceroute [RFC792], [RFC4443] are well-known fault 110 verification and isolation tools, respectively, for IP networks. 111 Over the years, different technologies have developed similar tools 112 for similar purposes. 114 The different OAM tools may support connection-oriented technologies 115 or connectionless technologies. In connection-oriented technologies, 116 a connection is established prior to the transmission of data. After 117 the connection is established, no additional control information such 118 as signaling or operations and maintenance information is required to 119 transmit the data. In connectionless technologies, data is typically 120 sent between end points without prior arrangement, but control 121 information is required to identify destination.[G.800][RFC7276]. 122 Note that the YANG Data model for OAM protcols using connection- 123 oriented communications is defined in 124 [I-D.ietf-lime-yang-connection-oriented-oam-model]. 126 This document defines a base YANG Data model for OAM protocols that 127 use Connectionless Communications. The data model is defined using 128 the YANG [RFC7950] data modeling language. This generic YANG model 129 for connectionless OAM only includes configuration data and state 130 data. It can be used in conjunction with data retrieval method model 131 described in [I-D.ietf-lime-yang-connectionless-oam-methods], which 132 focuses on data retrieval procedures such as RPC. However it also 133 can be used independently of this data retrieval method model. 135 2. Conventions used in this document 137 The following terms are defined in [RFC6241] and are not redefined 138 here: 140 o client 142 o configuration data 143 o server 145 o state data 147 The following terms are defined in [RFC7950] and are not redefined 148 here: 150 o augment 152 o data model 154 o data node 156 The terminology for describing YANG data models is found in 157 [RFC7950]. 159 2.1. Abbreviations 161 BFD - Bidirectional Forwarding Detection [RFC5880]. 163 RPC - A Remote Procedure Call [RFC1831]. 165 DSCP - Differentiated Services Code Point. 167 VRF - Virtual Routing and Forwarding (VRF) [RFC 4382]. 169 OWAMP - One-Way Active Measurement Protocol [RFC 4656]. 171 TWAMP - Two-Way Active Measurement Protocol (TWAMP) [RFC 5357]. 173 AS - Autonomous System. 175 LSP - Label Switched Path. 177 TE - Traffic Engineering. 179 MPLS - Multiprotocol Label Switching. 181 NI - Network Instance. 183 PTP - Precision Time Protocol [IEEE.1588]. 185 NTP - Network Time Protocol [RFC5905]. 187 2.2. Terminology 189 MAC address- Address for data link layer interface. 191 TP - Test Point. Test point is a functional entity that is defined 192 at a node in the network and can initiate and/or react to OAM 193 diagnostic test. This document focuses on the data-plane 194 functionality of TPs, while TPs interact with the control plane and 195 with the management plane as well. 197 RPC operation - A specific Remote Procedure Call. 199 CC - Continuity Check.[RFC7276], Continuity Checks are used to verify 200 that a destination is reachable and therefore also referred to as 201 reachability verification. 203 3. Overview of the Connectionless OAM Model 205 The YANG data model for OAM protocols that use Connectionless 206 Communications has been split into two modules: 208 o The module ietf-lime-common-types.yang provides common definitions 209 such as Time-specific data types and Timestamp specific data 210 types. 212 o The module ietf-connectionless-oam.yang defines technology- 213 independent abstraction of key OAM constructs for OAM protocols 214 that use Connectionless communication. 216 The ietf-connectionless-oam module augments the "/networks/network/ 217 node" path defined in the ietf- network module 218 [I-D.ietf-i2rs-yang-network-topo] with 'test-point-locations' 219 grouping defined in Section 3.5. The network node in 220 "/networks/network/node" path are used to describe the network 221 hierarchies and the inventory of nodes contained in a network. 223 Under the 'test-point-locations' grouping, each test point location 224 is chosen based on 'tp-location-type' leaf which when chosen, leads 225 to a container that includes a list of 'test-point-locations'. 227 Each 'test-point-locations' list includes a 'test-point-location- 228 info' grouping. The 'test-point-location-info' grouping includes: 230 o 'tp-technology' grouping, 232 o 'tp-tools' grouping, 234 o and 'connectionless-oam-tps' grouping. 236 The groupings of 'tp-address' and 'tp-address-ni' are kept out of 237 'test- point-location-info' grouping to make it addressing agnostic 238 and allow varied composition. Depending upon the choice of the 'tp- 239 location-type' (determined by the 'tp-address-ni'), the containers 240 differ in its composition of 'test-point-locations' while the 'test- 241 point-location-info', is a common aspect of every 'test-point- 242 locations'. 244 The 'tp-address-ni' grouping is used to describe the corresponding 245 network instance. The 'tp-technology' grouping indicate OAM 246 technology details. The 'connectionless-oam-tps' grouping is used to 247 describe the relationship of one test point with other test points. 248 The 'tp-tools' grouping describe the OAM tools supported. 250 In addition, at the top of the model, there is an 'cc-oper-data' 251 container for session statistics. Grouping is also defined for 252 common session statistics and these are only applicable for proactive 253 OAM sessions. 255 3.1. TP Address 257 With connectionless OAM protocols, the TP address can be one of the 258 following types: 260 o MAC address [RFC6136] at link layer for TPs 262 o IPv4 or IPv6 address at IP layer for TPs 264 o TP-attribute identifying a TP associated with an application layer 265 function 267 o Router-id to represent the device or node. 268 [I-D.ietf-spring-sr-yang] 270 To define a forwarding treatment of a test packet, the 'tp-address' 271 grouping needs to be associated with additional parameters, e.g., 272 DSCP for IP or EXP (renamed to Traffic Classic in [RFC5462]) for 273 MPLS. In generic connectionless OAM YANG model, these parameters are 274 not explicitly configured. The model user can add corresponding 275 parameters according to their requirements. 277 3.2. Tools 279 The different OAM tools may be used in one of two basic types of 280 activation: proactive and on-demand. The proactive OAM refers to OAM 281 actions which are carried out continuously to permit proactive 282 reporting of fault. The proactive OAM method requires persistent 283 configuration. The on-demand OAM refers to OAM actions which are 284 initiated via manual intervention for a limited time to carry out 285 diagnostics. The on-demand OAM method requires only transient 286 configuration.[RFC7276] [G.8013]. In connectionless OAM, 'session- 287 type' grouping is defined to indicate which kind of activation will 288 be used by the current session. 290 In connectionless OAM, the tools attribute is used to describe a 291 toolset for fault detection and isolation. And it can serve as a 292 constraint condition when the base model be extended to specific OAM 293 technology. For example, to fulfill the ICMP PING configuration, the 294 "../coam:continuity-check" leaf should be set to "true", and then the 295 lime base model should be augmented with ICMP PING specific details. 297 3.3. OAM neighboring test points 299 As typical network communication stacks have a multi-layer 300 architecture, the set of associated OAM protocols may similarly have 301 a multi-layer structure; each communication layer in the stack may 302 have its own OAM protocol [RFC7276] that may also be linked to a 303 specific administrative domain. Management of these OAM protocols 304 will necessitate associated test points in the nodes accessible by 305 appropriate management domains. Accordingly, a given network 306 interface may present several test points. 308 OAM neighboring test points are referred to a list of neighboring 309 test points in adjacent layers up and down the stack for the same 310 interface that are related to the current test point. This allows 311 users to easily navigate between related neighboring layers to 312 efficiently troubleshoot a defect. In this model, the 'position' 313 leaf defines the relative position of the neighboring test point 314 corresponding to the current test point, and is provided to allow 315 correlation of faults at different locations. If there is one 316 neighboring test point placed before the current test point, the 317 'position' leaf is set to -1. If there is one neighboring test point 318 placed after the current test point, the 'position' leaf is set to 1. 319 If there is no neighboring test point placed before or after the 320 current test point, the 'position' leaf is set to 0. 322 list oam-neighboring-tps { 323 key "index"; 324 leaf index { 325 type uint16 { 326 range "0..65535"; 327 } 328 description 329 "Index of a list of neighboring test points 330 in adjacent layers up and down the stack for 331 the same interface that are related to the 332 current test point."; 333 } 334 leaf position { 335 type int8 { 336 range "-1..1"; 337 } 338 description 339 "The relative position 340 of neighboring test point 341 corresponding to the current 342 test point"; 343 } 345 description 346 "List of related neighboring test points in adjacent 347 layers up and down the stack for the same interface 348 that are related to the current test point."; 350 } 352 3.4. Test Point Locations Information 354 This is a generic grouping for Test Point Locations Information 355 (i.e., test-point-location-info grouping). It Provide details of 356 Test Point Location using 'tp-technology','tp-tools' grouping, 'oam- 357 neighboring-tps' grouping defined above. 359 3.5. Test Point Locations 361 This is a generic grouping for Test Point Locations. 'tp-location- 362 type 'leaf is used to define locations types, for example 'ipv4- 363 location-type', 'ipv6-location-type', etc. Container is defined 364 under each location type containing list keyed to test point address, 365 Test Point Location Information defined in section above, and network 366 instance name(e.g., VRF instance name) if required. 368 3.6. Path Discovery Data 370 This is a generic grouping for path discovery data model that can be 371 retrieved by any data retrieval methods including RPC operations. 372 Path discovery data output from methods, includes 'src-test-point' 373 container, 'dst-test-point' container, 'sequence-number'leaf, 'hop- 374 cnt'leaf, session statistics of various kinds, path verification and 375 path trace related information. Path discovery includes data to be 376 retrieved on a 'per-hop' basis via a list of 'path-trace-info- 377 list'list which includes information like 'timestamp'grouping, ' 378 ingress-intf-name ', ' egress-intf-name ' and 'app-meta-data'. The 379 path discovery data model is made generic enough to allow different 380 methods of data retrieval. None of the fields are made mandatory for 381 that reason. Noted that the retrieval methods are defined in 382 [I-D.ietf-lime-yang-connectionless-oam-methods]. 384 3.7. Continuity Check Data 386 This is a generic grouping for continuity check data model that can 387 be retrieved by any data retrieval methods including RPC operations. 388 Continuity check data output from methods, includes 'src-test- 389 point'container, 'dst-test-point'container, 'sequence-number' leaf, 390 'hop-cnt'leaf and session statistics of various kinds. The 391 continuity check data model is made generic enough to allow different 392 methods of data retrieval. None of the fields are made mandatory for 393 that reason. Noted that the retrieval methods are defined in 394 [I-D.ietf-lime-yang-connectionless-oam-methods]. 396 3.8. OAM data hierarchy 398 The complete data hierarchy related to the OAM YANG model is 399 presented below. 401 module: ietf-connectionless-oam 402 +--ro cc-session-statistics-data {continuity-check}? 403 +--ro cc-session-statistics* [type] 404 +--ro type identityref 405 +--ro cc-ipv4-sessions-statistics 406 | +--ro cc-session-statistics 407 | +--ro session-count? uint32 408 | +--ro session-up-count? uint32 409 | +--ro session-down-count? uint32 410 | +--ro session-admin-down-count? uint32 411 +--ro cc-ipv6-sessions-statistics 412 +--ro cc-session-statistics 413 +--ro session-count? uint32 414 +--ro session-up-count? uint32 415 +--ro session-down-count? uint32 416 +--ro session-admin-down-count? uint32 417 augment /nd:networks/nd:network/nd:node: 418 +--rw tp-location-type? identityref 419 +--rw ipv4-location-type 420 | +--rw test-point-ipv4-location-list 421 | +--rw test-point-locations* [ipv4-location ni] 422 | +--rw ipv4-location inet:ipv4-address 423 | +--rw ni routing-instance-ref 424 | +--rw (technology)? 425 | | +--:(technology-null) 426 | | +--rw tech-null? empty 427 | +--rw tp-tools 428 | | +--rw continuity-check boolean 429 | | +--rw path-discovery boolean 430 | +--rw root? 431 | +--rw oam-neighboring-tps* [index] 432 | +--rw index uint16 433 | +--rw position? int8 434 | +--rw (tp-location)? 435 | +--:(mac-address) 436 | | +--rw mac-address-location? yang:mac-address 437 | +--:(ipv4-address) 438 | | +--rw ipv4-address-location? inet:ipv4-address 439 | +--:(ipv6-address) 440 | | +--rw ipv6-address-location? inet:ipv6-address 441 | +--:(as-number) 442 | | +--rw as-number-location? inet:as-number 443 | +--:(router-id) 444 | +--rw router-id-location? rt:router-id 445 +--rw ipv6-location-type 446 | +--rw test-point-ipv6-location-list 447 | +--rw test-point-locations* [ipv6-location ni] 448 | +--rw ipv6-location inet:ipv6-address 449 | +--rw ni routing-instance-ref 450 | +--rw (technology)? 451 | | +--:(technology-null) 452 | | +--rw tech-null? empty 453 | +--rw tp-tools 454 | | +--rw continuity-check boolean 455 | | +--rw path-discovery boolean 456 | +--rw root? 457 | +--rw oam-neighboring-tps* [index] 458 | +--rw index uint16 459 | +--rw position? int8 460 | +--rw (tp-location)? 461 | +--:(mac-address) 462 | | +--rw mac-address-location? yang:mac-address 463 | +--:(ipv4-address) 464 | | +--rw ipv4-address-location? inet:ipv4-address 465 | +--:(ipv6-address) 466 | | +--rw ipv6-address-location? inet:ipv6-address 467 | +--:(as-number) 468 | | +--rw as-number-location? inet:as-number 469 | +--:(router-id) 470 | +--rw router-id-location? rt:router-id 471 +--rw mac-location-type 472 | +--rw test-point-mac-address-location-list 473 | +--rw test-point-locations* [mac-address-location] 474 | +--rw mac-address-location yang:mac-address 475 | +--rw (technology)? 476 | | +--:(technology-null) 477 | | +--rw tech-null? empty 478 | +--rw tp-tools 479 | | +--rw continuity-check boolean 480 | | +--rw path-discovery boolean 481 | +--rw root? 482 | +--rw oam-neighboring-tps* [index] 483 | +--rw index uint16 484 | +--rw position? int8 485 | +--rw (tp-location)? 486 | +--:(mac-address) 487 | | +--rw mac-address-location? yang:mac-address 488 | +--:(ipv4-address) 489 | | +--rw ipv4-address-location? inet:ipv4-address 490 | +--:(ipv6-address) 491 | | +--rw ipv6-address-location? inet:ipv6-address 492 | +--:(as-number) 493 | | +--rw as-number-location? inet:as-number 494 | +--:(router-id) 495 | +--rw router-id-location? rt:router-id 496 +--rw group-as-number-location-type 497 | +--rw test-point-as-number-location-list 498 | +--rw test-point-locations* [as-number-location] 499 | +--rw as-number-location inet:as-number 500 | +--rw ni? routing-instance-ref 501 | +--rw (technology)? 502 | | +--:(technology-null) 503 | | +--rw tech-null? empty 504 | +--rw tp-tools 505 | | +--rw continuity-check boolean 506 | | +--rw path-discovery boolean 507 | +--rw root? 508 | +--rw oam-neighboring-tps* [index] 509 | +--rw index uint16 510 | +--rw position? int8 511 | +--rw (tp-location)? 512 | +--:(mac-address) 513 | | +--rw mac-address-location? yang:mac-address 514 | +--:(ipv4-address) 515 | | +--rw ipv4-address-location? inet:ipv4-address 516 | +--:(ipv6-address) 517 | | +--rw ipv6-address-location? inet:ipv6-address 518 | +--:(as-number) 519 | | +--rw as-number-location? inet:as-number 520 | +--:(router-id) 521 | +--rw router-id-location? rt:router-id 522 +--rw group-router-id-location-type 523 +--rw test-point-system-info-location-list 524 +--rw test-point-locations* [router-id-location] 525 +--rw router-id-location rt:router-id 526 +--rw ni? routing-instance-ref 527 +--rw (technology)? 528 | +--:(technology-null) 529 | +--rw tech-null? empty 530 +--rw tp-tools 531 | +--rw continuity-check boolean 532 | +--rw path-discovery boolean 533 +--rw root? 534 +--rw oam-neighboring-tps* [index] 535 +--rw index uint16 536 +--rw position? int8 537 +--rw (tp-location)? 538 +--:(mac-address) 539 | +--rw mac-address-location? yang:mac-address 540 +--:(ipv4-address) 541 | +--rw ipv4-address-location? inet:ipv4-address 542 +--:(ipv6-address) 543 | +--rw ipv6-address-location? inet:ipv6-address 544 +--:(as-number) 545 | +--rw as-number-location? inet:as-number 546 +--:(router-id) 547 +--rw router-id-location? rt:router-id 549 4. LIME Common Types YANG Module 551 file "ietf-lime-common-types@2017-09-06.yang" 553 module ietf-lime-common-types { 554 yang-version 1.1; 555 namespace "urn:ietf:params:xml:ns:yang:ietf-lime-common-types"; 556 prefix "lime"; 558 organization 559 "IETF Layer Independent OAM Management(LIME) 560 Working Group"; 562 contact 563 "WG Web: 564 WG List: 566 Editor: Qin Wu 567 "; 569 description 570 "This module provides common definitions used by the data 571 models written for Layer Independent OAM Management(LIME). 572 This module defines identities but no schema tree elements."; 574 revision "2017-09-06" { 575 description 576 "Initial version"; 577 reference 578 "RFC xxxx: A YANG Data Model for OAM Protocols that use Connectionless 579 Communications"; 580 } 582 /*** Collection of common types related to time ***/ 583 /*** Time unit identity ***/ 584 identity time-unit-type { 585 description 586 "Time unit type"; 587 } 588 identity hours { 589 base time-unit-type; 590 description 591 "Time unit in Hours"; 592 } 593 identity minutes { 594 base time-unit-type; 595 description 596 "Time unit in Minutes"; 597 } 598 identity seconds { 599 base time-unit-type; 600 description 601 "Time unit in Seconds"; 602 } 603 identity milliseconds { 604 base time-unit-type; 605 description 606 "Time unit in Milliseconds"; 607 } 608 identity microseconds { 609 base time-unit-type; 610 description 611 "Time unit in Microseconds"; 612 } 613 identity nanoseconds { 614 base time-unit-type; 615 description 616 "Time unit in Nanoseconds"; 617 } 618 /*** Timestamp format Identity ***/ 619 identity timestamp-type { 620 description 621 "Base identity for Timestamp Type."; 622 } 623 identity truncated-ptp { 624 base timestamp-type; 625 description 626 "Identity for 64bit short format PTP timestamp."; 627 } 628 identity truncated-ntp { 629 base timestamp-type; 630 description 631 "Identity for 32bit short format NTP timestamp."; 632 } 633 identity ntp64 { 634 base timestamp-type; 635 description 636 "Identity for 64bit NTP timestamp."; 637 } 638 identity icmp { 639 base timestamp-type; 640 description 641 "Identity for 32bit ICMP timestamp."; 642 } 643 } 645 647 5. Connectionless OAM YANG Module 649 file "ietf-connectionless-oam@2017-09-06.yang" 651 module ietf-connectionless-oam { 652 yang-version 1.1; 653 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 654 prefix cl-oam; 655 import ietf-yang-schema-mount { 656 prefix yangmnt; 657 } 658 import ietf-network { 659 prefix nd; 660 } 661 import ietf-yang-types { 662 prefix yang; 663 } 664 import ietf-interfaces { 665 prefix if; 666 } 667 import ietf-inet-types { 668 prefix inet; 669 } 670 import ietf-network-instance { 671 prefix ni; 672 } 673 import ietf-routing-types { 674 prefix rt; 675 } 676 import ietf-lime-common-types { 677 prefix lime; 678 } 679 organization 680 "IETF LIME Working Group"; 681 contact 682 "Deepak Kumar dekumar@cisco.com 683 Qin Wu bill.wu@huawei.com 684 S Raghavan srihari@cisco.com 685 Zitao Wang wangzitao@huawei.com 686 R Rahman rrahman@cisco.com"; 687 description 688 "This YANG module defines the generic configuration, 689 data model, and statistics for OAM protocols using 690 connectionless communications, described in a 691 protocol independent manner.It is assumed that each 692 protocol maps corresponding abstracts to its native 693 format. Each protocol mayextend the YANG model defined 694 here to include protocol specific extensions."; 695 revision 2017-09-06 { 696 description 697 " Base model for Connectionless 698 Operations, Administration, 699 and Maintenance(OAM) "; 700 reference 701 " RFC XXXX: Connectionless 702 Operations, Administration, and 703 Maintenance(OAM)YANG Data Model"; 705 } 706 feature connectionless { 707 description 708 "This feature indicates that OAM solution is connectionless."; 709 } 710 feature continuity-check { 711 description 712 "This feature indicates that the server supports 713 executing continuity check OAM command and 714 returning a response. Servers that do not advertise 715 this feature will not support executing 716 continuity check command or RPC operation model for 717 continuity check command."; 718 } 719 feature path-discovery { 720 description 721 "This feature indicates that the server supports 722 executing path discovery OAM command and 723 returning a response. Servers that do not advertise 724 this feature will not support executing 725 path discovery command or RPC operation model for 726 path discovery command."; 727 } 728 feature ptp-long-format { 729 description 730 "This feature indicates that timestamp is PTP long format."; 731 } 732 feature ntp-short-format { 733 description 734 "This feature indicates that timestamp is NTP short format."; 735 } 736 feature icmp-timestamp { 737 description 738 "This feature indicates that timestamp is ICMP timestamp."; 739 } 740 identity traffic-type { 741 description 742 "This is base identity of traffic type 743 which include IPv4 and IPv6,etc."; 744 } 745 identity ipv4 { 746 base traffic-type; 747 description 748 "identity for IPv4 traffic type."; 749 } 750 identity ipv6 { 751 base traffic-type; 752 description 753 "identity for IPv4 traffic type."; 754 } 755 identity address-attribute-types { 756 description 757 "This is base identity of address 758 attribute types which are Generic 759 IPv4/IPv6 Prefix,BGP Labeled 760 IPv4/IPv6 Prefix,Tunnel ID, 761 PW ID, vpls VE ID, etc.(See RFC8029 762 for details.)"; 763 } 764 typedef address-attribute-type { 765 type identityref { 766 base address-attribute-types; 767 } 768 description 769 "Target address attribute type."; 770 } 771 typedef percentage { 772 type decimal64 { 773 fraction-digits 5; 774 range "0..100"; 775 } 776 description "Percentage"; 777 } 778 typedef routing-instance-ref { 779 type leafref { 780 path "/ni:network-instances/ni:network-instance/ni:name"; 781 } 782 description 783 "This type is used for leafs that reference a routing instance 784 configuration."; 785 } 786 grouping cc-session-statistics { 787 description 788 "Grouping for session statistics."; 789 container cc-session-statistics { 790 description 791 "cc session counters"; 792 leaf session-count { 793 type uint32; 794 default "0"; 795 description 796 "Number of Continuity Check sessions. 797 A value of zero indicates that no session 798 count is sent."; 799 } 800 leaf session-up-count { 801 type uint32; 802 default "0"; 803 description 804 "Number of sessions which are up. 805 A value of zero indicates that no up 806 session count is sent."; 807 } 808 leaf session-down-count { 809 type uint32; 810 default "0"; 811 description 812 "Number of sessions which are down. 813 A value of zero indicates that no down 814 session count is sent."; 815 } 816 leaf session-admin-down-count { 817 type uint32; 818 default "0"; 819 description 820 "Number of sessions which are admin-down. 821 A value of zero indicates that no admin 822 down session count is sent."; 823 } 824 } 825 } 826 grouping session-packet-statistics { 827 description 828 "Grouping for per session packet statistics"; 829 container session-packet-statistics { 830 description 831 "Per session packet statistics."; 833 leaf rx-packet-count { 834 type uint32{ 835 range "0..4294967295"; 836 } 837 default "0"; 838 description 839 "Total number of received OAM packet count. 840 The value of count will be set to zero (0) 841 on creation and will thereafter increase 842 monotonically until it reaches a maximum value 843 of 2^32-1 (4294967295 decimal), when it wraps 844 around and starts increasing again from zero."; 845 } 846 leaf tx-packet-count { 847 type uint32{ 848 range "0..4294967295"; 849 } 850 default "0"; 851 description 852 "Total number of transmitted OAM packet count. 853 The value of count will be set to zero (0) 854 on creation and will thereafter increase 855 monotonically until it reaches a maximum value 856 of 2^32-1 (4294967295 decimal), when it wraps 857 around and starts increasing again from zero."; 858 } 859 leaf rx-bad-packet { 860 type uint32 { 861 range "0..4294967295"; 862 } 863 default "0"; 864 description 865 "Total number of received bad OAM packet. 866 The value of count will be set to zero (0) 867 on creation and will thereafter increase 868 monotonically until it reaches a maximum value 869 of 2^32-1 (4294967295 decimal), when it wraps 870 around and starts increasing again from zero."; 871 } 872 leaf tx-packet-failed { 873 type uint32 { 874 range "0..4294967295"; 875 } 876 default "0"; 877 description 878 "Total number of failed sending OAM packet. 879 The value of count will be set to zero (0) 880 on creation and will thereafter increase 881 monotonically until it reaches a maximum value 882 of 2^32-1 (4294967295 decimal), when it wraps 883 around and starts increasing again from zero."; 884 } 885 } 886 } 887 grouping cc-per-session-statistics { 888 description 889 "Grouping for per session statistics"; 890 container cc-per-session-statistics { 891 description 892 "per session statistics."; 894 leaf create-time { 895 type yang:date-and-time; 896 description 897 "Time and date when session is created."; 898 } 899 leaf last-down-time { 900 type yang:date-and-time; 901 description 902 "Time and date last time session is down."; 903 } 904 leaf last-up-time { 905 type yang:date-and-time; 906 description 907 "Time and date last time session is up."; 908 } 909 leaf down-count { 910 type uint32 { 911 range "0..4294967295"; 912 } 913 default "0"; 914 description 915 "Total Continuity Check sessions down count. 916 The value of count will be set to zero (0) 917 on creation and will thereafter increase 918 monotonically until it reaches a maximum value 919 of 2^32-1 (4294967295 decimal), when it wraps 920 around and starts increasing again from zero."; 921 } 922 leaf admin-down-count { 923 type uint32 { 924 range "0..4294967295"; 925 } 926 default "0"; 927 description 928 "Total Continuity Check sessions admin down count. 929 The value of count will be set to zero (0) 930 on creation and will thereafter increase 931 monotonically until it reaches a maximum value 932 of 2^32-1 (4294967295 decimal), when it wraps 933 around and starts increasing again from zero."; 934 } 935 uses session-packet-statistics; 936 } 937 } 938 grouping session-error-statistics { 939 description 940 "Grouping for per session error statistics"; 941 container session-error-statistics { 942 description 943 "Per session error statistics."; 944 leaf packet-loss-count { 945 type uint32 { 946 range "0..4294967295"; 947 } 948 default "0"; 949 description 950 "Total received packet drops count. 951 The value of count will be set to zero (0) 952 on creation and will thereafter increase 953 monotonically until it reaches a maximum value 954 of 2^32-1 (4294967295 decimal), when it wraps 955 around and starts increasing again from zero."; 956 } 957 leaf loss-ratio{ 958 type percentage; 959 description 960 "Loss ratio of the packets. Express as percentage 961 of packets lost with respect to packets sent."; 962 } 963 leaf packet-reorder-count { 964 type uint32 { 965 range "0..4294967295"; 966 } 967 default "0"; 968 description 969 "Total received packet reordered count. 970 The value of count will be set to zero (0) 971 on creation and will thereafter increase 972 monotonically until it reaches a maximum value 973 of 2^32-1 (4294967295 decimal), when it wraps 974 around and starts increasing again from zero."; 975 } 976 leaf packets-out-of-seq-count { 977 type uint32 { 978 range "0..4294967295"; 979 } 980 description 981 "Total received out of sequence count. 982 The value of count will be set to zero (0) 983 on creation and will thereafter increase 984 monotonically until it reaches a maximum value 985 of 2^32-1 (4294967295 decimal), when it wraps 986 around and starts increasing again from zero.."; 987 } 988 leaf packets-dup-count { 989 type uint32 { 990 range "0..4294967295"; 991 } 992 description 993 "Total received packet duplicates count. 994 The value of count will be set to zero (0) 995 on creation and will thereafter increase 996 monotonically until it reaches a maximum value 997 of 2^32-1 (4294967295 decimal), when it wraps 998 around and starts increasing again from zero."; 999 } 1000 } 1001 } 1002 grouping session-delay-statistics { 1003 description 1004 "Grouping for per session delay statistics"; 1005 container session-delay-statistics { 1006 description 1007 "Session delay summarised information.By default, 1008 one way measurement protocol (e.g., OWAMP)is used 1009 to measure delay. When two way measurement protocol 1010 (e.g., TWAMP) is used instead, it can be indicated 1011 using and protocol-id defined in RPC operation of 1012 draft-ietf-lime-yang-connectionless-oam-methods,i.e., 1013 set protocol-id as OWAMP. Note that only one measurement 1014 protocol for delay is specified for interoperability reason."; 1015 leaf time-unit-value { 1016 type identityref { 1017 base lime:time-unit-type; 1018 } 1019 default lime:milliseconds; 1020 description 1021 "Time units among choice of s,ms,ns etc."; 1022 } 1023 leaf min-delay-value { 1024 type uint32; 1025 description 1026 "Minimum delay value observed."; 1027 } 1028 leaf max-delay-value { 1029 type uint32; 1030 description 1031 "Maximum delay value observed."; 1032 } 1033 leaf average-delay-value { 1034 type uint32; 1035 description 1036 "Average delay value observed."; 1037 } 1038 } 1039 } 1040 grouping session-jitter-statistics { 1041 description 1042 "Grouping for per session jitter statistics"; 1043 container session-jitter-statistics { 1044 description 1045 "Session jitter summarised information. By default, 1046 jitter is measured using IP Packet Delay Variation 1047 (IPDV) as defined in RFC3393. When the other measurement 1048 method is used instead(e.g., Packet Delay Variation used in 1049 Y.1540, it can be indicated using protocol-id-meta-data 1050 defined in RPC operation of 1051 draft-ietf-lime-yang-connectionless-oam-methods. Note that 1052 only one measurement method for jitter is specified 1053 for interoperability reason."; 1054 leaf unit-value { 1055 type identityref { 1056 base lime:time-unit-type; 1057 } 1058 default lime:milliseconds; 1059 description 1060 "Time units among choice of s,ms,ns etc."; 1061 } 1062 leaf min-jitter-value { 1063 type uint32; 1064 description 1065 "Minimum jitter value observed."; 1066 } 1067 leaf max-jitter-value { 1068 type uint32; 1069 description 1070 "Maximum jitter value observed."; 1071 } 1072 leaf average-jitter-value { 1073 type uint32; 1074 description 1075 "Average jitter value observed."; 1076 } 1077 } 1078 } 1079 grouping session-path-verification-statistics { 1080 description 1081 "Grouping for per session path verification statistics"; 1082 container session-path-verification-statistics { 1083 description 1084 "OAM per session path verification statistics."; 1085 leaf verified-count { 1086 type uint32 { 1087 range "0..4294967295"; 1088 } 1089 description 1090 "Total number of OAM packets that 1091 went through a path as intended. 1092 The value of count will be set to zero (0) 1093 on creation and will thereafter increase 1094 monotonically until it reaches a maximum value 1095 of 2^32-1 (4294967295 decimal), when it wraps 1096 around and starts increasing again from zero."; 1097 } 1098 leaf failed-count { 1099 type uint32 { 1100 range "0..4294967295"; 1101 } 1102 description 1103 "Total number of OAM packets that 1104 went through an unintended path. 1105 The value of count will be set to zero (0) 1106 on creation and will thereafter increase 1107 monotonically until it reaches a maximum value 1108 of 2^32-1 (4294967295 decimal), when it wraps 1109 around and starts increasing again from zero."; 1110 } 1111 } 1112 } 1113 grouping session-type { 1114 description 1115 "This object indicates which kind 1116 of activation will be used by the current 1117 session."; 1118 leaf session-type { 1119 type enumeration { 1120 enum "proactive" { 1121 description 1122 "The current session is proactive session."; 1123 } 1124 enum "on-demand" { 1125 description 1126 "The current session is on-demand session."; 1127 } 1128 } 1129 default "on-demand"; 1130 description 1131 "Indicate which kind of activation will be used 1132 by the current session"; 1133 } 1134 } 1135 identity tp-address-technology-type { 1136 description 1137 "Test point address type"; 1138 } 1139 identity mac-address-type { 1140 base tp-address-technology-type; 1141 description 1142 "MAC address type"; 1143 } 1144 identity ipv4-address-type { 1145 base tp-address-technology-type; 1146 description 1147 "IPv4 address type"; 1148 } 1149 identity ipv6-address-type { 1150 base tp-address-technology-type; 1151 description 1152 "IPv6 address type"; 1153 } 1154 identity tp-attribute-type { 1155 base tp-address-technology-type; 1156 description 1158 "Test point attribute type"; 1159 } 1160 identity router-id-address-type { 1161 base tp-address-technology-type; 1162 description 1163 "System id address type"; 1164 } 1165 identity as-number-address-type { 1166 base tp-address-technology-type; 1167 description 1168 "AS number address type"; 1169 } 1170 identity route-distinguisher-address-type { 1171 base tp-address-technology-type; 1172 description 1173 "Route Distinguisher address type"; 1174 } 1175 grouping tp-address { 1176 leaf tp-location-type { 1177 type identityref { 1178 base tp-address-technology-type; 1179 } 1180 mandatory true; 1181 description 1182 "Test point address type."; 1183 } 1184 container mac-address { 1185 when "derived-from-or-self(../tp-location-type,"+ 1186 "'cl-oam:mac-address-type')" { 1187 description 1188 "MAC address type"; 1189 } 1190 leaf mac-address { 1191 type yang:mac-address; 1192 mandatory true; 1193 description 1194 "MAC Address"; 1195 } 1196 description 1197 "MAC Address based TP Addressing."; 1198 } 1199 container ipv4-address { 1200 when "derived-from-or-self(../tp-location-type,"+ 1201 "'cl-oam:ipv4-address-type')" { 1202 description 1203 "IPv4 address type"; 1204 } 1205 leaf ipv4-address { 1206 type inet:ipv4-address; 1207 mandatory true; 1209 description 1210 "IPv4 Address"; 1211 } 1212 description 1213 "IP Address based TP Addressing."; 1214 } 1215 container ipv6-address { 1216 when "derived-from-or-self(../tp-location-type,"+ 1217 "'cl-oam:ipv6-address-type')" { 1218 description 1219 "IPv6 address type"; 1220 } 1221 leaf ipv6-address { 1223 type inet:ipv6-address; 1224 mandatory true; 1225 description 1226 "IPv6 Address"; 1227 } 1228 description 1229 "ipv6 Address based TP Addressing."; 1230 } 1231 container tp-attribute { 1232 when "derived-from-or-self(../tp-location-type,"+ 1233 "'cl-oam:tp-attribute-type')" { 1234 description 1235 "Test point attribute type"; 1236 } 1237 leaf tp-attribute-type { 1238 type address-attribute-type; 1239 description 1240 "Test point type."; 1241 } 1242 choice tp-attribute-value { 1243 description 1244 "Test point value."; 1245 case ip-prefix { 1246 leaf ip-prefix { 1247 type inet:ip-prefix; 1248 description 1249 "Generic IPv4/IPv6 prefix.See Section 3.2.13 and 1250 Section 3.2.14 of RFC8029."; 1251 reference 1252 "RFC 8029 :Detecting Multi-Protocol Label 1253 Switched (MPLS) Data Plane Failures"; 1254 } 1255 } 1256 case bgp { 1257 leaf bgp { 1258 type inet:ip-prefix; 1259 description 1260 "BGP Labeled IPv4/IPv6 Prefix.See section 1261 3.2.11 and section 3.2.12 of RFC8029 for details. "; 1262 reference 1263 "RFC 8029 :Detecting Multi-Protocol Label 1264 Switched (MPLS) Data Plane Failures"; 1265 } 1266 } 1267 case tunnel { 1268 leaf tunnel-interface { 1269 type uint32; 1270 description 1271 "Basic IPv4/IPv6 Tunnel ID. See section 3.2.3 1272 and Section 3.2.4 of RFC8029 for details."; 1273 reference 1274 "RFC 8029 :Detecting Multi-Protocol Label 1275 Switched (MPLS) Data Plane Failures."; 1276 } 1277 } 1278 case pw { 1279 leaf remote-pe-address { 1280 type inet:ip-address; 1281 description 1282 "Remote PE address,See section 3.2.8 1283 of RFC8029 for details."; 1284 reference 1285 "RFC 8029 :Detecting Multi-Protocol Label 1286 Switched (MPLS) Data Plane Failures"; 1287 } 1288 leaf pw-id { 1289 type uint32; 1290 description 1291 "Pseudowire ID is a non-zero 32-bit ID.See section 1292 3.2.8 and Section 3.2.9 for details."; 1293 reference 1294 "RFC 8029 :Detecting Multi-Protocol Label 1295 Switched (MPLS) Data Plane Failures"; 1296 } 1297 } 1298 case vpls { 1299 leaf route-distinguisher { 1300 type rt:route-distinguisher; 1301 description 1302 "Route Distinguisher is an 8 octets identifier 1303 used to distinguish information about various 1304 L2VPN advertised by a node."; 1305 reference 1306 "RFC 8029 :Detecting Multi-Protocol Label 1307 Switched (MPLS) Data Plane Failures"; 1308 } 1309 leaf sender-ve-id { 1310 type uint16; 1311 description 1312 "Sender's VE ID. The VE ID (VPLS Edge Identifier) 1313 is a 2-octet identifier."; 1314 reference 1315 "RFC 8029 :Detecting Multi-Protocol Label 1316 Switched (MPLS) Data Plane Failures"; 1317 } 1318 leaf receiver-ve-id { 1319 type uint16; 1320 description 1321 "Receiver's VE ID.The VE ID (VPLS Edge Identifier) 1322 is a 2-octet identifier."; 1323 reference 1324 "RFC 8029 :Detecting Multi-Protocol Label 1325 Switched (MPLS) Data Plane Failures"; 1326 } 1327 } 1328 case mpls-mldp { 1329 choice root-address { 1330 description 1331 "Root address choice."; 1332 case ip-address { 1333 leaf source-address { 1334 type inet:ip-address; 1335 description 1336 "IP address."; 1337 } 1338 leaf group-ip-address { 1339 type inet:ip-address; 1340 description 1341 "Group ip address."; 1342 } 1343 } 1344 case vpn { 1345 leaf as-number { 1346 type inet:as-number; 1347 description 1348 "The AS number represents autonomous system 1349 numbers which identify an Autonomous System."; 1350 } 1351 } 1352 case global-id { 1353 leaf lsp-id { 1354 type string; 1355 description 1356 "LSP ID is an identifier of a LSP 1357 within a MPLS network."; 1358 reference 1359 "RFC 8029 :Detecting Multi-Protocol Label 1360 Switched (MPLS) Data Plane Failures"; 1361 } 1362 } 1363 } 1364 } 1365 } 1366 description 1367 "Test Point Attribute Container"; 1368 } 1369 container system-info { 1370 when "derived-from-or-self(../tp-location-type,"+ 1371 "'cl-oam:router-id-address-type')" { 1372 description 1373 "System id address type"; 1374 } 1375 leaf router-id { 1376 type rt:router-id; 1377 description 1378 "Router ID assigned to this node."; 1379 } 1380 description 1381 "Router ID container."; 1382 } 1383 description 1384 "TP Address"; 1385 } 1386 grouping tp-address-ni { 1387 description 1388 "Test point address with VRF."; 1389 leaf ni { 1390 type routing-instance-ref; 1391 description 1392 "The ni is used to describe virtual resource partitioning 1393 that may be present on a network device.Example of common 1394 industry terms for virtual resource partitioning is VRF 1395 instance."; 1396 } 1397 uses tp-address; 1398 } 1399 grouping connectionless-oam-tps { 1400 list oam-neighboring-tps { 1401 key "index"; 1402 leaf index { 1403 type uint16{ 1404 range "0..65535"; 1405 } 1406 description 1407 "List of related neighboring test points in adjacent 1408 layers up and down the stack for the same interface 1409 that are related to the current test point"; 1410 } 1411 leaf position { 1412 type int8 { 1413 range "-1..1"; 1414 } 1415 default "0"; 1416 description 1417 "The relative position 1418 of neighboring test point 1419 corresponding to the current 1420 test point.Level 0 indicates no neighboring 1421 test points placed before or after the current 1422 test point in the same layer.-1 means there is 1423 a neighboring test point placed before the current 1424 test point in the same layer and +1 means there is 1425 a neighboring test point placed after the current 1426 test point in same layer."; 1427 } 1428 choice tp-location { 1429 case mac-address { 1430 leaf mac-address-location { 1431 type yang:mac-address; 1432 description 1433 "MAC Address"; 1434 } 1435 description 1436 "MAC Address based TP Addressing."; 1437 } 1438 case ipv4-address { 1439 leaf ipv4-address-location { 1440 type inet:ipv4-address; 1441 description 1442 "Ipv4 Address"; 1443 } 1444 description 1445 "IP Address based TP Addressing."; 1446 } 1447 case ipv6-address { 1448 leaf ipv6-address-location { 1449 type inet:ipv6-address; 1450 description 1451 "IPv6 Address"; 1452 } 1453 description 1454 "IPv6 Address based TP Addressing."; 1455 } 1456 case as-number { 1457 leaf as-number-location { 1458 type inet:as-number; 1459 description 1460 "AS number location"; 1461 } 1462 description 1463 "AS number for point to multipoint OAM"; 1464 } 1465 case router-id { 1466 leaf router-id-location { 1467 type rt:router-id; 1468 description 1469 "System id location"; 1470 } 1472 description 1473 "System ID"; 1474 } 1475 description 1476 "TP location."; 1477 } 1478 description 1479 "List of neighboring test points in the same layer that are related to current test 1480 point. If the neighboring test-point is placed after the current test point, the 1481 position is specified as +1. If neighboring test-point 1482 is placed before the current test point, the position is specified 1483 as -1, if no neighboring test points placed before or after the current 1484 test point in the same layer, the position is specified as 0."; 1485 } 1486 description 1487 "Connectionless OAM related neighboring test points list."; 1488 } 1489 grouping tp-technology { 1490 choice technology { 1491 default "technology-null"; 1492 case technology-null { 1493 description 1494 "This is a placeholder when no technology is needed."; 1495 leaf tech-null { 1496 type empty; 1497 description 1498 "There is no technology to be defined."; 1499 } 1500 } 1501 description 1502 "Technology choice."; 1503 } 1504 description 1505 "OAM Technology"; 1506 } 1507 grouping tp-tools { 1508 description 1509 "Test Point OAM Toolset."; 1510 container tp-tools { 1511 leaf continuity-check { 1512 type boolean; 1513 mandatory true; 1514 description 1515 "A flag indicating whether or not the 1516 continuity check function is supported."; 1517 reference 1519 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1520 RFC 4443: Internet Control Message Protocol (ICMPv6) 1521 for the Internet Protocol Version 6 (IPv6) Specification. 1522 RFC 5880: Bidirectional Forwarding Detection. 1523 RFC 5881: BFD for IPv4 and IPv6. 1524 RFC 5883: BFD for Multihop Paths. 1526 RFC 5884: BFD for MPLS Label Switched Paths. 1527 RFC 5885: BFD for PW VCCV. 1528 RFC 6450: Multicast Ping Protocol. 1529 RFC 8029: Detecting Multiprotocol Label Switched 1530 (MPLS) Data-Plane Failures."; 1531 } 1532 leaf path-discovery { 1533 type boolean; 1534 mandatory true; 1535 description 1536 "A flag indicating whether or not the 1537 path discovery function is supported."; 1538 reference 1539 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1540 RFC 4443: Internet Control Message Protocol (ICMPv6) 1541 for the Internet Protocol Version 6 (IPv6) Specification. 1542 RFC 4884: Extended ICMP to Support Multi-part Message. 1543 RFC 5837:Extending ICMP for Interface. 1544 and Next-Hop Identification. 1545 RFC 8029: Detecting Multiprotocol Label Switched (MPLS) 1546 Data-Plane Failures."; 1547 } 1548 description 1549 "Container for test point OAM tools set."; 1550 } 1551 } 1552 grouping test-point-location-info { 1553 uses tp-technology; 1554 uses tp-tools; 1555 anydata root { 1556 yangmnt:mount-point "root"; 1557 description 1558 "Root for models supported per 1559 test point"; 1560 } 1561 uses connectionless-oam-tps; 1562 description 1563 "Test point Location"; 1564 } 1565 grouping test-point-locations { 1566 description 1567 "Group of test point locations."; 1568 leaf tp-location-type { 1570 type identityref { 1571 base tp-address-technology-type; 1572 } 1573 description 1574 "Test point location type."; 1575 } 1576 container ipv4-location-type { 1577 when "derived-from-or-self(../tp-location-type,"+ 1578 "'cl-oam:ipv4-address-type')" { 1579 description 1580 "When test point location type is equal to ipv4 address."; 1581 } 1582 container test-point-ipv4-location-list { 1583 list test-point-locations { 1584 key "ipv4-location ni"; 1585 leaf ipv4-location { 1586 type inet:ipv4-address; 1587 description 1588 "IPv4 Address."; 1589 } 1590 leaf ni { 1591 type routing-instance-ref; 1592 description 1593 "The ni is used to describe the 1594 corresponding network instance"; 1595 } 1596 uses test-point-location-info; 1597 description 1598 "List of test point locations."; 1599 } 1600 description 1601 "Serves as top-level container 1602 for test point location list."; 1603 } 1604 description 1605 "ipv4 location type container."; 1606 } 1607 container ipv6-location-type { 1608 when "derived-from-or-self(../tp-location-type,"+ 1609 "'cl-oam:ipv6-address-type')" { 1610 description 1611 "when test point location is equal to ipv6 address"; 1612 } 1613 container test-point-ipv6-location-list { 1614 list test-point-locations { 1615 key "ipv6-location ni"; 1616 leaf ipv6-location { 1617 type inet:ipv6-address; 1618 description 1619 "IPv6 Address."; 1620 } 1621 leaf ni { 1622 type routing-instance-ref; 1623 description 1624 "The ni is used to describe the 1625 corresponding network instance"; 1626 } 1627 uses test-point-location-info; 1628 description 1629 "List of test point locations."; 1630 } 1631 description 1632 "Serves as top-level container 1633 for test point location list."; 1634 } 1635 description 1636 "ipv6 location type container."; 1637 } 1638 container mac-location-type { 1639 when "derived-from-or-self(../tp-location-type,"+ 1640 "'cl-oam:mac-address-type')" { 1641 description 1642 "when test point location type is equal to mac address."; 1643 } 1644 container test-point-mac-address-location-list { 1645 list test-point-locations { 1646 key "mac-address-location"; 1647 leaf mac-address-location { 1648 type yang:mac-address; 1649 description 1650 "MAC Address"; 1651 } 1652 uses test-point-location-info; 1653 description 1654 "List of test point locations."; 1655 } 1656 description 1657 "Serves as top-level container 1658 for test point location list."; 1659 } 1660 description 1661 "mac address location type container."; 1662 } 1663 container group-as-number-location-type { 1664 when "derived-from-or-self(../tp-location-type,"+ 1665 "'cl-oam:as-number-address-type')" { 1666 description 1667 "when test point location type is equal to as-number."; 1668 } 1669 container test-point-as-number-location-list { 1670 list test-point-locations { 1671 key "as-number-location"; 1672 leaf as-number-location { 1673 type inet:as-number; 1674 description 1675 "AS number for point to multi point OAM."; 1676 } 1677 leaf ni { 1678 type routing-instance-ref; 1679 description 1680 "The ni is used to describe the 1681 corresponding network instance"; 1682 } 1683 uses test-point-location-info; 1684 description 1685 "List of test point locations."; 1686 } 1687 description 1688 "Serves as top-level container 1689 for test point location list."; 1690 } 1691 description 1692 "as number location type container."; 1693 } 1694 container group-router-id-location-type { 1695 when "derived-from-or-self(../tp-location-type,"+ 1696 "'cl-oam:router-id-address-type')" { 1697 description 1698 "when test point location type is equal to system-info."; 1699 } 1700 container test-point-system-info-location-list { 1701 list test-point-locations { 1702 key "router-id-location"; 1703 leaf router-id-location { 1704 type rt:router-id; 1705 description 1706 "System Id."; 1707 } 1708 leaf ni { 1709 type routing-instance-ref; 1710 description 1711 "The ni is used to describe the 1712 corresponding network instance"; 1713 } 1714 uses test-point-location-info; 1715 description 1716 "List of test point locations."; 1717 } 1718 description 1719 "Serves as top-level container for 1720 test point location list."; 1721 } 1722 description 1723 "system ID location type container."; 1724 } 1725 } 1726 augment "/nd:networks/nd:network/nd:node" { 1727 description 1728 "augments the /networks/network/node path defined in the ietf- 1729 network module (I-D.ietf-i2rs-yang-network-topo) with test-point- 1730 locations grouping."; 1731 uses test-point-locations; 1732 } 1733 grouping timestamp { 1734 description 1735 "Grouping for timestamp."; 1736 leaf timestamp-type { 1737 type identityref { 1738 base lime:timestamp-type; 1739 } 1740 description 1741 "Type of Timestamp, such as Truncated PTP, NTP."; 1742 } 1743 container timestamp-64bit { 1744 when "derived-from-or-self(../timestamp-type, 'cl-oam:truncated-ptp')"+ 1745 "or derived-from-or-self(../timestamp-type,'cl-oam:ntp64')" { 1746 description 1747 "Only applies when Truncated NTP or 64bit NTP Timestamp."; 1748 } 1749 leaf timestamp-sec { 1750 type uint32; 1751 description 1752 "Absolute timestamp in seconds as per IEEE1588v2 1753 or seconds part in 64-bit NTP timestamp."; 1754 } 1755 leaf timestamp-nanosec { 1756 type uint32; 1757 description 1758 "Fractional part in nanoseconds as per IEEE1588v2 1759 or Fractional part in 64-bit NTP timestamp."; 1760 } 1761 description 1762 "Container for 64bit timestamp."; 1763 } 1764 container timestamp-80bit { 1765 when "derived-from-or-self(../timestamp-type, 'cl-oam:ptp80')"{ 1766 description 1767 "Only applies when 80bit PTP Timestamp."; 1768 } 1769 if-feature ptp-long-format; 1770 leaf timestamp-sec { 1771 type uint64 { 1772 range "0..281474976710655"; 1773 } 1774 description 1775 "48bit Timestamp in seconds as per IEEE1588v2."; 1776 } 1777 leaf timestamp-nanosec { 1778 type uint32; 1779 description 1780 "Fractional part in nanoseconds as per IEEE1588v2 1781 or Fractional part in 64-bit NTP timestamp."; 1782 } 1783 description 1784 "Container for 80bit timestamp."; 1785 } 1786 container ntp-timestamp-32bit { 1787 when "derived-from-or-self(../timestamp-type, 'cl-oam:truncated-ntp')"{ 1788 description 1789 "Only applies when 32 bit NTP Short format Timestamp."; 1790 } 1791 if-feature ntp-short-format; 1792 leaf timestamp-sec { 1793 type uint16; 1794 description 1795 "Timestamp in seconds as per short format NTP."; 1796 } 1797 leaf timestamp-nanosec { 1798 type uint16; 1799 description 1800 "Truncated Fractional part in 16-bit NTP timestamp."; 1801 } 1802 description 1803 "Container for 32bit timestamp."; 1804 } 1805 container icmp-timestamp-32bit { 1806 when "derived-from-or-self(../timestamp-type, 'cl-oam:icmp-ntp')"{ 1807 description 1808 "Only applies when Truncated NTP or 64bit NTP Timestamp."; 1809 } 1810 if-feature icmp-timestamp; 1811 leaf timestamp-millisec { 1812 type uint32; 1814 description 1815 "timestamp in milliseconds for ICMP timestamp."; 1816 } 1817 description 1818 "Container for 32bit timestamp."; 1819 } 1820 } 1821 grouping path-discovery-data { 1822 description 1823 "Path discovery related data output from nodes."; 1824 container src-test-point { 1825 description 1826 "Source test point."; 1827 uses tp-address-ni; 1828 } 1829 container dest-test-point { 1830 description 1831 "Destination test point."; 1832 uses tp-address-ni; 1833 } 1834 leaf sequence-number { 1835 type uint64; 1836 default "0"; 1837 description 1838 "Sequence number in data packets.A value of 1839 zero indicates that no sequence number is sent."; 1840 } 1841 leaf hop-cnt { 1842 type uint8; 1843 default "0"; 1844 description 1845 "Hop count.A value of zero indicates 1846 that no hop count is sent"; 1847 } 1848 uses session-packet-statistics; 1849 uses session-error-statistics; 1850 uses session-delay-statistics; 1851 uses session-jitter-statistics; 1852 container path-verification { 1853 description 1854 "Optional path verification related information."; 1855 leaf flow-info { 1856 type string; 1857 description 1858 "Informations that refers to the flow."; 1859 } 1860 uses session-path-verification-statistics; 1861 } 1862 container path-trace-info { 1863 description 1864 "Optional path trace per-hop test point information. 1865 The path trace information list has typically a single 1866 element for per-hop cases like path-discovery RPC operation 1867 but allows a list of hop related information for other types of 1868 data retrieval methods."; 1869 list path-trace-info-list { 1870 key "index"; 1871 description 1872 "Path trace information list."; 1873 leaf index { 1874 type uint32; 1875 description 1876 "Trace information index."; 1877 } 1878 uses tp-address-ni; 1879 uses timestamp; 1880 leaf ingress-intf-name { 1881 type if:interface-ref; 1882 description 1883 "Ingress interface name"; 1884 } 1885 leaf egress-intf-name { 1886 type if:interface-ref; 1887 description 1888 "Egress interface name"; 1889 } 1890 leaf queue-depth { 1891 type uint32; 1892 description 1893 "Length of the queue of the interface from where 1894 the packet is forwarded out. The queue depth could 1895 be the current number of memory buffers used by the 1896 queue and a packet can consume one or more memory buffers 1897 thus constituting device-level information."; 1898 } 1899 leaf transit-delay { 1900 type uint32; 1901 description 1902 "Time in nano seconds 1903 packet spent transiting a node."; 1904 } 1905 leaf app-meta-data { 1906 type uint64; 1907 description 1909 "Application specific 1910 data added by node."; 1911 } 1912 } 1913 } 1914 } 1915 grouping continuity-check-data { 1916 description 1917 "Continuity check data output from nodes."; 1918 container src-test-point { 1919 description 1920 "Source test point."; 1921 uses tp-address-ni; 1922 leaf egress-intf-name { 1923 type if:interface-ref; 1924 description 1925 "Egress interface name."; 1926 } 1927 } 1928 container dest-test-point { 1929 description 1930 "Destination test point."; 1931 uses tp-address-ni; 1932 leaf ingress-intf-name { 1933 type if:interface-ref; 1934 description 1935 "Ingress interface name."; 1936 } 1937 } 1938 leaf sequence-number { 1939 type uint64; 1940 default "0"; 1941 description 1942 "Sequence number in data packets.A value of 1943 zero indicates that no sequence number is sent."; 1944 } 1945 leaf hop-cnt { 1946 type uint8; 1947 default "0"; 1948 description 1949 "Hop count.A value of zero indicates 1950 that no hop count is sent"; 1951 } 1952 uses session-packet-statistics; 1953 uses session-error-statistics; 1954 uses session-delay-statistics; 1955 uses session-jitter-statistics; 1956 } 1957 container cc-session-statistics-data { 1958 if-feature "continuity-check"; 1959 config false; 1960 list cc-session-statistics { 1961 key type; 1962 leaf type { 1963 type identityref { 1964 base traffic-type; 1965 } 1966 description 1967 "Type of traffic."; 1968 } 1969 container cc-ipv4-sessions-statistics { 1970 when "../type = 'ipv4'" { 1971 description 1972 "Only applies when traffic type is Ipv4."; 1973 } 1974 description 1975 "CC ipv4 sessions"; 1976 uses cc-session-statistics; 1977 } 1978 container cc-ipv6-sessions-statistics { 1979 when "../type = 'ipv6'" { 1980 description 1981 "Only applies when traffic type is Ipv6."; 1982 } 1983 description 1984 "CC ipv6 sessions"; 1985 uses cc-session-statistics; 1986 } 1987 description 1988 "List of CC session statistics data."; 1989 } 1990 description 1991 "CC operational information."; 1992 } 1993 } 1995 1997 6. Connectionless model applicability 1999 The "ietf-connectionless-oam" model defined in this document provides 2000 a technology-independent abstraction of key OAM constructs for 2001 connectionless protocols. This model can be further extended to 2002 include technology specific details, e.g., adding new data nodes with 2003 technology specific functions and parameters into proper anchor 2004 points of the base model, so as to develop a technology-specific 2005 connectionless OAM model. 2007 This section demonstrates the usability of the connectionless YANG 2008 OAM data model to various connectionless OAM technologies, e.g., BFD, 2009 LSP ping. Note that, in this section, several snippets of 2010 technology-specific model extensions are presented for illustrative 2011 purposes. The complete model extensions should be worked on in 2012 respective protocol working groups. 2014 6.1. BFD Extension 2016 RFC 7276 defines BFD as a connection-oriented protocol. It is used 2017 to monitor a connectionless protocol in the case of basic BFD for IP. 2019 6.1.1. Augment Method 2021 The following sections shows how the "ietf-connectionless-oam" model 2022 can be extended to cover BFD technology. For this purpose, a set of 2023 extension are introduced such as technology-type extension and test- 2024 point attributes extension. 2026 Note that a dedicated BFD YANG data model [I-D.ietf-bfd-yang] is also 2027 standardized. Augmentation of the "ietf-connectionless-oam" model 2028 with BFD specific details provides an alternative approach that 2029 provides a unified view of management information across various OAM 2030 protocols. The BFD specific details can be the grouping defined in 2031 the BFD model avoiding duplication of effort. 2033 6.1.1.1. Technology type extension 2035 No BFD technology type has been defined in the "ietf-connectionless- 2036 oam" model. Therefore a technology type extension is required in the 2037 model Extension. 2039 The snippet below depicts an example of adding the "bfd" type as an 2040 augment to the ietf-connectionless-oam" model: 2042 augment "/nd:networks/nd:network/nd:node/" 2043 +"coam:location-type/coam:ipv4-location-type" 2044 +"/coam:test-point-ipv4-location-list/" 2045 +"coam:test-point-locations/coam:technology" 2046 { 2047 leaf bfd{ 2048 type string; 2049 } 2050 } 2052 6.1.1.2. Test point attributes extension 2054 To support BFD technology, the "ietf-connectionless-oam" model can be 2055 extended by adding specific parameters into the "test-point- 2056 locations" list and/or adding a new location type such as "BFD over 2057 MPLS TE" under "location-type". 2059 6.1.1.2.1. Define and insert new nodes into corresponding test-point- 2060 location 2062 In the "ietf-connectionless-oam" model, multiple "test-point- 2063 location" lists are defined under the "location-type" choice node. 2064 Therefore, to derive a model for some BFD technologies ( such as ip 2065 single-hop, ip multi-hops, etc), data nodes for BFD specific details 2066 need to be added into corresponding "test-point-locations" list. In 2067 this section, some groupings which are defined in [I-D.ietf-bfd-yang] 2068 are reused as follow: 2070 The snippet below shows how the "ietf-connectionless-oam" model can 2071 be extended to support "BFD IP single-hop": 2073 augment "/nd:networks/nd:network/nd:node/" 2074 +"coam:location-type/coam:ipv4-location-type" 2075 +"/coam:test-point-ipv4-location-list/" 2076 +"coam:test-point-locations" 2077 { 2078 container session-cfg { 2079 description "BFD IP single-hop session configuration"; 2080 list sessions { 2081 key "interface dest-addr"; 2082 description "List of IP single-hop sessions"; 2083 leaf interface { 2084 type if:interface-ref; 2085 description 2086 "Interface on which the BFD session is running."; 2087 } 2088 leaf dest-addr { 2089 type inet:ip-address; 2090 description "IP address of the peer"; 2091 } 2092 uses bfd:bfd-grouping-common-cfg-parms; 2093 uses bfd:bfd-grouping-echo-cfg-parms; 2094 } 2095 } 2096 } 2098 Similar augmentations can be defined to support other BFD 2099 technologies such as BFD IP multi-hop, BFD over MPLS, etc. 2101 6.1.1.2.2. Add new location-type cases 2103 In the "ietf-connectionless-oam" model, If there is no appropriate 2104 "location type" case that can be extended, a new "location-type" case 2105 can be defined and inserted into the "location-type" choice node. 2107 Therefore, the model user can flexibly add "location-type" to support 2108 other type of test point which are not defined in the "ietf- 2109 connectionless-oam" model. In this section, a new "location-type" 2110 case is added and some groupings that are defined in 2111 [I-D.ietf-bfd-yang] are reused as follows: 2113 The snippet below shows how the "ietf-connectionless-oam" model can 2114 be extended to support "BFD over MPLS-TE": 2116 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 2117 case te-location{ 2118 list test-point-location-list{ 2119 key "tunnel-name"; 2120 leaf tunnel-name{ 2121 type leafref{ 2122 path "/te:te/te:tunnels/te:tunnel/te:name"; 2123 } 2124 description 2125 "point to a te instance."; 2126 } 2127 uses bfd:bfd-grouping-common-cfg-parms; 2128 uses bfd-mpls:bfd-encap-cfg; 2129 } 2130 } 2131 } 2133 Similar augmentations can be defined to support other BFD 2134 technologies such as BFD over LAG, etc. 2136 6.1.2. Schema Mount 2138 Another alternative method is using the schema mount mechanism [I- 2139 D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam" model. 2140 Within the "test-point-locations" list, a "root" attribute is defined 2141 to provide a mount point for models mounted per "test-point- 2142 locations". Therefore, the "ietf-connectionless-oam" model can 2143 provide a place in the node hierarchy where other OAM YANG data 2144 models can be attached, without any special extension in the "ietf- 2145 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 2146 Note that the limitation of the Schema Mount method is it is not 2147 allowed to specify certain modules that are required to be mounted 2148 under a mount point. 2150 The snippet below depicts the definition of the "root" attribute. 2152 anydata root { 2153 yangmnt:mount-point root; 2154 description 2155 "Root for models supported per 2156 test point"; 2157 } 2159 The following section shows how the "ietf-connectionless-oam" model 2160 can use schema mount to support BFD technology. 2162 6.1.2.1. BFD Modules be populated in schema-mount 2164 To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG 2165 modules might be populated in the "schema-mounts" container: 2167 2169 2170 ietf-connectionless-oam 2171 root 2172 2173 root 2174 2175 2176 2177 root 2178 2179 ietf-bfd-ip-sh 2180 2016-07-04 2181 2182 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2183 2184 implement 2185 2186 2187 ietf-bfd-ip-mh 2188 2016-07-04 2189 2190 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2191 2192 implement 2193 2194 2195 2197 and the " ietf-connectionless-oam " module might have: 2199 2201 ...... 2202 2203 192.0.2.1 2204 ...... 2205 2206 2207 2208 foo 2209 ...... 2210 2211 2212 2213 2214 foo 2215 ...... 2216 2217 2218 2219 2220 2222 6.2. LSP ping extension 2224 6.2.1. Augment Method 2226 The following sections shows how the "ietf-connectionless-oam" model 2227 can be extended to support LSP ping technology. For this purpose, a 2228 set of extensions are introduced such as the "technology-type" 2229 extension and the test-point "attributes" extension. 2231 Note that a LSP Ping YANG data model 2232 [I-D.zheng-mpls-lsp-ping-yang-cfg] has been standardized. As with 2233 BFD, users can choose to use the "ietf-connectioless-oam" as basis 2234 and augment the "ietf- connectionless-oam" model with LSP Ping 2235 specific details in the model extension to provide a unified view 2236 across different technologies. The LSP Ping specific details can be 2237 the grouping defined in the LSP ping model to avoid duplication of 2238 effort. 2240 6.2.1.1. Technology type extension 2242 No lsp-ping technology type has been defined in the "ietf- 2243 connectionless-oam" model. Therefore a technology type extension is 2244 required in the model extension. 2246 The snippet below depicts an example of augmenting the "ietf- 2247 connectionless-oam" with "lsp-ping" type: 2249 augment "/nd:networks/nd:network/nd:node/" 2250 +"coam:location-type/coam:ipv4-location-type" 2251 +"/coam:test-point-ipv4-location-list/" 2252 +"coam:test-point-locations/coam:technology" 2253 { 2254 leaf lsp-ping{ 2255 type string; 2256 } 2257 } 2259 6.2.1.2. Test point attributes extension 2261 To support lsp-ping, the "ietf-connectionless-oam" model can be 2262 extended and add lsp-ping specific parameters can be defined and 2263 under "test-point-locations" list. 2265 Users can reuse the attributes or groupings which are defined in 2266 [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: 2268 The snippet below depicts an example of augmenting the "test-point- 2269 locations" list with lsp ping attributes: 2271 augment "/nd:networks/nd:network/nd:node/" 2272 +"coam:location-type/coam:ipv4-location-type" 2273 +"/coam:test-point-ipv4-location-list/" 2274 +"coam:test-point-locations" 2275 { 2276 list lsp-ping { 2277 key "lsp-ping-name"; 2278 leaf lsp-ping-name { 2279 type string { 2280 length "1..31"; 2281 } 2282 mandatory "true"; 2283 description "LSP Ping test name."; 2284 ...... 2285 } 2287 6.2.2. Schema Mount 2289 And another alternative method is using schema mount mechanism 2290 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 2291 Within the "test-point-locations" list, a "root" attribute is defined 2292 to provide a mounted point for models mounted per "test-point- 2293 locations". Therefore, the "ietf-connectionless-oam" model can 2294 provide a place in the node hierarchy where other OAM YANG data 2295 models can be attached, without any special extension in the "ietf- 2296 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 2297 Note that the limitation of the Schema Mount method is it is not 2298 allowed to specify certain modules that are required to be mounted 2299 under a mount point. 2301 The snippet below depicts the definition of "root" attribute. 2303 anydata root { 2304 yangmnt:mount-point root; 2305 description 2306 "Root for models supported per 2307 test point"; 2308 } 2310 The following section shows how the "ietf-connectionless-oam" model 2311 can use schema mount to support LSP-PING technology. 2313 6.2.2.1. LSP-PING Modules be populated in schema-mount 2315 To support LSP-PING technology, "ietf-lspping" YANG module 2316 [I-D.zheng-mpls-lsp-ping-yang-cfg] might be populated in the "schema- 2317 mounts" container: 2319 2321 2322 ietf-connectionless-oam 2323 root 2324 2325 root 2326 2327 2328 2329 root 2330 2331 ietf-lspping 2332 2016-03-18 2333 2334 urn:ietf:params:xml:ns:yang: ietf-lspping 2335 2336 implement 2337 2338 2339 2341 and the " ietf-connectionless-oam " module might have: 2343 2345 ...... 2346 2347 192.0.2.1 2348 ...... 2349 2350 2351 2352 foo 2353 ...... 2354 2355 2356 2357 2358 2360 7. Security Considerations 2362 The YANG module defined in this document is designed to be accessed 2363 via network management protocols such as NETCONF [RFC6241] or 2364 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 2365 layer, and the mandatory-to-implement secure transport is Secure 2366 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 2367 mandatory-to-implement secure transport is TLS [RFC5246]. 2369 The NETCONF access control model [RFC6536] provides the means to 2370 restrict access for particular NETCONF or RESTCONF users to a 2371 preconfigured subset of all available NETCONF or RESTCONF protocol 2372 operations and content. 2374 There are a number of data nodes defined in this YANG module that are 2375 writable/creatable/deletable (i.e., config true, which is the 2376 default). These data nodes may be considered sensitive or vulnerable 2377 in some network environments. Write operations (e.g., edit-config) 2378 to these data nodes without proper protection can have a negative 2379 effect on network operations. 2381 The vulnerable "config true" subtrees and data nodes are the 2382 following: 2384 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:ipv4- 2385 location-type/cl-oam:test-point-ipv4-location-list/cl-oam:test- 2386 point-locations/ 2388 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:ipv6- 2389 location-type/cl-oam:test-point-ipv6-location-list/cl-oam:test- 2390 point-locations/ 2391 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:mac- 2392 location-type/cl-oam:test-point-mac-address-location-list/cl- 2393 oam:test-point-locations/ 2395 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:group- 2396 as-number-location-type/cl-oam:test-point-as-number-location-list/ 2397 cl-oam:test-point-locations/ 2399 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:group- 2400 router-id-location-type/cl-oam:test-point-system-info-location- 2401 list/cl-oam:test-point-locations/ 2403 Unauthorized access to any of these lists can adversely affect OAM 2404 management system handling of end-to-end OAM and coordination of OAM 2405 within underlying network layers. This may lead to inconsistent 2406 configuration, reporting, and presentation for the OAM mechanisms 2407 used to manage the network. 2409 Some of the readable data nodes in this YANG module may be considered 2410 sensitive or vulnerable in some network environments. It is thus 2411 important to control read access (e.g., via get, get-config, or 2412 notification) to these data nodes. These are the subtrees and data 2413 nodes and their sensitivity/vulnerability: 2415 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2416 statistics/cl-oam:cc-session-statistics/cl-oam:session-count/ 2418 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2419 statistics/cl-oam:cc-session-statistics/cl-oam:session-up-count/ 2421 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2422 statistics/cl-oam:cc-session-statistics/cl-oam: session-down- 2423 count/ 2425 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2426 statistics/cl-oam:cc-session-statistics/cl-oam:session-admin-down- 2427 count/ 2429 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2430 statistics/cl-oam:cc-session-statistics/cl-oam:session-count/ 2432 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2433 statistics/cl-oam:cc-session-statistics/cl-oam:session-up-count// 2435 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2436 statistics/cl-oam:cc-session-statistics/cl-oam:session-down-count/ 2437 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2438 statistics/cl-oam:cc-session-statistics/cl-oam:session-admin-down- 2439 count/ 2441 8. IANA Considerations 2443 This document registers a URI in the IETF XML registry [RFC3688]. 2444 Following the format in [RFC3688] the following registration is 2445 requested to be made: 2447 URI: urn:ietf:params:xml:ns:yang:ietf-lime-common-types 2448 Registrant Contact: The IESG. 2449 XML: N/A; the requested URI is an XML namespace. 2451 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2452 Registrant Contact: The IESG. 2453 XML: N/A, the requested URI is an XML namespace. 2455 This document registers a YANG module in the YANG Module Names 2456 registry [RFC7950]. 2458 Name: ietf-lime-common-types 2459 Namespace: urn:ietf:params:xml:ns:yang:ietf-lime-common-types 2460 Prefix: lime 2461 Reference: RFC XXXX 2463 Name: ietf-connectionless-oam 2464 Namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2465 Prefix: cl-oam 2466 Reference: RFC XXXX 2468 9. Acknowlegements 2470 The authors of this document would like to thank Elwyn Davies, Alia 2471 Atlas,Brian E Carpenter,Greg Mirsky,Adam Roach,Alissa Cooper,Eric 2472 Rescorla,Ben Campbell, Benoit Claise,Kathleen Moriarty and others for 2473 their sustainable review and comments, proposals to improve and 2474 stabilize document. 2476 10. References 2478 10.1. Normative References 2480 [I-D.ietf-i2rs-yang-network-topo] 2481 Clemm, A., Medved, J., Varga, R., Bahadur, N., 2482 Ananthakrishnan, H., and X. Liu, "A Data Model for Network 2483 Topologies", draft-ietf-i2rs-yang-network-topo-17 (work in 2484 progress), October 2017. 2486 [I-D.ietf-rtgwg-routing-types] 2487 Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 2488 "Routing Area Common YANG Data Types", draft-ietf-rtgwg- 2489 routing-types-17 (work in progress), October 2017. 2491 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2492 DOI 10.17487/RFC3688, January 2004, 2493 . 2495 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 2496 Control Message Protocol (ICMPv6) for the Internet 2497 Protocol Version 6 (IPv6) Specification", STD 89, 2498 RFC 4443, DOI 10.17487/RFC4443, March 2006, 2499 . 2501 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2502 (TLS) Protocol Version 1.2", RFC 5246, 2503 DOI 10.17487/RFC5246, August 2008, 2504 . 2506 [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, 2507 "Network Time Protocol Version 4: Protocol and Algorithms 2508 Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, 2509 . 2511 [RFC6021] Schoenwaelder, J., Ed., "Common YANG Data Types", 2512 RFC 6021, DOI 10.17487/RFC6021, October 2010, 2513 . 2515 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2516 and A. Bierman, Ed., "Network Configuration Protocol 2517 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2518 . 2520 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2521 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2522 . 2524 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2525 Protocol (NETCONF) Access Control Model", RFC 6536, 2526 DOI 10.17487/RFC6536, March 2012, 2527 . 2529 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2530 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2531 . 2533 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 2534 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 2535 . 2537 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2538 September 1981. 2540 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2541 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2542 . 2544 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 2545 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 2546 Switched (MPLS) Data-Plane Failures", RFC 8029, 2547 DOI 10.17487/RFC8029, March 2017, 2548 . 2550 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2551 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2552 . 2554 10.2. Informative References 2556 [G.800] "Unified functional architecture of transport networks", 2557 ITU-T Recommendation G.800, 2016. 2559 [G.8013] "OAM functions and mechanisms for Ethernet based 2560 networks", ITU-T Recommendation G.8013/Y.1731, 2013. 2562 [I-D.ietf-bfd-yang] 2563 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 2564 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 2565 Detection (BFD)", draft-ietf-bfd-yang-06 (work in 2566 progress), June 2017. 2568 [I-D.ietf-lime-yang-connection-oriented-oam-model] 2569 Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model 2570 for Connection Oriented Operations, Administration, and 2571 Maintenance(OAM) protocols", draft-ietf-lime-yang- 2572 connection-oriented-oam-model-00 (work in progress), June 2573 2017. 2575 [I-D.ietf-lime-yang-connectionless-oam-methods] 2576 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 2577 "Retrieval Methods YANG Data Model for Connectionless 2578 Operations, Administration, and Maintenance(OAM) 2579 protocols", draft-ietf-lime-yang-connectionless-oam- 2580 methods-11 (work in progress), October 2017. 2582 [I-D.ietf-netmod-schema-mount] 2583 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 2584 ietf-netmod-schema-mount-08 (work in progress), October 2585 2017. 2587 [I-D.ietf-rtgwg-ni-model] 2588 Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 2589 Liu, "YANG Network Instances", draft-ietf-rtgwg-ni- 2590 model-04 (work in progress), September 2017. 2592 [I-D.ietf-spring-sr-yang] 2593 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 2594 Data Model for Segment Routing", draft-ietf-spring-sr- 2595 yang-07 (work in progress), July 2017. 2597 [I-D.zheng-mpls-lsp-ping-yang-cfg] 2598 Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. 2599 Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- 2600 lsp-ping-yang-cfg-05 (work in progress), June 2017. 2602 [IEEE.1588] 2603 "IEEE Standard for a Precision Clock Synchronization 2604 Protocol for Networked Measurement and Control Systems", 2605 IEEE IEEE Std 1588-2008, 2008. 2607 [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching 2608 (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic 2609 Class" Field", RFC 5462, DOI 10.17487/RFC5462, February 2610 2009, . 2612 [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual 2613 Private Network (L2VPN) Operations, Administration, and 2614 Maintenance (OAM) Requirements and Framework", RFC 6136, 2615 DOI 10.17487/RFC6136, March 2011, 2616 . 2618 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 2619 Weingarten, "An Overview of Operations, Administration, 2620 and Maintenance (OAM) Tools", RFC 7276, 2621 DOI 10.17487/RFC7276, June 2014, 2622 . 2624 Authors' Addresses 2625 Deepak Kumar 2626 CISCO Systems 2627 510 McCarthy Blvd 2628 Milpitas, CA 95035 2629 USA 2631 Email: dekumar@cisco.com 2633 Michael Wang 2634 Huawei Technologies,Co.,Ltd 2635 101 Software Avenue, Yuhua District 2636 Nanjing 210012 2637 China 2639 Email: wangzitao@huawei.com 2641 Qin Wu (editor) 2642 Huawei 2643 101 Software Avenue, Yuhua District 2644 Nanjing, Jiangsu 210012 2645 China 2647 Email: bill.wu@huawei.com 2649 Reshad Rahman 2650 Cisco Systems 2651 2000 Innovation Drive 2652 Kanata, Ontario K2K 3E8 2653 Canada 2655 Email: rrahman@cisco.com 2657 Srihari Raghavan 2658 Cisco Systems 2659 Tril Infopark Sez, Ramanujan IT City 2660 Neville Block, 2nd floor, Old Mahabalipuram Road 2661 Chennai, Tamil Nadu 600113 2662 India 2664 Email: srihari@cisco.com