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