idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-04.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 is 1 instance of too long lines in the document, the longest one being 9 characters in excess of 72. == There are 1 instance of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 382 has weird spacing: '...ocation ine...' == Line 414 has weird spacing: '...ocation ine...' == Line 422 has weird spacing: '...ocation ine...' == Line 462 has weird spacing: '...ocation yan...' == Line 501 has weird spacing: '...ocation uin...' == (7 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (February 23, 2017) is 2617 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) == Outdated reference: A later version (-17) exists of draft-ietf-bfd-yang-04 == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-11 == Outdated reference: A later version (-13) exists of draft-ietf-lime-yang-connectionless-oam-methods-00 == Outdated reference: A later version (-10) exists of draft-ietf-lime-yang-oam-model-08 == Outdated reference: A later version (-12) exists of draft-ietf-netmod-schema-mount-03 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-05 Summary: 2 errors (**), 0 flaws (~~), 15 warnings (==), 1 comment (--). 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: August 27, 2017 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 February 23, 2017 12 Generic YANG Data Model for Connectionless Operations, Administration, 13 and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-04 16 Abstract 18 This document presents a base YANG Data model for connectionless 19 Operations Administration, and Maintenance(OAM) protocols. It 20 provides a technology-independent abstraction of key OAM constructs 21 for connectionless protocols. The base model presented here can be 22 extended to include technology specific details. This is leading to 23 uniformity between OAM protocols and support both nested OAM 24 workflows (i.e., performing OAM functions at different or same levels 25 through a unified interface). 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at http://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on August 27, 2017. 44 Copyright Notice 46 Copyright (c) 2017 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (http://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 62 2. Conventions used in this document . . . . . . . . . . . . . . 3 63 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 64 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 65 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 66 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 67 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 68 3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 69 3.4. Test Point Locations Information . . . . . . . . . . . . 7 70 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 71 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7 72 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 73 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 74 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17 75 5. Connectionless model applicability . . . . . . . . . . . . . 47 76 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 47 77 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 47 78 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 50 79 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 52 80 5.2.1. Technology type extension . . . . . . . . . . . . . . 52 81 5.2.2. Test point attributes extension . . . . . . . . . . . 53 82 6. Security Considerations . . . . . . . . . . . . . . . . . . . 53 83 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55 84 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 55 85 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 55 86 9.1. Normative References . . . . . . . . . . . . . . . . . . 55 87 9.2. Informative References . . . . . . . . . . . . . . . . . 57 88 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 58 90 1. Introduction 92 Operations, Administration, and Maintenance (OAM) are important 93 networking functions that allow operators to: 95 1. Monitor networks connections (Reachability Verification, 96 Continuity Check). 98 2. Troubleshoot failures (Fault verification and localization). 100 3. Monitor Performance 102 An overview of OAM tools is presented at [RFC7276]. 104 Ping and Traceroute [RFC792], [RFC4443] are well-known fault 105 verification and isolation tools, respectively, for IP networks. 106 Over the years, different technologies have developed similar tools 107 for similar purposes. 109 The different OAM tools may support connection-oriented technologies 110 or connectionless technologies. In connection-oriented technologies, 111 a connection is established prior to the transmission of data. In 112 connectionless technologies, data is typically sent between end 113 points without prior arrangement [RFC7276]. Note that the 114 Connection-Oriented OAM YANG DATA model is defined in 115 [I-D.ietf-lime-yang-oam-model]. 117 In this document, we presents a base YANG Data model for 118 connectionless OAM protocols. The generic YANG model for 119 connectionless OAM only includes configuration data and state data. 120 It can be used in conjunction with data retrieval method model 121 [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on 122 data retrieval procedures like RPC. However it also can be used 123 independently of data retrieval method model. 125 2. Conventions used in this document 127 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 128 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 129 document are to be interpreted as described in [RFC2119]. 131 The following terms are defined in [RFC6241] and are not redefined 132 here: 134 o client 136 o configuration data 138 o server 140 o state data 142 The following terms are defined in [RFC6020] and are not redefined 143 here: 145 o augment 146 o data model 148 o data node 150 The terminology for describing YANG data models is found in 151 [RFC6020]. 153 2.1. Terminology 155 TP - Test Point 157 MAC - Media Access Control 159 BFD - Bidirectional Forwarding Detection 161 RPC - A Remote Procedure Call, as used within the NETCONF protocol 163 CC - Continuity Check [RFC7276] , Continuity Checks are used to 164 verify that a destination is reachable and therefore also referred to 165 as reachability verification 167 2.2. Tree Diagrams 169 A simplified graphical representation of the data model is used in 170 this document. The meaning of the symbols in these diagrams is as 171 follows: 173 Each node is printed as: 175 177 is one of: 178 + for current 180 is one of: 182 rw for configuration data 183 ro for non-configuration data 184 -x for rpcs 185 -n for notifications 187 is the name of the node 189 If the node is augmented into the tree from another module, its name 190 is printed as :. 192 is one of: 194 ? for an optional leaf or choice 195 ! for a presence container 196 * for a leaf-list or list 197 [] for a list's keys 199 is the name of the type for leafs and leaf-lists 201 3. Overview of the Connectionless OAM Model 203 At the top of the model, there is an 'cc-oper-data' container for 204 session statistics. Grouping is also defined for common session 205 statistics and these are applicable for proactive OAM sessions. 206 Multiple 'test-point-locations' keyed using technology specific keys 207 (eg., IPv4 address for IPv4 locations) are possible by augmented 208 network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] 209 to describe the network hierarchies and the inventory of nodes 210 contained in a network. Each 'test-point-location' is chosen based 211 on 'location-type' which when chosen, leads to a container that 212 includes a list of 'test-point-locations' keyed by technology 213 specific keys. Each test point location includes a 'test-point- 214 location-info'. The 'test-point-location-info' includes 'tp- 215 technology', 'tp-tools', and 'connectionless-oam-layers'. The 216 groupings of 'tp-address' and 'tp-address-vrf' are kept out of 'test- 217 point-location-info' to make it addressing agnostic and allow varied 218 composition. Depending upon the choice of the 'location-type' 219 (determined by the 'tp-address-vrf'), the containers differ in its 220 composition of 'test-point-locations' while the 'test-point-location- 221 info', is a common aspect of every 'test-point-location'. The vrf is 222 used to describe the corresponding network instance. The 'tp- 223 technology' indicate OAM technology details. The 'tp-tools' describe 224 the OAM tools supported. The 'connectionless-oam-layers' is used to 225 describe the relationship of one test point with other test points. 226 The level in 'oam-layers' indicate whether related OAM test point is 227 The level in oam-layers indicate whether related oam test point is in 228 client layer(lower layer described in section 3.3), server layer 229 (upper layer described in section 3.3) or the same layer as the 230 current test point under Test point Locations. The model is 231 augmented to "/nd:networks/nd:network/nd:node" using 'test-point- 232 locations' defined below. 234 3.1. TP Address 236 In connectionless OAM, the tp address is defined with the following 237 type: 239 o MAC address [RFC6136] 240 o IPv4 or IPv6 address 242 o TP-attribute 244 o System-id to represent the device or 245 node.[I-D.ietf-spring-sr-yang] 247 To define a forwarding treatment of a test packet, the 'tp-address' 248 needs to be associated with additional parameters, e.g. DSCP for IP 249 or TC for MPLS. In generic connectionless OAM YANG model, these 250 parameters are not explicit configured. The model user can add 251 corresponding parameters according to their requirements. 253 3.2. Tools 255 The different OAM tools may be used in one of two basic types of 256 activation: proactive and on-demand. The proactive OAM refers to OAM 257 actions which are carried out continuously to permit proactive 258 reporting of fault. The on-demand OAM refers to OAM actions which 259 are initiated via manual intervention for a limited time to carry out 260 diagnostics [RFC7276] [G.8013]. In connectionless OAM, 'session- 261 type' is defined to indicate which kind of activation will be used by 262 the current session. 264 In connectionless OAM, the tools attribute is used to describe a 265 toolset for fault detection and isolation. And it can serve as a 266 constraint condition when the base model be extended to specific OAM 267 technology. For example, to fulfill the ICMP PING configuration, the 268 "../coam:continuity-check" should be set to "true", and then the lime 269 base model should be augmented with ICMP PING specific details. 271 3.3. OAM-layers 273 As typical networks have a multi-layer architecture, the set of OAM 274 protocols similarly take a multi-layer structure; each layer may has 275 its own OAM protocol [RFC7276] and is corresponding to specific 276 network portion or path and has associated test points. OAM-layers 277 is referred to a list of upper layer, lower layer that are related to 278 current test point. This allows users to easily navigate up and down 279 to efficiently troubleshoot a "loss of continuity defect" at 280 different layer. In this model, we have kept level default as 0, 281 when all test points are located at the same layer. 'Level' defines 282 the relative technology level in a sequence of network portions, and 283 is provided to allow correlation of faults in related OAM domains. 284 For example, there is a network in which data traffic between two 285 customer edges is transported over three consecutive network 286 portions, the current test point is located in the second network 287 portion. If there is a defect in the first network portion is 288 located at the upstream of the second network portion, the level of 289 the first network portion is set to "-1". If the third network 290 portion is located at the downstream of the second network portion 291 and the level is set to "1". In another case, if the first network 292 portion and the third network portion is in the same level of the 293 second network portion, the level is set to "0". The snippet below 294 depicts an example of OAM layers. 296 list oam-layers { 297 key "index"; 298 leaf index { 299 type uint16 { 300 range "0..65535"; 301 } 302 } 303 leaf level { 304 type int32 { 305 range "-1..1"; 306 } 307 description 308 "Level"; 309 } 310 ordered-by user; 311 description 312 "List of related oam layers."; 313 } 315 3.4. Test Point Locations Information 317 This is a generic grouping for Test Point Locations Information. It 318 Provide details of Test Point Location using Tools, 'OAM-Layers' 319 grouping defined above. 321 3.5. Test Point Locations 323 This is a generic grouping for Test Point Locations. Choice 324 statement is used to define locations types, for example 'ipv4- 325 location-type', 'ipv6-location-type', etc. Container is defined 326 under each location type containing list keyed to test point address, 327 Test Point Location Information defined in section above, and routing 328 instance VRF name if required. 330 3.6. Path Discovery Data 332 This is a generic grouping for path discovery data model that can be 333 retrieved by any data retrieval methods including RPCs. Path 334 discovery data output from methods, includes 'src-test-point', 'dst- 335 test-point', 'sequence-number', 'hop-cnt', session statistics of 336 various kinds, path verification and path trace related information. 337 Path discovery includes data to be retrieved on a 'per-hop' basis via 338 a list of 'path-trace-info-list' which includes information like 339 'timestamps', 'ingress-interface', 'egress-interface' and 'app-meta- 340 data'. The path discovery data model is made generic enough to allow 341 different methods of data retrieval. None of the fields are made 342 mandatory for that reason. Noted that the retrieval methods are 343 defined in [I-D.ietf-lime-yang-connectionless-oam-methods]. 345 3.7. Continuity Check Data 347 This is a generic grouping for continuity check data model that can 348 be retrieved by any data retrieval methods including RPCs. 349 Continuity check data output from methods, includes 'src-test-point', 350 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics 351 of various kinds. The continuity check data model is made generic 352 enough to allow different methods of data retrieval. None of the 353 fields are made mandatory for that reason. Noted that the retrieval 354 methods are defined in 355 [I-D.ietf-lime-yang-connectionless-oam-methods]. 357 3.8. OAM data hierarchy 359 The complete data hierarchy related to the OAM YANG model is 360 presented below. 362 module: ietf-connectionless-oam 363 +--ro cc-oper-data {continuity-check}? 364 +--ro cc-ipv4-sessions-statistics 365 | +--ro cc-session-statistics 366 | +--ro session-count? uint32 367 | +--ro session-up-count? uint32 368 | +--ro session-down-count? uint32 369 | +--ro session-admin-down-count? uint32 370 +--ro cc-ipv6-sessions-statistics 371 +--ro cc-session-statistics 372 +--ro session-count? uint32 373 +--ro session-up-count? uint32 374 +--ro session-down-count? uint32 375 +--ro session-admin-down-count? uint32 376 augment /nd:networks/nd:network/nd:node: 377 +--rw tp-location-type-value? identityref 378 +--rw (location-type)? 379 +--:(ipv4-location-type) 380 | +--rw test-point-ipv4-location-list 381 | +--rw test-point-locations* [ipv4-location] 382 | +--rw ipv4-location inet:ipv4-address 383 | +--rw vrf? routing-instance-ref 384 | +--rw (technology)? 385 | | +--:(technology-null) 386 | | | +--rw tech-null? empty 387 | | +--:(technology-string) 388 | | +--rw ipv4-icmp? string 389 | +--rw tp-tools 390 | | +--rw connectivity-verification? boolean 391 | | +--rw continuity-check? boolean 392 | | +--rw path-discovery? boolean 393 | +--rw root? 394 | +--rw oam-layers* [index] 395 | +--rw index uint16 396 | +--rw level? int32 397 | +--rw (tp-location)? 398 | +--:(mac-address) 399 | | +--rw mac-address-location? yang:mac-address 400 | +--:(ipv4-address) 401 | | +--rw ipv4-location? inet:ipv4-address 402 | +--:(ipv6-location) 403 | | +--rw ipv6-address inet:ipv6-address 404 | +--:(tunnel-location) 405 | | +--rw tunnel-location? uint32 406 | +--:(ip-prefix-location) 407 | | +--rw ip-prefix-location? inet:ip-prefix 408 | +--:(route-dist-location) 409 | | +--rw route-dist-location? uint32 410 | +--:(group-ip-address-location) 411 | | +--rw group-ip-address-location? IP-Multicast 412 -Group-Address 413 | +--:(as-number-location) 414 | | +--rw as-number-location inet:as-number 415 | +--:(lsp-id-location) 416 | | +--rw lsp-id-location? string 417 | +--:(system-id-location) 418 | +--rw system-id-location? router-id 419 +--:(ipv6-location-type) 420 | +--rw test-point-ipv6-location-list 421 | +--rw test-point-locations* [ipv6-location] 422 | +--rw ipv6-location inet:ipv6-address 423 | +--rw vrf? routing-instance-ref 424 | +--rw (technology)? 425 | | +--:(technology-null) 426 | | | +--rw tech-null? empty 427 | | +--:(technology-string) 428 | | +--rw ipv4-icmp? string 429 | +--rw tp-tools 430 | | +--rw connectivity-verification? boolean 431 | | +--rw continuity-check? boolean 432 | | +--rw path-discovery? boolean 433 | +--rw root? 434 | +--rw oam-layers* [index] 435 | +--rw index uint16 436 | +--rw level? int32 437 | +--rw (tp-location)? 438 | +--:(mac-address) 439 | | +--rw mac-address-location? yang:mac-address 440 | +--:(ipv4-address) 441 | | +--rw ipv4-location? inet:ipv4-address 442 | +--:(ipv6-location) 443 | | +--rw ipv6-address? inet:ipv6-address 444 | +--:(tunnel-location) 445 | | +--rw tunnel-location? uint32 446 | +--:(ip-prefix-location) 447 | | +--rw ip-prefix-location? inet:ip-prefix 448 | +--:(route-dist-location) 449 | | +--rw route-dist-location? uint32 450 | +--:(group-ip-address-location) 451 | | +--rw group-ip-address-location? IP-Multicast 452 -Group-Address 453 | +--:(as-number-location) 454 | | +--rw as-number-location? inet:as-number 455 | +--:(lsp-id-location) 456 | | +--rw lsp-id-location? string 457 | +--:(system-id-location) 458 | +--rw system-id-location? router-id 459 +--:(mac-location-type) 460 | +--rw test-point-mac-address-location-list 461 | +--rw test-point-locations* [mac-address-location] 462 | +--rw mac-address-location yang:mac-address 463 | +--rw (technology)? 464 | | +--:(technology-null) 465 | | | +--rw tech-null? empty 466 | | +--:(technology-string) 467 | | +--rw ipv4-icmp? string 468 | +--rw tp-tools 469 | | +--rw connectivity-verification? boolean 470 | | +--rw continuity-check? boolean 471 | | +--rw path-discovery? boolean 472 | +--rw root? 473 | +--rw oam-layers* [index] 474 | +--rw index uint16 475 | +--rw level? int32 476 | +--rw (tp-location)? 477 | +--:(mac-address) 478 | | +--rw mac-address-location? yang:mac-address 479 | +--:(ipv4-address) 480 | | +--rw ipv4-location? inet:ipv4-address 481 | +--:(ipv6-location) 482 | | +--rw ipv6-address? inet:ipv6-address 483 | +--:(tunnel-location) 484 | | +--rw tunnel-location? uint32 485 | +--:(ip-prefix-location) 486 | | +--rw ip-prefix-location inet:ip-prefix 487 | +--:(route-dist-location) 488 | | +--rw route-dist-location? uint32 489 | +--:(group-ip-address-location) 490 | | +--rw group-ip-address-location? IP-Multicast 491 -Group-Address 492 | +--:(as-number-location) 493 | | +--rw as-number-location? inet:as-number 494 | +--:(lsp-id-location) 495 | | +--rw lsp-id-location? string 496 | +--:(system-id-location) 497 | +--rw system-id-location? router-id 498 +--:(tunnel-location-type) 499 | +--rw test-point-tunnel-location-list 500 | +--rw test-point-locations* [tunnel-location] 501 | +--rw tunnel-location uint32 502 | +--rw vrf? routing-instance-ref 503 | +--rw (technology)? 504 | | +--:(technology-null) 505 | | | +--rw tech-null? empty 506 | | +--:(technology-string) 507 | | +--rw ipv4-icmp? string 508 | +--rw tp-tools 509 | | +--rw connectivity-verification? boolean 510 | | +--rw continuity-check? boolean 511 | | +--rw path-discovery? boolean 512 | +--rw root? 513 | +--rw oam-layers* [index] 514 | +--rw index uint16 515 | +--rw level? int32 516 | +--rw (tp-location)? 517 | +--:(mac-address) 518 | | +--rw mac-address-location? yang:mac-address 519 | +--:(ipv4-address) 520 | | +--rw ipv4-location? inet:ipv4-address 521 | +--:(ipv6-location) 522 | | +--rw ipv6-address? inet:ipv6-address 523 | +--:(tunnel-location) 524 | | +--rw tunnel-location? uint32 525 | +--:(ip-prefix-location) 526 | | +--rw ip-prefix-location inet:ip-prefix 527 | +--:(route-dist-location) 528 | | +--rw route-dist-location? uint32 529 | +--:(group-ip-address-location) 530 | | +--rw group-ip-address-location? IP-Multicast 531 -Group-Address 532 | +--:(as-number-location) 533 | | +--rw as-number-location? inet:as-number 534 | +--:(lsp-id-location) 535 | | +--rw lsp-id-location? string 536 | +--:(system-id-location) 537 | +--rw system-id-location? router-id 538 +--:(ip-prefix-location-type) 539 | +--rw test-point-ip-prefix-location-list 540 | +--rw test-point-locations* [ip-prefix-location] 541 | +--rw ip-prefix-location inet:ip-prefix 542 | +--rw vrf? routing-instance-ref 543 | +--rw (technology)? 544 | | +--:(technology-null) 545 | | | +--rw tech-null? empty 546 | | +--:(technology-string) 547 | | +--rw ipv4-icmp? string 548 | +--rw tp-tools 549 | | +--rw connectivity-verification? boolean 550 | | +--rw continuity-check? boolean 551 | | +--rw path-discovery? boolean 552 | +--rw root? 553 | +--rw oam-layers* [index] 554 | +--rw index uint16 555 | +--rw level? int32 556 | +--rw (tp-location)? 557 | +--:(mac-address) 558 | | +--rw mac-address-location? yang:mac-address 559 | +--:(ipv4-address) 560 | | +--rw ipv4-location inet:ipv4-address 561 | +--:(ipv6-location) 562 | | +--rw ipv6-address? inet:ipv6-address 563 | +--:(tunnel-location) 564 | | +--rw tunnel-location? uint32 565 | +--:(ip-prefix-location) 566 | | +--rw ip-prefix-location? inet:ip-prefix 567 | +--:(route-dist-location) 568 | | +--rw route-dist-location? uint32 569 | +--:(group-ip-address-location) 570 | | +--rw group-ip-address-location? IP-Multicast 571 -Group-Address 572 | +--:(as-number-location) 573 | | +--rw as-number-location? inet:as-number 574 | +--:(lsp-id-location) 575 | | +--rw lsp-id-location? string 576 | +--:(system-id-location) 577 | +--rw system-id-location? router-id 578 +--:(route-distinguisher-location-type) 579 | +--rw test-point-route-dist-location-list 580 | +--rw test-point-locations* [route-dist-location] 581 | +--rw route-dist-location uint32 582 | +--rw vrf? routing-instance-ref 583 | +--rw (technology)? 584 | | +--:(technology-null) 585 | | | +--rw tech-null? empty 586 | | +--:(technology-string) 587 | | +--rw ipv4-icmp? string 588 | +--rw tp-tools 589 | | +--rw connectivity-verification? boolean 590 | | +--rw continuity-check? boolean 591 | | +--rw path-discovery? boolean 592 | +--rw root? 593 | +--rw oam-layers* [index] 594 | +--rw index uint16 595 | +--rw level? int32 596 | +--rw (tp-location)? 597 | +--:(mac-address) 598 | | +--rw mac-address-location? yang:mac-address 599 | +--:(ipv4-address) 600 | | +--rw ipv4-location inet:ipv4-address 601 | +--:(ipv6-location) 602 | | +--rw ipv6-address inet:ipv6-address 603 | +--:(tunnel-location) 604 | | +--rw tunnel-location? uint32 605 | +--:(ip-prefix-location) 606 | | +--rw ip-prefix-location? inet:ip-prefix 607 | +--:(route-dist-location) 608 | | +--rw route-dist-location? uint32 609 | +--:(group-ip-address-location) 610 | | +--rw group-ip-address-location? IP-Multicast 611 -Group-Address 612 | +--:(as-number-location) 613 | | +--rw as-number-location? inet:as-number 614 | +--:(lsp-id-location) 615 | | +--rw lsp-id-location? string 616 | +--:(system-id-location) 617 | +--rw system-id-location? router-id 618 +--:(group-ip-address-location-type) 619 | +--rw test-point-group-ip-address-location-list 620 | +--rw test-point-locations* [group-ip-address-location] 621 | +--rw group-ip-address-location IP-Multicast 622 -Group-Address 623 | +--rw vrf? routing-instance-ref 624 | +--rw (technology)? 625 | | +--:(technology-null) 626 | | | +--rw tech-null? empty 627 | | +--:(technology-string) 628 | | +--rw ipv4-icmp? string 629 | +--rw tp-tools 630 | | +--rw connectivity-verification? boolean 631 | | +--rw continuity-check? boolean 632 | | +--rw path-discovery? boolean 633 | +--rw root? 634 | +--rw oam-layers* [index] 635 | +--rw index uint16 636 | +--rw level? int32 637 | +--rw (tp-location)? 638 | +--:(mac-address) 639 | | +--rw mac-address-location? yang:mac-address 640 | +--:(ipv4-address) 641 | | +--rw ipv4-location? inet:ipv4-address 642 | +--:(ipv6-location) 643 | | +--rw ipv6-address? inet:ipv6-address 644 | +--:(tunnel-location) 645 | | +--rw tunnel-location? uint32 646 | +--:(ip-prefix-location) 647 | | +--rw ip-prefix-location? inet:ip-prefix 648 | +--:(route-dist-location) 649 | | +--rw route-dist-location? uint32 650 | +--:(group-ip-address-location) 651 | | +--rw group-ip-address-location? IP-Multicast 652 -Group-Address 653 | +--:(as-number-location) 654 | | +--rw as-number-location? inet:as-number 655 | +--:(lsp-id-location) 656 | | +--rw lsp-id-location? string 657 | +--:(system-id-location) 658 | +--rw system-id-location? router-id 659 +--:(group-as-number-location-type) 660 | +--rw test-point-as-number-location-list 661 | +--rw test-point-locations* [as-number-location] 662 | +--rw as-number-location inet:as-number 663 | +--rw vrf? routing-instance-ref 664 | +--rw (technology)? 665 | | +--:(technology-null) 666 | | | +--rw tech-null? empty 667 | | +--:(technology-string) 668 | | +--rw ipv4-icmp? string 669 | +--rw tp-tools 670 | | +--rw connectivity-verification? boolean 671 | | +--rw continuity-check? boolean 672 | | +--rw path-discovery? boolean 673 | +--rw root? 674 | +--rw oam-layers* [index] 675 | +--rw index uint16 676 | +--rw level? int32 677 | +--rw (tp-location)? 678 | +--:(mac-address) 679 | | +--rw mac-address-location? yang:mac-address 680 | +--:(ipv4-address) 681 | | +--rw ipv4-location? inet:ipv4-address 682 | +--:(ipv6-location) 683 | | +--rw ipv6-address? inet:ipv6-address 684 | +--:(tunnel-location) 685 | | +--rw tunnel-location uint32 686 | +--:(ip-prefix-location) 687 | | +--rw ip-prefix-location? inet:ip-prefix 688 | +--:(route-dist-location) 689 | | +--rw route-dist-location? uint32 690 | +--:(group-ip-address-location) 691 | | +--rw group-ip-address-location? IP-Multicast 692 -Group-Address 693 | +--:(as-number-location) 694 | | +--rw as-number-location? inet:as-number 695 | +--:(lsp-id-location) 696 | | +--rw lsp-id-location? string 697 | +--:(system-id-location) 698 | +--rw system-id-location? router-id 699 +--:(group-lsp-id-location-type) 700 | +--rw test-point-lsp-id-location-list 701 | +--rw test-point-locations* [lsp-id-location] 702 | +--rw lsp-id-location string 703 | +--rw vrf? routing-instance-ref 704 | +--rw (technology)? 705 | | +--:(technology-null) 706 | | | +--rw tech-null? empty 707 | | +--:(technology-string) 708 | | +--rw ipv4-icmp? string 709 | +--rw tp-tools 710 | | +--rw connectivity-verification? boolean 711 | | +--rw continuity-check? boolean 712 | | +--rw path-discovery? boolean 713 | +--rw root? 714 | +--rw oam-layers* [index] 715 | +--rw index uint16 716 | +--rw level? int32 717 | +--rw (tp-location)? 718 | +--:(mac-address) 719 | | +--rw mac-address-location? yang:mac-address 720 | +--:(ipv4-address) 721 | | +--rw ipv4-location inet:ipv4-address 722 | +--:(ipv6-location) 723 | | +--rw ipv6-address? inet:ipv6-address 724 | +--:(tunnel-location) 725 | | +--rw tunnel-location? uint32 726 | +--:(ip-prefix-location) 727 | | +--rw ip-prefix-location? inet:ip-prefix 728 | +--:(route-dist-location) 729 | | +--rw route-dist-location? uint32 730 | +--:(group-ip-address-location) 731 | | +--rw group-ip-address-location? IP-Multicast 732 -Group-Address 733 | +--:(as-number-location) 734 | | +--rw as-number-location? inet:as-number 735 | +--:(lsp-id-location) 736 | | +--rw lsp-id-location? string 737 | +--:(system-id-location) 738 | +--rw system-id-location? router-id 739 +--:(group-system-id-location-type) 740 +--rw test-point-system-info-location-list 741 +--rw test-point-locations* [system-id-location] 742 +--rw system-id-location inet:uri 743 +--rw vrf? routing-instance-ref 744 +--rw (technology)? 745 | +--:(technology-null) 746 | | +--rw tech-null? empty 747 | +--:(technology-string) 748 | +--rw ipv4-icmp? string 749 +--rw tp-tools 750 | +--rw connectivity-verification? boolean 751 | +--rw continuity-check? boolean 752 | +--rw path-discovery? boolean 753 +--rw root? 754 +--rw oam-layers* [index] 755 +--rw index uint16 756 +--rw level? int32 757 +--rw (tp-location)? 758 +--:(mac-address) 759 | +--rw mac-address-location? yang:mac-address 760 +--:(ipv4-address) 761 | +--rw ipv4-location? inet:ipv4-address 762 +--:(ipv6-location) 763 | +--rw ipv6-address? inet:ipv6-address 764 +--:(tunnel-location) 765 | +--rw tunnel-location? uint32 766 +--:(ip-prefix-location) 767 | +--rw ip-prefix-location inet:ip-prefix 768 +--:(route-dist-location) 769 | +--rw route-dist-location? uint32 770 +--:(group-ip-address-location) 771 | +--rw group-ip-address-location? IP-Multicast 772 -Group-Address 773 +--:(as-number-location) 774 | +--rw as-number-location? inet:as-number 775 +--:(lsp-id-location) 776 | +--rw lsp-id-location? string 777 +--:(system-id-location) 778 +--rw system-id-location? router-id 780 data hierarchy of OAM 782 4. OAM YANG Module 784 file "ietf-connectionless-oam.yang" 786 module ietf-connectionless-oam { 787 yang-version 1.1; 788 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 790 prefix coam; 792 import ietf-yang-schema-mount { 793 prefix yangmnt; 794 } 796 import ietf-network{ 797 prefix nd; 798 } 799 import ietf-yang-types { 800 prefix yang; 801 } 802 import ietf-interfaces { 803 prefix if; 804 } 805 import ietf-inet-types { 806 prefix inet; 807 } 808 import ietf-network-instance { 809 prefix "ni"; 810 } 812 organization "IETF LIME Working Group"; 813 contact 815 "Deepak Kumar dekumar@cisco.com 816 Qin Wu bill.wu@huawei.com 817 S Raghavan srihari@cisco.com 818 Zitao Wang wangzitao@huawei.com 819 R Rahman rrahman@cisco.com"; 821 description 823 "This YANG module defines the generic configuration, 824 data model, statistics for connectionless OAM to be 825 used within IETF in a protocol indpendent manner. 826 Functional level abstraction is indendent with 827 YANG modeling. It is assumed that each protocol maps 828 corresponding abstracts to its native format. 829 Each protocol may extend the YANG model defined 830 here to include protocol specific extensions"; 831 revision 2017-02-08 { 832 description 833 "Initial revision. - 10 version"; 834 reference ""; 835 } 836 /* features */ 837 feature connection-less { 838 description 839 "This feature indicates that OAM solution is connection less."; 840 } 841 feature continuity-check { 842 description 843 "This feature indicates that the server supports 844 executing continuity check OAM command and 845 returning a response. Servers that do not advertise 846 this feature will not support executing 847 continuity check command or rpc model for 848 continuity check command."; 849 } 850 feature path-discovery { 851 description 852 "This feature indicates that the server supports 853 executing path discovery OAM command and 854 returning a response. Servers that do not advertise 855 this feature will not support executing 856 path discovery command or rpc model for 857 path discovery command."; 858 } 860 /* Identities */ 861 /* typedefs */ 863 typedef router-id { 865 type yang:dotted-quad; 866 description 867 "A 32-bit number in the dotted quad format assigned to each 868 router. This number uniquely identifies the router within an 869 Autonomous System."; 870 } 872 typedef routing-instance-ref { 874 type leafref { 875 path "/ni:network-instances/ni:network-instance/ni:name"; 876 } 877 description 878 "This type is used for leafs that reference a routing instance 879 configuration."; 880 } 882 typedef IPv4-Multicast-Group-Address { 883 type string { 884 pattern '(2((2[4-9])|(3[0-9]))\.)' 885 +'(([0-9]|[1-9][0-9]|1[0-9][0-9]|' 886 +'2[0-4][0-9]|25[0-5])\.){2}' 887 +'([0-9]|[1-9][0-9]|1[0-9][0-9]' 888 +'|2[0-4][0-9]|25[0-5])'; 889 } 890 description 891 "The IPv4-Multicast-Group-Address type 892 represents an IPv4 multicast address 893 in dotted-quad notation."; 894 reference "RFC4607"; 895 } // typedef IPv4-Multicast-Group-Address 896 typedef IPv6-Multicast-Group-Address { 897 type string { 898 pattern 899 '(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]' 900 +'{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?' 901 +'(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4]' 902 +'[0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|' 903 +'2[0-4][0-9]|[01]?[0-9]?[0-9])))'; 904 pattern 905 '(([^:]+:){6}(([^:]+:[^:]+)|' 906 +'(.*\..*)))|((([^:]+:)*[^:]+)' 907 +'?::(([^:]+:)*[^:]+)?)'; 908 } 909 description 910 "The IPv6-Multicast-Group-Address 911 type represents an IPv6 address in full, 912 mixed, shortened, and shortened-mixed 913 notation."; 914 reference "RFC4291 2.7. 915 ietf-inet-types:ipv6-address"; 916 } 917 typedef IP-Multicast-Group-Address { 918 type union { 919 type IPv4-Multicast-Group-Address; 920 type IPv6-Multicast-Group-Address; 921 } 922 description 923 "The IP-Multicast-Group-Address type 924 represents an IP multicast address and 925 is IP version neutral. The format of the 926 textual representations implies the IP version."; 927 } 929 identity address-attribute-types { 931 description 932 "This is base identity of address 933 attribute types which are ip-prefix, 934 bgp, tunnel, pwe3, vpls, etc."; 935 } 937 typedef address-attribute-type { 938 type identityref { 939 base address-attribute-types; 940 } 941 description 942 "Target address attribute type."; 943 } 945 typedef opaque-tlv-type { 946 type identityref { 947 base opaque-tlv-type-id; 948 } 949 description 950 "Opaque TLV type definition."; 951 } 953 identity time-resolution{ 954 description 955 "Time interval resolution"; 956 } 958 identity hours { 959 base time-resolution; 960 description 961 "Hours"; 962 } 964 identity minutes { 965 base time-resolution; 966 description 967 "Minutes"; 968 } 970 identity seconds { 971 base time-resolution; 972 description 973 "Seconds"; 975 } 977 identity milliseconds { 978 base time-resolution; 979 description 980 "Milliseconds"; 981 } 983 identity microseconds { 985 base time-resolution; 986 description 987 "Microseconds"; 988 } 990 identity nanoseconds { 991 base time-resolution; 992 description 993 "Nanoseconds"; 994 } 995 identity opaque-tlv-type-id { 996 description 997 "Base identity for opaque tlv types."; 998 } 999 identity default-tlv-type-id { 1000 base opaque-tlv-type-id; 1001 description 1002 "Default or unknown TLV type id."; 1003 } 1005 /* groupings */ 1006 grouping cc-session-statsitics { 1007 description "Grouping for session statistics."; 1008 container cc-session-statistics { 1009 description "cc session counters"; 1010 leaf session-count { 1011 type uint32; 1012 description 1013 "Number of cc sessions."; 1014 } 1015 leaf session-up-count { 1016 type uint32; 1017 description 1018 "Number of sessions which are up."; 1019 } 1020 leaf session-down-count { 1021 type uint32; 1022 description 1023 "Number of sessions which are down."; 1024 } 1025 leaf session-admin-down-count { 1026 type uint32; 1027 description 1028 "Number of sessions which are admin-down."; 1029 } 1030 } 1031 } 1033 grouping session-packet-statistics { 1034 description "Grouping for per session packet statistics"; 1035 container session-packet-statistics { 1037 description "Per session packet statistics."; 1038 leaf rx-packet-count { 1039 type uint32; 1040 description 1041 "Total number of received OAM packet count."; 1042 } 1043 leaf tx-packet-count { 1044 type uint32; 1045 description 1046 "Total number of transmitted OAM packet count."; 1047 } 1048 leaf rx-bad-packet { 1049 type uint32; 1050 description 1051 "Total number of received bad OAM packet."; 1052 } 1053 leaf tx-packet-failed { 1054 type uint32; 1055 description 1056 "Total number of send OAM packet failed."; 1058 } 1059 } 1060 } 1062 grouping cc-per-session-statistics { 1063 description "Grouping for per session statistics"; 1064 container cc-per-session-statistics { 1065 description "per session statistics."; 1066 leaf create-time { 1067 type yang:date-and-time; 1068 description 1069 "Time and date when session is created."; 1070 } 1071 leaf last-down-time { 1072 type yang:date-and-time; 1073 description 1074 "Time and date last time session is down."; 1075 } 1076 leaf last-up-time { 1077 type yang:date-and-time; 1078 description 1079 "Time and date last time session is up."; 1080 } 1081 leaf down-count { 1082 type uint32; 1083 description 1084 "Total down count."; 1085 } 1086 leaf admin-down-count { 1087 type uint32; 1088 description 1089 "Total down count."; 1090 } 1091 uses session-packet-statistics; 1092 } 1094 } 1096 grouping session-error-statistics { 1097 description 1098 "Grouping for per session error statistics"; 1099 container session-error-statistics { 1100 description "Per session error statistics."; 1101 leaf packet-drops-count { 1102 type uint32; 1103 description 1104 "Total received packet drops count."; 1105 } 1106 leaf packet-reorder-count { 1108 type uint32; 1109 description 1110 "Total received packet reordered count."; 1111 } 1112 leaf packets-out-of-seq-count { 1113 type uint32; 1114 description 1115 "Total received out of sequence count."; 1116 } 1117 leaf packets-dup-count { 1118 type uint32; 1119 description 1120 "Total received packet duplicates count."; 1121 } 1122 } 1123 } 1125 grouping session-delay-statistics { 1126 description 1127 "Grouping for per session delay statistics"; 1128 container session-delay-statistics { 1129 description 1130 "Session delay summarised information."; 1131 leaf time-resolution-value { 1132 type identityref { 1133 base time-resolution; 1134 } 1135 description 1136 "Time units among choice of s,ms,ns etc."; 1137 } 1138 leaf min-delay-value { 1139 type uint32; 1140 description 1141 "Minimum delay value observed."; 1142 } 1143 leaf max-delay-value { 1144 type uint32; 1145 description 1146 "Maximum delay value observed."; 1147 } 1148 leaf average-delay-value { 1149 type uint32; 1150 description 1151 "Average delay value observed."; 1152 } 1154 } 1155 } 1157 grouping session-jitter-statistics { 1158 description 1159 "Grouping for per session jitter statistics"; 1160 container session-jitter-statistics { 1161 description 1162 "Session jitter summarised information."; 1163 leaf time-resolution-value { 1164 type identityref { 1165 base time-resolution; 1166 } 1167 description 1168 "Time units among choice of s,ms,ns etc."; 1169 } 1170 leaf min-jitter-value { 1171 type uint32; 1172 description 1173 "Minimum jitter value observed."; 1174 } 1175 leaf max-jitter-value { 1176 type uint32; 1177 description 1178 "Maximum jitter value observed."; 1179 } 1180 leaf average-jitter-value { 1181 type uint32; 1182 description 1183 "Average jitter value observed."; 1184 } 1185 } 1186 } 1188 grouping session-path-verification-statistics { 1189 description 1190 "Grouping for per session path verification statistics"; 1191 container session-path-verification-statistics{ 1192 description 1193 "OAM per session path verification statistics."; 1194 leaf verified-count { 1195 type uint32; 1196 description 1197 "Total number of OAM packets that 1198 went through a path as intended."; 1199 } 1200 leaf failed-count { 1201 type uint32; 1202 description 1203 "Total number of OAM packets that 1204 went through an unintended path."; 1205 } 1206 } 1207 } 1209 grouping session-type { 1210 description 1211 "This object indicates the current session 1212 definition."; 1213 leaf session-type-enum { 1214 type enumeration { 1215 enum proactive { 1216 description 1217 "The current session is proactive"; 1218 } 1219 enum on-demand { 1220 description 1221 "The current session is on-demand."; 1222 } 1223 } 1224 default "on-demand"; 1225 description 1226 "Session type enum"; 1227 } 1228 } 1229 grouping opaque-info-tlv { 1230 description 1231 "Opaque information as a TLV."; 1232 leaf type { 1233 type opaque-tlv-type; 1234 description "TLV type."; 1235 } 1236 leaf length { 1237 type uint16; 1238 description "TLV length."; 1239 } 1240 leaf value { 1241 type yang:hex-string; 1242 description "TLV value."; 1243 } 1244 } 1246 grouping opaque-tlvs { 1247 description 1248 "Opaque TLVs."; 1249 container opaque-tlvs { 1250 description 1251 "Opaque TLVs container."; 1252 list opaque-tlvs-list { 1253 description 1254 "Opaque TLVs list."; 1255 uses opaque-info-tlv; 1256 } 1257 } 1258 } 1259 identity tp-address-type { 1260 description 1261 "Test point address type"; 1262 } 1264 identity mac-address-type { 1265 base tp-address-type; 1266 description 1267 "MAC address type"; 1268 } 1270 identity ipv4-address-type { 1271 base tp-address-type; 1272 description 1273 "IPv4 address type"; 1274 } 1276 identity ipv6-address-type { 1277 base tp-address-type; 1278 description 1279 "IPv6 address type"; 1280 } 1282 identity tp-attribute-type { 1284 base tp-address-type; 1285 description 1286 "Test point attribute type"; 1287 } 1289 identity system-id-address-type { 1290 base tp-address-type; 1291 description 1292 "System id address type"; 1293 } 1295 identity lsp-id-address-type { 1296 base tp-address-type; 1297 description 1298 "LSP ID address type"; 1299 } 1301 identity as-number-address-type { 1302 base tp-address-type; 1303 description 1304 "AS number address type"; 1305 } 1307 identity group-ip-address-type { 1308 base tp-address-type; 1309 description 1310 "Group IP address type"; 1311 } 1313 identity route-distinguisher-address-type { 1314 base tp-address-type; 1315 description 1316 "Route Distinguisher address type"; 1317 } 1319 identity ip-prefix-address-type { 1320 base tp-address-type; 1321 description 1322 "IP prefix address type"; 1323 } 1325 identity tunnel-address-type { 1326 base tp-address-type; 1327 description 1328 "Tunnel address type"; 1329 } 1331 grouping tp-address { 1332 leaf tp-location-type-value { 1333 type identityref { 1334 base tp-address-type; 1335 } 1336 description "Test point address type."; 1337 } 1339 choice tp-address { 1341 case mac-address { 1342 when "'tp-location-type-value' = 'mac-address-type'" { 1343 description "MAC address type"; 1344 } 1345 leaf mac-address { 1346 type yang:mac-address; 1347 description 1348 "MAC Address"; 1349 } 1350 description 1351 "MAC Address based MP Addressing."; 1352 } 1353 case ipv4-address { 1354 when "'tp-location-type-value' = 'ipv4-address-type'" { 1355 description "IPv4 address type"; 1356 } 1357 leaf ipv4-address { 1358 type inet:ipv4-address; 1359 description 1360 "IPv4 Address"; 1361 } 1362 description 1363 "IP Address based MP Addressing."; 1364 } 1365 case ipv6-address { 1366 when "'tp-location-type-value' = 'ipv6-address-type'" { 1367 description "IPv6 address type"; 1368 } 1369 leaf ipv6-address { 1370 type inet:ipv6-address; 1371 description 1372 "IPv6 Address"; 1374 } 1375 description 1376 "ipv6 Address based MP Addressing."; 1377 } 1379 case tp-attribute { 1380 when "'tp-location-type-value' = 'tp-attribute-type'" { 1381 description "Test point attribute type"; 1382 } 1383 leaf tp-attribute-type { 1384 type address-attribute-type; 1385 description 1386 "Test point type."; 1387 } 1388 choice tp-attribute-value { 1389 description 1390 "Test point value."; 1391 case ip-prefix { 1392 leaf ip-prefix { 1393 type inet:ip-prefix; 1394 description 1395 "IP prefix."; 1396 } 1397 } 1398 case bgp { 1399 leaf bgp { 1400 type inet:ip-prefix; 1401 description 1402 "BGP Labeled Prefix "; 1403 } 1404 } 1405 case tunnel { 1406 leaf tunnel-interface { 1407 type uint32; 1408 description 1409 "VPN Prefix "; 1410 } 1411 } 1413 case pw { 1414 leaf remote-pe-address{ 1415 type inet:ip-address; 1416 description 1417 "Remote pe address."; 1418 } 1419 leaf pw-id { 1420 type uint32; 1421 description 1422 "Pseudowire id."; 1423 } 1424 } 1425 case vpls { 1426 leaf route-distinguisher { 1427 type uint32; 1428 description 1429 "Route Distinguisher(8 octets)."; 1430 } 1431 leaf sender-ve-id{ 1432 type uint32; 1433 description 1434 "Sender's VE ID."; 1435 } 1436 leaf receiver-ve-id{ 1437 type uint32; 1438 description 1439 "Receiver's VE ID."; 1440 } 1441 } 1442 case mpls-mldp{ 1443 choice root-address{ 1444 description 1445 "Root address choice."; 1446 case ip-address{ 1447 leaf source-address{ 1448 type inet:ip-address; 1449 description 1450 "IP address."; 1451 } 1452 leaf group-ip-address{ 1453 type IP-Multicast-Group-Address; 1454 description 1455 "Group ip address."; 1456 } 1457 } 1458 case vpn{ 1459 leaf as-number{ 1460 type inet:as-number; 1461 description 1462 "AS number."; 1463 } 1464 } 1465 case global-id{ 1466 leaf lsp-id{ 1467 type string; 1468 description 1469 "LSP id."; 1470 } 1471 } 1472 } 1473 } 1474 } 1475 } 1477 case system-info { 1478 when "'tp-location-type-value' = 'system-id-address-type'" { 1479 description "System id address type"; 1480 } 1481 leaf system-id { 1482 type router-id; 1483 description 1484 "System ID assigned to this node."; 1485 } 1487 } 1488 description 1489 "TP Addressing."; 1491 } 1492 description 1493 "TP Address"; 1494 } 1496 grouping tp-address-vrf { 1497 description 1498 "Test point address with VRF."; 1499 leaf vrf { 1500 type routing-instance-ref; 1501 description 1502 "The vrf is used to describe the 1503 corresponding network instance"; 1504 } 1506 uses tp-address; 1507 } 1509 grouping connectionless-oam-layers { 1510 list oam-layers { 1511 key "index"; 1512 leaf index { 1513 type uint16 { 1514 range "0..65535"; 1515 } 1516 description 1517 "Index"; 1518 } 1519 leaf level { 1520 type int32 { 1521 range "-1..1"; 1522 } 1523 default 0; 1524 description 1525 "Level 0 indicates default level, 1526 -1 means server and +1 means client layer. 1527 In relationship 0 means same layer."; 1528 } 1529 choice tp-location { 1531 case mac-address { 1532 leaf mac-address-location { 1533 type yang:mac-address; 1534 description 1535 "MAC Address"; 1536 } 1537 description 1538 "MAC Address based MP Addressing."; 1540 } 1541 case ipv4-address { 1542 leaf ipv4-location { 1543 type inet:ipv4-address; 1544 description 1545 "Ipv4 Address"; 1546 } 1547 description 1548 "IP Address based MP Addressing."; 1549 } 1550 case ipv6-location { 1551 leaf ipv6-address { 1552 type inet:ipv6-address; 1553 description 1554 "IPv6 Address"; 1555 } 1556 description 1557 "IPv6 Address based MP Addressing."; 1558 } 1560 case tunnel-location{ 1561 leaf tunnel-location{ 1562 type uint32; 1563 description 1564 "VPN Prefix"; 1565 } 1566 description 1567 "Tunnel location"; 1568 } 1570 case ip-prefix-location{ 1571 leaf ip-prefix-location{ 1572 type inet:ip-prefix; 1573 description 1574 "IP prefix location"; 1575 } 1576 description 1577 "IP prefix location"; 1578 } 1580 case route-dist-location{ 1581 leaf route-dist-location{ 1582 type uint32; 1583 description 1584 "Route Distinguisher (8 octets)"; 1585 } 1586 description 1587 "Route distinguisher location"; 1589 } 1591 case group-ip-address-location{ 1592 leaf group-ip-address-location{ 1593 type IP-Multicast-Group-Address; 1594 description 1595 "Group IP address location"; 1596 } 1597 description 1598 "Group IP address"; 1599 } 1601 case as-number-location{ 1602 leaf as-number-location{ 1603 type inet:as-number; 1604 description 1605 "AS number location"; 1606 } 1607 description 1608 "AS number"; 1609 } 1611 case lsp-id-location{ 1612 leaf lsp-id-location{ 1613 type string; 1614 description 1615 "LSP id"; 1616 } 1617 description 1618 "LSP ID"; 1619 } 1621 case system-id-location{ 1622 leaf system-id-location{ 1623 type router-id; 1624 description 1625 "System id location"; 1626 } 1627 description 1628 "System ID"; 1629 } 1631 description 1632 "TP location."; 1634 } 1635 ordered-by user; 1636 description 1637 "List of related oam layers. 1638 0 means they are in same level, especially 1639 interworking scenarios of stiching multiple 1640 technology at same layer. -1 means server layer, 1641 for eg:- in case of Overlay and Underlay, 1642 Underlay is server layer for Overlay Test Point. 1643 +1 means client layer, for eg:- in case of 1644 Service OAM and Transport OAM, Service OAM is client 1645 layer to Transport OAM."; 1646 } 1647 description 1648 "Connectionless related OAM layer"; 1649 } 1651 grouping tp-technology { 1652 choice technology { 1653 default technology-null; 1654 case technology-null { 1655 description 1656 "This is a placeholder when no technology is needed."; 1657 leaf tech-null { 1658 type empty; 1659 description 1660 "There is no technology define"; 1661 } 1662 } 1663 description 1664 "Technology choice null"; 1665 case technology-string { 1666 description 1667 "OAM technology string"; 1668 leaf ipv4-icmp { 1669 type string; 1670 description 1671 "Name to identify oam technology"; 1672 } 1673 } 1674 } 1676 description 1677 "OAM Technology"; 1678 } 1680 grouping tp-tools { 1681 description 1682 "Test Point OAM Toolset."; 1683 container tp-tools{ 1684 leaf connectivity-verification{ 1685 type boolean; 1686 description 1687 "A flag indicating whether or not the 1688 connectivity-verification function is supported."; 1689 reference 1690 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1691 RFC 4443: Internet Control Message Protocol (ICMPv6) 1692 for the Internet Protocol Version 6 (IPv6) Specification. 1693 RFC 5085: Pseudowire Virtual Circuit Connectivity Verification. 1694 RFC 5880: Bidirectional Forwarding Detection. 1695 RFC 5881: BFD for IPv4 and IPv6. 1696 RFC 5883: BFD for Multihop Paths. 1697 RFC 5884: BFD for MPLS Label Switched Paths. 1698 RFC 5885: BFD for PW VCCV. 1699 RFC 4379: LSP-PING."; 1700 } 1701 leaf continuity-check{ 1702 type boolean; 1703 description 1704 "A flag indicating whether or not the 1705 continuity check function is supported."; 1706 reference 1707 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1708 RFC 4443: Internet Control Message Protocol (ICMPv6) 1709 for the Internet Protocol Version 6 (IPv6) Specification. 1710 RFC 5880: Bidirectional Forwarding Detection. 1711 RFC 5881: BFD for IPv4 and IPv6. 1712 RFC 5883: BFD for Multihop Paths. 1713 RFC 5884: BFD for MPLS Label Switched Paths. 1714 RFC 5885: BFD for PW VCCV. 1715 RFC 6450: Multicast Ping Protocol."; 1716 } 1717 leaf path-discovery{ 1718 type boolean; 1719 description 1720 "A flag indicating whether or not the 1721 path discovery function is supported."; 1722 reference 1723 "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. 1724 RFC 4443: Internet Control Message Protocol (ICMPv6) 1725 for the Internet Protocol Version 6 (IPv6) Specification. 1726 RFC 4884: Extended ICMP to Support Multi-part Message. 1727 RFC 5837:Extending ICMP for Interface 1728 and Next-Hop Identification. 1729 RFC 4379: LSP-PING."; 1730 } 1731 description 1732 "Container for test point OAM tools set."; 1734 } 1736 } 1738 grouping test-point-location-info { 1739 uses tp-technology; 1740 uses tp-tools; 1741 anydata root { 1742 yangmnt:mount-point root; 1743 description 1744 "Root for models supported per 1745 test point"; 1746 } 1747 uses connectionless-oam-layers; 1748 description 1749 "Test point Location"; 1750 } 1752 grouping test-point-locations { 1753 description "Group of test point locations."; 1754 leaf tp-location-type-value { 1755 type identityref { 1756 base tp-address-type; 1757 } 1758 description "Test point location type."; 1760 } 1761 choice location-type { 1762 case ipv4-location-type { 1763 when "'tp-location-type-value' = 'ipv4-address-type'" { 1764 description 1765 "When test point location type is equal to ipv4 address."; 1766 } 1767 container test-point-ipv4-location-list { 1768 list test-point-locations { 1769 key "ipv4-location"; 1770 leaf ipv4-location { 1771 type inet:ipv4-address; 1772 description 1773 "IPv4 Address."; 1774 } 1775 leaf vrf { 1776 type routing-instance-ref; 1777 description 1778 "The vrf is used to describe the 1779 corresponding network instance"; 1780 } 1781 uses test-point-location-info; 1783 ordered-by user; 1784 description 1785 "List of test point locations."; 1786 } 1787 description 1788 "Serves as top-level container 1789 for test point location list."; 1790 } 1791 } 1792 case ipv6-location-type { 1793 when "'tp-location-type-value' = 'ipv6-address-type'" { 1794 description 1795 "when test point location is equal to ipv6 address"; 1796 } 1797 container test-point-ipv6-location-list { 1798 list test-point-locations { 1799 key "ipv6-location"; 1800 leaf ipv6-location { 1801 type inet:ipv6-address; 1802 description 1803 "IPv6 Address."; 1804 } 1805 leaf vrf { 1806 type routing-instance-ref; 1807 description 1808 "The vrf is used to describe the 1809 corresponding network instance"; 1810 } 1811 uses test-point-location-info; 1812 ordered-by user; 1813 description 1814 "List of test point locations."; 1815 } 1816 description 1817 "Serves as top-level container 1818 for test point location list."; 1819 } 1820 } 1821 case mac-location-type { 1822 when "'tp-location-type-value' = 'mac-address-type'" { 1823 description 1824 "when test point location type is equal to mac address."; 1825 } 1826 container test-point-mac-address-location-list { 1827 list test-point-locations { 1828 key "mac-address-location"; 1829 leaf mac-address-location { 1830 type yang:mac-address; 1831 description 1832 "MAC Address"; 1833 } 1834 uses test-point-location-info; 1835 ordered-by user; 1836 description 1837 "List of test point locations."; 1838 } 1839 description 1840 "Serves as top-level container 1841 for test point location list."; 1842 } 1843 } 1844 case tunnel-location-type { 1845 when "'tp-location-type-value' =" 1846 +" 'tunnel-address-type'" { 1847 description 1848 "When test point location type 1849 is equal to tunnel type."; 1850 } 1851 container test-point-tunnel-location-list { 1852 list test-point-locations { 1853 key "tunnel-location"; 1854 leaf tunnel-location { 1855 type uint32; 1856 description 1857 "VPN Prefix"; 1859 } 1860 leaf vrf { 1861 type routing-instance-ref; 1862 description 1863 "The vrf is used to describe the 1864 corresponding network instance"; 1865 } 1866 uses test-point-location-info; 1867 ordered-by user; 1868 description 1869 "List of test point locations."; 1870 } 1871 description 1872 "Serves as top-level container 1873 for test point location list."; 1874 } 1875 } 1876 case ip-prefix-location-type { 1877 when "'tp-location-type-value' = " 1878 +"'ip-prefix-address-type'" { 1879 description 1880 "When test point location 1881 type is equal to ip prefix."; 1882 } 1883 container test-point-ip-prefix-location-list { 1884 list test-point-locations { 1885 key "ip-prefix-location"; 1886 leaf ip-prefix-location { 1887 type inet:ip-prefix; 1888 description 1889 "IP Prefix"; 1890 } 1891 leaf vrf { 1892 type routing-instance-ref; 1893 description 1894 "The vrf is used to describe the 1895 corresponding network instance"; 1896 } 1897 uses test-point-location-info; 1898 ordered-by user; 1899 description 1900 "List of test point locations."; 1901 } 1902 description 1903 "Serves as top-level container 1904 for test point location list."; 1905 } 1906 } 1907 case route-distinguisher-location-type { 1908 when "'tp-location-type-value' = " 1909 +"'route-distinguisher-address-type'" { 1910 description 1911 "When test point 1912 location type is equal to 1913 route distinguiher."; 1914 } 1916 container test-point-route-dist-location-list { 1917 list test-point-locations { 1918 key "route-dist-location"; 1919 leaf route-dist-location { 1920 type uint32; 1921 description 1922 "Route Distinguisher(8 octets)."; 1923 } 1924 leaf vrf { 1925 type routing-instance-ref; 1926 description 1927 "The vrf is used to describe the 1928 corresponding network instance"; 1929 } 1930 uses test-point-location-info; 1931 ordered-by user; 1932 description 1933 "List of test point locations."; 1934 } 1935 description 1936 "Serves as top-level container 1937 for test point location list."; 1938 } 1939 } 1940 case group-ip-address-location-type { 1941 when "'tp-location-type-value' = " 1942 +"'group-ip-address-type'" { 1943 description 1944 "When test point location type is equal to 1945 group ip address."; 1946 } 1947 container test-point-group-ip-address-location-list { 1948 list test-point-locations { 1949 key "group-ip-address-location"; 1950 leaf group-ip-address-location { 1951 type IP-Multicast-Group-Address; 1952 description 1953 "Group IP address."; 1954 } 1955 leaf vrf { 1956 type routing-instance-ref; 1957 description 1958 "The vrf is used to describe the 1959 corresponding network instance"; 1960 } 1961 uses test-point-location-info; 1962 ordered-by user; 1963 description 1964 "List of test point locations."; 1965 } 1967 description 1968 "Serves as top-level container for 1969 test point location list."; 1970 } 1971 } 1972 case group-as-number-location-type { 1973 when "'tp-location-type-value' = " 1974 +"'as-number-address-type'" { 1975 description 1976 "When test point location type is equal to 1977 as-number."; 1978 } 1979 container test-point-as-number-location-list { 1980 list test-point-locations { 1981 key "as-number-location"; 1982 leaf as-number-location { 1983 type inet:as-number; 1984 description 1985 "AS number."; 1986 } 1987 leaf vrf { 1988 type routing-instance-ref; 1989 description 1990 "The vrf is used to describe the 1991 corresponding network instance"; 1992 } 1993 uses test-point-location-info; 1994 ordered-by user; 1995 description 1996 "List of test point locations."; 1997 } 1998 description 1999 "Serves as top-level container 2000 for test point location list."; 2001 } 2002 } 2003 case group-lsp-id-location-type { 2004 when "'tp-location-type-value' = " 2005 +"'lsp-id-address-type'" { 2006 description 2007 "When test point location 2008 type is equal to lspid."; 2009 } 2010 container test-point-lsp-id-location-list { 2011 list test-point-locations { 2012 key "lsp-id-location"; 2013 leaf lsp-id-location { 2014 type string; 2015 description 2016 "LSP Id."; 2017 } 2018 leaf vrf { 2019 type routing-instance-ref; 2020 description 2021 "The vrf is used to describe the 2022 corresponding network instance"; 2023 } 2024 uses test-point-location-info; 2025 ordered-by user; 2026 description 2027 "List of test point locations."; 2028 } 2029 description 2030 "Serves as top-level container for 2031 test point location list."; 2032 } 2033 } 2034 case group-system-id-location-type { 2035 when "'tp-location-type-value' = " 2036 +"'system-id-address-type'" { 2037 description 2038 "When test point location is equal to 2039 system info."; 2040 } 2041 container test-point-system-info-location-list { 2042 list test-point-locations { 2043 key "system-id-location"; 2044 leaf system-id-location { 2045 type inet:uri; 2046 description 2047 "System Id."; 2048 } 2049 leaf vrf { 2050 type routing-instance-ref; 2051 description 2052 "The vrf is used to describe the 2053 corresponding network instance"; 2054 } 2055 uses test-point-location-info; 2056 ordered-by user; 2057 description 2058 "List of test point locations."; 2059 } 2060 description 2061 "Serves as top-level container for 2062 test point location list."; 2063 } 2064 } 2065 description 2066 "Choice of address types."; 2067 } 2068 } 2069 augment "/nd:networks/nd:network/nd:node"{ 2070 description 2071 "Augment test points of connectionless oam."; 2072 uses test-point-locations; 2074 } 2076 grouping path-discovery-data { 2077 description 2078 "Path discovery related data output from nodes."; 2079 container src-test-point { 2080 description "Source test point."; 2081 uses tp-address-vrf; 2082 } 2083 container dest-test-point { 2084 description "Destination test point."; 2085 uses tp-address-vrf; 2086 } 2087 leaf sequence-number { 2088 type uint64; 2089 description "Sequence number in data packets."; 2090 } 2091 leaf hop-cnt { 2092 type uint8; 2093 description "Hop count."; 2094 } 2096 uses session-packet-statistics; 2097 uses session-error-statistics; 2098 uses session-delay-statistics; 2099 uses session-jitter-statistics; 2101 container path-verification { 2102 description 2103 "Optional path verification related information."; 2104 leaf flow-info { 2105 type string; 2106 description 2107 "Informations that refers to the flow."; 2108 } 2109 uses session-path-verification-statistics; 2110 } 2112 container path-trace-info { 2113 description 2114 "Optional path trace per-hop test point information. 2115 The list has typically a single element for per-hop 2116 cases like path-discovery RPC but allows a list of 2117 hop related information for other types of 2118 data retrieval methods."; 2119 list path-trace-info-list { 2120 key "index"; 2121 description 2122 "Path trace information list."; 2123 leaf index { 2124 type uint32; 2125 description 2126 "Trace information index."; 2127 } 2129 uses tp-address-vrf; 2131 leaf timestamp-sec { 2132 type uint64; 2133 description 2134 "Absolute timestamp in 2135 seconds as per IEEE1588v2."; 2136 } 2137 leaf timestamp-nanosec { 2138 type uint32; 2139 description 2140 "Fractional part in 2141 nanoseconds as per IEEE1588v2."; 2142 } 2144 leaf ingress-intf-name { 2145 type if:interface-ref; 2146 description 2147 "Ingress interface name"; 2148 } 2149 leaf egress-intf-name { 2150 type if:interface-ref; 2151 description 2152 "Egress interface name"; 2153 } 2154 leaf queue-depth { 2155 type uint32; 2156 description 2157 "Length of the egress interface 2158 queue of the interface."; 2159 } 2160 leaf transit-delay { 2161 type uint32; 2162 description 2163 "Time in nano seconds 2164 packet spent transiting a node."; 2166 } 2168 leaf app-meta-data { 2169 type uint64; 2170 description 2171 "Application specific 2172 data added by node."; 2173 } 2174 uses opaque-tlvs; 2175 } 2176 } 2177 } 2179 grouping continuity-check-data { 2180 description 2181 "Continuity check data output from nodes."; 2182 container src-test-point { 2183 description "Source test point."; 2184 uses tp-address-vrf; 2186 leaf egress-intf-name { 2187 type if:interface-ref; 2188 description 2189 "Egress interface name"; 2190 } 2191 } 2192 container dest-test-point { 2193 description 2194 "Destination test point."; 2195 uses tp-address-vrf; 2197 leaf ingress-intf-name { 2198 type if:interface-ref; 2199 description 2200 "Ingress interface name"; 2202 } 2203 } 2204 leaf sequence-number { 2205 type uint64; 2206 description "Sequence number."; 2207 } 2208 leaf hop-cnt { 2209 type uint8; 2210 description "Hop count."; 2211 } 2213 uses session-packet-statistics; 2214 uses session-error-statistics; 2215 uses session-delay-statistics; 2216 uses session-jitter-statistics; 2217 } 2219 container cc-oper-data { 2220 if-feature continuity-check; 2221 config "false"; 2222 description "CC operational information."; 2223 container cc-ipv4-sessions-statistics { 2224 description "CC ipv4 sessions"; 2225 uses cc-session-statsitics; 2226 } 2227 container cc-ipv6-sessions-statistics { 2228 description "CC ipv6 sessions"; 2229 uses cc-session-statsitics; 2230 } 2231 } 2232 } 2234 2236 5. Connectionless model applicability 2238 "ietf-connectionless-oam" model defined in this document provides 2239 technology-independent abstraction of key OAM constructs for 2240 connectionless protocols. This model can be further extended to 2241 include technology specific details, e.g., adding new data nodes with 2242 technology specific functions and parameters into proper anchor 2243 points of the base model, so as to develop a technology-specific 2244 connectionless OAM model. 2246 This section demonstrates the usability of the connectionless YANG 2247 OAM data model to various connectionless OAM technologies, e.g., BFD, 2248 LSP ping. Note that, in this section, we only present several 2249 snippets of technology-specific model extensions for illustrative 2250 purposes. The complete model extensions should be worked on in 2251 respective protocol working groups. 2253 5.1. BFD Extension 2255 5.1.1. Augment Method 2257 The following sections shows how the "ietf-connectionless-oam" model 2258 can be extended to cover BFD technology. For this purpose, a set of 2259 extension are introduced such as technology-type extension and test- 2260 point attributes extension. 2262 Note that in BFD WG, there is a BFD yang data model 2263 [I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf- 2264 connectioless-oam" as basis and augment the "ietf-connectionless-oam" 2265 model with bfd specific details. The bfd specific details can be the 2266 grouping defined in the BFD model. 2268 5.1.1.1. Technology type extension 2270 No BFD technology type has been defined in the "ietf-connectionless- 2271 oam" model. Therefore a technology type extension is required in the 2272 model Extension. 2274 The snippet below depicts an example of augmenting "bfd" type into 2275 the ietf-connectionless-oam": 2277 augment "/nd:networks/nd:network/nd:node/" 2278 +"coam:location-type/coam:ipv4-location-type" 2279 +"/coam:test-point-ipv4-location-list/" 2280 +"coam:test-point-locations/coam:technology" 2281 +"/coam:technology-string" 2282 { 2283 leaf bfd{ 2284 type string; 2285 } 2286 } 2288 5.1.1.2. Test point attributes extension 2290 To support bfd technology, the "ietf-connectionless-oam" model can be 2291 extended and add bfd specific parameters under "test-point-location" 2292 list and/or add new location type such as "bfd over MPLS-TE" under 2293 "location-type". 2295 5.1.1.2.1. Define and insert new nodes into corresponding test-point- 2296 location 2298 In the "ietf-connectionless-oam" model, multiple "test-point- 2299 location" lists are defined under the "location-type" choice node. 2300 Therefore, to derive a model for some bfd technologies ( such as ip 2301 single-hop, ip multi-hops, etc), data nodes for bfd specific details 2302 need to be added into corresponding "test-point-locations" list. In 2303 this section, we reuse some groupings which are defined in 2304 [I-D.ietf-bfd-yang] as following: 2306 The snippet below shows how the "ietf-connectionless-oam" model can 2307 be extended to support "BFD IP single-hop": 2309 augment "/nd:networks/nd:network/nd:node/" 2310 +"coam:location-type/coam:ipv4-location-type" 2311 +"/coam:test-point-ipv4-location-list/" 2312 +"coam:test-point-locations" 2313 { 2314 container session-cfg { 2315 description "BFD IP single-hop session configuration"; 2316 list sessions { 2317 key "interface dest-addr"; 2318 description "List of IP single-hop sessions"; 2319 leaf interface { 2320 type if:interface-ref; 2321 description 2322 "Interface on which the BFD session is running."; 2323 } 2324 leaf dest-addr { 2325 type inet:ip-address; 2326 description "IP address of the peer"; 2327 } 2328 uses bfd:bfd-grouping-common-cfg-parms; 2329 uses bfd:bfd-grouping-echo-cfg-parms; 2330 } 2331 } 2332 } 2334 Similar augmentations can be defined to support other BFD 2335 technologies such as BFD IP multi-hop, BFD over MPLS, etc. 2337 5.1.1.2.2. Add new location-type cases 2339 In the "ietf-connectionless-oam" model, If there is no appropriate 2340 "location type" case that can be extended, a new "location-type" case 2341 can be defined and inserted into the "location-type" choice node. 2343 Therefore, the model user can flexibly add "location-type" to support 2344 other type of test point which are not defined in the "ietf- 2345 connectionless-oam" model. In this section, we add a new "location- 2346 type" case and reuse some groupings which are defined in 2347 [I-D.ietf-bfd-yang] as follows: 2349 The snippet below shows how the "ietf-connectionless-oam" model can 2350 be extended to support "BFD over MPLS-TE": 2352 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 2353 case te-location{ 2354 list test-point-location-list{ 2355 key "tunnel-name"; 2356 leaf tunnel-name{ 2357 type leafref{ 2358 path "/te:te/te:tunnels/te:tunnel/te:name"; 2359 } 2360 description 2361 "point to a te instance."; 2362 } 2363 uses bfd:bfd-grouping-common-cfg-parms; 2364 uses bfd-mpls:bfd-encap-cfg; 2365 } 2366 } 2367 } 2369 Similar augmentations can be defined to support other BFD 2370 technologies such as BFD over LAG, etc. 2372 5.1.2. Schema Mount 2374 And anohter alternative method is using schema mount mechanism 2375 [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". 2376 Within the "test-point-location" list, a "root" attribute is defined 2377 to provide a mounted point for models mounted per "test-point- 2378 location". Therefore, the "ietf-connectionless-oam" model can 2379 provide a place in the node hierarchy where other OAM YANG data 2380 models can be attached, without any special extension in the "ietf- 2381 connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. 2382 Note that the limitation of the Schema Mount method is it is not 2383 allowed to specify certain modules that are required to be mounted 2384 under a mount point. 2386 The snippet below depicts the definition of "root" attribute. 2388 anydata root { 2389 yangmnt:mount-point root; 2390 description 2391 "Root for models supported per 2392 test point"; 2393 } 2395 The following section shows how the "ietf-connectionless-oam" model 2396 can use schema mount to support BFD technology. 2398 5.1.2.1. BFD Modules be populated in schema-mount 2400 To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG 2401 modules might be populated in the "schema-mounts" container: 2403 2405 2406 ietf-connectionless-oam 2407 root 2408 2409 root 2410 2411 2412 2413 root 2414 2415 ietf-bfd-ip-sh 2416 2016-07-04 2417 2418 urn:ietf:params:xml:ns:yang: ietf-bfd-ip-sh 2419 2420 implement 2421 2422 2423 ietf-bfd-ip-mh 2424 2016-07-04 2425 2426 urn:ietf:params:xml:ns:yang: ietf-bfd-ip-mh 2427 2428 implement 2429 2430 2431 2433 and the " ietf-connectionless-oam " module might have: 2435 2437 ...... 2438 2439 1.1.1.1 2440 ...... 2441 2442 2443 2444 foo 2445 ...... 2446 2447 2448 2449 2450 foo 2451 ...... 2452 2453 2454 2455 2456 2458 5.2. LSP ping extension 2460 The following sections shows how the "ietf-connectionless-oam" model 2461 can be extended to support LSP ping technology. For this purpose, a 2462 set of extension are introduced such as technology-type extension and 2463 test-point attributes extension. 2465 Note that in MPLS WG, there is a LSP Ping yang data model 2466 [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can 2467 choose to use "ietf-connectioless-oam" as basis and augment the 2468 "ietf-connectionless-oam" model with LSP Ping specific details in the 2469 model extension. The LSP Ping specific details can be the grouping 2470 defined in the LSP ping model. 2472 5.2.1. Technology type extension 2474 No lsp-ping technology type has been defined in the "ietf- 2475 connectionless-oam" model. Therefore a technology type extension is 2476 required in the model extension. 2478 The snippet below depicts an example of augmenting the "ietf- 2479 connectionless-oam" with "lsp-ping" type: 2481 augment "/nd:networks/nd:network/nd:node/" 2482 +"coam:location-type/coam:ipv4-location-type" 2483 +"/coam:test-point-ipv4-location-list/" 2484 +"coam:test-point-locations/coam:technology" 2485 +"/coam:technology-string" 2486 { 2487 leaf lsp-ping{ 2488 type string; 2489 } 2490 } 2492 5.2.2. Test point attributes extension 2494 To support lsp-ping, the "ietf-connectionless-oam" model can be 2495 extended and add lsp-ping specific parameters can be defined and 2496 under "test-point-location" list. 2498 User can reuse the attributes or groupings which are defined in 2499 [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] as follows: 2501 The snippet below depicts an example of augmenting the "test-point- 2502 locations" list with lsp ping attributes: 2504 augment "/nd:networks/nd:network/nd:node/" 2505 +"coam:location-type/coam:ipv4-location-type" 2506 +"/coam:test-point-ipv4-location-list/" 2507 +"coam:test-point-locations" 2508 { 2509 list lsp-ping { 2510 key "lsp-ping-name"; 2511 leaf lsp-ping-name { 2512 type string { 2513 length "1..31"; 2514 } 2515 mandatory "true"; 2516 description "LSP Ping test name."; 2517 ...... 2518 } 2520 6. Security Considerations 2522 The YANG module defined in this memo is designed to be accessed via 2523 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2524 secure transport layer and the mandatory-to-implement secure 2525 transport is SSH [RFC6242]. The NETCONF access control model 2526 [RFC6536] provides the means to restrict access for particular 2527 NETCONF users to a pre-configured subset of all available NETCONF 2528 protocol operations and content. 2530 There are a number of data nodes defined in the YANG module which are 2531 writable/creatable/deletable (i.e., config true, which is the 2532 default). These data nodes may be considered sensitive or vulnerable 2533 in some network environments. Write operations (e.g. ) 2534 to these data nodes without proper protection can have a negative 2535 effect on network operations. 2537 The vulnerable "config true" subtrees and data nodes are the 2538 following: 2540 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv4- 2541 location-type/coam:test-point-ipv4-location-list/coam:test-point- 2542 locations/ 2544 /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv6- 2545 location-type/coam:test-point-ipv6-location-list/coam:test-point- 2546 locations/ 2548 /nd:networks/nd:network/nd:node/coam:location-type/coam:mac-location- 2549 type/coam:test-point-mac-address-location-list/coam:test-point- 2550 locations/ 2552 /nd:networks/nd:network/nd:node/coam:location-type/coam:tunnel- 2553 location-type/coam:test-point-tunnel-address-location-list/coam:test- 2554 point-locations/ 2556 /nd:networks/nd:network/nd:node/coam:location-type/coam:ip-prefix- 2557 location-type/coam:test-point-ip-prefix-location-list/coam:test- 2558 point-locations/ 2560 /nd:networks/nd:network/nd:node/coam:location-type/coam:route- 2561 distinguisher-location-type/coam:test-point-route-dist-location-list/ 2562 coam:test-point-locations/ 2564 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-ip- 2565 address-location-type/coam:test-point-group-ip-address-location-list/ 2566 coam:test-point-locations/ 2568 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-as- 2569 number-location-type/coam:test-point-as-number-location-list/ 2570 coam:test-point-locations/ 2572 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-lsp-id- 2573 location-type/coam:test-point-lsp-id-location-list/coam:test-point- 2574 locations/ 2575 /nd:networks/nd:network/nd:node/coam:location-type/coam:group-system- 2576 id-location-type/coam:test-point-system-info-location-list/coam:test- 2577 point-locations/ 2579 Unauthorized access to any of these lists can adversely affect OAM 2580 management system handling of end-to-end OAM and coordination of OAM 2581 within underlying network layers. This may lead to inconsistent 2582 configuration, reporting, and presentation for the OAM mechanisms 2583 used to manage the network. 2585 7. IANA Considerations 2587 This document registers a URI in the IETF XML registry [RFC3688]. 2588 Following the format in [RFC3688] the following registration is 2589 requested to be made: 2591 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2593 Registrant Contact: The IESG. 2595 XML: N/A, the requested URI is an XML namespace. 2597 This document registers a YANG module in the YANG Module Names 2598 registry [RFC6020]. 2600 name: ietf-connectionless-oam 2602 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2604 prefix: coam 2606 reference: RFC XXXX 2608 8. Acknowlegements 2610 The authors of this document would like to thank Greg Mirsky and 2611 others for their sustainable review and comments, proposals to 2612 improve and stabilize document. 2614 9. References 2616 9.1. Normative References 2618 [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] 2619 Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. 2620 Rahman, "Yang Data Model for LSP-PING", I-D draft-zheng- 2621 mpls-lsp-ping-yang-cfg, March 2016. 2623 [I-D.ietf-bfd-yang] 2624 Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and 2625 G. Mirsky, "Yang Data Model for Bidirectional Forwarding 2626 Detection (BFD)", draft-ietf-bfd-yang-04 (work in 2627 progress), January 2017. 2629 [I-D.ietf-i2rs-yang-network-topo] 2630 Clemm, A., Medved, J., Varga, R., Bahadur, N., 2631 Ananthakrishnan, H., and X. Liu, "A Data Model for Network 2632 Topologies", draft-ietf-i2rs-yang-network-topo-11 (work in 2633 progress), February 2017. 2635 [I-D.ietf-lime-yang-connectionless-oam-methods] 2636 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 2637 "Retrieval Methods YANG Data Model for Connectionless 2638 Operations, Administration, and Maintenance(OAM) 2639 protocols", draft-ietf-lime-yang-connectionless-oam- 2640 methods-00 (work in progress), October 2016. 2642 [I-D.ietf-lime-yang-oam-model] 2643 Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model 2644 for Connection Oriented Operations, Administration, and 2645 Maintenance(OAM) protocols", draft-ietf-lime-yang-oam- 2646 model-08 (work in progress), December 2016. 2648 [I-D.ietf-netmod-schema-mount] 2649 Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- 2650 ietf-netmod-schema-mount-03 (work in progress), October 2651 2016. 2653 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2654 Requirement Levels", BCP 14, RFC 2119, 2655 DOI 10.17487/RFC2119, March 1997, 2656 . 2658 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2659 DOI 10.17487/RFC3688, January 2004, 2660 . 2662 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 2663 Control Message Protocol (ICMPv6) for the Internet 2664 Protocol Version 6 (IPv6) Specification", RFC 4443, 2665 DOI 10.17487/RFC4443, March 2006, 2666 . 2668 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2669 the Network Configuration Protocol (NETCONF)", RFC 6020, 2670 DOI 10.17487/RFC6020, October 2010, 2671 . 2673 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2674 and A. Bierman, Ed., "Network Configuration Protocol 2675 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2676 . 2678 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2679 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2680 . 2682 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2683 Protocol (NETCONF) Access Control Model", RFC 6536, 2684 DOI 10.17487/RFC6536, March 2012, 2685 . 2687 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2688 September 1981. 2690 9.2. Informative References 2692 [G.8013] "OAM functions and mechanisms for Ethernet based 2693 networks", ITU-T Recommendation G.8013/Y.1731, 2013. 2695 [I-D.ietf-spring-sr-yang] 2696 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 2697 Data Model for Segment Routing", draft-ietf-spring-sr- 2698 yang-05 (work in progress), October 2016. 2700 [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual 2701 Private Network (L2VPN) Operations, Administration, and 2702 Maintenance (OAM) Requirements and Framework", RFC 6136, 2703 DOI 10.17487/RFC6136, March 2011, 2704 . 2706 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 2707 Weingarten, "An Overview of Operations, Administration, 2708 and Maintenance (OAM) Tools", RFC 7276, 2709 DOI 10.17487/RFC7276, June 2014, 2710 . 2712 Authors' Addresses 2714 Deepak Kumar 2715 CISCO Systems 2716 510 McCarthy Blvd 2717 Milpitas, CA 95035 2718 USA 2720 Email: dekumar@cisco.com 2722 Michael Wang 2723 Huawei Technologies,Co.,Ltd 2724 101 Software Avenue, Yuhua District 2725 Nanjing 210012 2726 China 2728 Email: wangzitao@huawei.com 2730 Qin Wu 2731 Huawei 2732 101 Software Avenue, Yuhua District 2733 Nanjing, Jiangsu 210012 2734 China 2736 Email: bill.wu@huawei.com 2738 Reshad Rahman 2739 CISCO Systems 2740 2000 Innovation Drive 2741 KANATA, ONTARIO K2K 3E8 2742 CANADA 2744 Email: rrahman@cisco.com 2746 Srihari Raghavan 2747 CISCO Systems 2748 TRIL INFOPARK SEZ, Ramanujan IT City 2749 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 2750 CHENNAI, TAMIL NADU 600113 2751 INDIA 2753 Email: srihari@cisco.com