idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-18.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 12 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 13, 2017) is 2355 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: 'RFC6021' is defined on line 2538, but no explicit reference was found in the text == Unused Reference: 'RFC8029' is defined on line 2571, 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: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-17 == Outdated reference: A later version (-12) exists of draft-ietf-rtgwg-ni-model-04 ** 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: A later version (-17) exists of draft-ietf-bfd-yang-07 == Outdated reference: A later version (-07) exists of draft-ietf-lime-yang-connection-oriented-oam-model-00 == Outdated reference: A later version (-12) exists of draft-ietf-netmod-schema-mount-08 == Outdated reference: A later version (-09) exists of draft-ietf-ntp-packet-timestamps-00 == Outdated reference: A later version (-10) exists of draft-zheng-mpls-lsp-ping-yang-cfg-06 Summary: 6 errors (**), 0 flaws (~~), 22 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 17, 2018 Q. Wu, Ed. 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 November 13, 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-18 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 17, 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 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 file "ietf-lime-time-types@2017-09-06.yang" 560 module ietf-lime-time-types { 561 yang-version 1.1; 562 namespace "urn:ietf:params:xml:ns:yang:ietf-lime-time-types"; 563 prefix "lime"; 565 organization 566 "IETF Layer Independent OAM Management (LIME) 567 Working Group"; 569 contact 570 "WG Web: 571 WG List: 573 Editor: Qin Wu 574 "; 576 description 577 "This module provides time related definitions used by the data 578 models written for Layer Independent OAM Management (LIME). 579 This module defines identities but no schema tree elements."; 581 revision "2017-09-06" { 582 description 583 "Initial version"; 584 reference 585 "RFC xxxx: A YANG Data Model for OAM Protocols that use Connectionless 586 Communications"; 587 } 589 /*** Collection of common types related to time ***/ 590 /*** Time unit identity ***/ 591 identity time-unit-type { 592 description 593 "Time unit type"; 594 } 595 identity hours { 596 base time-unit-type; 597 description 598 "Time unit in Hours"; 599 } 600 identity minutes { 601 base time-unit-type; 602 description 603 "Time unit in Minutes"; 604 } 605 identity seconds { 606 base time-unit-type; 607 description 608 "Time unit in Seconds"; 609 } 610 identity milliseconds { 611 base time-unit-type; 612 description 613 "Time unit in Milliseconds"; 614 } 615 identity microseconds { 616 base time-unit-type; 617 description 618 "Time unit in Microseconds"; 619 } 620 identity nanoseconds { 621 base time-unit-type; 622 description 623 "Time unit in Nanoseconds"; 624 } 625 /*** Timestamp format Identity ***/ 626 identity timestamp-type { 627 description 628 "Base identity for Timestamp Type."; 629 } 630 identity truncated-ptp { 631 base timestamp-type; 632 description 633 "Identity for 64bit short format PTP timestamp."; 634 } 635 identity truncated-ntp { 636 base timestamp-type; 637 description 638 "Identity for 32bit short format NTP timestamp."; 639 } 640 identity ntp64 { 641 base timestamp-type; 642 description 643 "Identity for 64bit NTP timestamp."; 644 } 645 identity icmp { 646 base timestamp-type; 647 description 648 "Identity for 32bit ICMP timestamp."; 649 } 650 } 652 654 5. Connectionless OAM YANG Module 656 This module imports Core YANG Derived Types definition (i.e.,ietf- 657 yang-types.yang module) and Internet-Specific Derived Types 658 definitions (ietf-inet-types.yang module) from [RFC6991], ietf- 659 routing-types.yang module from [I-D.ietf-rtgwg-routing-types], ietf- 660 interfaces.yang module from [RFC7223],ietf-network.yang module from 661 [I-D.ietf-i2rs-yang-network-topo],ietf-network-instance.yang module 662 from [I-D.ietf-rtgwg-ni-model] and the ietf-lime-common-types.yang 663 module in Section 4. 665 file "ietf-connectionless-oam@2017-09-06.yang" 667 module ietf-connectionless-oam { 668 yang-version 1.1; 669 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 670 prefix cl-oam; 671 import ietf-yang-schema-mount { 672 prefix yangmnt; 673 } 674 import ietf-network { 675 prefix nd; 676 } 677 import ietf-yang-types { 678 prefix yang; 679 } 680 import ietf-interfaces { 681 prefix if; 682 } 683 import ietf-inet-types { 684 prefix inet; 685 } 686 import ietf-network-instance { 687 prefix ni; 688 } 689 import ietf-routing-types { 690 prefix rt; 691 } 692 import ietf-lime-time-types { 693 prefix lime; 694 } 695 organization 696 "IETF LIME Working Group"; 697 contact 698 "Deepak Kumar dekumar@cisco.com 699 Qin Wu bill.wu@huawei.com 700 S Raghavan srihari@cisco.com 701 Zitao Wang wangzitao@huawei.com 702 R Rahman rrahman@cisco.com"; 703 description 704 "This YANG module defines the generic configuration, 705 data model, and statistics for OAM protocols using 706 connectionless communications, described in a 707 protocol independent manner. It is assumed that each 708 protocol maps corresponding abstracts to its native 709 format. Each protocol mayextend the YANG model defined 710 here to include protocol specific extensions."; 711 revision 2017-09-06 { 712 description 713 "Base model for Connectionless 714 Operations, Administration, 715 and Maintenance (OAM)"; 716 reference 717 "RFC XXXX: Connectionless 718 Operations, Administration, and 719 Maintenance (OAM) YANG Data Model"; 720 } 721 feature connectionless { 722 description 723 "This feature indicates that OAM solution is connectionless."; 724 } 725 feature continuity-check { 726 description 727 "This feature indicates that the server supports 728 executing continuity check OAM command and 729 returning a response. Servers that do not advertise 730 this feature will not support executing 731 continuity check command or RPC operation model for 732 continuity check command."; 733 } 734 feature path-discovery { 735 description 736 "This feature indicates that the server supports 737 executing path discovery OAM command and 738 returning a response. Servers that do not advertise 739 this feature will not support executing 740 path discovery command or RPC operation model for 741 path discovery command."; 742 } 743 feature ptp-long-format { 744 description 745 "This feature indicates that timestamp is PTP long format."; 746 } 747 feature ntp-short-format { 748 description 749 "This feature indicates that timestamp is NTP short format."; 750 } 751 feature icmp-timestamp { 752 description 753 "This feature indicates that timestamp is ICMP timestamp."; 754 } 755 identity traffic-type { 756 description 757 "This is base identity of traffic type 758 which include IPv4 and IPv6, etc."; 759 } 760 identity ipv4 { 761 base traffic-type; 762 description 763 "identity for IPv4 traffic type."; 764 } 765 identity ipv6 { 766 base traffic-type; 767 description 768 "identity for IPv4 traffic type."; 769 } 770 identity address-attribute-types { 771 description 772 "This is base identity of address 773 attribute types which are Generic 774 IPv4/IPv6 Prefix, BGP Labeled 775 IPv4/IPv6 Prefix, Tunnel ID, 776 PW ID, VPLS VE ID, etc. (see RFC8029 777 for details.)"; 778 } 779 typedef address-attribute-type { 780 type identityref { 781 base address-attribute-types; 782 } 783 description 784 "Target address attribute type."; 785 } 786 typedef percentage { 787 type decimal64 { 788 fraction-digits 5; 789 range "0..100"; 790 } 791 description "Percentage."; 792 } 793 typedef routing-instance-ref { 794 type leafref { 795 path "/ni:network-instances/ni:network-instance/ni:name"; 796 } 797 description 798 "This type is used for leafs that reference a routing instance 799 configuration."; 800 } 801 grouping cc-session-statistics { 802 description 803 "Grouping for session statistics."; 804 container cc-session-statistics { 805 description 806 "cc session counters"; 807 leaf session-count { 808 type uint32; 809 default "0"; 810 description 811 "Number of Continuity Check sessions. 812 A value of zero indicates that no session 813 count is sent."; 814 } 815 leaf session-up-count { 816 type uint32; 817 default "0"; 818 description 819 "Number of sessions which are up. 820 A value of zero indicates that no up 821 session count is sent."; 822 } 823 leaf session-down-count { 824 type uint32; 825 default "0"; 826 description 827 "Number of sessions which are down. 828 A value of zero indicates that no down 829 session count is sent."; 830 } 831 leaf session-admin-down-count { 832 type uint32; 833 default "0"; 834 description 835 "Number of sessions which are admin-down. 836 A value of zero indicates that no admin 837 down session count is sent."; 838 } 839 } 840 } 841 grouping session-packet-statistics { 842 description 843 "Grouping for per session packet statistics"; 844 container session-packet-statistics { 845 description 846 "Per session packet statistics."; 848 leaf rx-packet-count { 849 type uint32{ 850 range "0..4294967295"; 851 } 852 default "0"; 853 description 854 "Total number of received OAM packet count. 855 The value of count will be set to zero (0) 856 on creation and will thereafter increase 857 monotonically until it reaches a maximum value 858 of 2^32-1 (4294967295 decimal), when it wraps 859 around and starts increasing again from zero."; 860 } 861 leaf tx-packet-count { 862 type uint32{ 863 range "0..4294967295"; 864 } 865 default "0"; 866 description 867 "Total number of transmitted OAM packet count. 868 The value of count will be set to zero (0) 869 on creation and will thereafter increase 870 monotonically until it reaches a maximum value 871 of 2^32-1 (4294967295 decimal), when it wraps 872 around and starts increasing again from zero."; 873 } 874 leaf rx-bad-packet { 875 type uint32 { 876 range "0..4294967295"; 877 } 878 default "0"; 879 description 880 "Total number of received bad OAM packet. 881 The value of count will be set to zero (0) 882 on creation and will thereafter increase 883 monotonically until it reaches a maximum value 884 of 2^32-1 (4294967295 decimal), when it wraps 885 around and starts increasing again from zero."; 886 } 887 leaf tx-packet-failed { 888 type uint32 { 889 range "0..4294967295"; 890 } 891 default "0"; 892 description 893 "Total number of failed sending OAM packet. 894 The value of count will be set to zero (0) 895 on creation and will thereafter increase 896 monotonically until it reaches a maximum value 897 of 2^32-1 (4294967295 decimal), when it wraps 898 around and starts increasing again from zero."; 899 } 900 } 901 } 902 grouping cc-per-session-statistics { 903 description 904 "Grouping for per session statistics"; 905 container cc-per-session-statistics { 906 description 907 "per session statistics."; 909 leaf create-time { 910 type yang:date-and-time; 911 description 912 "Time and date when session is created."; 913 } 914 leaf last-down-time { 915 type yang:date-and-time; 916 description 917 "Time and date last time session is down."; 918 } 919 leaf last-up-time { 920 type yang:date-and-time; 921 description 922 "Time and date last time session is up."; 923 } 924 leaf down-count { 925 type uint32 { 926 range "0..4294967295"; 927 } 928 default "0"; 929 description 930 "Total Continuity Check sessions down count. 931 The value of count will be set to zero (0) 932 on creation and will thereafter increase 933 monotonically until it reaches a maximum value 934 of 2^32-1 (4294967295 decimal), when it wraps 935 around and starts increasing again from zero."; 936 } 937 leaf admin-down-count { 938 type uint32 { 939 range "0..4294967295"; 940 } 941 default "0"; 942 description 943 "Total Continuity Check sessions admin down count. 944 The value of count will be set to zero (0) 945 on creation and will thereafter increase 946 monotonically until it reaches a maximum value 947 of 2^32-1 (4294967295 decimal), when it wraps 948 around and starts increasing again from zero."; 949 } 950 uses session-packet-statistics; 951 } 952 } 953 grouping session-error-statistics { 954 description 955 "Grouping for per session error statistics"; 956 container session-error-statistics { 957 description 958 "Per session error statistics."; 959 leaf packet-loss-count { 960 type uint32 { 961 range "0..4294967295"; 962 } 963 default "0"; 964 description 965 "Total received packet drops count. 966 The value of count will be set to zero (0) 967 on creation and will thereafter increase 968 monotonically until it reaches a maximum value 969 of 2^32-1 (4294967295 decimal), when it wraps 970 around and starts increasing again from zero."; 971 } 972 leaf loss-ratio{ 973 type percentage; 974 description 975 "Loss ratio of the packets. Express as percentage 976 of packets lost with respect to packets sent."; 977 } 978 leaf packet-reorder-count { 979 type uint32 { 980 range "0..4294967295"; 981 } 982 default "0"; 983 description 984 "Total received packet reordered count. 985 The value of count will be set to zero (0) 986 on creation and will thereafter increase 987 monotonically until it reaches a maximum value 988 of 2^32-1 (4294967295 decimal), when it wraps 989 around and starts increasing again from zero."; 990 } 991 leaf packets-out-of-seq-count { 992 type uint32 { 993 range "0..4294967295"; 994 } 995 description 996 "Total received out of sequence count. 997 The value of count will be set to zero (0) 998 on creation and will thereafter increase 999 monotonically until it reaches a maximum value 1000 of 2^32-1 (4294967295 decimal), when it wraps 1001 around and starts increasing again from zero.."; 1002 } 1003 leaf packets-dup-count { 1004 type uint32 { 1005 range "0..4294967295"; 1006 } 1007 description 1008 "Total received packet duplicates count. 1009 The value of count will be set to zero (0) 1010 on creation and will thereafter increase 1011 monotonically until it reaches a maximum value 1012 of 2^32-1 (4294967295 decimal), when it wraps 1013 around and starts increasing again from zero."; 1014 } 1015 } 1016 } 1017 grouping session-delay-statistics { 1018 description 1019 "Grouping for per session delay statistics"; 1020 container session-delay-statistics { 1021 description 1022 "Session delay summarised information. By default, 1023 one way measurement protocol (e.g., OWAMP) is used 1024 to measure delay. When two way measurement protocol 1025 (e.g., TWAMP) is used instead, it can be indicated 1026 using and protocol-id defined in RPC operation of 1027 draft-ietf-lime-yang-connectionless-oam-methods, i.e., 1028 set protocol-id as OWAMP. Note that only one measurement 1029 protocol for delay is specified for interoperability reason."; 1030 leaf time-unit-value { 1031 type identityref { 1032 base lime:time-unit-type; 1033 } 1034 default lime:milliseconds; 1035 description 1036 "Time units among choice of s, ms, ns, etc."; 1037 } 1038 leaf min-delay-value { 1039 type uint32; 1040 description 1041 "Minimum delay value observed."; 1042 } 1043 leaf max-delay-value { 1044 type uint32; 1045 description 1046 "Maximum delay value observed."; 1047 } 1048 leaf average-delay-value { 1049 type uint32; 1050 description 1051 "Average delay value observed."; 1052 } 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."; 1143 } 1144 } 1145 default "on-demand"; 1146 description 1147 "Indicate which kind of activation will be used 1148 by the current session"; 1149 } 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 { 1238 type inet:ipv6-address; 1239 mandatory true; 1240 description 1241 "IPv6 Address"; 1242 } 1243 description 1244 "ipv6 Address based TP Addressing."; 1245 } 1246 container tp-attribute { 1247 when "derived-from-or-self(../tp-location-type,"+ 1248 "'cl-oam:tp-attribute-type')" { 1249 description 1250 "Test point attribute type"; 1251 } 1252 leaf tp-attribute-type { 1253 type address-attribute-type; 1254 description 1255 "Test point type."; 1256 } 1257 choice tp-attribute-value { 1258 description 1259 "Test point value."; 1260 case ip-prefix { 1261 leaf ip-prefix { 1262 type inet:ip-prefix; 1263 description 1264 "Generic IPv4/IPv6 prefix. See Section 3.2.13 and 1265 Section 3.2.14 of RFC8029."; 1266 reference 1267 "RFC 8029 :Detecting Multi-Protocol Label 1268 Switched (MPLS) Data Plane Failures"; 1269 } 1270 } 1271 case bgp { 1272 leaf bgp { 1273 type inet:ip-prefix; 1274 description 1275 "BGP Labeled IPv4/IPv6 Prefix. See section 1276 3.2.11 and section 3.2.12 of RFC8029 for details. "; 1277 reference 1278 "RFC 8029 :Detecting Multi-Protocol Label 1279 Switched (MPLS) Data Plane Failures"; 1280 } 1281 } 1282 case tunnel { 1283 leaf tunnel-interface { 1284 type uint32; 1285 description 1286 "Basic IPv4/IPv6 Tunnel ID. See section 3.2.3 1287 and Section 3.2.4 of RFC8029 for details."; 1288 reference 1289 "RFC 8029 :Detecting Multi-Protocol Label 1290 Switched (MPLS) Data Plane Failures."; 1291 } 1292 } 1293 case pw { 1294 leaf remote-pe-address { 1295 type inet:ip-address; 1296 description 1297 "Remote PE address. See section 3.2.8 1298 of RFC8029 for details."; 1299 reference 1300 "RFC 8029 :Detecting Multi-Protocol Label 1301 Switched (MPLS) Data Plane Failures"; 1302 } 1303 leaf pw-id { 1304 type uint32; 1305 description 1306 "Pseudowire ID is a non-zero 32-bit ID. See section 1307 3.2.8 and Section 3.2.9 for details."; 1308 reference 1309 "RFC 8029 :Detecting Multi-Protocol Label 1310 Switched (MPLS) Data Plane Failures"; 1311 } 1312 } 1313 case vpls { 1314 leaf route-distinguisher { 1315 type rt:route-distinguisher; 1316 description 1317 "Route Distinguisher is an 8 octets identifier 1318 used to distinguish information about various 1319 L2VPN advertised by a node."; 1320 reference 1321 "RFC 8029 :Detecting Multi-Protocol Label 1322 Switched (MPLS) Data Plane Failures"; 1323 } 1324 leaf sender-ve-id { 1325 type uint16; 1326 description 1327 "Sender's VE ID. The VE ID (VPLS Edge Identifier) 1328 is a 2-octet identifier."; 1329 reference 1330 "RFC 8029 :Detecting Multi-Protocol Label 1331 Switched (MPLS) Data Plane Failures"; 1332 } 1333 leaf receiver-ve-id { 1334 type uint16; 1335 description 1336 "Receiver's VE ID. The VE ID (VPLS Edge Identifier) 1337 is a 2-octet identifier."; 1338 reference 1339 "RFC 8029 :Detecting Multi-Protocol Label 1340 Switched (MPLS) Data Plane Failures"; 1341 } 1342 } 1343 case mpls-mldp { 1344 choice root-address { 1345 description 1346 "Root address choice."; 1347 case ip-address { 1348 leaf source-address { 1349 type inet:ip-address; 1350 description 1351 "IP address."; 1352 } 1353 leaf group-ip-address { 1354 type inet:ip-address; 1355 description 1356 "Group ip address."; 1357 } 1358 } 1359 case vpn { 1360 leaf as-number { 1361 type inet:as-number; 1362 description 1363 "The AS number represents autonomous system 1364 numbers which identify an Autonomous System."; 1365 } 1366 } 1367 case global-id { 1368 leaf lsp-id { 1369 type string; 1370 description 1371 "LSP ID is an identifier of a LSP 1372 within a MPLS network."; 1373 reference 1374 "RFC 8029 :Detecting Multi-Protocol Label 1375 Switched (MPLS) Data Plane Failures"; 1376 } 1377 } 1378 } 1379 } 1380 } 1381 description 1382 "Test Point Attribute Container"; 1383 } 1384 container system-info { 1385 when "derived-from-or-self(../tp-location-type,"+ 1386 "'cl-oam:router-id-address-type')" { 1387 description 1388 "System id address type"; 1389 } 1390 leaf router-id { 1391 type rt:router-id; 1392 description 1393 "Router ID assigned to this node."; 1394 } 1395 description 1396 "Router ID container."; 1397 } 1398 description 1399 "TP Address"; 1400 } 1401 grouping tp-address-ni { 1402 description 1403 "Test point address with VRF."; 1404 leaf ni { 1405 type routing-instance-ref; 1406 description 1407 "The ni is used to describe virtual resource partitioning 1408 that may be present on a network device. Example of common 1409 industry terms for virtual resource partitioning is VRF 1410 instance."; 1411 } 1412 uses tp-address; 1413 } 1414 grouping connectionless-oam-tps { 1415 list oam-neighboring-tps { 1416 key "index"; 1417 leaf index { 1418 type uint16{ 1419 range "0..65535"; 1420 } 1421 description 1422 "Index of a list of neighboring test points 1423 in layers up and down the stack for 1424 the same interface that are related to the 1425 current test point."; 1426 } 1427 leaf position { 1428 type int8 { 1429 range "-1..1"; 1431 } 1432 default "0"; 1433 description 1434 " The relative position of neighboring test point corresponding 1435 to the current test point. Level 0 indicates test point corresponding 1436 to a specific index is in the same layer as the current test point.-1 1437 means there is test point corresponding to a specific index is the test 1438 point down the stack and +1 means there is a test point corresponding to 1439 a specific index is the test point up the stack."; 1440 } 1441 choice tp-location { 1442 case mac-address { 1443 leaf mac-address-location { 1444 type yang:mac-address; 1445 description 1446 "MAC Address"; 1447 } 1448 description 1449 "MAC Address based TP Addressing."; 1450 } 1451 case ipv4-address { 1452 leaf ipv4-address-location { 1453 type inet:ipv4-address; 1454 description 1455 "Ipv4 Address"; 1456 } 1457 description 1458 "IP Address based TP Addressing."; 1459 } 1460 case ipv6-address { 1461 leaf ipv6-address-location { 1462 type inet:ipv6-address; 1463 description 1464 "IPv6 Address"; 1465 } 1466 description 1467 "IPv6 Address based TP Addressing."; 1468 } 1469 case as-number { 1470 leaf as-number-location { 1471 type inet:as-number; 1472 description 1473 "AS number location"; 1474 } 1475 description 1476 "AS number for point to multipoint OAM"; 1477 } 1478 case router-id { 1479 leaf router-id-location { 1480 type rt:router-id; 1481 description 1482 "System id location"; 1483 } 1485 description 1486 "System ID"; 1487 } 1488 description 1489 "TP location."; 1490 } 1491 description 1492 "List of neighboring test points in the same layer that are related to current test 1493 point. If the neighboring test-point is placed after the current test point, the 1494 position is specified as +1. If neighboring test-point 1495 is placed before the current test point, the position is specified 1496 as -1, if no neighboring test points placed before or after the current 1497 test point in the same layer, the position is specified as 0."; 1498 } 1499 description 1500 "Connectionless OAM related neighboring test points list."; 1501 } 1502 grouping tp-technology { 1503 choice technology { 1504 default "technology-null"; 1505 case technology-null { 1506 description 1507 "This is a placeholder when no technology is needed."; 1508 leaf tech-null { 1509 type empty; 1510 description 1511 "There is no technology to be defined."; 1512 } 1513 } 1514 description 1515 "Technology choice."; 1516 } 1517 description 1518 "OAM Technology"; 1519 } 1520 grouping tp-tools { 1521 description 1522 "Test Point OAM Toolset."; 1523 container tp-tools { 1524 leaf continuity-check { 1525 type boolean; 1526 mandatory true; 1527 description 1528 "A flag indicating whether or not the 1529 continuity check function is supported."; 1530 reference 1532 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1533 RFC 4443: Internet Control Message Protocol (ICMPv6) 1534 for the Internet Protocol Version 6 (IPv6) Specification. 1535 RFC 5880: Bidirectional Forwarding Detection. 1536 RFC 5881: BFD for IPv4 and IPv6. 1537 RFC 5883: BFD for Multihop Paths. 1539 RFC 5884: BFD for MPLS Label Switched Paths. 1540 RFC 5885: BFD for PW VCCV. 1541 RFC 6450: Multicast Ping Protocol. 1542 RFC 8029: Detecting Multiprotocol Label Switched 1543 (MPLS) Data-Plane Failures."; 1544 } 1545 leaf path-discovery { 1546 type boolean; 1547 mandatory true; 1548 description 1549 "A flag indicating whether or not the 1550 path discovery function is supported."; 1551 reference 1552 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1553 RFC 4443: Internet Control Message Protocol (ICMPv6) 1554 for the Internet Protocol Version 6 (IPv6) Specification. 1555 RFC 4884: Extended ICMP to Support Multi-part Message. 1556 RFC 5837:Extending ICMP for Interface. 1557 and Next-Hop Identification. 1558 RFC 8029: Detecting Multiprotocol Label Switched (MPLS) 1559 Data-Plane Failures."; 1560 } 1561 description 1562 "Container for test point OAM tools set."; 1563 } 1564 } 1565 grouping test-point-location-info { 1566 uses tp-technology; 1567 uses tp-tools; 1568 anydata root { 1569 yangmnt:mount-point "root"; 1570 description 1571 "Root for models supported per 1572 test point"; 1573 } 1574 uses connectionless-oam-tps; 1575 description 1576 "Test point Location"; 1577 } 1578 grouping test-point-locations { 1579 description 1580 "Group of test point locations."; 1581 leaf tp-location-type { 1582 type identityref { 1583 base tp-address-technology-type; 1584 } 1585 description 1586 "Test point location type."; 1587 } 1588 container ipv4-location-type { 1589 when "derived-from-or-self(../tp-location-type,"+ 1590 "'cl-oam:ipv4-address-type')" { 1591 description 1592 "When test point location type is equal to ipv4 address."; 1593 } 1594 container test-point-ipv4-location-list { 1595 list test-point-locations { 1596 key "ipv4-location ni"; 1597 leaf ipv4-location { 1598 type inet:ipv4-address; 1599 description 1600 "IPv4 Address."; 1601 } 1602 leaf ni { 1603 type routing-instance-ref; 1604 description 1605 "The ni is used to describe the 1606 corresponding network instance"; 1607 } 1608 uses test-point-location-info; 1609 description 1610 "List of test point locations."; 1611 } 1612 description 1613 "Serves as top-level container 1614 for test point location list."; 1615 } 1616 description 1617 "ipv4 location type container."; 1618 } 1619 container ipv6-location-type { 1620 when "derived-from-or-self(../tp-location-type,"+ 1621 "'cl-oam:ipv6-address-type')" { 1622 description 1624 "when test point location is equal to ipv6 address"; 1625 } 1626 container test-point-ipv6-location-list { 1627 list test-point-locations { 1628 key "ipv6-location ni"; 1629 leaf ipv6-location { 1630 type inet:ipv6-address; 1631 description 1632 "IPv6 Address."; 1633 } 1634 leaf ni { 1635 type routing-instance-ref; 1636 description 1637 "The ni is used to describe the 1638 corresponding network instance"; 1639 } 1640 uses test-point-location-info; 1641 description 1642 "List of test point locations."; 1643 } 1644 description 1645 "Serves as top-level container 1646 for test point location list."; 1647 } 1648 description 1649 "ipv6 location type container."; 1650 } 1651 container mac-location-type { 1652 when "derived-from-or-self(../tp-location-type,"+ 1653 "'cl-oam:mac-address-type')" { 1654 description 1655 "when test point location type is equal to mac address."; 1656 } 1657 container test-point-mac-address-location-list { 1658 list test-point-locations { 1659 key "mac-address-location"; 1660 leaf mac-address-location { 1661 type yang:mac-address; 1662 description 1663 "MAC Address"; 1664 } 1665 uses test-point-location-info; 1666 description 1667 "List of test point locations."; 1668 } 1669 description 1670 "Serves as top-level container 1671 for test point location list."; 1673 } 1674 description 1675 "mac address location type container."; 1676 } 1677 container group-as-number-location-type { 1678 when "derived-from-or-self(../tp-location-type,"+ 1679 "'cl-oam:as-number-address-type')" { 1680 description 1681 "when test point location type is equal to as-number."; 1682 } 1683 container test-point-as-number-location-list { 1684 list test-point-locations { 1685 key "as-number-location"; 1686 leaf as-number-location { 1687 type inet:as-number; 1688 description 1689 "AS number for point to multi point OAM."; 1690 } 1691 leaf ni { 1692 type routing-instance-ref; 1693 description 1694 "The ni is used to describe the 1695 corresponding network instance"; 1696 } 1697 uses test-point-location-info; 1698 description 1699 "List of test point locations."; 1700 } 1701 description 1702 "Serves as top-level container 1703 for test point location list."; 1704 } 1705 description 1706 "as number location type container."; 1707 } 1708 container group-router-id-location-type { 1709 when "derived-from-or-self(../tp-location-type,"+ 1710 "'cl-oam:router-id-address-type')" { 1711 description 1712 "when test point location type is equal to system-info."; 1713 } 1714 container test-point-system-info-location-list { 1715 list test-point-locations { 1716 key "router-id-location"; 1717 leaf router-id-location { 1718 type rt:router-id; 1719 description 1720 "System Id."; 1722 } 1723 leaf ni { 1724 type routing-instance-ref; 1725 description 1726 "The ni is used to describe the 1727 corresponding network instance"; 1728 } 1729 uses test-point-location-info; 1730 description 1731 "List of test point locations."; 1732 } 1733 description 1734 "Serves as top-level container for 1735 test point location list."; 1736 } 1737 description 1738 "system ID location type container."; 1739 } 1740 } 1741 augment "/nd:networks/nd:network/nd:node" { 1742 description 1743 "augments the /networks/network/node path defined in the 1744 ietf-network module (I-D.ietf-i2rs-yang-network-topo) with 1745 test-point-locations grouping."; 1746 uses test-point-locations; 1747 } 1748 grouping timestamp { 1749 description 1750 "Grouping for timestamp."; 1751 leaf timestamp-type { 1752 type identityref { 1753 base lime:timestamp-type; 1754 } 1755 description 1756 "Type of Timestamp, such as Truncated PTP, NTP."; 1757 } 1758 container timestamp-64bit { 1759 when "derived-from-or-self(../timestamp-type, 'cl-oam:truncated-ptp')"+ 1760 "or derived-from-or-self(../timestamp-type,'cl-oam:ntp64')" { 1761 description 1762 "Only applies when Truncated PTP or 64bit NTP Timestamp."; 1763 } 1764 leaf timestamp-sec { 1765 type uint32; 1766 description 1767 "Absolute timestamp in seconds as per IEEE1588v2 1768 or seconds part in 64-bit NTP timestamp."; 1769 } 1771 leaf timestamp-nanosec { 1772 type uint32; 1773 description 1774 "Fractional part in nanoseconds as per IEEE1588v2 1775 or Fractional part in 64-bit NTP timestamp."; 1776 } 1777 description 1778 "Container for 64bit timestamp.See section 4.2.1 of 1779 draft-ietf-ntp-packet-timestamps for NTP 64-bit Timestamp 1780 Format and section 4.3 of draft-ietf-ntp-packet-timestamps 1781 for The PTP Truncated Timestamp Format."; 1782 } 1783 container timestamp-80bit { 1784 when "derived-from-or-self(../timestamp-type, 'cl-oam:ptp80')"{ 1785 description 1786 "Only applies when 80bit PTP Timestamp."; 1787 } 1788 if-feature ptp-long-format; 1789 leaf timestamp-sec { 1790 type uint64 { 1791 range "0..281474976710655"; 1792 } 1793 description 1794 "48bit Timestamp in seconds as per IEEE1588v2."; 1795 } 1796 leaf timestamp-nanosec { 1797 type uint32; 1798 description 1799 "Fractional part in nanoseconds as per IEEE1588v2."; 1800 } 1801 description 1802 "Container for 80bit timestamp."; 1803 } 1804 container ntp-timestamp-32bit { 1805 when "derived-from-or-self(../timestamp-type, 'cl-oam:truncated-ntp')"{ 1806 description 1807 "Only applies when 32 bit NTP Short format Timestamp."; 1808 } 1809 if-feature ntp-short-format; 1810 leaf timestamp-sec { 1811 type uint16; 1812 description 1813 "Timestamp in seconds as per short format NTP."; 1814 } 1815 leaf timestamp-nanosec { 1816 type uint16; 1817 description 1818 "Truncated Fractional part in 16-bit NTP timestamp."; 1820 } 1821 description 1822 "Container for 32bit timestamp.See section 4.2.2 of 1823 draft-ietf-ntp-packet-timestamps for NTP 32-bit Timestamp 1824 Format."; 1825 } 1826 container icmp-timestamp-32bit { 1827 when "derived-from-or-self(../timestamp-type, 'cl-oam:icmp-ntp')"{ 1828 description 1829 "Only applies when Truncated NTP or 64bit NTP Timestamp."; 1830 } 1831 if-feature icmp-timestamp; 1832 leaf timestamp-millisec { 1833 type uint32; 1835 description 1836 "timestamp in milliseconds for ICMP timestamp."; 1837 } 1838 description 1839 "Container for 32bit timestamp.See RFC792 for ICMP 1840 timestamp format."; 1841 } 1842 } 1843 grouping path-discovery-data { 1844 description 1845 "Path discovery related data output from nodes."; 1846 container src-test-point { 1847 description 1848 "Source test point."; 1849 uses tp-address-ni; 1850 } 1851 container dest-test-point { 1852 description 1853 "Destination test point."; 1854 uses tp-address-ni; 1855 } 1856 leaf sequence-number { 1857 type uint64; 1858 default "0"; 1859 description 1860 "Sequence number in data packets. A value of 1861 zero indicates that no sequence number is sent."; 1862 } 1863 leaf hop-cnt { 1864 type uint8; 1865 default "0"; 1866 description 1867 "Hop count. A value of zero indicates 1868 that no hop count is sent"; 1869 } 1870 uses session-packet-statistics; 1871 uses session-error-statistics; 1872 uses session-delay-statistics; 1873 uses session-jitter-statistics; 1874 container path-verification { 1875 description 1876 "Optional path verification related information."; 1877 leaf flow-info { 1878 type string; 1879 description 1880 "Informations that refers to the flow."; 1881 } 1882 uses session-path-verification-statistics; 1883 } 1884 container path-trace-info { 1885 description 1886 "Optional path trace per-hop test point information. 1887 The path trace information list has typically a single 1888 element for per-hop cases such as path-discovery RPC operation 1889 but allows a list of hop related information for other types of 1890 data retrieval methods."; 1891 list path-trace-info-list { 1892 key "index"; 1893 description 1894 "Path trace information list."; 1895 leaf index { 1896 type uint32; 1897 description 1898 "Trace information index."; 1899 } 1900 uses tp-address-ni; 1901 uses timestamp; 1902 leaf ingress-intf-name { 1903 type if:interface-ref; 1904 description 1905 "Ingress interface name"; 1906 } 1907 leaf egress-intf-name { 1908 type if:interface-ref; 1909 description 1910 "Egress interface name"; 1911 } 1912 leaf queue-depth { 1913 type uint32; 1914 description 1915 "Length of the queue of the interface from where 1916 the packet is forwarded out. The queue depth could 1917 be the current number of memory buffers used by the 1918 queue and a packet can consume one or more memory buffers 1919 thus constituting device-level information."; 1920 } 1921 leaf transit-delay { 1922 type uint32; 1923 description 1924 "Time in nano seconds 1925 packet spent transiting a node."; 1926 } 1927 leaf app-meta-data { 1928 type uint64; 1929 description 1931 "Application specific 1932 data added by node."; 1933 } 1934 } 1935 } 1936 } 1937 grouping continuity-check-data { 1938 description 1939 "Continuity check data output from nodes."; 1940 container src-test-point { 1941 description 1942 "Source test point."; 1943 uses tp-address-ni; 1944 leaf egress-intf-name { 1945 type if:interface-ref; 1946 description 1947 "Egress interface name."; 1948 } 1949 } 1950 container dest-test-point { 1951 description 1952 "Destination test point."; 1953 uses tp-address-ni; 1954 leaf ingress-intf-name { 1955 type if:interface-ref; 1956 description 1957 "Ingress interface name."; 1958 } 1959 } 1960 leaf sequence-number { 1961 type uint64; 1962 default "0"; 1963 description 1964 "Sequence number in data packets. A value of 1965 zero indicates that no sequence number is sent."; 1966 } 1967 leaf hop-cnt { 1968 type uint8; 1969 default "0"; 1970 description 1971 "Hop count. A value of zero indicates 1972 that no hop count is sent"; 1973 } 1974 uses session-packet-statistics; 1975 uses session-error-statistics; 1976 uses session-delay-statistics; 1977 uses session-jitter-statistics; 1978 } 1979 container cc-session-statistics-data { 1980 if-feature "continuity-check"; 1981 config false; 1982 list cc-session-statistics { 1983 key type; 1984 leaf type { 1985 type identityref { 1986 base traffic-type; 1987 } 1988 description 1989 "Type of traffic."; 1990 } 1991 container cc-ipv4-sessions-statistics { 1992 when "../type = 'ipv4'" { 1993 description 1994 "Only applies when traffic type is Ipv4."; 1995 } 1996 description 1997 "CC ipv4 sessions"; 1998 uses cc-session-statistics; 1999 } 2000 container cc-ipv6-sessions-statistics { 2001 when "../type = 'ipv6'" { 2002 description 2003 "Only applies when traffic type is Ipv6."; 2004 } 2005 description 2006 "CC ipv6 sessions"; 2007 uses cc-session-statistics; 2008 } 2009 description 2010 "List of CC session statistics data."; 2011 } 2013 description 2014 "CC operational information."; 2015 } 2016 } 2018 2020 6. Connectionless model applicability 2022 The "ietf-connectionless-oam" model defined in this document provides 2023 a technology-independent abstraction of key OAM constructs for OAM 2024 protocols that use connectionless communication. This model can be 2025 further extended to include technology-specific details, e.g., adding 2026 new data nodes with technology specific functions and parameters into 2027 proper anchor points of the base model, so as to develop a 2028 technology-specific connectionless OAM model. 2030 This section demonstrates the usability of the connectionless YANG 2031 OAM data model to various connectionless OAM technologies, e.g., BFD, 2032 LSP ping. Note that, in this section, several snippets of 2033 technology-specific model extensions are presented for illustrative 2034 purposes. The complete model extensions should be worked on in 2035 respective protocol working groups. 2037 6.1. BFD Extension 2039 RFC 7276 defines BFD as a connection-oriented protocol. It is used 2040 to monitor a connectionless protocol in the case of basic BFD for IP. 2042 6.1.1. Augment Method 2044 The following sections shows how the "ietf-connectionless-oam" model 2045 can be extended to cover BFD technology. For this purpose, a set of 2046 extension are introduced such as technology-type extension and test- 2047 point attributes extension. 2049 Note that a dedicated BFD YANG data model [I-D.ietf-bfd-yang] is also 2050 standardized. Augmentation of the "ietf-connectionless-oam" model 2051 with BFD specific details provides an alternative approach that 2052 provides a unified view of management information across various OAM 2053 protocols. The BFD specific details can be the grouping defined in 2054 the BFD model avoiding duplication of effort. 2056 6.1.1.1. Technology type extension 2058 No BFD technology type has been defined in the "ietf-connectionless- 2059 oam" model. Therefore a technology type extension is required in the 2060 model Extension. 2062 The snippet below depicts an example of adding the "bfd" type as an 2063 augment to the ietf-connectionless-oam" model: 2065 augment "/nd:networks/nd:network/nd:node/" 2066 +"coam:location-type/coam:ipv4-location-type" 2067 +"/coam:test-point-ipv4-location-list/" 2068 +"coam:test-point-locations/coam:technology" 2069 { 2070 leaf bfd{ 2071 type string; 2072 } 2073 } 2075 6.1.1.2. Test point attributes extension 2077 To support BFD, the "ietf-connectionless-oam" model can be extended 2078 by adding specific parameters into the "test-point-locations" list 2079 and/or adding a new location type such as "BFD over MPLS TE" under 2080 "location-type". 2082 6.1.1.2.1. Define and insert new nodes into corresponding test-point- 2083 location 2085 In the "ietf-connectionless-oam" model, multiple "test-point- 2086 location" lists are defined under the "location-type" choice node. 2087 Therefore, to derive a model for some BFD technologies ( such as ip 2088 single-hop, ip multi-hops, etc), data nodes for BFD specific details 2089 need to be added into corresponding "test-point-locations" list. In 2090 this section, some groupings which are defined in [I-D.ietf-bfd-yang] 2091 are reused as follows: 2093 The snippet below shows how the "ietf-connectionless-oam" model can 2094 be extended to support "BFD IP Single-Hop": 2096 augment "/nd:networks/nd:network/nd:node/" 2097 +"coam:location-type/coam:ipv4-location-type" 2098 +"/coam:test-point-ipv4-location-list/" 2099 +"coam:test-point-locations" 2100 { 2101 container session-cfg { 2102 description "BFD IP single-hop session configuration"; 2103 list sessions { 2104 key "interface dest-addr"; 2105 description "List of IP single-hop sessions"; 2106 leaf interface { 2107 type if:interface-ref; 2108 description 2109 "Interface on which the BFD session is running."; 2110 } 2111 leaf dest-addr { 2112 type inet:ip-address; 2113 description "IP address of the peer"; 2114 } 2115 uses bfd:bfd-grouping-common-cfg-parms; 2116 uses bfd:bfd-grouping-echo-cfg-parms; 2117 } 2118 } 2119 } 2121 Similar augmentations can be defined to support other BFD 2122 technologies such as BFD IP Multi-Hop, BFD over MPLS, etc. 2124 6.1.1.2.2. Add new location-type cases 2126 In the "ietf-connectionless-oam" model, If there is no appropriate 2127 "location type" case that can be extended, a new "location-type" case 2128 can be defined and inserted into the "location-type" choice node. 2130 Therefore, the model user can flexibly add "location-type" to support 2131 other type of test point which are not defined in the "ietf- 2132 connectionless-oam" model. In this section, a new "location-type" 2133 case is added and some groupings that are defined in 2134 [I-D.ietf-bfd-yang] are reused as follows: 2136 The snippet below shows how the "ietf-connectionless-oam" model can 2137 be extended to support "BFD over MPLS-TE": 2139 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 2140 case te-location{ 2141 list test-point-location-list{ 2142 key "tunnel-name"; 2143 leaf tunnel-name{ 2144 type leafref{ 2145 path "/te:te/te:tunnels/te:tunnel/te:name"; 2146 } 2147 description 2148 "point to a te instance."; 2149 } 2150 uses bfd:bfd-grouping-common-cfg-parms; 2151 uses bfd-mpls:bfd-encap-cfg; 2152 } 2153 } 2154 } 2156 Similar augmentations can be defined to support other BFD 2157 technologies such as BFD over LAG, etc. 2159 6.1.2. Schema Mount 2161 An alternative method is using the schema mount mechanism [I-D.ietf- 2162 netmod-schema-mount] in the "ietf-connectionless-oam" model. Within 2163 the "test-point-locations" list, a "root" attribute is defined to 2164 provide a mount point for models mounted per "test-point-locations". 2165 Therefore, the "ietf-connectionless-oam" model can provide a place in 2166 the node hierarchy where other OAM YANG data models can be attached, 2167 without any special extension in the "ietf-connectionless-oam" YANG 2168 data models [I-D.ietf-netmod-schema-mount]. Note that the limitation 2169 of the Schema Mount method is it is not allowed to specify certain 2170 modules that are required to be mounted under a mount point. 2172 The snippet below depicts the definition of the "root" attribute. 2174 anydata root { 2175 yangmnt:mount-point root; 2176 description 2177 "Root for models supported per 2178 test point"; 2179 } 2181 The following section shows how the "ietf-connectionless-oam" model 2182 can use schema mount to support BFD technology. 2184 6.1.2.1. BFD Modules be populated in schema-mount 2186 To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG 2187 modules might be populated in the "schema-mounts" container: 2189 2191 2192 ietf-connectionless-oam 2193 root 2194 2195 root 2196 2197 2198 2199 root 2200 2201 ietf-bfd-ip-sh 2202 2016-07-04 2203 2204 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh 2205 2206 implement 2207 2208 2209 ietf-bfd-ip-mh 2210 2016-07-04 2211 2212 urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh 2213 2214 implement 2215 2216 2217 2219 and the "ietf-connectionless-oam" module might have: 2221 2223 ...... 2224 2225 192.0.2.1 2226 ...... 2227 2228 2229 2230 foo 2231 ...... 2232 2233 2234 2235 2236 foo 2237 ...... 2238 2239 2240 2241 2242 2244 6.2. LSP Ping extension 2246 6.2.1. Augment Method 2248 The following sections shows how the "ietf-connectionless-oam" model 2249 can be extended to support LSP ping technology. For this purpose, a 2250 set of extensions are introduced such as the "technology-type" 2251 extension and the test-point "attributes" extension. 2253 Note that an LSP Ping YANG data model is being specified 2254 [I-D.zheng-mpls-lsp-ping-yang-cfg]. As with BFD, users can choose to 2255 use the "ietf-connectioless-oam" as basis and augment the "ietf- 2256 connectionless-oam" model with LSP Ping specific details in the model 2257 extension to provide a unified view across different technologies. 2258 The LSP Ping specific details can be the grouping defined in the LSP 2259 ping model to avoid duplication of effort. 2261 6.2.1.1. Technology type extension 2263 No LSP Ping technology type has been defined in the "ietf- 2264 connectionless-oam" model. Therefore a technology type extension is 2265 required in the model extension. 2267 The snippet below depicts an example of augmenting the "ietf- 2268 connectionless-oam" with "lsp-ping" type: 2270 augment "/nd:networks/nd:network/nd:node/" 2271 +"coam:location-type/coam:ipv4-location-type" 2272 +"/coam:test-point-ipv4-location-list/" 2273 +"coam:test-point-locations/coam:technology" 2274 { 2275 leaf lsp-ping{ 2276 type string; 2277 } 2278 } 2280 6.2.1.2. Test point attributes extension 2282 To support LSP Ping, the "ietf-connectionless-oam" model can be 2283 extended and add LSP Ping specific parameters can be defined and 2284 under "test-point-locations" list. 2286 Users can reuse the attributes or groupings which are defined in 2287 [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: 2289 The snippet below depicts an example of augmenting the "test-point- 2290 locations" list with lsp ping attributes: 2292 augment "/nd:networks/nd:network/nd:node/" 2293 +"coam:location-type/coam:ipv4-location-type" 2294 +"/coam:test-point-ipv4-location-list/" 2295 +"coam:test-point-locations" 2296 { 2297 list lsp-ping { 2298 key "lsp-ping-name"; 2299 leaf lsp-ping-name { 2300 type string { 2301 length "1..31"; 2302 } 2303 mandatory "true"; 2304 description "LSP Ping test name."; 2305 ...... 2306 } 2308 6.2.2. Schema Mount 2310 An alternative method is using schema mount mechanism 2311 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 2312 Within the "test-point-locations" list, a "root" attribute is defined 2313 to provide a mounted point for models mounted per "test-point- 2314 locations". Therefore, the "ietf-connectionless-oam" model can 2315 provide a place in the node hierarchy where other OAM YANG data 2316 models can be attached, without any special extension in the "ietf- 2317 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 2319 Note that the limitation of the Schema Mount method is it is not 2320 allowed to specify certain modules that are required to be mounted 2321 under a mount point. 2323 The snippet below depicts the definition of "root" attribute. 2325 anydata root { 2326 yangmnt:mount-point root; 2327 description 2328 "Root for models supported per 2329 test point"; 2330 } 2332 The following section shows how the "ietf-connectionless-oam" model 2333 can use schema mount to support LSP-PING technology. 2335 6.2.2.1. LSP-PING Modules be populated in schema-mount 2337 To support LSP-PING technology, "ietf-lspping" YANG module 2338 [I-D.zheng-mpls-lsp-ping-yang-cfg] might be populated in the "schema- 2339 mounts" container: 2341 2343 2344 ietf-connectionless-oam 2345 root 2346 2347 root 2348 2349 2350 2351 root 2352 2353 ietf-lspping 2354 2016-03-18 2355 2356 urn:ietf:params:xml:ns:yang: ietf-lspping 2357 2358 implement 2359 2360 2361 2363 and the "ietf-connectionless-oam" module might have: 2365 2367 ...... 2368 2369 192.0.2.1 2370 ...... 2371 2372 2373 2374 foo 2375 ...... 2376 2377 2378 2379 2380 2382 7. Security Considerations 2384 The YANG module defined in this document is designed to be accessed 2385 via network management protocols such as NETCONF [RFC6241] or 2386 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 2387 layer, and the mandatory-to-implement secure transport is Secure 2388 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 2389 mandatory-to-implement secure transport is TLS [RFC5246]. 2391 The NETCONF access control model [RFC6536] provides the means to 2392 restrict access for particular NETCONF or RESTCONF users to a 2393 preconfigured subset of all available NETCONF or RESTCONF protocol 2394 operations and content. 2396 There are a number of data nodes defined in this YANG module that are 2397 writable/creatable/deletable (i.e., config true, which is the 2398 default). These data nodes may be considered sensitive or vulnerable 2399 in some network environments. Write operations (e.g., edit-config) 2400 to these data nodes without proper protection can have a negative 2401 effect on network operations. 2403 The vulnerable "config true" subtrees and data nodes are the 2404 following: 2406 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:ipv4- 2407 location-type/cl-oam:test-point-ipv4-location-list/cl-oam:test- 2408 point-locations/ 2410 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:ipv6- 2411 location-type/cl-oam:test-point-ipv6-location-list/cl-oam:test- 2412 point-locations/ 2413 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:mac- 2414 location-type/cl-oam:test-point-mac-address-location-list/cl- 2415 oam:test-point-locations/ 2417 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:group- 2418 as-number-location-type/cl-oam:test-point-as-number-location-list/ 2419 cl-oam:test-point-locations/ 2421 /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:group- 2422 router-id-location-type/cl-oam:test-point-system-info-location- 2423 list/cl-oam:test-point-locations/ 2425 Unauthorized access to any of these lists can adversely affect OAM 2426 management system handling of end-to-end OAM and coordination of OAM 2427 within underlying network layers. This may lead to inconsistent 2428 configuration, reporting, and presentation for the OAM mechanisms 2429 used to manage the network. 2431 Some of the readable data nodes in this YANG module may be considered 2432 sensitive or vulnerable in some network environments. It is thus 2433 important to control read access (e.g., via get, get-config, or 2434 notification) to these data nodes. These are the subtrees and data 2435 nodes and their sensitivity/vulnerability: 2437 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2438 statistics/cl-oam:cc-session-statistics/cl-oam:session-count/ 2440 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2441 statistics/cl-oam:cc-session-statistics/cl-oam:session-up-count/ 2443 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2444 statistics/cl-oam:cc-session-statistics/cl-oam: session-down- 2445 count/ 2447 /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- 2448 statistics/cl-oam:cc-session-statistics/cl-oam:session-admin-down- 2449 count/ 2451 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2452 statistics/cl-oam:cc-session-statistics/cl-oam:session-count/ 2454 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2455 statistics/cl-oam:cc-session-statistics/cl-oam:session-up-count// 2457 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2458 statistics/cl-oam:cc-session-statistics/cl-oam:session-down-count/ 2459 /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- 2460 statistics/cl-oam:cc-session-statistics/cl-oam:session-admin-down- 2461 count/ 2463 8. IANA Considerations 2465 This document registers a URI in the IETF XML registry [RFC3688]. 2466 Following the format in [RFC3688], the following registration is 2467 requested to be made: 2469 URI: urn:ietf:params:xml:ns:yang:ietf-lime-time-types 2470 Registrant Contact: The IESG. 2471 XML: N/A; the requested URI is an XML namespace. 2473 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2474 Registrant Contact: The IESG. 2475 XML: N/A, the requested URI is an XML namespace. 2477 This document registers a YANG module in the YANG Module Names 2478 registry [RFC7950]. 2480 Name: ietf-lime-common-types 2481 Namespace: urn:ietf:params:xml:ns:yang:ietf-lime-time-types 2482 Prefix: lime 2483 Reference: RFC XXXX 2485 Name: ietf-connectionless-oam 2486 Namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2487 Prefix: cl-oam 2488 Reference: RFC XXXX 2490 9. Acknowlegements 2492 The authors of this document would like to thank Elwyn Davies, Alia 2493 Atlas, Brian E Carpenter, Greg Mirsky, Adam Roach, Alissa Cooper, 2494 Eric Rescorla, Ben Campbell, Benoit Claise, Kathleen Moriarty, Carlos 2495 Pignataro, and others for their substantive review and comments, and 2496 proposals to stabilize and improve the document. 2498 10. References 2500 10.1. Normative References 2502 [I-D.ietf-i2rs-yang-network-topo] 2503 Clemm, A., Medved, J., Varga, R., Bahadur, N., 2504 Ananthakrishnan, H., and X. Liu, "A Data Model for Network 2505 Topologies", draft-ietf-i2rs-yang-network-topo-17 (work in 2506 progress), October 2017. 2508 [I-D.ietf-rtgwg-ni-model] 2509 Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 2510 Liu, "YANG Network Instances", draft-ietf-rtgwg-ni- 2511 model-04 (work in progress), September 2017. 2513 [I-D.ietf-rtgwg-routing-types] 2514 Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 2515 "Routing Area Common YANG Data Types", draft-ietf-rtgwg- 2516 routing-types-17 (work in progress), October 2017. 2518 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2519 DOI 10.17487/RFC3688, January 2004, 2520 . 2522 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 2523 Control Message Protocol (ICMPv6) for the Internet 2524 Protocol Version 6 (IPv6) Specification", STD 89, 2525 RFC 4443, DOI 10.17487/RFC4443, March 2006, 2526 . 2528 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2529 (TLS) Protocol Version 1.2", RFC 5246, 2530 DOI 10.17487/RFC5246, August 2008, 2531 . 2533 [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, 2534 "Network Time Protocol Version 4: Protocol and Algorithms 2535 Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, 2536 . 2538 [RFC6021] Schoenwaelder, J., Ed., "Common YANG Data Types", 2539 RFC 6021, DOI 10.17487/RFC6021, October 2010, 2540 . 2542 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2543 and A. Bierman, Ed., "Network Configuration Protocol 2544 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2545 . 2547 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2548 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2549 . 2551 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2552 Protocol (NETCONF) Access Control Model", RFC 6536, 2553 DOI 10.17487/RFC6536, March 2012, 2554 . 2556 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2557 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2558 . 2560 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 2561 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 2562 . 2564 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2565 September 1981. 2567 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2568 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2569 . 2571 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 2572 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 2573 Switched (MPLS) Data-Plane Failures", RFC 8029, 2574 DOI 10.17487/RFC8029, March 2017, 2575 . 2577 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2578 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2579 . 2581 10.2. Informative References 2583 [G.800] "Unified functional architecture of transport networks", 2584 ITU-T Recommendation G.800, 2016. 2586 [G.8013] "OAM functions and mechanisms for Ethernet based 2587 networks", ITU-T Recommendation G.8013/Y.1731, 2013. 2589 [I-D.ietf-bfd-yang] 2590 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 2591 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 2592 Detection (BFD)", draft-ietf-bfd-yang-07 (work in 2593 progress), October 2017. 2595 [I-D.ietf-lime-yang-connection-oriented-oam-model] 2596 Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model 2597 for Connection Oriented Operations, Administration, and 2598 Maintenance(OAM) protocols", draft-ietf-lime-yang- 2599 connection-oriented-oam-model-00 (work in progress), June 2600 2017. 2602 [I-D.ietf-lime-yang-connectionless-oam-methods] 2603 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 2604 "Retrieval Methods YANG Data Model for the Management of 2605 Operations, Administration, and Maintenance (OAM) 2606 Protocols that use Connectionless Communications", draft- 2607 ietf-lime-yang-connectionless-oam-methods-13 (work in 2608 progress), November 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