idnits 2.17.1 draft-ietf-lime-yang-connectionless-oam-methods-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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 746 has weird spacing: '...address inet:...' == Line 786 has weird spacing: '...aghavan srih...' == Line 787 has weird spacing: '...ao Wang wang...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (May 30, 2017) is 2530 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 (-18) exists of draft-ietf-lime-yang-connectionless-oam-05 == Outdated reference: A later version (-25) exists of draft-ietf-netconf-yang-push-06 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) -- Obsolete informational reference (is this intentional?): RFC 4379 (Obsoleted by RFC 8029) Summary: 1 error (**), 0 flaws (~~), 7 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group D. Kumar 3 Internet-Draft Cisco 4 Intended status: Standards Track M. Wang 5 Expires: December 1, 2017 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 May 30, 2017 12 Retrieval Methods YANG Data Model for Connectionless Operations, 13 Administration, and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-methods-03 16 Abstract 18 This document presents a retrieval method YANG Data model for 19 connectionless OAM protocols. It provides a technology-independent 20 RPC commands for connectionless OAM protocols. The retrieval methods 21 model presented here can be extended to include technology specific 22 details. This is leading to uniformity between OAM protocols and 23 support both nested OAM workflows (i.e., performing OAM functions at 24 different levels through a unified interface) and interactive OAM 25 workflows ( i.e., performing OAM functions at same levels through a 26 unified interface). 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at http://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on December 1, 2017. 45 Copyright Notice 47 Copyright (c) 2017 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (http://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 63 2. Conventions used in this document . . . . . . . . . . . . . . 3 64 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 65 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 66 3. Overview of the Connectionless OAM retrieval methods Model . 5 67 3.1. RPC definitions . . . . . . . . . . . . . . . . . . . . . 5 68 3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 8 69 4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 17 70 5. Security Considerations . . . . . . . . . . . . . . . . . . . 20 71 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 72 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 73 7.1. Normative References . . . . . . . . . . . . . . . . . . 21 74 7.2. Informative References . . . . . . . . . . . . . . . . . 22 75 Appendix A. Appendix . . . . . . . . . . . . . . . . . . . . . . 23 76 A.1. OAM Retrieval Persistent Methods YANG Module . . . . . . 23 77 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 79 1. Introduction 81 Operations, Administration, and Maintenance (OAM) are important 82 networking functions that allow operators to: 84 1. Monitor reachability of destinations (Reachability Verification, 85 Continuity Check). 87 2. Troubleshoot failures (Fault verification and localization). 89 3. Monitor Performance 91 An overview of OAM tools is presented at [RFC7276]. 93 Ping and Traceroute [RFC792], [RFC4443] and BFD [RFC5880] are well- 94 known fault verification and isolation tools, respectively, for IP 95 networks. Over the years, different technologies have developed 96 similar tools for similar purposes. 98 In this document, we present a retrieval method YANG Data model for 99 connectionless OAM protocols. This module provides technology- 100 independent RPC commands for connectionless OAM protocols. It is 101 separated from the generic YANG model for connectionless OAM 102 [I-D.ietf-lime-yang-connectionless-oam] and can avoid mixing the 103 models for the retrieved-data from the retrieval procedures. It is 104 expected that retrieval procedures would evolve faster than the data 105 model [I-D.ietf-lime-yang-connectionless-oam] and will allow new 106 procedures to be defined for retrieval of the same data defined by 107 the base data model. 109 2. Conventions used in this document 111 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 112 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 113 document are to be interpreted as described in [RFC2119]. 115 The following terms are defined in [RFC6241] and are not redefined 116 here: 118 o client 120 o configuration data 122 o server 124 o state data 126 The following terms are defined in [RFC6020] and are not redefined 127 here: 129 o augment 131 o data model 133 o data node 135 The terminology for describing YANG data models is found in 136 [RFC6020]. 138 2.1. Terminology 140 TP - Test Point 142 MAC - Media Access Control 144 RPC - A Remote Procedure Call, as used within the NETCONF protocol 146 2.2. Tree Diagrams 148 A simplified graphical representation of the data model is used in 149 this document. The meaning of the symbols in these diagrams is as 150 follows: 152 Each node is printed as: 154 156 is one of: 157 + for current 159 is one of: 161 rw for configuration data 162 ro for non-configuration data 163 -x for rpcs 164 -n for notifications 166 is the name of the node 168 If the node is augmented into the tree from another module, its name 169 is printed as :. 171 is one of: 173 ? for an optional leaf or choice 174 ! for a presence container 175 * for a leaf-list or list 176 [] for a list's keys 178 is the name of the type for leafs and leaf-lists 180 3. Overview of the Connectionless OAM retrieval methods Model 182 In this document, we present a retrieval method YANG Data model for 183 connectionless OAM protocols. This module provides technology- 184 independent retrieval procedures (RPC commands) for connectionless 185 OAM protocols. It provides a flexible way to retrieve the retrieved- 186 data which defined by the "ietf-connectionless-oam.yang" 187 [I-D.ietf-lime-yang-connectionless-oam]. 189 3.1. RPC definitions 191 The RPC model facilitates issuing commands to a NETCONF server (in 192 this case to the device that need to execute the OAM command) and 193 obtaining a response. 195 Under 'connectionless-oam-methods' module, we summarize the common 196 OAM functions and define the generic RPC commands: 'continuity-check' 197 and 'path-discovery'. In practice, these commands are supported by 198 corresponding technology-specific OAM tools [RFC7276]. For example, 199 for the IP OAM model, the continuity-check RPC corresponds to the IP 200 Ping [RFC792] [RFC4443], while the path-discovery RPC command 201 corresponds to IP Traceroute [RFC792] [RFC4443]. 203 Note that the RPC command presented in this document is the base 204 building block, which is used to derive a model for a technology- 205 specific OAM (i.e., ICMP ping [RFC792] [RFC4443], LSP ping 206 [RFC4379]), the base building block should be extended with 207 corresponding technology specific parameters. To facilitate this and 208 for future enhancements to data retrieval methods, the RPCs are 209 captured under a separate module. 211 The generic 'path-discovery-data' and 'continuity-check-data' are 212 used as data outputs from the different RPCs described in the 213 document. Similar methods including other RPCs can retrieve the data 214 using the same data model. 216 rpc continuity-check { 217 if-feature coam:continuity-check; 218 description 219 "Generates continuity-check as per RFC7276."; 220 input { 221 container destination-tp { 222 uses coam:tp-address; 223 description 224 "destination test point."; 225 } 226 uses coam:session-type; 227 leaf source-interface { 228 type if:interface-ref; 229 description 230 "source interface."; 231 } 232 leaf outbound-interface { 233 type if:interface-ref; 235 description 236 "outbound interface."; 237 } 238 leaf count { 239 type uint32; 240 default "5"; 241 description 242 "Specifies the number of packets that will be sent."; 243 } 244 leaf vrf { 245 type coam:routing-instance-ref; 246 description 247 "vrf instance."; 248 } 249 leaf ttl { 250 type uint8; 251 default "255"; 252 description 253 "Time to live (TTL)."; 254 } 255 leaf packet-size { 256 type uint32 { 257 range "64..10000"; 258 } 259 default "64"; 260 description 261 "Size of ping echo request packets, in octets"; 262 } 263 } 264 output { 265 list error-code-list { 266 key "response-index"; 267 leaf response-index { 268 type uint32; 269 description 270 "response index."; 271 } 272 leaf status-code { 273 type int32; 274 description 275 "error code is "; 277 } 278 leaf status-sub-code { 279 type uint8; 280 description 281 "sub code."; 282 } 283 description 284 "error code list."; 285 } 287 uses coam:continuity-check-data; 288 } 289 } 291 rpc path-discovery { 292 description 293 "Generates path discovery as per RFC7276."; 294 input { 295 container destination-tp { 296 uses coam:tp-address; 297 description 298 "destination test point."; 299 } 300 uses coam:session-type; 301 leaf source-interface { 302 type if:interface-ref; 303 description 304 "source interface."; 305 } 306 leaf outbound-interface { 307 type if:interface-ref; 308 description 309 "outbound interface."; 310 } 311 leaf vrf { 312 type coam:routing-instance-ref; 313 description 314 "vrf"; 315 } 316 leaf max-ttl { 317 type uint8; 318 default "255"; 319 description 320 "max ttl."; 321 } 322 } 323 output { 324 list response-list { 325 key "response-index"; 326 description 327 "path discovery response list."; 328 leaf response-index { 329 type uint32; 330 description 331 "response index."; 332 } 333 leaf status-code { 334 type int32; 335 description 336 "error code is "; 337 } 338 leaf status-sub-code { 339 type uint8; 341 description 342 "sub code is "; 343 } 344 } 346 uses coam:path-discovery-data; 347 } 348 } 350 Snippet of data hierarchy related to RPC calls 352 3.2. OAM Retrieval Methods Hierarchy 354 The complete data hierarchy related to the Connectionless OAM 355 Retrieval Methods YANG model is presented below. 357 module: ietf-connectionless-oam-methods 359 rpcs: 360 +---x continuity-check {coam:continuity-check}? 361 | +---w input 362 | | +---w destination-tp 363 | | | +---w tp-address-type-value? identityref 364 | | | +---w (tp-address)? 365 | | | +--:(mac-address) 366 | | | | +---w mac-address? yang:mac-address 367 | | | +--:(ipv4-address) 368 | | | | +---w ipv4-address? inet:ipv4-address 369 | | | +--:(ipv6-address) 370 | | | | +---w ipv6-address? inet:ipv6-address 371 | | | +--:(src-dst-address) 372 | | | | +---w src-ip-address? inet:ip-address 373 | | | | +---w dst-ip-address? inet:ip-address 374 | | | | +---w Interface? if:interface-ref 375 | | | +--:(fec) 376 | | | | +---w fec-type? fec-type 377 | | | | +---w (fec-value)? 378 | | | | +--:(ip-prefix) 379 | | | | | +---w ip-prefix? inet:ip-prefix 380 | | | | +--:(bgp) 381 | | | | | +---w bgp? inet:ip-prefix 382 | | | | +--:(tunnel) 383 | | | | | +---w tunnel-interface? uint32 384 | | | | +--:(pw) 385 | | | | | +---w remote-pe-address? inet:ip-address 386 | | | | | +---w pw-id? uint32 387 | | | | +--:(vpls) 388 | | | | | +---w route-distinguisher? uint32 389 | | | | | +---w sender-ve-id? uint32 390 | | | | | +---w receiver-ve-id? uint32 391 | | | | +--:(mpls-mldp) 392 | | | | +---w (root-address)? 393 | | | | +--:(ip-address) 394 | | | | | +---w source-address? inet:ip-address 395 | | | | | +---w group-ip-address? IP-Multicast- 396 Group-Address 397 | | | | +--:(vpn) 398 | | | | | +---w as-number? inet:as-number 399 | | | | +--:(global-id) 400 | | | | +---w lsp-id? string 401 | | | +--:(tlv-address) 402 | | | | +---w tlv-type? int16 403 | | | | +---w tlv-len? int16 404 | | | | +---w tlv-value? binary 405 | | | +--:(system-info) 406 | | | +---w system-id? inet:uri 407 | | +---w session-type-enum? enumeration 408 | | +---w source-interface? if:interface-ref 409 | | +---w outbound-interface? if:interface-ref 410 | | +---w count? uint32 411 | | +---w vrf? coam:routing-instance-ref 412 | | +---w ttl? uint8 413 | | +---w packet-size? uint32 414 | +--ro output 415 | +--ro error-code-list* [response-index] 416 | | +--ro response-index uint32 417 | | +--ro status-code? int32 418 | | +--ro status-sub-code? uint8 419 | +--ro src-test-point 420 | | +--ro vrf? routing-instance-ref 421 | | +--ro tp-address-type-value? identityref 422 | | +--ro (tp-address)? 423 | | | +--:(mac-address) 424 | | | | +--ro mac-address? yang:mac-address 425 | | | +--:(ipv4-address) 426 | | | | +--ro ipv4-address? inet:ipv4-address 427 | | | +--:(ipv6-address) 428 | | | | +--ro ipv6-address? inet:ipv6-address 429 | | | +--:(src-dst-address) 430 | | | | +--ro src-ip-address? inet:ip-address 431 | | | | +--ro dst-ip-address? inet:ip-address 432 | | | | +--ro Interface? if:interface-ref 433 | | | +--:(fec) 434 | | | | +--ro fec-type? fec-type 435 | | | | +--ro (fec-value)? 436 | | | | +--:(ip-prefix) 437 | | | | | +--ro ip-prefix? inet:ip-prefix 438 | | | | +--:(bgp) 439 | | | | | +--ro bgp? inet:ip-prefix 440 | | | | +--:(tunnel) 441 | | | | | +--ro tunnel-interface? uint32 442 | | | | +--:(pw) 443 | | | | | +--ro remote-pe-address? inet:ip-address 444 | | | | | +--ro pw-id? uint32 445 | | | | +--:(vpls) 446 | | | | | +--ro route-distinguisher? uint32 447 | | | | | +--ro sender-ve-id? uint32 448 | | | | | +--ro receiver-ve-id? uint32 449 | | | | +--:(mpls-mldp) 450 | | | | +--ro (root-address)? 451 | | | | +--:(ip-address) 452 | | | | | +--ro source-address? inet:ip-address 453 | | | | | +--ro group-ip-address? IP-Multicast- 454 Group-Address 455 | | | | +--:(vpn) 456 | | | | | +--ro as-number? inet:as-number 457 | | | | +--:(global-id) 458 | | | | +--ro lsp-id? string 459 | | | +--:(tlv-address) 460 | | | | +--ro tlv-type? int16 461 | | | | +--ro tlv-len? int16 462 | | | | +--ro tlv-value? binary 463 | | | +--:(system-info) 464 | | | +--ro system-id? inet:uri 465 | | +--ro egress-intf-name? if:interface-ref 466 | +--ro dest-test-point 467 | | +--ro vrf? routing-instance-ref 468 | | +--ro tp-address-type-value? identityref 469 | | +--ro (tp-address)? 470 | | | +--:(mac-address) 471 | | | | +--ro mac-address? yang:mac-address 472 | | | +--:(ipv4-address) 473 | | | | +--ro ipv4-address? inet:ipv4-address 474 | | | +--:(ipv6-address) 475 | | | | +--ro ipv6-address? inet:ipv6-address 476 | | | +--:(src-dst-address) 477 | | | | +--ro src-ip-address? inet:ip-address 478 | | | | +--ro dst-ip-address? inet:ip-address 479 | | | | +--ro Interface? if:interface-ref 480 | | | +--:(fec) 481 | | | | +--ro fec-type? fec-type 482 | | | | +--ro (fec-value)? 483 | | | | +--:(ip-prefix) 484 | | | | | +--ro ip-prefix? inet:ip-prefix 485 | | | | +--:(bgp) 486 | | | | | +--ro bgp? inet:ip-prefix 487 | | | | +--:(tunnel) 488 | | | | | +--ro tunnel-interface? uint32 489 | | | | +--:(pw) 490 | | | | | +--ro remote-pe-address? inet:ip-address 491 | | | | | +--ro pw-id? uint32 492 | | | | +--:(vpls) 493 | | | | | +--ro route-distinguisher? uint32 494 | | | | | +--ro sender-ve-id? uint32 495 | | | | | +--ro receiver-ve-id? uint32 496 | | | | +--:(mpls-mldp) 497 | | | | +--ro (root-address)? 498 | | | | +--:(ip-address) 499 | | | | | +--ro source-address? inet:ip-address 500 | | | | | +--ro group-ip-address? IP-Multicast- 501 Group-Address 502 | | | | +--:(vpn) 503 | | | | | +--ro as-number? inet:as-number 504 | | | | +--:(global-id) 505 | | | | +--ro lsp-id? string 506 | | | +--:(tlv-address) 507 | | | | +--ro tlv-type? int16 508 | | | | +--ro tlv-len? int16 509 | | | | +--ro tlv-value? binary 510 | | | +--:(system-info) 511 | | | +--ro system-id? inet:uri 512 | | +--ro ingress-intf-name? if:interface-ref 513 | +--ro sequence-number? uint64 514 | +--ro hop-cnt? uint8 515 | +--ro session-packet-statistics 516 | | +--ro rx-packet-count? uint32 517 | | +--ro tx-packet-count? uint32 518 | | +--ro rx-bad-packet? uint32 519 | | +--ro tx-packet-failed? uint32 520 | +--ro session-error-statistics 521 | | +--ro packet-drops-count? uint32 522 | | +--ro packet-reorder-count? uint32 523 | | +--ro packets-out-of-seq-count? uint32 524 | | +--ro packets-dup-count? uint32 525 | +--ro session-delay-statistics 526 | | +--ro time-resolution-value? identityref 527 | | +--ro min-delay-value? uint32 528 | | +--ro max-delay-value? uint32 529 | | +--ro average-delay-value? uint32 530 | +--ro session-jitter-statistics 531 | +--ro time-resolution-value? identityref 532 | +--ro min-jitter-value? uint32 533 | +--ro max-jitter-value? uint32 534 | +--ro average-jitter-value? uint32 535 +---x path-discovery {coam:path-discovery}? 536 +---w input 537 | +---w destination-tp 538 | | +---w tp-address-type-value? identityref 539 | | +---w (tp-address)? 540 | | +--:(mac-address) 541 | | | +---w mac-address? yang:mac-address 542 | | +--:(ipv4-address) 543 | | | +---w ipv4-address? inet:ipv4-address 544 | | +--:(ipv6-address) 545 | | | +---w ipv6-address? inet:ipv6-address 546 | | +--:(src-dst-address) 547 | | | +---w src-ip-address? inet:ip-address 548 | | | +---w dst-ip-address? inet:ip-address 549 | | | +---w Interface? if:interface-ref 550 | | +--:(fec) 551 | | | +---w fec-type? fec-type 552 | | | +---w (fec-value)? 553 | | | +--:(ip-prefix) 554 | | | | +---w ip-prefix? inet:ip-prefix 555 | | | +--:(bgp) 556 | | | | +---w bgp? inet:ip-prefix 557 | | | +--:(tunnel) 558 | | | | +---w tunnel-interface? uint32 559 | | | +--:(pw) 560 | | | | +---w remote-pe-address? inet:ip-address 561 | | | | +---w pw-id? uint32 562 | | | +--:(vpls) 563 | | | | +---w route-distinguisher? uint32 564 | | | | +---w sender-ve-id? uint32 565 | | | | +---w receiver-ve-id? uint32 566 | | | +--:(mpls-mldp) 567 | | | +---w (root-address)? 568 | | | +--:(ip-address) 569 | | | | +---w source-address? inet:ip-address 570 | | | | +---w group-ip-address? IP-Multicast- 571 Group-Address 572 | | | +--:(vpn) 573 | | | | +---w as-number? inet:as-number 574 | | | +--:(global-id) 575 | | | +---w lsp-id? string 576 | | +--:(tlv-address) 577 | | | +---w tlv-type? int16 578 | | | +---w tlv-len? int16 579 | | | +---w tlv-value? binary 580 | | +--:(system-info) 581 | | +---w system-id? inet:uri 582 | +---w session-type-enum? enumeration 583 | +---w source-interface? if:interface-ref 584 | +---w outbound-interface? if:interface-ref 585 | +---w vrf? coam:routing-instance-ref 586 | +---w max-ttl? uint8 587 +--ro output 588 +--ro response-list* [response-index] 589 | +--ro response-index uint32 590 | +--ro status-code? int32 591 | +--ro status-sub-code? uint8 592 +--ro src-test-point 593 | +--ro vrf? routing-instance-ref 594 | +--ro tp-address-type-value? identityref 595 | +--ro (tp-address)? 596 | +--:(mac-address) 597 | | +--ro mac-address? yang:mac-address 598 | +--:(ipv4-address) 599 | | +--ro ipv4-address? inet:ipv4-address 600 | +--:(ipv6-address) 601 | | +--ro ipv6-address? inet:ipv6-address 602 | +--:(src-dst-address) 603 | | +--ro src-ip-address? inet:ip-address 604 | | +--ro dst-ip-address? inet:ip-address 605 | | +--ro Interface? if:interface-ref 606 | +--:(fec) 607 | | +--ro fec-type? fec-type 608 | | +--ro (fec-value)? 609 | | +--:(ip-prefix) 610 | | | +--ro ip-prefix? inet:ip-prefix 611 | | +--:(bgp) 612 | | | +--ro bgp? inet:ip-prefix 613 | | +--:(tunnel) 614 | | | +--ro tunnel-interface? uint32 615 | | +--:(pw) 616 | | | +--ro remote-pe-address? inet:ip-address 617 | | | +--ro pw-id? uint32 618 | | +--:(vpls) 619 | | | +--ro route-distinguisher? uint32 620 | | | +--ro sender-ve-id? uint32 621 | | | +--ro receiver-ve-id? uint32 622 | | +--:(mpls-mldp) 623 | | +--ro (root-address)? 624 | | +--:(ip-address) 625 | | | +--ro source-address? inet:ip-address 626 | | | +--ro group-ip-address? IP-Multicast 627 -Group-Address 628 | | +--:(vpn) 629 | | | +--ro as-number? inet:as-number 630 | | +--:(global-id) 631 | | +--ro lsp-id string 632 | +--:(tlv-address) 633 | | +--ro tlv-type? int16 634 | | +--ro tlv-len? int16 635 | | +--ro tlv-value? binary 636 | +--:(system-info) 637 | +--ro system-id? inet:uri 638 +--ro dest-test-point 639 | +--ro vrf? routing-instance-ref 640 | +--ro tp-address-type-value? identityref 641 | +--ro (tp-address)? 642 | +--:(mac-address) 643 | | +--ro mac-address? yang:mac-address 644 | +--:(ipv4-address) 645 | | +--ro ipv4-address? inet:ipv4-address 646 | +--:(ipv6-address) 647 | | +--ro ipv6-address? inet:ipv6-address 648 | +--:(src-dst-address) 649 | | +--ro src-ip-address? inet:ip-address 650 | | +--ro dst-ip-address? inet:ip-address 651 | | +--ro Interface? if:interface-ref 652 | +--:(fec) 653 | | +--ro fec-type? fec-type 654 | | +--ro (fec-value)? 655 | | +--:(ip-prefix) 656 | | | +--ro ip-prefix? inet:ip-prefix 657 | | +--:(bgp) 658 | | | +--ro bgp? inet:ip-prefix 659 | | +--:(tunnel) 660 | | | +--ro tunnel-interface? uint32 661 | | +--:(pw) 662 | | | +--ro remote-pe-address? inet:ip-address 663 | | | +--ro pw-id? uint32 664 | | +--:(vpls) 665 | | | +--ro route-distinguisher? uint32 666 | | | +--ro sender-ve-id? uint32 667 | | | +--ro receiver-ve-id? uint32 668 | | +--:(mpls-mldp) 669 | | +--ro (root-address)? 670 | | +--:(ip-address) 671 | | | +--ro source-address? inet:ip-address 672 | | | +--ro group-ip-address? IP-Multicast- 673 Group-Address 674 | | +--:(vpn) 675 | | | +--ro as-number? inet:as-number 676 | | +--:(global-id) 677 | | +--ro lsp-id? string 678 | +--:(tlv-address) 679 | | +--ro tlv-type? int16 680 | | +--ro tlv-len? int16 681 | | +--ro tlv-value? binary 682 | +--:(system-info) 683 | +--ro system-id? inet:uri 684 +--ro sequence-number? uint64 685 +--ro hop-cnt? uint8 686 +--ro session-packet-statistics 687 | +--ro rx-packet-count? uint32 688 | +--ro tx-packet-count? uint32 689 | +--ro rx-bad-packet? uint32 690 | +--ro tx-packet-failed? uint32 691 +--ro session-error-statistics 692 | +--ro packet-drops-count? uint32 693 | +--ro packet-reorder-count? uint32 694 | +--ro packets-out-of-seq-count? uint32 695 | +--ro packets-dup-count? uint32 696 +--ro session-delay-statistics 697 | +--ro time-resolution-value? identityref 698 | +--ro min-delay-value? uint32 699 | +--ro max-delay-value? uint32 700 | +--ro average-delay-value? uint32 701 +--ro session-jitter-statistics 702 | +--ro time-resolution-value? identityref 703 | +--ro min-jitter-value? uint32 704 | +--ro max-jitter-value? uint32 705 | +--ro average-jitter-value? uint32 706 +--ro path-verification 707 | +--ro flow-info? string 708 | +--ro session-path-verification-statistics 709 | +--ro verified-count? uint32 710 | +--ro failed-count? uint32 711 +--ro path-trace-info 712 +--ro path-trace-info-list* [index] 713 +--ro index uint32 714 +--ro vrf? routing-instance-ref 715 +--ro tp-address-type-value? identityref 716 +--ro (tp-address)? 717 | +--:(mac-address) 718 | | +--ro mac-address? yang:mac-address 719 | +--:(ipv4-address) 720 | | +--ro ipv4-address? inet:ipv4-address 721 | +--:(ipv6-address) 722 | | +--ro ipv6-address? inet:ipv6-address 723 | +--:(src-dst-address) 724 | | +--ro src-ip-address? inet:ip-address 725 | | +--ro dst-ip-address? inet:ip-address 726 | | +--ro Interface? if:interface-ref 727 | +--:(fec) 728 | | +--ro fec-type? fec-type 729 | | +--ro (fec-value)? 730 | | +--:(ip-prefix) 731 | | | +--ro ip-prefix? inet:ip-prefix 732 | | +--:(bgp) 733 | | | +--ro bgp? inet:ip-prefix 734 | | +--:(tunnel) 735 | | | +--ro tunnel-interface? uint32 736 | | +--:(pw) 737 | | | +--ro remote-pe-address? inet:ip-address 738 | | | +--ro pw-id? uint32 739 | | +--:(vpls) 740 | | | +--ro route-distinguisher? uint32 741 | | | +--ro sender-ve-id? uint32 742 | | | +--ro receiver-ve-id? uint32 743 | | +--:(mpls-mldp) 744 | | +--ro (root-address)? 745 | | +--:(ip-address) 746 | | | +--ro source-address inet:ip-address 747 | | | +--ro group-ip-address? IP-Multicast- 748 Group-Address 749 | | +--:(vpn) 750 | | | +--ro as-number? inet:as-number 751 | | +--:(global-id) 752 | | +--ro lsp-id? string 753 | +--:(tlv-address) 754 | | +--ro tlv-type? int16 755 | | +--ro tlv-len? int16 756 | | +--ro tlv-value? binary 757 | +--:(system-info) 758 | +--ro system-id? inet:uri 759 +--ro timestamp-val? yang:date-and-time 760 +--ro ingress-intf-name? if:interface-ref 761 +--ro egress-intf-name? if:interface-ref 762 +--ro app-meta-data? uint32 764 data hierarchy of OAM Retrieval Methods 766 4. OAM Retrieval Methods YANG Module 768 file "ietf-connectionless-oam-methods@2017-05-18.yang" 770 module ietf-connectionless-oam-methods { 771 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; 772 prefix coam-methods; 774 import ietf-interfaces { 775 prefix if; 776 } 777 import ietf-connectionless-oam { 778 prefix coam; 779 } 781 organization 782 "IETF LIME Working Group"; 783 contact 784 "Deepak Kumar dekumar@cisco.com 785 Qin Wu bill.wu@huawei.com 786 S Raghavan srihari@cisco.com 787 Zitao Wang wangzitao@huawei.com 788 R Rahman rrahman@cisco.com"; 789 description 790 "This YANG module defines the RPCs for , 791 connectionless OAM to be used within IETF 792 in a protocol Independent manner. 793 Functional level abstraction is indendent with 794 YANG modeling. It is assumed that each protocol maps 795 corresponding abstracts to its native format. 796 Each protocol may extend the YANG model defined 797 here to include protocol specific extensions"; 799 revision 2017-05-18 { 800 description 801 "02 version"; 802 reference "draft-ietf-lime-yang-connectionless-oam-methods"; 803 } 804 rpc continuity-check { 805 if-feature "coam:continuity-check"; 806 description 807 "Generates continuity-check as per RFC7276."; 808 input { 809 container destination-tp { 810 uses coam:tp-address; 811 description 812 "Destination test point."; 813 } 814 uses coam:session-type; 815 leaf source-interface { 816 type if:interface-ref; 817 description 818 "Source interface."; 819 } 820 leaf outbound-interface { 821 type if:interface-ref; 822 description 823 "Outbound interface."; 824 } 825 leaf count { 826 type uint32; 827 default "5"; 829 description 830 "Specifies the number of 831 packets that will be sent."; 832 } 833 leaf vrf { 834 type coam:routing-instance-ref; 835 description 836 "VRF instance."; 837 } 838 leaf ttl { 839 type uint8; 840 default "255"; 841 description 842 "Time to live (TTL)."; 843 } 844 leaf packet-size { 845 type uint32 { 846 range "64..10000"; 847 } 848 default "64"; 849 description 850 "Size of ping echo request 851 packets, in octets"; 853 } 854 } 855 output { 856 list error-code-list { 857 key "response-index"; 858 leaf response-index { 859 type uint32; 860 description 861 "Response index."; 862 } 863 leaf status-code { 864 type int32; 865 description 866 "Error code is "; 867 } 868 leaf status-sub-code { 869 type uint8; 870 description 871 "Sub code."; 872 } 873 description 874 "Error code list."; 875 } 876 uses coam:continuity-check-data; 877 } 879 } 881 rpc path-discovery { 882 if-feature "coam:path-discovery"; 883 description 884 "Generates path discovery as per RFC7276."; 885 input { 886 container destination-tp { 887 uses coam:tp-address; 888 description 889 "Destination test point."; 890 } 891 uses coam:session-type; 892 leaf source-interface { 893 type if:interface-ref; 894 description 895 "Source interface."; 896 } 897 leaf outbound-interface { 898 type if:interface-ref; 899 description 900 "Outbound interface."; 902 } 903 leaf vrf { 904 type coam:routing-instance-ref; 905 description 906 "VRF"; 907 } 908 leaf max-ttl { 909 type uint8; 910 default "255"; 911 description 912 "Max ttl."; 913 } 914 } 915 output { 916 list response-list { 917 key "response-index"; 918 description 919 "Path discovery response list."; 920 leaf response-index { 921 type uint32; 922 description 923 "Response index."; 924 } 925 leaf status-code { 926 type int32; 927 description 929 "Error code is "; 930 } 931 leaf status-sub-code { 932 type uint8; 933 description 934 "Sub code is "; 935 } 936 } 937 uses coam:path-discovery-data; 938 } 939 } 940 } 942 944 5. Security Considerations 946 The YANG modules defined in this memo are designed to be accessed via 947 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 948 secure transport layer and the mandatory to implement secure 949 transport is SSH [RFC6242]. The NETCONF access control model 951 [RFC6536] provides the means to restrict access for particular 952 NETCONF users to a pre-configured subset of all available NETCONF 953 protocol operations and content. Some of the RPC operations in the 954 "ietf-connectionless-oam-methods" YANG module may be considered 955 sensitive or vulnerable in some network environments. It is thus 956 important to control access to these operations. 958 These are the operations and their sensitivity/vulnerability: 960 o continuity-check: Generates continuity check. 962 o path-discovery: Generates path discovery. 964 6. IANA Considerations 966 This document registers a URI in the IETF XML registry [RFC3688]. 967 Following the format in [RFC3688], the following registration is 968 requested to be made: 970 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods 972 Registrant Contact: The IESG. 974 XML: N/A, the requested URI is an XML namespace. 976 This document registers a YANG module in the YANG Module Names 977 registry [RFC6020]. 979 name: ietf-connectionless-oam-methods 981 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- 982 methods 984 prefix: coam-methods 986 reference: RFC XXXX 988 7. References 990 7.1. Normative References 992 [I-D.ietf-lime-yang-connectionless-oam] 993 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 994 "Generic YANG Data Model for Connectionless Operations, 995 Administration, and Maintenance(OAM) protocols", draft- 996 ietf-lime-yang-connectionless-oam-05 (work in progress), 997 May 2017. 999 [I-D.ietf-netconf-yang-push] 1000 Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- 1001 Nygaard, E., Bierman, A., and B. Lengyel, "Subscribing to 1002 YANG datastore push updates", draft-ietf-netconf-yang- 1003 push-06 (work in progress), April 2017. 1005 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1006 Requirement Levels", BCP 14, RFC 2119, 1007 DOI 10.17487/RFC2119, March 1997, 1008 . 1010 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1011 DOI 10.17487/RFC3688, January 2004, 1012 . 1014 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1015 the Network Configuration Protocol (NETCONF)", RFC 6020, 1016 DOI 10.17487/RFC6020, October 2010, 1017 . 1019 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1020 and A. Bierman, Ed., "Network Configuration Protocol 1021 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1022 . 1024 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1025 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1026 . 1028 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1029 Protocol (NETCONF) Access Control Model", RFC 6536, 1030 DOI 10.17487/RFC6536, March 2012, 1031 . 1033 [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, 1034 "Specification of the IP Flow Information Export (IPFIX) 1035 Protocol for the Exchange of Flow Information", STD 77, 1036 RFC 7011, DOI 10.17487/RFC7011, September 2013, 1037 . 1039 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 1040 September 1981. 1042 7.2. Informative References 1044 [RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol 1045 Label Switched (MPLS) Data Plane Failures", RFC 4379, 1046 DOI 10.17487/RFC4379, February 2006, 1047 . 1049 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 1050 Control Message Protocol (ICMPv6) for the Internet 1051 Protocol Version 6 (IPv6) Specification", RFC 4443, 1052 DOI 10.17487/RFC4443, March 2006, 1053 . 1055 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1056 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1057 . 1059 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 1060 Weingarten, "An Overview of Operations, Administration, 1061 and Maintenance (OAM) Tools", RFC 7276, 1062 DOI 10.17487/RFC7276, June 2014, 1063 . 1065 Appendix A. Appendix 1067 The following are some examples of extensions possible to the yang 1068 model. The example discusses persistent methods. 1070 The persistent method RPCs are commands to trigger persistent 1071 continuity check or path discovery OAM while specifying the options 1072 for data-export from the device. Internet Protocol Flow Information 1073 Export (IPFIX) [RFC7011] or yang-push [I-D.ietf-netconf-yang-push]. 1074 are currently outlined here as data export options and more can be 1075 added in future. It should be noted that the persistent methods are 1076 used to trigger create, modify and delete the persistent state 1077 associated with the data export options. The data export specific 1078 configurations are beyond the scope of this document. 1080 A.1. OAM Retrieval Persistent Methods YANG Module 1082 file "ietf-connectionless-oam-persistent-methods.yang" 1084 identity export-method { 1085 description 1086 "Base identity to represent a conceptual export-method."; 1087 } 1089 identity ipfix-export { 1090 base export-method; 1091 description 1092 "IPFIX based export. Configuration provided separately."; 1093 } 1095 identity yang-push-export { 1096 base export-method; 1097 description 1098 "Yang-push from draft-ietf-netconf-yang-push"; 1099 } 1101 typedef export-method { 1102 type identityref { 1103 base export-method; 1104 } 1105 description 1106 "Export method type."; 1107 } 1109 typedef change-type { 1110 type enumeration { 1111 enum "create" { 1112 description 1113 "Change due to a create."; 1114 } 1115 enum "delete" { 1116 description 1117 "Change due to a delete."; 1118 } 1119 enum "modify" { 1120 description 1121 "Change due to an update."; 1122 } 1123 } 1124 description 1125 "Different types of changes that may occur."; 1126 } 1128 rpc cc-persistent-create { 1129 if-feature "coam:continuity-check"; 1130 description 1131 "Generates persistent continuity-check."; 1132 input { 1133 container destination-tp { 1134 uses coam:tp-address; 1135 description 1136 "Destination test point."; 1137 } 1138 uses coam:session-type; 1139 leaf source-interface { 1140 type if:interface-ref; 1141 description 1142 "Source interface."; 1143 } 1144 leaf outbound-interface { 1145 type if:interface-ref; 1146 description 1147 "Outbound interface."; 1148 } 1149 leaf vrf { 1150 type coam:routing-instance-ref; 1151 description 1152 "VRF instance."; 1153 } 1154 leaf ttl { 1155 type uint8; 1156 default "255"; 1157 description 1158 "Time to live (TTL)."; 1159 } 1160 leaf data-export-method { 1161 type export-method; 1162 description 1163 "Type of export."; 1164 } 1165 choice cc-trigger { 1166 description 1167 "Defines necessary conditions for 1168 periodic or on-change trigger."; 1169 case periodic { 1170 description 1171 "Periodic reports."; 1172 leaf period { 1173 type yang:timeticks; 1174 description 1175 "Time interval between reports."; 1176 } 1177 leaf start-time { 1178 type yang:date-and-time; 1179 description 1180 "Timestamp from which reports are started."; 1181 } 1182 } 1183 case on-change { 1184 description 1185 "On-change trigger and not periodic."; 1186 leaf all-data-on-start { 1187 type boolean; 1188 description 1189 "Full update needed on start or not."; 1190 } 1191 leaf-list excluded-change { 1192 type change-type; 1193 description 1194 "Restrict which changes trigger an update."; 1195 } 1196 } 1197 } 1198 } 1199 output { 1200 list error-code-list { 1201 key "response-index"; 1202 leaf response-index { 1203 type uint32; 1204 description 1205 "Response index."; 1206 } 1207 leaf status-code { 1208 type int32; 1209 description 1210 "Error code."; 1211 } 1212 leaf status-sub-code { 1213 type uint8; 1214 description 1215 "Sub code."; 1216 } 1217 description 1218 "Error code list."; 1219 } 1220 leaf cc-persistent-id { 1221 type string; 1222 description 1223 "Id to act as a cookie."; 1224 } 1225 } 1226 } 1227 rpc cc-persistent-modify { 1228 if-feature "coam:continuity-check"; 1229 description 1230 "Modifies persistent continuity-check 1231 as per RFC7276."; 1232 input { 1233 leaf cc-persistent-id { 1234 type string; 1235 description 1236 "Cookie Id to be used for modifications."; 1237 } 1238 leaf data-export-method { 1239 type export-method; 1240 description 1241 "Type of export to use."; 1242 } 1243 choice cc-trigger { 1244 description 1245 "Defines necessary conditions for 1246 periodic or on-change trigger."; 1247 case periodic { 1248 description 1249 "Periodic reports."; 1250 leaf period { 1251 type yang:timeticks; 1252 description 1253 "Time interval between reports."; 1254 } 1255 leaf start-time { 1256 type yang:date-and-time; 1257 description 1258 "Timestamp from which reports are started."; 1259 } 1260 } 1261 case on-change { 1262 description 1263 "On-change trigger and not periodic."; 1264 leaf all-data-on-start { 1265 type boolean; 1266 description 1267 "Full update needed on start or not."; 1268 } 1269 leaf-list excluded-change { 1270 type change-type; 1271 description 1272 "Restrict which changes trigger an update."; 1273 } 1274 } 1275 } 1276 } 1277 output { 1278 list error-code-list { 1279 key "response-index"; 1280 leaf response-index { 1281 type uint32; 1282 description 1283 "Response index."; 1285 } 1286 leaf status-code { 1287 type int32; 1288 description 1289 "Error code"; 1290 } 1291 leaf status-sub-code { 1292 type uint8; 1293 description 1294 "Sub code."; 1295 } 1296 description 1297 "Error code list."; 1298 } 1299 leaf cc-persistent-id { 1300 type string; 1301 description 1302 "Id to represent a cookie."; 1303 } 1304 } 1305 } 1306 rpc cc-persistent-delete { 1307 if-feature "coam:continuity-check"; 1308 description 1309 "Deletes persistent continuity-check as per RFC7276."; 1310 input { 1311 leaf cc-persistent-id { 1312 type string; 1313 description 1314 "Cookie Id to be used in deletion."; 1315 } 1316 } 1317 output { 1318 list error-code-list { 1319 key "response-index"; 1320 leaf response-index { 1321 type uint32; 1322 description 1323 "Response index."; 1324 } 1325 leaf status-code { 1326 type int32; 1327 description 1328 "Error code."; 1329 } 1330 leaf status-sub-code { 1331 type uint8; 1332 description 1333 "Sub code."; 1334 } 1335 description 1336 "Error code list."; 1337 } 1338 } 1339 } 1341 rpc pd-persistent-create { 1342 description 1343 "Generates persistent path discovery."; 1344 input { 1345 container destination-tp { 1346 uses coam:tp-address; 1347 description 1348 "Destination test point."; 1349 } 1350 uses coam:session-type; 1351 leaf source-interface { 1352 type if:interface-ref; 1353 description 1354 "Source interface."; 1355 } 1356 leaf outbound-interface { 1357 type if:interface-ref; 1358 description 1359 "Outbound interface."; 1360 } 1361 leaf vrf { 1362 type coam:routing-instance-ref; 1363 description 1364 "VRF"; 1365 } 1366 leaf max-ttl { 1367 type uint8; 1368 default "255"; 1369 description 1370 "Max ttl."; 1371 } 1372 leaf data-export-method { 1373 type export-method; 1374 description 1375 "Type of export."; 1376 } 1377 choice pd-trigger { 1378 description 1379 "Defines necessary conditions 1380 for periodic or on-change 1381 trigger."; 1382 case periodic { 1383 description 1384 "Periodic reports."; 1385 leaf period { 1386 type yang:timeticks; 1387 description 1388 "Time interval between reports."; 1389 } 1390 leaf start-time { 1391 type yang:date-and-time; 1392 description 1393 "Timestamp from which reports are started."; 1394 } 1395 } 1396 case on-change { 1397 description 1398 "On-change trigger and not periodic."; 1399 leaf all-data-on-start { 1400 type boolean; 1401 description 1402 "Full update needed on start or not."; 1403 } 1404 leaf-list excluded-change { 1405 type change-type; 1406 description 1407 "Restrict which changes trigger an update."; 1408 } 1409 } 1410 } 1411 } 1412 output { 1413 list response-list { 1414 key "response-index"; 1415 description 1416 "Path discovery response list."; 1417 leaf response-index { 1418 type uint32; 1419 description 1420 "Response index."; 1421 } 1422 leaf status-code { 1423 type int32; 1424 description 1425 "Error code is "; 1426 } 1427 leaf status-sub-code { 1428 type uint8; 1429 description 1430 "Sub code is "; 1431 } 1432 leaf pd-persistent-id { 1433 type string; 1434 description 1435 "Id to act as a cookie."; 1436 } 1437 } 1438 } 1439 } 1440 rpc pd-persistent-modify { 1441 description 1442 "Modifies persistent path discovery."; 1443 input { 1444 leaf pd-persistent-id { 1445 type string; 1446 description 1447 "Cookie Id to be used for modifications."; 1448 } 1449 leaf data-export-method { 1450 type export-method; 1451 description 1452 "Type of export."; 1453 } 1454 choice pd-trigger { 1455 description 1456 "Defines necessary conditions for periodic or on-change 1457 trigger."; 1458 case periodic { 1459 description 1460 "Periodic reports."; 1461 leaf period { 1462 type yang:timeticks; 1463 description 1464 "Time interval between reports."; 1465 } 1466 leaf start-time { 1467 type yang:date-and-time; 1468 description 1469 "Timestamp from which reports are started."; 1470 } 1471 } 1472 case on-change { 1473 description 1474 "On-change trigger and not periodic."; 1475 leaf all-data-on-start { 1476 type boolean; 1477 description 1478 "Full update needed on start or not."; 1479 } 1480 leaf-list excluded-change { 1481 type change-type; 1482 description 1483 "Restrict which changes trigger an update."; 1484 } 1485 } 1486 } 1487 } 1488 output { 1489 list response-list { 1490 key "response-index"; 1491 description 1492 "path discovery response list."; 1493 leaf response-index { 1494 type uint32; 1495 description 1496 "response index."; 1497 } 1498 leaf status-code { 1499 type int32; 1500 description 1501 "error code is "; 1502 } 1503 leaf status-sub-code { 1504 type uint8; 1505 description 1506 "sub code is "; 1507 } 1508 leaf pd-persistent-id { 1509 type string; 1510 description 1511 "Id to act as a cookie."; 1512 } 1513 } 1514 } 1515 } 1516 rpc pd-persistent-delete { 1517 description 1518 "Deletes persistent path discovery."; 1519 input { 1520 leaf pd-persistent-id { 1521 type string; 1522 description 1523 "Cookie Id to be used in deletion."; 1524 } 1526 } 1527 output { 1528 list response-list { 1529 key "response-index"; 1530 description 1531 "path discovery response list."; 1532 leaf response-index { 1533 type uint32; 1534 description 1535 "response index."; 1536 } 1537 leaf status-code { 1538 type int32; 1539 description 1540 "error code is "; 1541 } 1542 leaf status-sub-code { 1543 type uint8; 1544 description 1545 "sub code is "; 1546 } 1547 } 1548 } 1549 } 1551 1553 Authors' Addresses 1555 Deepak Kumar 1556 CISCO Systems 1557 510 McCarthy Blvd 1558 Milpitas, CA 95035 1559 USA 1561 Email: dekumar@cisco.com 1563 Michael Wang 1564 Huawei Technologies,Co.,Ltd 1565 101 Software Avenue, Yuhua District 1566 Nanjing 210012 1567 China 1569 Email: wangzitao@huawei.com 1570 Qin Wu 1571 Huawei 1572 101 Software Avenue, Yuhua District 1573 Nanjing, Jiangsu 210012 1574 China 1576 Email: bill.wu@huawei.com 1578 Reshad Rahman 1579 CISCO Systems 1580 2000 Innovation Drive 1581 KANATA, ONTARIO K2K 3E8 1582 CANADA 1584 Email: rrahman@cisco.com 1586 Srihari Raghavan 1587 CISCO Systems 1588 TRIL INFOPARK SEZ, Ramanujan IT City 1589 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 1590 CHENNAI, TAMIL NADU 600113 1591 INDIA 1593 Email: srihari@cisco.com