idnits 2.17.1 draft-wang-lime-rpc-yang-oam-management-03.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 : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([I-D.tissa-lime-yang-oam-model]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 181 has weird spacing: '...-status enum...' == Line 207 has weird spacing: '...terface if:...' == Line 252 has weird spacing: '...terface if:...' == Line 297 has weird spacing: '...terface if:...' == Line 345 has weird spacing: '...-string str...' == (3 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (April 9, 2015) is 3298 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: 'RFC7276' is mentioned on line 162, but not defined -- No information found for draft-edprop-opsawg-multi-layer-oam - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'I-D.edprop-opsawg-multi-layer-oam' -- No information found for draft-tissa-lime-yang-oam-management - is the name correct? Summary: 1 error (**), 0 flaws (~~), 9 warnings (==), 4 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Z. Wang 3 Internet-Draft Q. Wu 4 Intended status: Standards Track Huawei 5 Expires: October 11, 2015 April 9, 2015 7 Additional RPC definitions to Generic YANG Data Model for layer 8 Independent OAM Management 9 draft-wang-lime-rpc-yang-oam-management-03 11 Abstract 13 [I-D.tissa-lime-yang-oam-model] defines a Generic YANG data model for 14 Layer independent OAM Management. This document proposes additional 15 extension to this YANG model which is complementary to the one 16 defined in the [I-D.tissa-lime-yang-oam-model].The extension include 17 generic notification and generic rpc command for Unified Management 18 Plane OAM to be used within IETF in a layer independent manner. The 19 generic notification and rpc command described in this document can 20 be applied to various network technologies and includes technology 21 independent configuration data and state data. 23 Status of This Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on October 11, 2015. 40 Copyright Notice 42 Copyright (c) 2015 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 58 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 2 59 2.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 60 3. Overview of the generic Notification and RPC command . . . . 4 61 3.1. Generic Notification Definition . . . . . . . . . . . . . 4 62 3.2. Generic CC Command Rpc . . . . . . . . . . . . . . . . . 5 63 3.3. Generic CV Command Rpc . . . . . . . . . . . . . . . . . 6 64 3.4. Generic Path Discovery Command Rpc . . . . . . . . . . . 7 65 4. OAM data hierarchy for Abstract Notification and rpc command 8 66 5. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 11 67 6. Security Considerations . . . . . . . . . . . . . . . . . . . 29 68 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 69 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 70 8.1. Normative References . . . . . . . . . . . . . . . . . . 29 71 8.2. Informative References . . . . . . . . . . . . . . . . . 30 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 74 1. Introduction 76 [I-D.tissa-lime-yang-oam-model] defines a YANG [RFC6020] data model 77 for Layer independent OAM Management implementations that can be 78 applied to various network technologies. This YANG module describes 79 the generic common core configuration, statistics for Unified 80 Management Plane OAM to be used within IETF in a layer independent 81 manner.This document describes the generic notification and rpc 82 command which is complementary to the one defined in the [I-D.tissa- 83 lime-yang-oam-model] . The generic notification and rpc command 84 includes technology independent configuration data and state data. 86 2. Conventions and Terminology 88 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 89 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 90 document are to be interpreted as described in [RFC2119]. 92 The following terms are defined in [RFC6241] and are not redefined 93 here: 95 o client 96 o configuration data 98 o server 100 o state data 102 The following terms are defined in [RFC6020] and are not redefined 103 here: 105 o augment 107 o data model 109 o data node 111 The terminology for describing YANG data models is found in 112 [RFC6020]. 114 2.1. Tree Diagrams 116 A simplified graphical representation of the data model is used in 117 this document. The meaning of the symbols in these diagrams is as 118 follows: 120 Each node is printed as: 122 124 is one of: 125 + for current 126 x for deprecated 127 o for obsolete 129 is one of: 131 rw for configuration data 132 ro for non-configuration data 133 -x for rpcs 134 -n for notifications 136 is the name of the node 138 If the node is augmented into the tree from another module, its name 139 is printed as :. 141 is one of: 143 ? for an optional leaf or choice 144 ! for a presence container 145 * for a leaf-list or list 146 [] for a list's keys 148 is the name of the type for leafs and leaf-lists 150 3. Overview of the generic Notification and RPC command 152 [I-D.tissa-lime-yang-oam-model] defines a Generic YANG data model for 153 Layer independent OAM Management.This data model aims to address the 154 problems associated with existing OAM technology deployment described 155 in [I-D.edprop-opsawg-multi-layer-oam] and adopts IEEE CFM like model 156 or Y.1731 like model and structures it such that it can be adapted to 157 different technologies. 159 rpc commands,in YANG terms are used between the interface between 160 management plane and data plane. This document defines generic 161 notification and rpc commands providing uniform APIs for common OAM 162 function defined in section 3 of [RFC7276], e.g.,CC, CV, Path 163 Discovery. 165 3.1. Generic Notification Definition 167 This generic notification is sent whenever defect condition is met. 169 notifications: 170 +--n defect-condition-notification 171 +--ro technology identityref 172 +--ro md-name-string string 173 +--ro md-level? uint32 174 +--ro ma-name-string string 175 +--ro mep-id? MP-id 176 +--ro remote-mepid 177 | +--ro (MEP-ID)? 178 | +----:(MEP-ID-int) 179 | | +--ro MEP-ID-int ? int32 180 +--ro oper-status enumeration 181 +--ro sub-oper-status enumeration 182 +--ro error-message string 184 Snippet of data hierarchy related to Management OAM domains 186 3.2. Generic CC Command Rpc 188 Rpc model defined here abstracts OAM specific commands in a 189 technology independent manner. Here is rpc model for generic 190 Continuity Check(CC) command. 192 rpcs: 193 +---x continuity-check 194 | +--ro input 195 | | +--ro technology identityref 196 | | +--ro MD-name-string MD-name-string 197 | | +--ro MA-name-string? MA-name-string 198 | | +--ro (flow-entropy)? 199 | | | +--:(flow-entropy-null) 200 | | | +--ro flow-entropy-null? empty 201 | | +--ro priority? uint8 202 | | +--ro ttl? uint8 203 | | +--ro session-type? enumeration 204 | | +--ro ecmp-choice? ecmp-choices 205 | | +--ro sub-type? identityref 206 | | +--ro outgoing-interfaces* [interface] 207 | | | +--ro interface if:interface-ref 208 | | +--ro source-mep? MEP-name 209 | | +--ro destination-mp 210 | | | +--ro (mp-address)? 211 | | | | +--:(mac-address) 212 | | | | | +--ro mac-address? yang:mac-address 213 | | | | +--:(ipv4-address) 214 | | | | | +--ro ipv4-address? inet:ipv4-address 215 | | | | +--:(ipv6-address) 216 | | | | +--ro ipv6-address? inet:ipv6-address 217 | | | +--ro (MEP-ID)? 218 | | | | +--:(MEP-ID-int) 219 | | | | +--ro MEP-ID-int? int32 220 | | | +--ro MEP-ID-format? identityref 221 | | +--ro count? uint32 222 | | +--ro interval? Interval 223 | | +--ro packet-size? uint32 224 | +--ro output 225 | | +--ro monitor-stats 226 | | |--+--:(monitor-null) 227 | | +--ro monitor-null? Empty 229 Snippet of data hierarchy related to CC 231 3.3. Generic CV Command Rpc 233 Rpc model defined here abstracts OAM specific commands in a 234 technology independent manner. Here is rpc model for generic 235 Connectivity Verification (CV) command. 237 rpcs: 238 +---x connectivity-verification 239 | +--ro input 240 | | +--ro technology identityref 241 | | +--ro MD-name-string MD-name-string 242 | | +--ro MA-name-string? MA-name-string 243 | | +--ro (flow-entropy)? 244 | | | +--:(flow-entropy-null) 245 | | | +--ro flow-entropy-null? empty 246 | | +--ro priority? uint8 247 | | +--ro ttl? uint8 248 | | +--ro session-type? enumeration 249 | | +--ro ecmp-choice? ecmp-choices 250 | | +--ro sub-type? identityref 251 | | +--ro outgoing-interfaces* [interface] 252 | | | +--ro interface if:interface-ref 253 | | +--ro source-mep? MEP-name 254 | | +--ro destination-mp 255 | | | +--ro (mp-address)? 256 | | | | +--:(mac-address) 257 | | | | | +--ro mac-address? yang:mac-address 258 | | | | +--:(ipv4-address) 259 | | | | | +--ro ipv4-address? inet:ipv4-address 260 | | | | +--:(ipv6-address) 261 | | | | +--ro ipv6-address? inet:ipv6-address 262 | | | +--ro (MEP-ID)? 263 | | | | +--:(MEP-ID-int) 264 | | | | +--ro MEP-ID-int? int32 265 | | | +--ro MEP-ID-format? identityref 266 | | +--ro count? uint32 267 | | +--ro interval? Interval 268 | | +--ro packet-size? uint32 269 | +--ro output 270 | | +--ro monitor-stats 271 | | |--+--:(monitor-null) 272 | | +--ro monitor-null? Empty 274 Snippet of data hierarchy related to CV 276 3.4. Generic Path Discovery Command Rpc 278 Rpc model defined here abstracts OAM specific commands in a 279 technology independent manner. Here is rpc model for Generic Path 280 Discovery command. 282 rpcs: 283 +---x path-discovery 284 +--ro input 285 | +--ro technology identityref 286 | +--ro MD-name-string MD-name-string 287 | +--ro MA-name-string? MA-name-string 288 | +--ro (flow-entropy)? 289 | | +--:(flow-entropy-null) 290 | | +--ro flow-entropy-null? empty 291 | +--ro priority? uint8 292 | +--ro ttl? uint8 293 | +--ro sub-type? Identityref 294 | +--ro session-type? enumeration 295 | +--ro ecmp-choice? ecmp-choices 296 | +--ro outgoing-interfaces* [interface] 297 | | +--ro interface if:interface-ref 298 | +--ro source-mep? MEP-name 299 | +--ro destination-mp 300 | | +--ro (mp-address)? 301 | | | +--:(mac-address) 302 | | | | +--ro mac-address? yang:mac-address 303 | | | +--:(ipv4-address) 304 | | | | +--ro ipv4-address? inet:ipv4-address 305 | | | +--:(ipv6-address) 306 | | | +--ro ipv6-address? inet:ipv6-address 307 | | +--ro (MEP-ID)? 308 | | | +--:(MEP-ID-int) 309 | | | +--ro MEP-ID-int? int32 310 | | +--ro MEP-ID-format? identityref 311 | +--ro count? uint32 312 | +--ro interval? Interval 313 +--ro output 314 +--ro response* [response-index] 315 +--ro response-index uint8 316 +--ro ttl? uint8 317 +--ro destination-mp 318 | +--ro (mp-address)? 319 | | +--:(mac-address) 320 | | | +--ro mac-address? yang:mac-address 321 | | +--:(ipv4-address) 322 | | | +--ro ipv4-address? inet:ipv4-address 323 | | +--:(ipv6-address) 324 | | +--ro ipv6-address? inet:ipv6-address 325 | +--ro (MEP-ID)? 326 | | +--:(MEP-ID-int) 327 | | +--ro MEP-ID-int? int32 328 | +--ro MEP-ID-format? identityref 329 | +--ro monitor-stats 330 | |--+--:(monitor-null) 331 | +--ro monitor-null? Empty 333 Snippet of data hierarchy related to Path Discovery 335 4. OAM data hierarchy for Abstract Notification and rpc command 337 The complete data hierarchy related to the abstract notification and 338 rpc comand is presented below. 340 module: ietf-gen-oam (defined in [I-D.tissa-lime-yang-oam-model]) 341 +--rw domains 342 +--rw domain* [md-name technology] 343 +--rw technology identityref 344 +--rw md-name-format MD-name-format 345 +--rw md-name-string string 346 +--rw md-level int32 347 +--rw MAs! 348 . . 349 . 350 . 351 //the generic rpc command and notification are defined in this document 353 rpcs: 354 +---x continuity-check 355 | +--ro input 356 | | +--ro technology identityref 357 | | +--ro MD-name-string MD-name-string 358 | | +--ro MA-name-string? MA-name-string 359 | | +--ro (flow-entropy)? 360 | | | +--:(flow-entropy-null) 361 | | | +--ro flow-entropy-null? empty 362 | | +--ro priority? uint8 363 | | +--ro ttl? uint8 364 | | +--ro session-type? enumeration 365 | | +--ro ecmp-choice? ecmp-choices 366 | | +--ro sub-type? identityref 367 | | +--ro outgoing-interfaces* [interface] 368 | | | +--ro interface if:interface-ref 369 | | +--ro source-mep? MEP-name 370 | | +--ro destination-mp 371 | | | +--ro (mp-address)? 372 | | | | +--:(mac-address) 373 | | | | | +--ro mac-address? yang:mac-address 374 | | | | +--:(ipv4-address) 375 | | | | | +--ro ipv4-address? inet:ipv4-address 376 | | | | +--:(ipv6-address) 377 | | | | +--ro ipv6-address? inet:ipv6-address 378 | | | +--ro (MEP-ID)? 379 | | | | +--:(MEP-ID-int) 380 | | | | +--ro MEP-ID-int? int32 381 | | | +--ro MEP-ID-format? identityref 382 | | +--ro count? uint32 383 | | +--ro interval? Interval 384 | | +--ro packet-size? uint32 385 | +--ro output 386 | | +--ro monitor-stats 387 | | |--+--:(monitor-null) 388 | | +--ro monitor-null? Empty 389 +---x connectivity-verification 390 | +--ro input 391 | | +--ro technology identityref 392 | | +--ro MD-name-string MD-name-string 393 | | +--ro MA-name-string? MA-name-string 394 | | +--ro (flow-entropy)? 395 | | | +--:(flow-entropy-null) 396 | | | +--ro flow-entropy-null? empty 397 | | +--ro priority? uint8 398 | | +--ro ttl? uint8 399 | | +--ro session-type? enumeration 400 | | +--ro ecmp-choice? ecmp-choices 401 | | +--ro sub-type? identityref 402 | | +--ro outgoing-interfaces* [interface] 403 | | | +--ro interface if:interface-ref 404 | | +--ro source-mep? MEP-name 405 | | +--ro destination-mp 406 | | | +--ro (mp-address)? 407 | | | | +--:(mac-address) 408 | | | | | +--ro mac-address? yang:mac-address 409 | | | | +--:(ipv4-address) 410 | | | | | +--ro ipv4-address? inet:ipv4-address 411 | | | | +--:(ipv6-address) 412 | | | | +--ro ipv6-address? inet:ipv6-address 413 | | | +--ro (MEP-ID)? 414 | | | | +--:(MEP-ID-int) 415 | | | | +--ro MEP-ID-int? int32 416 | | | +--ro MEP-ID-format? identityref 417 | | +--ro count? uint32 418 | | +--ro interval? Interval 419 | | +--ro packet-size? uint32 420 | +--ro output 421 | | +--ro monitor-stats 422 | | |--+--:(monitor-null) 423 | | +--ro monitor-null? Empty 424 +---x path-discovery 425 +--ro input 426 | +--ro technology identityref 427 | +--ro MD-name-string MD-name-string 428 | +--ro MA-name-string? MA-name-string 429 | +--ro (flow-entropy)? 430 | | +--:(flow-entropy-null) 431 | | +--ro flow-entropy-null? empty 432 | +--ro priority? uint8 433 | +--ro ttl? uint8 434 | +--ro sub-type? Identityref 435 | +--ro session-type? enumeration 436 | +--ro ecmp-choice? ecmp-choices 437 | +--ro outgoing-interfaces* [interface] 438 | | +--ro interface if:interface-ref 439 | +--ro source-mep? MEP-name 440 | +--ro destination-mp 441 | | +--ro (mp-address)? 442 | | | +--:(mac-address) 443 | | | | +--ro mac-address? yang:mac-address 444 | | | +--:(ipv4-address) 445 | | | | +--ro ipv4-address? inet:ipv4-address 446 | | | +--:(ipv6-address) 447 | | | +--ro ipv6-address? inet:ipv6-address 448 | | +--ro (MEP-ID)? 449 | | | +--:(MEP-ID-int) 450 | | | +--ro MEP-ID-int? int32 451 | | +--ro MEP-ID-format? identityref 452 | +--ro count? uint32 453 | +--ro interval? Interval 454 +--ro output 455 +--ro response* [response-index] 456 +--ro response-index uint8 457 +--ro ttl? uint8 458 +--ro destination-mp 459 | +--ro (mp-address)? 460 | | +--:(mac-address) 461 | | | +--ro mac-address? yang:mac-address 462 | | +--:(ipv4-address) 463 | | | +--ro ipv4-address? inet:ipv4-address 464 | | +--:(ipv6-address) 465 | | +--ro ipv6-address? inet:ipv6-address 466 | +--ro (MEP-ID)? 467 | | +--:(MEP-ID-int) 468 | | +--ro MEP-ID-int? int32 469 | +--ro MEP-ID-format? identityref 470 | +--ro monitor-stats 471 | |--+--:(monitor-null) 472 | +--ro monitor-null? Empty 473 notifications: 474 +---n defect-condition-notification 475 +--ro technology identityref 476 +--ro MD-name-string MD-name-string 477 +--ro MA-name-string? MA-name-string 478 +--ro watching-mep-name? MEP-name 479 +--ro watching-mepid 480 | +--ro (MEP-ID)? 481 | | +--:(MEP-ID-int) 482 | | +--ro MEP-ID-int? int32 483 | +--ro MEP-ID-format? identityref 484 +--ro active-defects? identityref 485 +--ro error-message 486 | |--+--:(status-null) 487 | +--ro status-null? Empty 489 data hierarchy of Management OAM 491 5. OAM YANG Module 493 file "ietf-gen-rpc.yang" 494 module ietf-gen-rpc { 495 namespace "urn:ietf:params:xml:ns:yang:ietf-gen-rpc"; 496 prefix goam-rpc; 497 import ietf-interfaces { 498 prefix if; 499 } 500 import ietf-inet-types { 501 prefix inet; 502 } 503 import ietf-yang-types { 504 prefix yang; 505 } 506 organization 507 "IETF LIME (Layer Independent OAM Management 508 in Multi-Layer Environment) Working Group"; 509 contact 510 "wangzitao@huawei.com"; 511 description 512 "This YANG module defines the generic 513 notification and rpc command for multi-layer 514 OAM management to be used 515 within IETF in a protocol independent manner."; 516 revision 2014-12-16 { 517 description 518 "Initial revision."; 519 reference "RFC XXXX: A YANG Data Model 520 for Layer independent OAM management"; 521 } 523 /*features*/ 524 feature connectivity-verification { 525 description 526 "This feature indicates that the server supports 527 executing connectivity verification OAM command 528 and returning a response. Servers that do not 529 advertise this feature will not support executing 530 connectivity verification command or rpc model 531 for connectivity verification command."; 532 } 534 /*identities*/ 535 identity technology-types { 536 description 537 "this is the base identity of technology types which are 538 vpls, nvo3, TRILL, ipv4, ipv6, mpls, etc"; 539 } 540 identity defect-types { 541 description 542 "foo"; 543 } 545 identity ipv4 { 546 base technology-types; 547 description 548 "technology of ipv4"; 549 } 551 identity ipv6 { 552 base technology-types; 553 description 554 "technology of ipv6"; 555 } 557 identity command-sub-type { 558 description 559 "defines different rpc command subtypes, 560 e.g.,rfc792 IP ping ,rfc4379 LSP ping, 561 rfc6905 trill OAM, this is optional for most cases"; 562 } 563 identity name-format { 564 description 565 "This defines the name format, 566 IEEE 8021Q CFM defines varying 567 styles of names. It is expected 568 name format as an identity ref 569 to be extended with new types."; 570 } 572 identity name-format-null { 573 base name-format; 574 description 575 "defines name format as null"; 576 } 578 identity identifier-format { 579 description 580 "identifier-format identity can be augmented to define other 581 format identifiers used in MEPD-ID etc"; 582 } 584 identity identifier-format-integer { 585 base identifier-format; 586 description 587 "defines identifier-format to be integer"; 588 } 590 /*typedefs*/ 591 typedef MEP-direction { 592 type enumeration { 593 enum "Up" { 594 value 0; 595 description 596 "MEP direction up."; 597 } 598 enum "Down" { 599 value 1; 600 description 601 "MEP direction down."; 602 } 603 } 604 description 605 "Describes the direction of MEP."; 607 } 609 typedef MEP-name { 610 type string; 611 description 612 "Generic administrative name for a MEP"; 613 } 615 typedef Interval { 616 type uint32; 617 units "milliseconds"; 618 default "1000"; 619 description 620 "Interval between packets in milliseconds. 621 0 means no packets are sent."; 622 } 624 typedef ecmp-choices { 625 type enumeration { 626 enum "ecmp-use-platform-hash" { 627 value 0; 628 description 629 "use platform hash."; 630 } 631 enum "ecmp-use-round-robin" { 632 value 1; 633 description 634 "use round robin."; 635 } 636 } 637 description 638 "describes the algorithm of ecmp"; 639 } 641 typedef MD-name-string { 642 type string; 643 default ""; 644 description 645 "Generic administrative name for an MD"; 646 } 648 typedef MA-name-string { 649 type string; 650 default ""; 651 description 652 "Generic administrative name for an MA"; 654 } 656 typedef oam-counter32 { 657 type yang:zero-based-counter32; 658 description 659 "defines 32 bit counter for OAM"; 660 } 662 typedef MD-level { 663 type uint32 { 664 range "0..255"; 665 } 666 description 667 "Maintenance Domain level. The level may be restricted in 668 certain protocols (eg to 0-7)"; 669 } 671 /*groupings*/ 672 grouping topology { 673 choice topology { 674 case topo-null { 675 description 676 "this is a placeholder when no topology is needed"; 677 leaf topo-null { 678 type empty; 679 description 680 "there is no topology define, it will be defined 681 in technology specific model."; 682 } 683 } 684 description 685 "describes the topology choice"; 686 } 687 description 688 "This grouping describes the topology"; 689 } 691 grouping error-message { 692 choice error { 693 case error-null { 694 description 695 "this is a placeholder when no error status is needed"; 696 leaf error-null { 697 type empty; 698 description 699 "there is no error define, it will be defined in 700 technology specific model."; 701 } 702 } 703 description 704 "describes the error message"; 705 } 707 description 708 "this grouping describes the error message"; 709 } 711 grouping mp-address { 712 choice mp-address { 713 case mac-address { 714 leaf mac-address { 715 type yang:mac-address; 716 description 717 "mac address"; 718 } 719 } 720 case ipv4-address { 721 leaf ipv4-address { 722 type inet:ipv4-address; 723 description 724 "ipv4 address"; 725 } 726 } 727 case ipv6-address { 728 leaf ipv6-address { 729 type inet:ipv6-address; 730 description 731 "ipv6 address"; 732 } 733 } 734 description 735 "describes the mp-address"; 736 } 737 description 738 "describes the mp-address"; 739 } 741 grouping maintenance-domain-id { 742 //status current; 743 description 744 "Grouping containing leaves sufficient to identify an MD"; 745 leaf technology { 746 type identityref { 747 base technology-types; 748 } 749 //status current; 750 mandatory true; 751 description 752 "Defines the technology"; 753 } 754 leaf MD-name-string { 755 //status current; 756 type MD-name-string; 757 mandatory true; 758 description 759 "Defines the generic administrative 760 maintenance domain name"; 761 } 762 } 763 grouping MD-name { 764 leaf MD-name-format { 765 type identityref { 766 base name-format; 767 } 768 description 769 "Defines the md name format"; 770 } 771 choice MD-name { 772 case MD-name-null { 773 leaf MD-name-null { 774 when "../../../MD-name-format = name-format-null"{ 775 description 776 "describe condition met by MD-name-format"; 777 } 778 type empty; 779 description 780 "there is no MD NAME define, it will be defined in 781 technology specific model."; 782 } 783 } 784 description 785 "Defines the MD-name choice"; 786 } 787 description 788 "Defines the MD-name grouping"; 789 } 790 grouping ma-identifier { 791 description 792 "Grouping containing leaves sufficient to identify an MA"; 793 leaf MA-name-string { 794 type MA-name-string; 795 description 796 "define the MA name"; 797 } 798 } 799 grouping MA-name { 800 leaf MA-name-format { 801 type identityref { 802 base name-format; 804 } 805 description 806 "define the MA name format"; 807 } 808 choice MA-name { 809 case MA-name-null { 810 leaf MA-name-null { 811 when "../../../MA-name-format = name-format-null"{ 812 description 813 "describe condition met by MA-name-format"; 814 } 815 type empty; 816 description 817 "there is no MA-name-format define, 818 it will be defined in technology specific model"; 819 } 820 } 821 description 822 "define the MA NAME"; 823 } 824 description 825 "define the MA name grouping"; 826 } 828 grouping MEP-ID { 829 choice MEP-ID { 830 default "MEP-ID-int"; 831 case MEP-ID-int { 832 leaf MEP-ID-int { 833 type int32; 834 description 835 "define the MEP id int"; 836 } 837 } 838 description 839 "define the MEP ID"; 840 } 841 leaf MEP-ID-format { 842 type identityref { 843 base identifier-format; 844 } 845 description 846 "define the MEP ID format"; 847 } 848 description 849 "define the MEP ID grouping"; 850 } 851 grouping MEP { 852 // status current; 853 description 854 "Defines elements within the MEP"; 855 leaf mep-name { 856 type MEP-name; 857 mandatory true; 858 //status current; 859 description 860 "Generic administrative name of the MEP"; 861 } 862 uses MEP-ID; 863 uses mp-address; 864 uses connectivity-context; 865 leaf Interface { 866 type if:interface-ref; 867 description 868 "Interface name as defined by ietf-interfaces"; 869 } 870 uses topology; 872 } 873 grouping session-type { 874 leaf session-type{ 875 type enumeration { 876 enum proactive { 877 description 878 "The current session is 'proactive'."; 879 } 880 enum on-demand { 881 description 882 "The current session is on-demand."; 883 } 884 } 885 description 886 "This object indicates whether the current 887 session is defined to be proactive or on-demand."; 888 } 889 description 890 "define the session type grouping"; 891 } 893 grouping monitor-stats { 894 description 895 "grouping for monitoring statistics, this will be augmented 896 by others who use this component"; 897 choice monitor-stats { 898 default "monitor-null"; 899 case monitor-null { 900 description 901 "this is a place holder when 902 no monitoring statistics is needed"; 903 leaf monitor-null { 904 type empty; 905 description 906 "there is no monitoring statistics to be defined"; 907 } 908 } 909 description 910 "define the monitor stats"; 911 } 912 } 913 grouping MIP { 914 description 915 "defines MIP"; 916 leaf interface { 917 type if:interface-ref; 918 description 919 "define the interface"; 920 } 921 } 923 grouping related-oam-layer { 924 leaf offset { 925 type int32 { 926 range "-255..255"; 927 } 928 description 929 "defines offset (in MD levels) to a related OAM layer 930 +1 is the layer immediately above 931 -1 is the layer immediately below"; 932 } 933 uses maintenance-domain-id; 934 uses ma-identifier; 935 description 936 "define the related oam layer"; 937 } 939 grouping interface-status { 940 description 941 "collection of interface related status"; 942 leaf admin-status { 943 type leafref { 944 path "/if:interfaces-state/if:interface/if:admin-status"; 945 } 946 config false; 947 description 948 "oper status from ietf-interface module"; 949 } 950 leaf oper-status { 951 type leafref { 952 path "/if:interfaces-state/if:interface/if:oper-status"; 953 } 954 config false; 955 description 956 "oper status from ietf-interface module"; 957 } 958 } 960 grouping connectivity-context { 961 description 962 "Grouping defining the connectivity context for an MA; for 963 example, a VRF for IP, or an LSP for MPLS. This will be 964 augmented by each protocol who use this component"; 965 choice connectivity-context { 966 default "context-null"; 967 case context-null { 968 description 969 "this is a place holder when no context is needed"; 970 leaf context-null { 971 type empty; 972 description 973 "there is no context define"; 974 } 975 } 976 description 977 "define the connectivity-context"; 978 } 979 } 981 grouping priority { 982 description 983 "Priority used in transmitted packets; for example, in the 984 TOS/DSCP field in IP or the Traffic Class field in MPLS"; 985 leaf priority { 986 type uint8; 987 description 988 "define the priority which be used in 989 transmitted packets."; 990 } 991 } 993 grouping flow-entropy { 994 description 995 "defines the grouping statement for flow-entropy"; 996 choice flow-entropy { 997 default "flow-entropy-null"; 998 case flow-entropy-null { 999 description 1000 "this is a place holder when no flow entropy is needed"; 1001 leaf flow-entropy-null { 1002 type empty; 1003 description 1004 "there is no flow entropy defined"; 1005 } 1006 } 1007 description 1008 "define the flow entropy"; 1009 } 1010 } 1012 notification defect-condition-notification { 1013 description 1014 "When defect condition is met this notificiation is sent"; 1015 uses maintenance-domain-id { 1016 description 1017 "defines the MD (Maintenance Domain) identifier, 1018 which is the Generic MD-name-string 1019 and the technology."; 1020 } 1021 uses ma-identifier; 1022 leaf mep-name { 1023 type MEP-name; 1024 description 1025 "Indicate which MEP is seeing the error"; 1026 } 1027 container remote-mepid { 1028 uses MEP-ID; 1029 description 1030 "Who is seeing the error (if known) 1031 if unknown make it 0."; 1032 } 1033 leaf defect-type{ 1034 type identityref { 1035 base defect-types; 1036 } 1037 description 1038 "The currently active defects on the specific MEP.";} 1039 uses error-message { 1040 description 1041 "Error message to indicate more details."; 1042 } 1044 } 1046 rpc continuity-check { 1047 description 1048 "Generates continuity check and return response"; 1049 input { 1050 uses maintenance-domain-id { 1051 description 1052 "defines the MD (Maintenance Domain) identifier, 1053 which is the generic MD-name-string 1054 and the technology."; 1055 } 1057 uses ma-identifier { 1058 description 1059 "identfies the Maintenance association"; 1060 } 1061 uses flow-entropy; 1062 uses priority; 1063 leaf ttl { 1064 type uint8; 1065 default "255"; 1066 description 1067 "define the ttl"; 1068 } 1069 uses session-type; 1070 leaf ecmp-choice { 1071 type ecmp-choices; 1072 description 1073 "0 means use the specified interface 1074 1 means use round robin"; 1075 } 1076 leaf sub-type { 1077 type identityref { 1078 base command-sub-type; 1079 } 1080 description 1081 "defines different command types"; 1082 } 1083 list outgoing-interfaces { 1084 key "interface"; 1085 description 1086 "list of outgoing interface"; 1087 leaf interface { 1088 type if:interface-ref; 1089 description 1090 "define the interface"; 1091 } 1092 } 1093 leaf source-mep { 1094 type MEP-name; 1095 description 1096 "define the source mep"; 1097 } 1098 container destination-mp { 1099 description 1100 "this container collect a set of parameters 1101 of destination mep"; 1102 uses mp-address; 1103 uses MEP-ID { 1104 description 1105 "Only applicable if the destination is a MEP"; 1106 } 1107 } 1108 leaf count { 1109 type uint32; 1110 default "3"; 1111 description 1113 "Number of ping echo request message to send"; 1114 } 1115 leaf interval { 1116 type Interval; 1117 description 1118 "Interval between echo requests"; 1119 } 1120 leaf packet-size { 1121 type uint32 { 1122 range "64..10000"; 1123 } 1124 default "64"; 1125 description 1126 "Size of ping echo request packets, in octets"; 1127 } 1128 } 1129 output { 1130 uses monitor-stats { 1131 description 1132 "Stats of continuity check is same as 1133 that of monitor sessions"; 1134 } 1135 } 1136 } 1137 rpc connectivity-verification { 1138 if-feature connectivity-verification; 1139 description 1140 "Generates connectivity verification and return response"; 1141 input { 1142 uses maintenance-domain-id { 1143 description 1144 "defines the MD (Maintenance Domain) identifier, 1145 which is the generic MD-name-string and 1146 the technology."; 1147 } 1149 uses ma-identifier { 1150 description 1151 "identfies the Maintenance association"; 1152 } 1153 uses flow-entropy; 1154 uses priority; 1155 leaf ttl { 1156 type uint8; 1157 default "255"; 1158 description 1159 "define the ttl leaf"; 1160 } 1161 uses session-type; 1162 leaf ecmp-choice { 1163 type ecmp-choices; 1164 description 1165 "0 means use the specified interface 1166 1 means use round robin"; 1167 } 1168 leaf sub-type { 1169 type identityref { 1170 base command-sub-type; 1171 } 1172 description 1173 "defines different command types"; 1174 } 1175 list outgoing-interfaces { 1176 key "interface"; 1177 description 1178 "a list of outgoing interface"; 1179 leaf interface { 1180 type if:interface-ref; 1181 description 1182 "define the interface"; 1183 } 1184 } 1185 leaf source-mep { 1186 type MEP-name; 1188 description 1189 "define the source mep"; 1190 } 1191 container destination-mp { 1192 description 1193 "this container collect a set of 1194 destination mp parameters"; 1195 uses mp-address; 1196 uses MEP-ID { 1197 description 1198 "Only applicable if the destination is a MEP"; 1199 } 1200 } 1201 leaf count { 1202 type uint32; 1203 default "3"; 1204 description 1206 "Number of ping echo request message to send"; 1207 } 1208 leaf interval { 1209 type Interval; 1210 description 1211 "Interval between echo requests"; 1212 } 1213 leaf packet-size { 1214 type uint32 { 1215 range "64..10000"; 1216 } 1217 default "64"; 1218 description 1219 "Size of ping echo request packets, in octets"; 1220 } 1221 } 1222 output { 1223 uses monitor-stats { 1224 description 1225 "Stats of connectivity verification is 1226 same as that of monitor sessions"; 1227 } 1228 } 1229 } 1230 rpc path-discovery { 1231 description 1232 "Generates path discovery and return response. 1233 Starts with TTL of one and increment by one at each hop. 1234 Untill destination reached or TTL reach max valune"; 1235 input { 1236 uses maintenance-domain-id { 1237 description 1238 "defines the MD (Maintenance Domain) identifier, 1239 which is the generic MD-name-string and 1240 the technology."; 1241 } 1242 uses ma-identifier { 1243 description 1244 "identfies the Maintenance association"; 1245 } 1246 uses flow-entropy; 1247 uses priority; 1248 leaf ttl { 1249 type uint8; 1250 default "255"; 1251 description 1252 "define the ttl"; 1253 } 1254 leaf command-sub-type { 1255 type identityref { 1256 base command-sub-type; 1257 } 1258 description 1259 "defines different command types"; 1260 } 1261 uses session-type; 1262 leaf ecmp-choice { 1263 type ecmp-choices; 1264 description 1265 "0 means use the specified interface 1266 1 means use round robin"; 1267 } 1268 list outgoing-interfaces { 1269 key "interface"; 1270 description 1271 "list of outgoing interface"; 1272 leaf interface { 1273 type if:interface-ref; 1274 description 1275 "define the interface"; 1276 } 1277 } 1278 leaf source-mep { 1279 type MEP-name; 1280 description 1281 "define the source mep"; 1282 } 1283 container destination-mp { 1285 description 1286 "this container collect a set of 1287 destination mp"; 1288 uses mp-address; 1289 uses MEP-ID { 1290 description 1291 "Only applicable if the destination is a MEP"; 1292 } 1293 } 1294 leaf count { 1295 type uint32; 1296 default "1"; 1297 description 1298 "Number of traceroute probes to send. 1299 In protocols where a separate message is sent at each TTL, 1300 this is the number of packets to send at each TTL."; 1301 } 1302 leaf interval { 1303 type Interval; 1304 description 1305 "Interval between echo requests"; 1306 } 1307 } 1308 output { 1309 list response { 1310 key "response-index"; 1311 description 1312 "a list of path discovery response"; 1313 leaf response-index { 1314 type uint8; 1315 description 1316 "Arbitrary index for the response. 1317 In protocols which guarantee there is only 1318 a single response at each TTL 1319 (e.g., IP Traceroute), the TTL can be used 1320 as the response index."; 1321 } 1322 leaf ttl { 1323 type uint8; 1324 description 1325 "define the ttl leaf"; 1326 } 1327 container destination-mp { 1328 description 1329 "MP from which the response has been received"; 1330 uses mp-address; 1331 uses MEP-ID { 1332 description 1333 "Only applicable if the destination is a MEP"; 1334 } 1335 } 1336 uses monitor-stats { 1337 description 1338 "If count is 1, 1339 there is a single delay value reported."; 1340 } 1341 } 1342 } 1343 } 1344 } 1346 1348 6. Security Considerations 1350 TBD. 1352 7. IANA Considerations 1354 TBD. 1356 8. References 1358 8.1. Normative References 1360 [I-D.edprop-opsawg-multi-layer-oam] 1361 Wu, Q., "Problem Statement for Layer and Technology 1362 Independent OAM in a Multi- Layer Environment", ID 1363 http://tools.ietf.org/html/ 1364 draft-edprop-opsawg-multi-layer-oam-02, September 2014. 1366 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1367 Requirement Levels", BCP 14, RFC 2119, March 1997. 1369 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1370 Network Configuration Protocol (NETCONF)", RFC 6020, 1371 October 2010. 1373 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1374 Bierman, "Network Configuration Protocol (NETCONF)", RFC 1375 6241', June 2011. 1377 8.2. Informative References 1379 [I-D.tissa-lime-yang-oam-model] 1380 Senevirathne , T. and Q. Wu, "YANG Data Model for Generic 1381 Operations, Administration, and Maintenance (OAM)", ID 1382 http://tools.ietf.org/html/ 1383 draft-tissa-lime-yang-oam-management-01, October 2014. 1385 Authors' Addresses 1387 Zitao Wang 1388 Huawei Technologies,Co.,Ltd 1389 101 Software Avenue, Yuhua District 1390 Nanjing 210012 1391 China 1393 Email: wangzitao@huawei.com 1395 Qin Wu 1396 Huawei 1397 101 Software Avenue, Yuhua District 1398 Nanjing, Jiangsu 210012 1399 China 1401 Email: bill.wu@huawei.com