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