idnits 2.17.00 (12 Aug 2021) /tmp/idnits20933/draft-ietf-lime-yang-connectionless-oam-methods-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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 8, 2017) is 1807 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: draft-ietf-lime-yang-connectionless-oam has been published as RFC 8532 == Outdated reference: draft-ietf-netconf-yang-push has been published as RFC 8641 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 3 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: December 10, 2017 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 June 8, 2017 12 Retrieval Methods YANG Data Model for Connectionless Operations, 13 Administration, and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-methods-04 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 10, 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 . . . . . . . . . . . . . . . . . . . . . . . 3 65 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 66 3. Overview of the Connectionless OAM retrieval methods Model . 4 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 following terms are defined in [RFC6241] and are not redefined 112 here: 114 o client 116 o configuration data 118 o server 120 o state data 122 The following terms are defined in [RFC6020] and are not redefined 123 here: 125 o augment 127 o data model 129 o data node 131 The terminology for describing YANG data models is found in 132 [RFC6020]. 134 2.1. Terminology 136 TP - Test Point 138 MAC - Media Access Control 140 RPC - A Remote Procedure Call, as used within the NETCONF protocol 142 2.2. Tree Diagrams 144 A simplified graphical representation of the data model is used in 145 this document. The meaning of the symbols in these diagrams is as 146 follows: 148 Each node is printed as: 150 152 is one of: 153 + for current 155 is one of: 157 rw for configuration data 158 ro for non-configuration data 159 -x for rpcs 160 -n for notifications 162 is the name of the node 164 If the node is augmented into the tree from another module, its name 165 is printed as :. 167 is one of: 169 ? for an optional leaf or choice 170 ! for a presence container 171 * for a leaf-list or list 172 [] for a list's keys 174 is the name of the type for leafs and leaf-lists 176 3. Overview of the Connectionless OAM retrieval methods Model 178 In this document, we present a retrieval method YANG Data model for 179 connectionless OAM protocols. This module provides technology- 180 independent retrieval procedures (RPC commands) for connectionless 181 OAM protocols. It provides a flexible way to retrieve the retrieved- 182 data which defined by the "ietf-connectionless-oam.yang" 183 [I-D.ietf-lime-yang-connectionless-oam]. 185 3.1. RPC definitions 187 The RPC model facilitates issuing commands to a NETCONF server (in 188 this case to the device that need to execute the OAM command) and 189 obtaining a response. 191 Under 'connectionless-oam-methods' module, we summarize the common 192 OAM functions and define the generic RPC commands: 'continuity-check' 193 and 'path-discovery'. In practice, these commands are supported by 194 corresponding technology-specific OAM tools [RFC7276]. For example, 195 for the IP OAM model, the continuity-check RPC corresponds to the IP 196 Ping [RFC792] [RFC4443], while the path-discovery RPC command 197 corresponds to IP Traceroute [RFC792] [RFC4443]. 199 Note that the RPC command presented in this document is the base 200 building block, which is used to derive a model for a technology- 201 specific OAM (i.e., ICMP ping [RFC792] [RFC4443], LSP ping 202 [RFC8029]), the base building block should be extended with 203 corresponding technology specific parameters. To facilitate this and 204 for future enhancements to data retrieval methods, the RPCs are 205 captured under a separate module. 207 The generic 'path-discovery-data' and 'continuity-check-data' are 208 used as data outputs from the different RPCs described in the 209 document. Similar methods including other RPCs can retrieve the data 210 using the same data model. 212 rpc continuity-check { 213 if-feature coam:continuity-check; 214 description 215 "Generates continuity-check as per RFC7276."; 216 input { 217 container destination-tp { 218 uses coam:tp-address; 219 description 220 "destination test point."; 221 } 222 uses coam:session-type; 223 leaf source-interface { 224 type if:interface-ref; 225 description 226 "source interface."; 227 } 228 leaf outbound-interface { 229 type if:interface-ref; 231 description 232 "outbound interface."; 234 } 235 leaf count { 236 type uint32; 237 default "5"; 238 description 239 "Specifies the number of packets that will be sent."; 240 } 241 leaf vrf { 242 type coam:routing-instance-ref; 243 description 244 "vrf instance."; 245 } 246 leaf ttl { 247 type uint8; 248 default "255"; 249 description 250 "Time to live (TTL)."; 251 } 252 leaf packet-size { 253 type uint32 { 254 range "64..10000"; 255 } 256 default "64"; 257 description 258 "Size of ping echo request packets, in octets"; 259 } 260 } 261 output { 262 list error-code-list { 263 key "response-index"; 264 leaf response-index { 265 type uint32; 266 description 267 "response index."; 268 } 269 leaf status-code { 270 type int32; 271 description 272 "error code is "; 273 } 274 leaf status-sub-code { 275 type uint8; 276 description 277 "sub code."; 278 } 279 description 280 "error code list."; 281 } 282 uses coam:continuity-check-data; 283 } 284 } 286 rpc path-discovery { 287 description 288 "Generates path discovery as per RFC7276."; 289 input { 290 container destination-tp { 291 uses coam:tp-address; 292 description 293 "destination test point."; 294 } 295 uses coam:session-type; 296 leaf source-interface { 297 type if:interface-ref; 298 description 299 "source interface."; 300 } 301 leaf outbound-interface { 302 type if:interface-ref; 303 description 304 "outbound interface."; 305 } 306 leaf vrf { 307 type coam:routing-instance-ref; 308 description 309 "vrf"; 310 } 311 leaf max-ttl { 312 type uint8; 313 default "255"; 314 description 315 "max ttl."; 316 } 317 } 318 output { 319 list response-list { 320 key "response-index"; 321 description 322 "path discovery response list."; 323 leaf response-index { 324 type uint32; 325 description 326 "response index."; 327 } 328 leaf status-code { 329 type int32; 330 description 331 "error code is "; 332 } 333 leaf status-sub-code { 334 type uint8; 336 description 337 "sub code is "; 338 } 339 } 341 uses coam:path-discovery-data; 342 } 343 } 345 Snippet of data hierarchy related to RPC calls 347 3.2. OAM Retrieval Methods Hierarchy 349 The complete data hierarchy related to the Connectionless OAM 350 Retrieval Methods YANG model is presented below. 352 module: ietf-connectionless-oam-methods 354 rpcs: 355 +---x continuity-check {coam:continuity-check}? 356 | +---w input 357 | | +---w destination-tp 358 | | | +---w tp-address-type-value? identityref 359 | | | +---w (tp-address)? 360 | | | +--:(mac-address) 361 | | | | +---w mac-address? yang:mac-address 362 | | | +--:(ipv4-address) 363 | | | | +---w ipv4-address? inet:ipv4-address 364 | | | +--:(ipv6-address) 365 | | | | +---w ipv6-address? inet:ipv6-address 366 | | | +--:(src-dst-address) 367 | | | | +---w src-ip-address? inet:ip-address 368 | | | | +---w dst-ip-address? inet:ip-address 369 | | | | +---w Interface? if:interface-ref 370 | | | +--:(fec) 371 | | | | +---w fec-type? fec-type 372 | | | | +---w (fec-value)? 373 | | | | +--:(ip-prefix) 374 | | | | | +---w ip-prefix? inet:ip-prefix 375 | | | | +--:(bgp) 376 | | | | | +---w bgp? inet:ip-prefix 377 | | | | +--:(tunnel) 378 | | | | | +---w tunnel-interface? uint32 379 | | | | +--:(pw) 380 | | | | | +---w remote-pe-address? inet:ip-address 381 | | | | | +---w pw-id? uint32 382 | | | | +--:(vpls) 383 | | | | | +---w route-distinguisher? uint32 384 | | | | | +---w sender-ve-id? uint32 385 | | | | | +---w receiver-ve-id? uint32 386 | | | | +--:(mpls-mldp) 387 | | | | +---w (root-address)? 388 | | | | +--:(ip-address) 389 | | | | | +---w source-address? inet:ip-address 390 | | | | | +---w group-ip-address? IP-Multicast- 391 Group-Address 392 | | | | +--:(vpn) 393 | | | | | +---w as-number? inet:as-number 394 | | | | +--:(global-id) 395 | | | | +---w lsp-id? string 396 | | | +--:(tlv-address) 397 | | | | +---w tlv-type? int16 398 | | | | +---w tlv-len? int16 399 | | | | +---w tlv-value? binary 400 | | | +--:(system-info) 401 | | | +---w system-id? inet:uri 402 | | +---w session-type-enum? enumeration 403 | | +---w source-interface? if:interface-ref 404 | | +---w outbound-interface? if:interface-ref 405 | | +---w count? uint32 406 | | +---w vrf? coam:routing-instance-ref 407 | | +---w ttl? uint8 408 | | +---w packet-size? uint32 409 | +--ro output 410 | +--ro error-code-list* [response-index] 411 | | +--ro response-index uint32 412 | | +--ro status-code? int32 413 | | +--ro status-sub-code? uint8 414 | +--ro src-test-point 415 | | +--ro vrf? routing-instance-ref 416 | | +--ro tp-address-type-value? identityref 417 | | +--ro (tp-address)? 418 | | | +--:(mac-address) 419 | | | | +--ro mac-address? yang:mac-address 420 | | | +--:(ipv4-address) 421 | | | | +--ro ipv4-address? inet:ipv4-address 422 | | | +--:(ipv6-address) 423 | | | | +--ro ipv6-address? inet:ipv6-address 424 | | | +--:(src-dst-address) 425 | | | | +--ro src-ip-address? inet:ip-address 426 | | | | +--ro dst-ip-address? inet:ip-address 427 | | | | +--ro Interface? if:interface-ref 428 | | | +--:(fec) 429 | | | | +--ro fec-type? fec-type 430 | | | | +--ro (fec-value)? 431 | | | | +--:(ip-prefix) 432 | | | | | +--ro ip-prefix? inet:ip-prefix 433 | | | | +--:(bgp) 434 | | | | | +--ro bgp? inet:ip-prefix 435 | | | | +--:(tunnel) 436 | | | | | +--ro tunnel-interface? uint32 437 | | | | +--:(pw) 438 | | | | | +--ro remote-pe-address? inet:ip-address 439 | | | | | +--ro pw-id? uint32 440 | | | | +--:(vpls) 441 | | | | | +--ro route-distinguisher? uint32 442 | | | | | +--ro sender-ve-id? uint32 443 | | | | | +--ro receiver-ve-id? uint32 444 | | | | +--:(mpls-mldp) 445 | | | | +--ro (root-address)? 446 | | | | +--:(ip-address) 447 | | | | | +--ro source-address? inet:ip-address 448 | | | | | +--ro group-ip-address? IP-Multicast- 449 Group-Address 450 | | | | +--:(vpn) 451 | | | | | +--ro as-number? inet:as-number 452 | | | | +--:(global-id) 453 | | | | +--ro lsp-id? string 454 | | | +--:(tlv-address) 455 | | | | +--ro tlv-type? int16 456 | | | | +--ro tlv-len? int16 457 | | | | +--ro tlv-value? binary 458 | | | +--:(system-info) 459 | | | +--ro system-id? inet:uri 460 | | +--ro egress-intf-name? if:interface-ref 461 | +--ro dest-test-point 462 | | +--ro vrf? routing-instance-ref 463 | | +--ro tp-address-type-value? identityref 464 | | +--ro (tp-address)? 465 | | | +--:(mac-address) 466 | | | | +--ro mac-address? yang:mac-address 467 | | | +--:(ipv4-address) 468 | | | | +--ro ipv4-address? inet:ipv4-address 469 | | | +--:(ipv6-address) 470 | | | | +--ro ipv6-address? inet:ipv6-address 471 | | | +--:(src-dst-address) 472 | | | | +--ro src-ip-address? inet:ip-address 473 | | | | +--ro dst-ip-address? inet:ip-address 474 | | | | +--ro Interface? if:interface-ref 475 | | | +--:(fec) 476 | | | | +--ro fec-type? fec-type 477 | | | | +--ro (fec-value)? 478 | | | | +--:(ip-prefix) 479 | | | | | +--ro ip-prefix? inet:ip-prefix 480 | | | | +--:(bgp) 481 | | | | | +--ro bgp? inet:ip-prefix 482 | | | | +--:(tunnel) 483 | | | | | +--ro tunnel-interface? uint32 484 | | | | +--:(pw) 485 | | | | | +--ro remote-pe-address? inet:ip-address 486 | | | | | +--ro pw-id? uint32 487 | | | | +--:(vpls) 488 | | | | | +--ro route-distinguisher? uint32 489 | | | | | +--ro sender-ve-id? uint32 490 | | | | | +--ro receiver-ve-id? uint32 491 | | | | +--:(mpls-mldp) 492 | | | | +--ro (root-address)? 493 | | | | +--:(ip-address) 494 | | | | | +--ro source-address? inet:ip-address 495 | | | | | +--ro group-ip-address? IP-Multicast- 496 Group-Address 497 | | | | +--:(vpn) 498 | | | | | +--ro as-number? inet:as-number 499 | | | | +--:(global-id) 500 | | | | +--ro lsp-id? string 501 | | | +--:(tlv-address) 502 | | | | +--ro tlv-type? int16 503 | | | | +--ro tlv-len? int16 504 | | | | +--ro tlv-value? binary 505 | | | +--:(system-info) 506 | | | +--ro system-id? inet:uri 507 | | +--ro ingress-intf-name? if:interface-ref 508 | +--ro sequence-number? uint64 509 | +--ro hop-cnt? uint8 510 | +--ro session-packet-statistics 511 | | +--ro rx-packet-count? uint32 512 | | +--ro tx-packet-count? uint32 513 | | +--ro rx-bad-packet? uint32 514 | | +--ro tx-packet-failed? uint32 515 | +--ro session-error-statistics 516 | | +--ro packet-drops-count? uint32 517 | | +--ro packet-reorder-count? uint32 518 | | +--ro packets-out-of-seq-count? uint32 519 | | +--ro packets-dup-count? uint32 520 | +--ro session-delay-statistics 521 | | +--ro time-resolution-value? identityref 522 | | +--ro min-delay-value? uint32 523 | | +--ro max-delay-value? uint32 524 | | +--ro average-delay-value? uint32 525 | +--ro session-jitter-statistics 526 | +--ro time-resolution-value? identityref 527 | +--ro min-jitter-value? uint32 528 | +--ro max-jitter-value? uint32 529 | +--ro average-jitter-value? uint32 530 +---x path-discovery {coam:path-discovery}? 531 +---w input 532 | +---w destination-tp 533 | | +---w tp-address-type-value? identityref 534 | | +---w (tp-address)? 535 | | +--:(mac-address) 536 | | | +---w mac-address? yang:mac-address 537 | | +--:(ipv4-address) 538 | | | +---w ipv4-address? inet:ipv4-address 539 | | +--:(ipv6-address) 540 | | | +---w ipv6-address? inet:ipv6-address 541 | | +--:(src-dst-address) 542 | | | +---w src-ip-address? inet:ip-address 543 | | | +---w dst-ip-address? inet:ip-address 544 | | | +---w Interface? if:interface-ref 545 | | +--:(fec) 546 | | | +---w fec-type? fec-type 547 | | | +---w (fec-value)? 548 | | | +--:(ip-prefix) 549 | | | | +---w ip-prefix? inet:ip-prefix 550 | | | +--:(bgp) 551 | | | | +---w bgp? inet:ip-prefix 552 | | | +--:(tunnel) 553 | | | | +---w tunnel-interface? uint32 554 | | | +--:(pw) 555 | | | | +---w remote-pe-address? inet:ip-address 556 | | | | +---w pw-id? uint32 557 | | | +--:(vpls) 558 | | | | +---w route-distinguisher? uint32 559 | | | | +---w sender-ve-id? uint32 560 | | | | +---w receiver-ve-id? uint32 561 | | | +--:(mpls-mldp) 562 | | | +---w (root-address)? 563 | | | +--:(ip-address) 564 | | | | +---w source-address? inet:ip-address 565 | | | | +---w group-ip-address? IP-Multicast- 566 Group-Address 567 | | | +--:(vpn) 568 | | | | +---w as-number? inet:as-number 569 | | | +--:(global-id) 570 | | | +---w lsp-id? string 571 | | +--:(tlv-address) 572 | | | +---w tlv-type? int16 573 | | | +---w tlv-len? int16 574 | | | +---w tlv-value? binary 575 | | +--:(system-info) 576 | | +---w system-id? inet:uri 577 | +---w session-type-enum? enumeration 578 | +---w source-interface? if:interface-ref 579 | +---w outbound-interface? if:interface-ref 580 | +---w vrf? coam:routing-instance-ref 581 | +---w max-ttl? uint8 582 +--ro output 583 +--ro response-list* [response-index] 584 | +--ro response-index uint32 585 | +--ro status-code? int32 586 | +--ro status-sub-code? uint8 587 +--ro src-test-point 588 | +--ro vrf? routing-instance-ref 589 | +--ro tp-address-type-value? identityref 590 | +--ro (tp-address)? 591 | +--:(mac-address) 592 | | +--ro mac-address? yang:mac-address 593 | +--:(ipv4-address) 594 | | +--ro ipv4-address? inet:ipv4-address 595 | +--:(ipv6-address) 596 | | +--ro ipv6-address? inet:ipv6-address 597 | +--:(src-dst-address) 598 | | +--ro src-ip-address? inet:ip-address 599 | | +--ro dst-ip-address? inet:ip-address 600 | | +--ro Interface? if:interface-ref 601 | +--:(fec) 602 | | +--ro fec-type? fec-type 603 | | +--ro (fec-value)? 604 | | +--:(ip-prefix) 605 | | | +--ro ip-prefix? inet:ip-prefix 606 | | +--:(bgp) 607 | | | +--ro bgp? inet:ip-prefix 608 | | +--:(tunnel) 609 | | | +--ro tunnel-interface? uint32 610 | | +--:(pw) 611 | | | +--ro remote-pe-address? inet:ip-address 612 | | | +--ro pw-id? uint32 613 | | +--:(vpls) 614 | | | +--ro route-distinguisher? uint32 615 | | | +--ro sender-ve-id? uint32 616 | | | +--ro receiver-ve-id? uint32 617 | | +--:(mpls-mldp) 618 | | +--ro (root-address)? 619 | | +--:(ip-address) 620 | | | +--ro source-address? inet:ip-address 621 | | | +--ro group-ip-address? IP-Multicast 622 -Group-Address 623 | | +--:(vpn) 624 | | | +--ro as-number? inet:as-number 625 | | +--:(global-id) 626 | | +--ro lsp-id string 627 | +--:(tlv-address) 628 | | +--ro tlv-type? int16 629 | | +--ro tlv-len? int16 630 | | +--ro tlv-value? binary 631 | +--:(system-info) 632 | +--ro system-id? inet:uri 633 +--ro dest-test-point 634 | +--ro vrf? routing-instance-ref 635 | +--ro tp-address-type-value? identityref 636 | +--ro (tp-address)? 637 | +--:(mac-address) 638 | | +--ro mac-address? yang:mac-address 639 | +--:(ipv4-address) 640 | | +--ro ipv4-address? inet:ipv4-address 641 | +--:(ipv6-address) 642 | | +--ro ipv6-address? inet:ipv6-address 643 | +--:(src-dst-address) 644 | | +--ro src-ip-address? inet:ip-address 645 | | +--ro dst-ip-address? inet:ip-address 646 | | +--ro Interface? if:interface-ref 647 | +--:(fec) 648 | | +--ro fec-type? fec-type 649 | | +--ro (fec-value)? 650 | | +--:(ip-prefix) 651 | | | +--ro ip-prefix? inet:ip-prefix 652 | | +--:(bgp) 653 | | | +--ro bgp? inet:ip-prefix 654 | | +--:(tunnel) 655 | | | +--ro tunnel-interface? uint32 656 | | +--:(pw) 657 | | | +--ro remote-pe-address? inet:ip-address 658 | | | +--ro pw-id? uint32 659 | | +--:(vpls) 660 | | | +--ro route-distinguisher? uint32 661 | | | +--ro sender-ve-id? uint32 662 | | | +--ro receiver-ve-id? uint32 663 | | +--:(mpls-mldp) 664 | | +--ro (root-address)? 665 | | +--:(ip-address) 666 | | | +--ro source-address? inet:ip-address 667 | | | +--ro group-ip-address? IP-Multicast- 668 Group-Address 669 | | +--:(vpn) 670 | | | +--ro as-number? inet:as-number 671 | | +--:(global-id) 672 | | +--ro lsp-id? string 673 | +--:(tlv-address) 674 | | +--ro tlv-type? int16 675 | | +--ro tlv-len? int16 676 | | +--ro tlv-value? binary 677 | +--:(system-info) 678 | +--ro system-id? inet:uri 679 +--ro sequence-number? uint64 680 +--ro hop-cnt? uint8 681 +--ro session-packet-statistics 682 | +--ro rx-packet-count? uint32 683 | +--ro tx-packet-count? uint32 684 | +--ro rx-bad-packet? uint32 685 | +--ro tx-packet-failed? uint32 686 +--ro session-error-statistics 687 | +--ro packet-drops-count? uint32 688 | +--ro packet-reorder-count? uint32 689 | +--ro packets-out-of-seq-count? uint32 690 | +--ro packets-dup-count? uint32 691 +--ro session-delay-statistics 692 | +--ro time-resolution-value? identityref 693 | +--ro min-delay-value? uint32 694 | +--ro max-delay-value? uint32 695 | +--ro average-delay-value? uint32 696 +--ro session-jitter-statistics 697 | +--ro time-resolution-value? identityref 698 | +--ro min-jitter-value? uint32 699 | +--ro max-jitter-value? uint32 700 | +--ro average-jitter-value? uint32 701 +--ro path-verification 702 | +--ro flow-info? string 703 | +--ro session-path-verification-statistics 704 | +--ro verified-count? uint32 705 | +--ro failed-count? uint32 706 +--ro path-trace-info 707 +--ro path-trace-info-list* [index] 708 +--ro index uint32 709 +--ro vrf? routing-instance-ref 710 +--ro tp-address-type-value? identityref 711 +--ro (tp-address)? 712 | +--:(mac-address) 713 | | +--ro mac-address? yang:mac-address 714 | +--:(ipv4-address) 715 | | +--ro ipv4-address? inet:ipv4-address 716 | +--:(ipv6-address) 717 | | +--ro ipv6-address? inet:ipv6-address 718 | +--:(src-dst-address) 719 | | +--ro src-ip-address? inet:ip-address 720 | | +--ro dst-ip-address? inet:ip-address 721 | | +--ro Interface? if:interface-ref 722 | +--:(fec) 723 | | +--ro fec-type? fec-type 724 | | +--ro (fec-value)? 725 | | +--:(ip-prefix) 726 | | | +--ro ip-prefix? inet:ip-prefix 727 | | +--:(bgp) 728 | | | +--ro bgp? inet:ip-prefix 729 | | +--:(tunnel) 730 | | | +--ro tunnel-interface? uint32 731 | | +--:(pw) 732 | | | +--ro remote-pe-address? inet:ip-address 733 | | | +--ro pw-id? uint32 734 | | +--:(vpls) 735 | | | +--ro route-distinguisher? uint32 736 | | | +--ro sender-ve-id? uint32 737 | | | +--ro receiver-ve-id? uint32 738 | | +--:(mpls-mldp) 739 | | +--ro (root-address)? 740 | | +--:(ip-address) 741 | | | +--ro source-address inet:ip-address 742 | | | +--ro group-ip-address? IP-Multicast- 743 Group-Address 744 | | +--:(vpn) 745 | | | +--ro as-number? inet:as-number 746 | | +--:(global-id) 747 | | +--ro lsp-id? string 748 | +--:(tlv-address) 749 | | +--ro tlv-type? int16 750 | | +--ro tlv-len? int16 751 | | +--ro tlv-value? binary 752 | +--:(system-info) 753 | +--ro system-id? inet:uri 754 +--ro timestamp-val? yang:date-and-time 755 +--ro ingress-intf-name? if:interface-ref 756 +--ro egress-intf-name? if:interface-ref 757 +--ro app-meta-data? uint32 759 data hierarchy of OAM Retrieval Methods 761 4. OAM Retrieval Methods YANG Module 763 file "ietf-connectionless-oam-methods@2017-05-18.yang" 765 module ietf-connectionless-oam-methods { 766 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; 767 prefix coam-methods; 769 import ietf-interfaces { 770 prefix if; 771 } 772 import ietf-connectionless-oam { 773 prefix coam; 774 } 776 organization 777 "IETF LIME Working Group"; 778 contact 779 "Deepak Kumar dekumar@cisco.com 780 Qin Wu bill.wu@huawei.com 781 S Raghavan srihari@cisco.com 782 Zitao Wang wangzitao@huawei.com 783 R Rahman rrahman@cisco.com"; 784 description 785 "This YANG module defines the RPCs for , 786 connectionless OAM to be used within IETF 787 in a protocol Independent manner. 788 Functional level abstraction is indendent with 789 YANG modeling. It is assumed that each protocol maps 790 corresponding abstracts to its native format. 791 Each protocol may extend the YANG model defined 792 here to include protocol specific extensions"; 794 revision 2017-05-18 { 795 description 796 "02 version"; 797 reference "draft-ietf-lime-yang-connectionless-oam-methods"; 798 } 800 rpc continuity-check { 801 if-feature "coam:continuity-check"; 802 description 803 "Generates continuity-check as per RFC7276."; 804 input { 805 container destination-tp { 806 uses coam:tp-address; 807 description 808 "Destination test point."; 809 } 810 uses coam:session-type; 811 leaf source-interface { 812 type if:interface-ref; 813 description 814 "Source interface."; 815 } 816 leaf outbound-interface { 817 type if:interface-ref; 818 description 819 "Outbound interface."; 820 } 821 leaf count { 822 type uint32; 823 default "5"; 825 description 826 "Specifies the number of 827 packets that will be sent."; 828 } 829 leaf vrf { 830 type coam:routing-instance-ref; 831 description 832 "VRF instance."; 833 } 834 leaf ttl { 835 type uint8; 836 default "255"; 837 description 838 "Time to live (TTL)."; 839 } 840 leaf packet-size { 841 type uint32 { 842 range "64..10000"; 843 } 844 default "64"; 845 description 846 "Size of ping echo request 847 packets, in octets"; 848 } 849 } 850 output { 851 list error-code-list { 852 key "response-index"; 853 leaf response-index { 854 type uint32; 855 description 856 "Response index."; 857 } 858 leaf status-code { 859 type int32; 860 description 861 "Error code is "; 862 } 863 leaf status-sub-code { 864 type uint8; 865 description 866 "Sub code."; 867 } 868 description 869 "Error code list."; 870 } 871 uses coam:continuity-check-data; 872 } 874 } 876 rpc path-discovery { 877 if-feature "coam:path-discovery"; 878 description 879 "Generates path discovery as per RFC7276."; 880 input { 881 container destination-tp { 882 uses coam:tp-address; 883 description 884 "Destination test point."; 885 } 886 uses coam:session-type; 887 leaf source-interface { 888 type if:interface-ref; 889 description 890 "Source interface."; 891 } 892 leaf outbound-interface { 893 type if:interface-ref; 894 description 895 "Outbound interface."; 896 } 897 leaf vrf { 898 type coam:routing-instance-ref; 899 description 900 "VRF"; 901 } 902 leaf max-ttl { 903 type uint8; 904 default "255"; 905 description 906 "Max ttl."; 907 } 908 } 909 output { 910 list response-list { 911 key "response-index"; 912 description 913 "Path discovery response list."; 914 leaf response-index { 915 type uint32; 916 description 917 "Response index."; 918 } 919 leaf status-code { 920 type int32; 921 description 923 "Error code is "; 924 } 925 leaf status-sub-code { 926 type uint8; 927 description 928 "Sub code is "; 929 } 930 } 931 uses coam:path-discovery-data; 932 } 933 } 934 } 936 938 5. Security Considerations 940 The YANG modules defined in this memo are designed to be accessed via 941 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 942 secure transport layer and the mandatory to implement secure 943 transport is SSH [RFC6242]. The NETCONF access control model 944 [RFC6536] provides the means to restrict access for particular 945 NETCONF users to a pre-configured subset of all available NETCONF 946 protocol operations and content. Some of the RPC operations in the 947 "ietf-connectionless-oam-methods" YANG module may be considered 948 sensitive or vulnerable in some network environments. It is thus 949 important to control access to these operations. 951 These are the operations and their sensitivity/vulnerability: 953 o continuity-check: Generates continuity check. 955 o path-discovery: Generates path discovery. 957 6. IANA Considerations 959 This document registers a URI in the IETF XML registry [RFC3688]. 960 Following the format in [RFC3688], the following registration is 961 requested to be made: 963 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods 965 Registrant Contact: The IESG. 967 XML: N/A, the requested URI is an XML namespace. 969 This document registers a YANG module in the YANG Module Names 970 registry [RFC6020]. 972 name: ietf-connectionless-oam-methods 974 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- 975 methods 977 prefix: coam-methods 979 reference: RFC XXXX 981 7. References 983 7.1. Normative References 985 [I-D.ietf-lime-yang-connectionless-oam] 986 Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, 987 "Generic YANG Data Model for Connectionless Operations, 988 Administration, and Maintenance(OAM) protocols", draft- 989 ietf-lime-yang-connectionless-oam-05 (work in progress), 990 May 2017. 992 [I-D.ietf-netconf-yang-push] 993 Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- 994 Nygaard, E., Bierman, A., and B. Lengyel, "Subscribing to 995 YANG datastore push updates", draft-ietf-netconf-yang- 996 push-06 (work in progress), April 2017. 998 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 999 DOI 10.17487/RFC3688, January 2004, 1000 . 1002 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1003 the Network Configuration Protocol (NETCONF)", RFC 6020, 1004 DOI 10.17487/RFC6020, October 2010, 1005 . 1007 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1008 and A. Bierman, Ed., "Network Configuration Protocol 1009 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1010 . 1012 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1013 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1014 . 1016 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1017 Protocol (NETCONF) Access Control Model", RFC 6536, 1018 DOI 10.17487/RFC6536, March 2012, 1019 . 1021 [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, 1022 "Specification of the IP Flow Information Export (IPFIX) 1023 Protocol for the Exchange of Flow Information", STD 77, 1024 RFC 7011, DOI 10.17487/RFC7011, September 2013, 1025 . 1027 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 1028 September 1981. 1030 7.2. Informative References 1032 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 1033 Control Message Protocol (ICMPv6) for the Internet 1034 Protocol Version 6 (IPv6) Specification", RFC 4443, 1035 DOI 10.17487/RFC4443, March 2006, 1036 . 1038 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1039 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1040 . 1042 [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. 1043 Weingarten, "An Overview of Operations, Administration, 1044 and Maintenance (OAM) Tools", RFC 7276, 1045 DOI 10.17487/RFC7276, June 2014, 1046 . 1048 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 1049 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 1050 Switched (MPLS) Data-Plane Failures", RFC 8029, 1051 DOI 10.17487/RFC8029, March 2017, 1052 . 1054 Appendix A. Appendix 1056 The following are some examples of extensions possible to the yang 1057 model. The example discusses persistent methods. 1059 The persistent method RPCs are commands to trigger persistent 1060 continuity check or path discovery OAM while specifying the options 1061 for data-export from the device. Internet Protocol Flow Information 1062 Export (IPFIX) [RFC7011] or yang-push [I-D.ietf-netconf-yang-push]. 1063 are currently outlined here as data export options and more can be 1064 added in future. It should be noted that the persistent methods are 1065 used to trigger create, modify and delete the persistent state 1066 associated with the data export options. The data export specific 1067 configurations are beyond the scope of this document. 1069 A.1. OAM Retrieval Persistent Methods YANG Module 1071 module example-cl-oam-persistent-methods { 1072 namespace "http://example.com/cl-oam-persistent-methods"; 1073 prefix pcoam-methods; 1075 import ietf-interfaces { 1076 prefix if; 1077 } 1078 import ietf-connectionless-oam { 1079 prefix coam; 1080 } 1081 import ietf-yang-types { 1082 prefix yang; 1083 } 1085 identity export-method { 1086 description 1087 "Base identity to represent a conceptual export-method."; 1088 } 1090 identity ipfix-export { 1091 base export-method; 1092 description 1093 "IPFIX based export. Configuration provided separately."; 1094 } 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."; 1144 } 1145 leaf outbound-interface { 1146 type if:interface-ref; 1147 description 1148 "Outbound interface."; 1149 } 1150 leaf vrf { 1151 type coam:routing-instance-ref; 1152 description 1153 "VRF instance."; 1154 } 1155 leaf ttl { 1156 type uint8; 1157 default "255"; 1158 description 1159 "Time to live (TTL)."; 1160 } 1161 leaf data-export-method { 1162 type export-method; 1163 description 1164 "Type of export."; 1165 } 1166 choice cc-trigger { 1167 description 1168 "Defines necessary conditions for 1169 periodic or on-change trigger."; 1170 case periodic { 1171 description 1172 "Periodic reports."; 1173 leaf period { 1174 type yang:timeticks; 1175 description 1176 "Time interval between reports."; 1177 } 1178 leaf start-time { 1179 type yang:date-and-time; 1180 description 1181 "Timestamp from which reports are started."; 1182 } 1183 } 1184 case on-change { 1185 description 1186 "On-change trigger and not periodic."; 1187 leaf all-data-on-start { 1188 type boolean; 1189 description 1190 "Full update needed on start or not."; 1191 } 1192 leaf-list excluded-change { 1193 type change-type; 1194 description 1195 "Restrict which changes trigger an update."; 1196 } 1197 } 1198 } 1199 } 1200 output { 1201 list error-code-list { 1202 key "response-index"; 1203 leaf response-index { 1204 type uint32; 1205 description 1206 "Response index."; 1207 } 1208 leaf status-code { 1209 type int32; 1210 description 1211 "Error code."; 1212 } 1213 leaf status-sub-code { 1214 type uint8; 1215 description 1216 "Sub code."; 1217 } 1218 description 1219 "Error code list."; 1220 } 1221 leaf cc-persistent-id { 1222 type string; 1223 description 1224 "Id to act as a cookie."; 1225 } 1226 } 1227 } 1228 rpc cc-persistent-modify { 1229 if-feature "coam:continuity-check"; 1230 description 1231 "Modifies persistent continuity-check 1232 as per RFC7276."; 1233 input { 1234 leaf cc-persistent-id { 1235 type string; 1236 description 1237 "Cookie Id to be used for modifications."; 1238 } 1239 leaf data-export-method { 1240 type export-method; 1241 description 1242 "Type of export to use."; 1243 } 1244 choice cc-trigger { 1245 description 1246 "Defines necessary conditions for 1247 periodic or on-change trigger."; 1248 case periodic { 1249 description 1250 "Periodic reports."; 1251 leaf period { 1252 type yang:timeticks; 1253 description 1254 "Time interval between reports."; 1255 } 1256 leaf start-time { 1257 type yang:date-and-time; 1258 description 1259 "Timestamp from which reports are started."; 1260 } 1261 } 1262 case on-change { 1263 description 1264 "On-change trigger and not periodic."; 1265 leaf all-data-on-start { 1266 type boolean; 1267 description 1268 "Full update needed on start or not."; 1269 } 1270 leaf-list excluded-change { 1271 type change-type; 1272 description 1273 "Restrict which changes trigger an update."; 1274 } 1275 } 1276 } 1277 } 1278 output { 1279 list error-code-list { 1280 key "response-index"; 1281 leaf response-index { 1282 type uint32; 1283 description 1284 "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 } 1525 } 1526 output { 1527 list response-list { 1528 key "response-index"; 1529 description 1530 "path discovery response list."; 1531 leaf response-index { 1532 type uint32; 1533 description 1534 "response index."; 1535 } 1536 leaf status-code { 1537 type int32; 1538 description 1539 "error code is "; 1540 } 1541 leaf status-sub-code { 1542 type uint8; 1543 description 1544 "sub code is "; 1545 } 1546 } 1547 } 1548 } 1549 } 1551 Authors' Addresses 1553 Deepak Kumar 1554 CISCO Systems 1555 510 McCarthy Blvd 1556 Milpitas, CA 95035 1557 USA 1559 Email: dekumar@cisco.com 1561 Michael Wang 1562 Huawei Technologies,Co.,Ltd 1563 101 Software Avenue, Yuhua District 1564 Nanjing 210012 1565 China 1567 Email: wangzitao@huawei.com 1568 Qin Wu 1569 Huawei 1570 101 Software Avenue, Yuhua District 1571 Nanjing, Jiangsu 210012 1572 China 1574 Email: bill.wu@huawei.com 1576 Reshad Rahman 1577 CISCO Systems 1578 2000 Innovation Drive 1579 KANATA, ONTARIO K2K 3E8 1580 CANADA 1582 Email: rrahman@cisco.com 1584 Srihari Raghavan 1585 CISCO Systems 1586 TRIL INFOPARK SEZ, Ramanujan IT City 1587 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 1588 CHENNAI, TAMIL NADU 600113 1589 INDIA 1591 Email: srihari@cisco.com