idnits 2.17.00 (12 Aug 2021) /tmp/idnits38437/draft-ietf-lime-yang-connectionless-oam-02.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 16 instances of too long lines in the document, the longest one being 20 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 352 has weird spacing: '...ocation ine...' == Line 384 has weird spacing: '...w index uin...' == Line 389 has weird spacing: '...ocation ine...' == Line 421 has weird spacing: '...w index uin...' == Line 426 has weird spacing: '...ocation yan...' == (16 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 31, 2016) is 2027 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC7276' is mentioned on line 247, but not defined == Missing Reference: 'RFC4443' is mentioned on line 100, but not defined == Missing Reference: 'RFC3688' is mentioned on line 2258, but not defined == Unused Reference: 'RFC6242' is defined on line 2307, but no explicit reference was found in the text == Outdated reference: draft-ietf-i2rs-yang-network-topo has been published as RFC 8345 == Outdated reference: A later version (-10) exists of draft-zheng-mpls-lsp-ping-yang-cfg-03 == Outdated reference: draft-ietf-bfd-yang has been published as RFC 9127 Summary: 1 error (**), 0 flaws (~~), 15 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group D. Kumar 3 Internet-Draft Cisco 4 Intended status: Standards Track M. Wang 5 Expires: May 4, 2017 Q. Wu 6 Huawei 7 R. Rahman 8 S. Raghavan 9 Cisco 10 October 31, 2016 12 Generic YANG Data Model for Connectionless Operations, Administration, 13 and Maintenance(OAM) protocols 14 draft-ietf-lime-yang-connectionless-oam-02 16 Abstract 18 This document presents a base YANG Data model for connectionless OAM 19 protocols. It provides a technology-independent abstraction of key 20 OAM constructs for connectionless protocols. The Based model 21 presented here can be extended to include technology specific 22 details. This is leading to uniformity between OAM protocols and 23 support nested OAM workflows (i.e., performing OAM functions at 24 different or same levels through a unified interface). 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at http://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on May 4, 2017. 43 Copyright Notice 45 Copyright (c) 2016 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (http://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 61 2. Conventions used in this document . . . . . . . . . . . . . . 3 62 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 63 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 64 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 65 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 66 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 67 3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 68 3.4. Test Point Locations Information . . . . . . . . . . . . 7 69 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 70 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7 71 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 72 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 73 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 16 74 5. CL model applicability . . . . . . . . . . . . . . . . . . . 43 75 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 44 76 5.1.1. technology type extension . . . . . . . . . . . . . . 44 77 5.1.2. test point attributes extension . . . . . . . . . . . 44 78 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 46 79 5.2.1. technology type extension . . . . . . . . . . . . . . 47 80 5.2.2. test point attributes extension . . . . . . . . . . . 47 81 6. Security Considerations . . . . . . . . . . . . . . . . . . . 48 82 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 83 8. Normative References . . . . . . . . . . . . . . . . . . . . 49 84 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 86 1. Introduction 88 Operations, Administration, and Maintenance (OAM) are important 89 networking functions that allow operators to: 91 1. Monitor networks connections (Reachability Verification, 92 Continuity Check). 94 2. Troubleshoot failures (Fault verification and localization). 96 3. Monitor Performance 98 An overview of OAM tools is presented at [RFC7276]. 100 Ping and Traceroute [RFC792], [RFC4443] are well-known fault 101 verification and isolation tools, respectively, for IP networks. 102 Over the years, different technologies have developed similar tools 103 for similar purposes. 105 In this document, we presents a base YANG Data model for 106 connectionless OAM protocols. The generic YANG model for 107 connectionless OAM only includes configuration data and state data. 108 It can be used in conjunction with data retrieval method model[lime 109 retrieval methods], which focuses on data retrival procedures like 110 RPC. However it also can be used independently of data retrieval 111 method model. 113 2. Conventions used in this document 115 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 116 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 117 document are to be interpreted as described in [RFC2119]. 119 The following terms are defined in [RFC6241] and are not redefined 120 here: 122 o client 124 o configuration data 126 o server 128 o state data 130 The following terms are defined in [RFC6020] and are not redefined 131 here: 133 o augment 135 o data model 137 o data node 139 The terminology for describing YANG data models is found in 140 [RFC6020]. 142 2.1. Terminology 144 TP - Test Point 146 MAC - Media Access Control 148 BFD - Bidirectional Forwarding Detection 150 RPC - A Remote Procedure Call, as used within the NETCONF protocol 152 2.2. Tree Diagrams 154 A simplified graphical representation of the data model is used in 155 this document. The meaning of the symbols in these diagrams is as 156 follows: 158 Each node is printed as: 160 162 is one of: 163 + for current 164 x for deprecated 165 o for obsolete 167 is one of: 169 rw for configuration data 170 ro for non-configuration data 171 -x for rpcs 172 -n for notifications 174 is the name of the node 176 If the node is augmented into the tree from another module, its name 177 is printed as :. 179 is one of: 181 ? for an optional leaf or choice 182 ! for a presence container 183 * for a leaf-list or list 184 [] for a list's keys 186 is the name of the type for leafs and leaf-lists 188 3. Overview of the Connectionless OAM Model 190 At the top of the Model, there is an oper container for session 191 statistics. Grouping is also defined for common session statistics 192 and these are applicable for proactive OAM sessions. Multiple test- 193 point-locations keyed using technology specific keys (eg., IPv4 194 address for IPv4 locations) are possible by augmented network nodes 195 which are defined in [I-D.draft-ietf-i2rs-yang-network-topo] to 196 describe the network hierarchies and the inventory of nodes contained 197 in a network. Each test-point-location is chosen based on location- 198 type which when chosen, leads to a container that includes a list of 199 test-point-locations keyed by technology specific keys. Each test 200 point location includes a test-point-location-info. The test-point- 201 location-info includes tp-technology, tp-tools, and connectionless- 202 oam-layers. The groupings of tp-address and tp-address-vrf are kept 203 out of test-point-location-info to make it addressing agnostic and 204 allow varied composition. Depending upon the choice of the location- 205 type (determined by the tp-address-vrf), the containers differ in its 206 composition of test-point-locations while the test-point-location- 207 info, is a common aspect of every test-point-location. The vrf is 208 used to describe the corresponding network instance. The tp- 209 technology indicate oam technology details. The tp-tools describe 210 the oam tools supported. The connectionless-oam- layers is used to 211 describe the relationship of one test point with other test points. 212 The level in oam-layers indicate whether related oam test point is 213 client layer, server layer or same layer. The Model is augmented to 214 /nd:networks/nd:network/nd:node using Test Point Locations defined 215 below. 217 3.1. TP Address 219 In connectionless OAM, the tp address is defined with the following 220 type: 222 o MAC address 224 o IPv4 or IPv6 address 226 o a pair of source, destination addresses, and interface (Useful for 227 BFD) 229 o FEC 231 o System-id to represent the device or node. 233 3.2. Tools 235 In connectionless OAM, the tools attribute is used to describe a 236 toolset for fault detection and isolation, and for performance 237 measurement. And it can serve as a constraint condition when the 238 base model be extended to specific OAM technology. For example, to 239 fulfill the icmp ping configuration, the "../coam:tools-ip/ 240 coam:rfc792" should be set to "true", and then the lime base model 241 should be augmented with icmp ping specific details. 243 3.3. OAM-layers 245 As typical networks have a multi-layer architecture, the set of OAM 246 protocols similarly take a multi-layer structure; each layer has its 247 own OAM protocols [RFC7276] and is corresponding to specific network 248 portion or pathand has associated test points. OAM-layers is 249 referred to a list of upper layer, lower layer that are related to 250 current test point. This allow users to easily navigate up and down 251 to efficiently troubleshoot a connectivity issue at different layer. 252 In this model, we have kept level default as 0, when all test points 253 are located at the same layer. Level is provided for scenarios where 254 it might be possible to define layering relationship as it can be 255 used to stitching fault at related oam layers. For example, there is 256 a network in which data traffic between two customer edges is 257 transported over three consecutive network portions, the current test 258 point is located in the second network portion. If there is a defect 259 in the first network portion is located at the upstream of the second 260 network portion, the level of the first network portion is set to 261 "-1". If the third network portion is located at the downstream of 262 the second network portion and the level is set to "1". In another 263 case, if the first network portion and the third network portion is 264 in the same level of thesecond network portion, the level is set to 265 "0". The snippet below depicts an example of OAM layers. 267 list oam-layers { 268 key "index"; 269 leaf index { 270 type uint16 { 271 range "0..65535"; 272 } 273 } 274 leaf level { 275 type int32 { 276 range "-1..1"; 277 } 278 description 279 "Level"; 280 } 281 ordered-by user; 282 description 283 "list of related oam layers."; 284 } 286 3.4. Test Point Locations Information 288 This is a generic grouping for Test Point Locations Information. It 289 Provide details of Test Point Location using Tools, OAM-Layers 290 grouping defined above. 292 3.5. Test Point Locations 294 This is a generic grouping for Test Point Locations. Choice 295 statement is used to define locations types, for example ipv4- 296 location-type, ipv6-location-type, etc. Container is defined under 297 each location type containing list keyed to test point address, Test 298 Point Location Information defined in section above, and routing 299 instance vrf name if required. 301 3.6. Path Discovery Data 303 This is a generic grouping for path discovery data model that can be 304 retrieved by any data retrieval methods including RPCs. Path 305 discovery data output from methods, includes src-test-point, dst- 306 test-point, sequence-number, hop-cnt, session statistics of various 307 kinds,path verification and path trace related information. Path 308 discovery includes data to be retrieved on a per-hop basis via a list 309 of path-trace-info-list which includes information like timestamps, 310 ingress-interface, egress-interface and app-meta-data. The path 311 discovery data model is made generic enough to allow active, passive 312 and hybrid OAMs to do the retrieval. None of the fields are made 313 mandatory for that reason. Noted that the retrieval methods are 314 defined in [lime retrieval methods]. 316 3.7. Continuity Check Data 318 This is a generic grouping for continuity check data model that can 319 be retrieved by any data retrieval methods including RPCs. 320 Continuity check data output from methods, includes src-test-point, 321 dst-test-point, sequence-number, hop-cnt and session statistics of 322 various kinds. The continuity check data model is made generic 323 enough to allow active, passive and hybrid OAMs to do the retrieval. 324 None of the fields are made mandatory for that reason. Noted that 325 the retrieval methods are defined in [lime retrieval methods]. 327 3.8. OAM data hierarchy 329 The complete data hierarchy related to the OAM YANG model is 330 presented below. 332 module: ietf-connectionless-oam 333 +--ro oper {continuity-check}? 334 +--ro cc-ipv4-sessions-statistics 335 | +--ro cc-session-statistics 336 | +--ro session-count? uint32 337 | +--ro session-up-count? uint32 338 | +--ro session-down-count? uint32 339 | +--ro session-admin-down-count? uint32 340 +--ro cc-ipv6-sessions-statistics 341 +--ro cc-session-statistics 342 +--ro session-count? uint32 343 +--ro session-up-count? uint32 344 +--ro session-down-count? uint32 345 +--ro session-admin-down-count? uint32 346 augment /nd:networks/nd:network/nd:node: 347 +--rw tp-address-type-value? identityref 348 +--rw (location-type)? 349 +--:(ipv4-location-type) 350 | +--rw test-point-ipv4-location-list 351 | +--rw test-point-locations* [ipv4-location] 352 | +--rw ipv4-location inet:ipv4-address 353 | +--rw vrf? routing-instance-ref 354 | +--rw (technology)? 355 | | +--:(technology-null) 356 | | | +--rw tech-null? empty 357 | | +--:(technology-string) 358 | | +--rw ipv4-icmp? string 359 | +--ro (tools)? 360 | | +--:(tools-empty) 361 | | | +--ro tools-null? empty 362 | | +--:(tools-ip) 363 | | | +--ro rfc792? boolean 364 | | | +--ro rfc4443? boolean 365 | | | +--ro rfc4884? boolean 366 | | | +--ro rfc5837? boolean 367 | | +--:(tools-bfd) 368 | | | +--ro rfc5881? boolean 369 | | | +--ro rfc5883? boolean 370 | | | +--ro rfc5884? boolean 371 | | | +--ro rfc5885? boolean 372 | | +--:(tools-mpls) 373 | | | +--ro rfc4379? boolean 374 | | | +--ro rfc4687? boolean 375 | | | +--ro rfc4950? boolean 376 | | | +--ro mpls-rfc5884? boolean 377 | | +--:(tools-pw) 378 | | +--ro rfc5085? boolean 379 | | +--ro pw_rfc5885? boolean 380 | | +--ro rfc6423? boolean 381 | | +--ro rfc6310? boolean 382 | | +--ro rfc7023? boolean 383 | +--rw oam-layers* [index] 384 | +--rw index uint16 385 | +--rw level? int32 386 +--:(ipv6-location-type) 387 | +--rw test-point-ipv6-location-list 388 | +--rw test-point-locations* [ipv6-location] 389 | +--rw ipv6-location inet:ipv6-address 390 | +--rw vrf? routing-instance-ref 391 | +--rw (technology)? 392 | | +--:(technology-null) 393 | | | +--rw tech-null? empty 394 | | +--:(technology-string) 395 | | +--rw ipv4-icmp? string 396 | +--ro (tools)? 397 | | +--:(tools-empty) 398 | | | +--ro tools-null? empty 399 | | +--:(tools-ip) 400 | | | +--ro rfc792? boolean 401 | | | +--ro rfc4443? boolean 402 | | | +--ro rfc4884? boolean 403 | | | +--ro rfc5837? boolean 404 | | +--:(tools-bfd) 405 | | | +--ro rfc5881? boolean 406 | | | +--ro rfc5883? boolean 407 | | | +--ro rfc5884? boolean 408 | | | +--ro rfc5885? boolean 409 | | +--:(tools-mpls) 410 | | | +--ro rfc4379? boolean 411 | | | +--ro rfc4687? boolean 412 | | | +--ro rfc4950? boolean 413 | | | +--ro mpls-rfc5884? boolean 414 | | +--:(tools-pw) 415 | | +--ro rfc5085? boolean 416 | | +--ro pw_rfc5885? boolean 417 | | +--ro rfc6423? boolean 418 | | +--ro rfc6310? boolean 419 | | +--ro rfc7023? boolean 420 | +--rw oam-layers* [index] 421 | +--rw index uint16 422 | +--rw level? int32 423 +--:(mac-location-type) 424 | +--rw test-point-mac-address-location-list 425 | +--rw test-point-locations* [mac-address-location] 426 | +--rw mac-address-location yang:mac-address 427 | +--rw (technology)? 428 | | +--:(technology-null) 429 | | | +--rw tech-null? empty 430 | | +--:(technology-string) 431 | | +--rw ipv4-icmp? string 432 | +--ro (tools)? 433 | | +--:(tools-empty) 434 | | | +--ro tools-null? empty 435 | | +--:(tools-ip) 436 | | | +--ro rfc792? boolean 437 | | | +--ro rfc4443? boolean 438 | | | +--ro rfc4884? boolean 439 | | | +--ro rfc5837? boolean 440 | | +--:(tools-bfd) 441 | | | +--ro rfc5881? boolean 442 | | | +--ro rfc5883? boolean 443 | | | +--ro rfc5884? boolean 444 | | | +--ro rfc5885? boolean 445 | | +--:(tools-mpls) 446 | | | +--ro rfc4379? boolean 447 | | | +--ro rfc4687? boolean 448 | | | +--ro rfc4950? boolean 449 | | | +--ro mpls-rfc5884? boolean 450 | | +--:(tools-pw) 451 | | +--ro rfc5085? boolean 452 | | +--ro pw_rfc5885? boolean 453 | | +--ro rfc6423? boolean 454 | | +--ro rfc6310? boolean 455 | | +--ro rfc7023? boolean 456 | +--rw oam-layers* [index] 457 | +--rw index uint16 458 | +--rw level? int32 459 +--:(tunnel-location-type) 460 | +--rw test-point-tunnel-address-location-list 461 | +--rw test-point-locations* [tunnel-location] 462 | +--rw tunnel-location uint32 463 | +--rw vrf? routing-instance-ref 464 | +--rw (technology)? 465 | | +--:(technology-null) 466 | | | +--rw tech-null? empty 467 | | +--:(technology-string) 468 | | +--rw ipv4-icmp? string 469 | +--ro (tools)? 470 | | +--:(tools-empty) 471 | | | +--ro tools-null? empty 472 | | +--:(tools-ip) 473 | | | +--ro rfc792? boolean 474 | | | +--ro rfc4443? boolean 475 | | | +--ro rfc4884? boolean 476 | | | +--ro rfc5837? boolean 477 | | +--:(tools-bfd) 478 | | | +--ro rfc5881? boolean 479 | | | +--ro rfc5883? boolean 480 | | | +--ro rfc5884? boolean 481 | | | +--ro rfc5885? boolean 482 | | +--:(tools-mpls) 483 | | | +--ro rfc4379? boolean 484 | | | +--ro rfc4687? boolean 485 | | | +--ro rfc4950? boolean 486 | | | +--ro mpls-rfc5884? boolean 487 | | +--:(tools-pw) 488 | | +--ro rfc5085? boolean 489 | | +--ro pw_rfc5885? boolean 490 | | +--ro rfc6423? boolean 491 | | +--ro rfc6310? boolean 492 | | +--ro rfc7023? boolean 493 | +--rw oam-layers* [index] 494 | +--rw index uint16 495 | +--rw level? int32 496 +--:(ip-prefix-location-type) 497 | +--rw test-point-ip-prefix-location-list 498 | +--rw test-point-locations* [ip-prefix-location] 499 | +--rw ip-prefix-location inet:ip-prefix 500 | +--rw vrf? routing-instance-ref 501 | +--rw (technology)? 502 | | +--:(technology-null) 503 | | | +--rw tech-null? empty 504 | | +--:(technology-string) 505 | | +--rw ipv4-icmp? string 506 | +--ro (tools)? 507 | | +--:(tools-empty) 508 | | | +--ro tools-null? empty 509 | | +--:(tools-ip) 510 | | | +--ro rfc792? boolean 511 | | | +--ro rfc4443? boolean 512 | | | +--ro rfc4884? boolean 513 | | | +--ro rfc5837? boolean 514 | | +--:(tools-bfd) 515 | | | +--ro rfc5881? boolean 516 | | | +--ro rfc5883? boolean 517 | | | +--ro rfc5884? boolean 518 | | | +--ro rfc5885? boolean 519 | | +--:(tools-mpls) 520 | | | +--ro rfc4379? boolean 521 | | | +--ro rfc4687? boolean 522 | | | +--ro rfc4950? boolean 523 | | | +--ro mpls-rfc5884? boolean 524 | | +--:(tools-pw) 525 | | +--ro rfc5085? boolean 526 | | +--ro pw_rfc5885? boolean 527 | | +--ro rfc6423? boolean 528 | | +--ro rfc6310? boolean 529 | | +--ro rfc7023? boolean 530 | +--rw oam-layers* [index] 531 | +--rw index uint16 532 | +--rw level? int32 533 +--:(route-distinguisher-location-type) 534 | +--rw test-point-route-dist-location-list 535 | +--rw test-point-locations* [route-dist-location] 536 | +--rw route-dist-location uint32 537 | +--rw vrf? routing-instance-ref 538 | +--rw (technology)? 539 | | +--:(technology-null) 540 | | | +--rw tech-null? empty 541 | | +--:(technology-string) 542 | | +--rw ipv4-icmp? string 543 | +--ro (tools)? 544 | | +--:(tools-empty) 545 | | | +--ro tools-null? empty 546 | | +--:(tools-ip) 547 | | | +--ro rfc792? boolean 548 | | | +--ro rfc4443? boolean 549 | | | +--ro rfc4884? boolean 550 | | | +--ro rfc5837? boolean 551 | | +--:(tools-bfd) 552 | | | +--ro rfc5881? boolean 553 | | | +--ro rfc5883? boolean 554 | | | +--ro rfc5884? boolean 555 | | | +--ro rfc5885? boolean 556 | | +--:(tools-mpls) 557 | | | +--ro rfc4379? boolean 558 | | | +--ro rfc4687? boolean 559 | | | +--ro rfc4950? boolean 560 | | | +--ro mpls-rfc5884? boolean 561 | | +--:(tools-pw) 562 | | +--ro rfc5085? boolean 563 | | +--ro pw_rfc5885? boolean 564 | | +--ro rfc6423? boolean 565 | | +--ro rfc6310? boolean 566 | | +--ro rfc7023? boolean 567 | +--rw oam-layers* [index] 568 | +--rw index uint16 569 | +--rw level? int32 570 +--:(group-ip-address-location-type) 571 | +--rw test-point-group-ip-address-location-list 572 | +--rw test-point-locations* [group-ip-address-location] 573 | +--rw group-ip-address-location IP-Multicast-Group-Address 574 | +--rw vrf? routing-instance-ref 575 | +--rw (technology)? 576 | | +--:(technology-null) 577 | | | +--rw tech-null? empty 578 | | +--:(technology-string) 579 | | +--rw ipv4-icmp? string 580 | +--ro (tools)? 581 | | +--:(tools-empty) 582 | | | +--ro tools-null? empty 583 | | +--:(tools-ip) 584 | | | +--ro rfc792? boolean 585 | | | +--ro rfc4443? boolean 586 | | | +--ro rfc4884? boolean 587 | | | +--ro rfc5837? boolean 588 | | +--:(tools-bfd) 589 | | | +--ro rfc5881? boolean 590 | | | +--ro rfc5883? boolean 591 | | | +--ro rfc5884? boolean 592 | | | +--ro rfc5885? boolean 593 | | +--:(tools-mpls) 594 | | | +--ro rfc4379? boolean 595 | | | +--ro rfc4687? boolean 596 | | | +--ro rfc4950? boolean 597 | | | +--ro mpls-rfc5884? boolean 598 | | +--:(tools-pw) 599 | | +--ro rfc5085? boolean 600 | | +--ro pw_rfc5885? boolean 601 | | +--ro rfc6423? boolean 602 | | +--ro rfc6310? boolean 603 | | +--ro rfc7023? boolean 604 | +--rw oam-layers* [index] 605 | +--rw index uint16 606 | +--rw level? int32 607 +--:(group-as-number-location-type) 608 | +--rw test-point-as-number-location-list 609 | +--rw test-point-locations* [as-number-location] 610 | +--rw as-number-location inet:as-number 611 | +--rw vrf? routing-instance-ref 612 | +--rw (technology)? 613 | | +--:(technology-null) 614 | | | +--rw tech-null? empty 615 | | +--:(technology-string) 616 | | +--rw ipv4-icmp? string 617 | +--ro (tools)? 618 | | +--:(tools-empty) 619 | | | +--ro tools-null? empty 620 | | +--:(tools-ip) 621 | | | +--ro rfc792? boolean 622 | | | +--ro rfc4443? boolean 623 | | | +--ro rfc4884? boolean 624 | | | +--ro rfc5837? boolean 625 | | +--:(tools-bfd) 626 | | | +--ro rfc5881? boolean 627 | | | +--ro rfc5883? boolean 628 | | | +--ro rfc5884? boolean 629 | | | +--ro rfc5885? boolean 630 | | +--:(tools-mpls) 631 | | | +--ro rfc4379? boolean 632 | | | +--ro rfc4687? boolean 633 | | | +--ro rfc4950? boolean 634 | | | +--ro mpls-rfc5884? boolean 635 | | +--:(tools-pw) 636 | | +--ro rfc5085? boolean 637 | | +--ro pw_rfc5885? boolean 638 | | +--ro rfc6423? boolean 639 | | +--ro rfc6310? boolean 640 | | +--ro rfc7023? boolean 641 | +--rw oam-layers* [index] 642 | +--rw index uint16 643 | +--rw level? int32 644 +--:(group-lsp-id-location-type) 645 | +--rw test-point-lsp-id-location-list 646 | +--rw test-point-locations* [lsp-id-location] 647 | +--rw lsp-id-location string 648 | +--rw vrf? routing-instance-ref 649 | +--rw (technology)? 650 | | +--:(technology-null) 651 | | | +--rw tech-null? empty 652 | | +--:(technology-string) 653 | | +--rw ipv4-icmp? string 654 | +--ro (tools)? 655 | | +--:(tools-empty) 656 | | | +--ro tools-null? empty 657 | | +--:(tools-ip) 658 | | | +--ro rfc792? boolean 659 | | | +--ro rfc4443? boolean 660 | | | +--ro rfc4884? boolean 661 | | | +--ro rfc5837? boolean 662 | | +--:(tools-bfd) 663 | | | +--ro rfc5881? boolean 664 | | | +--ro rfc5883? boolean 665 | | | +--ro rfc5884? boolean 666 | | | +--ro rfc5885? boolean 667 | | +--:(tools-mpls) 668 | | | +--ro rfc4379? boolean 669 | | | +--ro rfc4687? boolean 670 | | | +--ro rfc4950? boolean 671 | | | +--ro mpls-rfc5884? boolean 672 | | +--:(tools-pw) 673 | | +--ro rfc5085? boolean 674 | | +--ro pw_rfc5885? boolean 675 | | +--ro rfc6423? boolean 676 | | +--ro rfc6310? boolean 677 | | +--ro rfc7023? boolean 678 | +--rw oam-layers* [index] 679 | +--rw index uint16 680 | +--rw level? int32 681 +--:(group-system-id-location-type) 682 +--rw test-point-system-info-location-list 683 +--rw test-point-locations* [system-id-location] 684 +--rw system-id-location inet:uri 685 +--rw vrf? routing-instance-ref 686 +--rw (technology)? 687 | +--:(technology-null) 688 | | +--rw tech-null? empty 689 | +--:(technology-string) 690 | +--rw ipv4-icmp? string 691 +--ro (tools)? 692 | +--:(tools-empty) 693 | | +--ro tools-null? empty 694 | +--:(tools-ip) 695 | | +--ro rfc792? boolean 696 | | +--ro rfc4443? boolean 697 | | +--ro rfc4884? boolean 698 | | +--ro rfc5837? boolean 699 | +--:(tools-bfd) 700 | | +--ro rfc5881? boolean 701 | | +--ro rfc5883? boolean 702 | | +--ro rfc5884? boolean 703 | | +--ro rfc5885? boolean 704 | +--:(tools-mpls) 705 | | +--ro rfc4379? boolean 706 | | +--ro rfc4687? boolean 707 | | +--ro rfc4950? boolean 708 | | +--ro mpls-rfc5884? boolean 709 | +--:(tools-pw) 710 | +--ro rfc5085? boolean 711 | +--ro pw_rfc5885? boolean 712 | +--ro rfc6423? boolean 713 | +--ro rfc6310? boolean 714 | +--ro rfc7023? boolean 715 +--rw oam-layers* [index] 716 +--rw index uint16 717 +--rw level? int32 719 data hierarchy of OAM 721 4. OAM YANG Module 723 file "ietf-connectionless-oam.yang" 725 module ietf-connectionless-oam { 726 namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; 727 prefix coam; 729 import ietf-network{ 730 prefix nd; 731 } 732 import ietf-yang-types { 733 prefix yang; 734 } 735 import ietf-interfaces { 736 prefix if; 737 } 738 import ietf-inet-types { 739 prefix inet; 740 } 741 import ietf-network-instance { 742 prefix "ni"; 743 } 745 organization "IETF LIME Working Group"; 746 contact 747 "Deepak Kumar dekumar@cisco.com 748 Qin Wu bill.wu@huawei.com 749 S Raghavan srihari@cisco.com 750 Zitao Wang wangzitao@huawei.com 751 R Rahman rrahman@cisco.com"; 753 description 755 "This YANG module defines the generic configuration, 756 data model, statistics for connectionless OAM to be 757 used within IETF in a protocol indpendent manner. 758 Functional level abstraction is indendent with 759 YANG modeling. It is assumed that each protocol maps 760 corresponding abstracts to its native format. 761 Each protocol may extend the YANG model defined 762 here to include protocol specific extensions"; 763 revision 2016-10-31 { 764 description 765 "Initial revision. - 07 version"; 766 reference ""; 767 } 768 /* features */ 769 feature connection-less { 770 description 771 "this feature indicates that OAM solution is connection less."; 772 } 773 feature continuity-check { 774 description 775 "This feature indicates that the server supports 776 executing continuity check OAM command and 777 returning a response. Servers that do not advertise 778 this feature will not support executing 779 continuity check command or rpc model for 780 continuity check command."; 781 } 782 feature path-discovery { 783 description 784 "This feature indicates that the server supports 785 executing path discovery OAM command and 786 returning a response. Servers that do not advertise 787 this feature will not support executing 788 path discovery command or rpc model for 789 path discovery command."; 790 } 792 /* Identities */ 793 /* typedefs */ 794 typedef routing-instance-ref { 795 type leafref { 796 path "/ni:network-instances/ni:network-instance/ni:name"; 797 } 798 description 799 "This type is used for leafs that reference a routing instance 800 configuration."; 801 } 803 typedef IPv4-Multicast-Group-Address { 804 type string { 805 pattern '(2((2[4-9])|(3[0-9]))\.)' 806 +'(([0-9]|[1-9][0-9]|1[0-9][0-9]|' 807 +'2[0-4][0-9]|25[0-5])\.){2}' 808 +'([0-9]|[1-9][0-9]|1[0-9][0-9]' 809 +'|2[0-4][0-9]|25[0-5])'; 810 } 811 description 812 "The IPv4-Multicast-Group-Address type 813 represents an IPv4 multicast address 814 in dotted-quad notation."; 815 reference "RFC4607"; 816 } // typedef IPv4-Multicast-Group-Address 817 typedef IPv6-Multicast-Group-Address { 818 type string { 819 pattern 820 '(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]' 821 +'{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?' 822 +'(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4]' 823 +'[0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|' 824 +'2[0-4][0-9]|[01]?[0-9]?[0-9])))'; 825 pattern 826 '(([^:]+:){6}(([^:]+:[^:]+)|' 827 +'(.*\..*)))|((([^:]+:)*[^:]+)' 828 +'?::(([^:]+:)*[^:]+)?)'; 829 } 830 description 831 "The IPv6-Multicast-Group-Address 832 type represents an IPv6 address in full, 833 mixed, shortened, and shortened-mixed 834 notation."; 835 reference "RFC4291 2.7. 836 ietf-inet-types:ipv6-address"; 837 } 838 typedef IP-Multicast-Group-Address { 839 type union { 840 type IPv4-Multicast-Group-Address; 841 type IPv6-Multicast-Group-Address; 842 } 843 description 844 "The IP-Multicast-Group-Address type 845 represents an IP multicast address and 846 is IP version neutral. The format of the 847 textual representations implies the IP version."; 848 } // typedef IP-Multicast-Group-Address 850 identity fec-types { 852 description 853 "This is base identity of fec types which are ip-prefix, 854 bgp, tunnel, pwe3, vpls, etc."; 855 } 857 typedef fec-type { 858 type identityref { 859 base fec-types; 860 } 861 description "Target FEC type."; 862 } 864 typedef oam-counter32 { 865 type yang:zero-based-counter32; 866 description 867 "defines 32 bit counter for OAM"; 868 } 870 identity time-resolution{ 871 description 872 "Time interval resolution"; 873 } //base identity 875 identity hours { 876 base time-resolution; 877 description 878 "Hours"; 879 } 881 identity minutes { 882 base time-resolution; 883 description 884 "Minutes"; 885 } 887 identity seconds { 888 base time-resolution; 889 description 890 "Seconds"; 892 } 894 identity milliseconds { 895 base time-resolution; 896 description 897 "Milliseconds"; 898 } 900 identity microseconds { 902 base time-resolution; 903 description 904 "Microseconds"; 905 } 907 identity nanoseconds { 908 base time-resolution; 909 description 910 "Nanoseconds"; 911 } 913 /* groupings */ 914 grouping cc-session-statsitics { 915 description "Grouping for session statistics."; 916 container cc-session-statistics { 917 description "cc session counters"; 918 leaf session-count { 919 type uint32; 920 description "Number of cc sessions."; 921 } 922 leaf session-up-count { 923 type uint32; 924 description "Number of sessions which are up."; 925 } 926 leaf session-down-count { 927 type uint32; 928 description "Number of sessions which are down."; 929 } 930 leaf session-admin-down-count { 931 type uint32; 932 description "Number of sessions which are admin-down."; 933 } 934 } 935 } 937 grouping session-packet-statistics { 938 description "Grouping for per session packet statistics"; 939 container session-packet-statistics { 940 description "Per session packet statistics."; 941 leaf rx-packet-count { 942 type uint32; 943 description "Total received packet count."; 944 } 945 leaf tx-packet-count { 946 type uint32; 947 description "Total transmitted packet count."; 948 } 949 leaf rx-bad-packet { 951 type uint32; 952 description "Total received bad packet."; 953 } 954 leaf tx-packet-failed { 955 type uint32; 956 description "Total send packet failed."; 957 } 958 } 959 } 961 grouping cc-per-session-statistics { 962 description "Grouping for per session statistics"; 963 container cc-per-session-statistics { 964 description "per session statistics."; 965 leaf create-time { 966 type yang:date-and-time; 967 description "Time and date when session is created."; 968 } 969 leaf last-down-time { 970 type yang:date-and-time; 971 description "Time and date last time session is down."; 972 } 973 leaf last-up-time { 974 type yang:date-and-time; 975 description "Time and date last time session is up."; 976 } 977 leaf down-count { 978 type uint32; 979 description "Total down count."; 980 } 981 leaf admin-down-count { 982 type uint32; 983 description "Total down count."; 984 } 986 uses session-packet-statistics; 987 } 989 } 991 grouping session-error-statistics { 992 description "Grouping for per session error statistics"; 993 container session-error-statistics { 994 description "Per session error statistics."; 995 leaf packet-drops-count { 996 type uint32; 997 description "Total received packet drops count."; 998 } 999 leaf packet-reorder-count { 1001 type uint32; 1002 description "Total received packet reordered count."; 1003 } 1004 leaf packets-out-of-seq-count { 1005 type uint32; 1006 description "Total received out of sequence count."; 1007 } 1008 leaf packets-dup-count { 1009 type uint32; 1010 description "Total received packet duplicates count."; 1011 } 1012 } 1013 } 1015 grouping session-delay-statistics { 1016 description "Grouping for per session delay statistics"; 1017 container session-delay-statistics { 1018 description "Session delay summarised information."; 1019 leaf time-resolution-value { 1020 type identityref { 1021 base time-resolution; 1022 } 1023 description "Time units among choice of s,ms,ns etc."; 1024 } 1025 leaf min-delay-value { 1026 type uint32; 1027 description "Minimum delay value observed."; 1028 } 1029 leaf max-delay-value { 1030 type uint32; 1031 description "Maximum delay value observed."; 1032 } 1033 leaf average-delay-value { 1034 type uint32; 1035 description "Average delay value observed."; 1036 } 1038 } 1039 } 1041 grouping session-jitter-statistics { 1042 description "Grouping for per session jitter statistics"; 1043 container session-jitter-statistics { 1044 description "Session jitter summarised information."; 1045 leaf time-resolution-value { 1046 type identityref { 1047 base time-resolution; 1048 } 1049 description "Time units among choice of s,ms,ns etc."; 1051 } 1052 leaf min-jitter-value { 1053 type uint32; 1054 description "Minimum jitter value observed."; 1055 } 1056 leaf max-jitter-value { 1057 type uint32; 1058 description "Maximum jitter value observed."; 1059 } 1060 leaf average-jitter-value { 1061 type uint32; 1062 description "Average jitter value observed."; 1063 } 1064 } 1065 } 1067 grouping session-path-verification-statistics { 1068 description "Grouping for per session path verification statistics"; 1069 container session-path-verification-statistics{ 1070 description "OAM per session path verification statistics."; 1071 leaf verified-count { 1072 type uint32; 1073 description "Total number of packets that went through a path as intended."; 1074 } 1075 leaf failed-count { 1076 type uint32; 1077 description "Total number of packets that went through an unintended path."; 1078 } 1079 } 1080 } 1082 grouping session-type { 1083 description 1084 "This object indicates the current session 1085 definition."; 1087 leaf session-type-enum { 1088 type enumeration { 1089 enum proactive { 1090 description 1091 "The current session is proactive"; 1092 } 1093 enum on-demand { 1094 description 1095 "The current session is on-demand."; 1096 } 1097 } 1098 default "on-demand"; 1099 description 1101 "session type enum"; 1102 } 1103 } 1105 identity tp-address-type { 1106 description 1107 "Test point address type"; 1108 } //base identity 1110 identity mac-address-type { 1111 base tp-address-type; 1112 description 1113 "MAC address type"; 1114 } 1116 identity ipv4-address-type { 1117 base tp-address-type; 1118 description 1119 "IPv4 address type"; 1120 } 1122 identity ipv6-address-type { 1123 base tp-address-type; 1124 description 1125 "IPv6 address type"; 1126 } 1128 identity src-dst-address-type { 1129 base tp-address-type; 1130 description 1131 "Source/Dest address type"; 1132 } 1134 identity fec-address-type { 1135 base tp-address-type; 1136 description 1137 "FEC address type"; 1138 } 1140 identity tlv-address-type { 1141 base tp-address-type; 1142 description 1143 "TLV address type"; 1144 } 1146 identity system-id-address-type { 1147 base tp-address-type; 1148 description 1150 "System id address type"; 1151 } 1153 identity lsp-id-address-type { 1154 base tp-address-type; 1155 description 1156 "LSP ID address type"; 1157 } 1159 identity as-number-address-type { 1160 base tp-address-type; 1161 description 1162 "AS number address type"; 1163 } 1165 identity group-ip-address-type { 1166 base tp-address-type; 1167 description 1168 "Group IP address type"; 1169 } 1171 identity route-distinguisher-address-type { 1172 base tp-address-type; 1173 description 1174 "Route Distinguisher address type"; 1175 } 1177 identity ip-prefix-address-type { 1178 base tp-address-type; 1179 description 1180 "IP prefix address type"; 1181 } 1182 identity tunnel-address-type { 1183 base tp-address-type; 1184 description 1185 "Tunnel address type"; 1186 } 1188 grouping tp-address { 1189 leaf tp-address-type-value { 1190 type identityref { 1191 base tp-address-type; 1192 } 1193 description "Test point address type."; 1194 } 1196 choice tp-address { 1198 case mac-address { 1199 when "'tp-address-type-value' = 'mac-address-type'" { 1200 description "MAC address type"; 1201 } 1202 leaf mac-address { 1203 type yang:mac-address; 1204 description 1205 "MAC Address"; 1206 } 1207 description 1208 "MAC Address based MP Addressing."; 1209 } 1210 case ipv4-address { 1211 when "'tp-address-type-value' = 'ipv4-address-type'" { 1212 description "IPv4 address type"; 1213 } 1214 leaf ipv4-address { 1215 type inet:ipv4-address; 1216 description 1217 "Ipv4 Address"; 1218 } 1219 description 1220 "Ip Address based MP Addressing."; 1221 } 1222 case ipv6-address { 1223 when "'tp-address-type-value' = 'ipv6-address-type'" { 1224 description "IPv6 address type"; 1225 } 1226 leaf ipv6-address { 1227 type inet:ipv6-address; 1228 description 1229 "Ipv6 Address"; 1231 } 1232 description 1233 "ipv6 Address based MP Addressing."; 1234 } 1235 case src-dst-address { 1236 when "'tp-address-type-value' = 'src-dst-address-type'" { 1237 description "Src dest address type for BFD"; 1238 } 1239 leaf src-ip-address { 1240 type inet:ip-address; 1241 description 1242 "source ip address."; 1243 } 1244 leaf dst-ip-address { 1245 type inet:ip-address; 1246 description 1248 "destination ip address."; 1249 } 1250 leaf Interface { 1251 type if:interface-ref; 1252 description 1253 "interface."; 1254 } 1255 } 1256 case fec { 1257 when "'tp-address-type-value' = 'fec-address-type'" { 1258 description "FEC address type"; 1259 } 1260 leaf fec-type { 1261 type fec-type; 1262 description 1263 "fec type."; 1264 } 1265 choice fec-value { 1266 description 1267 "fec value."; 1268 case ip-prefix { 1269 leaf ip-prefix { 1270 type inet:ip-prefix; 1271 description 1272 "ip prefix."; 1273 } 1274 } 1275 case bgp { 1276 leaf bgp { 1277 type inet:ip-prefix; 1278 description 1279 "BGP Labeled Prefix "; 1280 } 1281 } 1282 case tunnel { 1283 leaf tunnel-interface { 1284 type uint32; 1285 description 1286 "VPN Prefix "; 1287 } 1288 } 1290 case pw { 1291 leaf remote-pe-address{ 1292 type inet:ip-address; 1293 description 1294 "remote pe address."; 1295 } 1296 leaf pw-id { 1297 type uint32; 1298 description 1299 "Pseudowire id."; 1300 } 1301 } 1302 case vpls { 1303 leaf route-distinguisher { 1304 type uint32; 1305 description 1306 "Route Distinguisher(8 octets)."; 1307 } 1308 leaf sender-ve-id{ 1309 type uint32; 1310 description 1311 "Sender's VE ID."; 1312 } 1313 leaf receiver-ve-id{ 1314 type uint32; 1315 description 1316 "Receiver's VE ID."; 1317 } 1318 } 1319 case mpls-mldp{ 1320 choice root-address{ 1321 description 1322 "root address choice."; 1323 case ip-address{ 1324 leaf source-address{ 1325 type inet:ip-address; 1326 description 1327 "ip address."; 1328 } 1329 leaf group-ip-address{ 1330 type IP-Multicast-Group-Address; 1331 description 1332 "group ip address."; 1333 } 1334 } 1335 case vpn{ 1336 leaf as-number{ 1337 type inet:as-number; 1339 description 1340 "AS number."; 1341 } 1342 } 1343 case global-id{ 1344 leaf lsp-id{ 1345 type string; 1346 description 1347 "lsp id."; 1348 } 1349 } 1350 } 1351 } 1352 } 1353 } 1354 case tlv-address { 1355 when "'tp-address-type-value' = 'tlv-address-type'" { 1356 description "TLV address type"; 1357 } 1358 leaf tlv-type { 1359 type int16; 1360 description 1361 "Type of MEP-ID"; 1362 } 1363 leaf tlv-len { 1364 type int16; 1365 description 1366 "Length of MEP-ID value"; 1367 } 1368 leaf tlv-value { 1369 type binary { 1370 length "12..255"; 1371 } 1372 description 1373 "Value please refer RFC6428 (Figure 4,5,6)."; 1374 } 1376 description 1377 "MEP-ID"; 1378 } 1379 case system-info { 1380 when "'tp-address-type-value' = 'system-id-address-type'" { 1381 description "System id address type"; 1382 } 1383 leaf system-id { 1384 type inet:uri; 1385 description 1386 "System ID assigned to this node."; 1387 } 1389 } 1390 description 1391 "TP Addressing."; 1392 } 1393 description 1394 "TP Address"; 1395 } 1397 grouping tp-address-vrf { 1398 description 1399 "Test point address with VRF."; 1400 leaf vrf { 1401 type routing-instance-ref; 1402 description 1403 "The vrf is used to describe the 1404 corresponding network instance"; 1405 } 1407 uses tp-address; 1408 } 1410 grouping connectionless-oam-layers { 1411 list oam-layers { 1412 key "index"; 1413 leaf index { 1414 type uint16 { 1415 range "0..65535"; 1416 } 1417 description 1418 "Index"; 1419 } 1420 leaf level { 1421 type int32 { 1422 range "-1..1"; 1423 } 1424 default 0; 1425 description 1426 "Level 0 indicates default level, -1 means server 1427 and +1 means client layer. 1428 In relationship 0 means same layer."; 1429 } 1430 ordered-by user; 1431 description 1432 "list of related oam layers. 1433 0 means they are in same level, especially 1434 interworking scenarios of stiching multiple 1435 technology at same layer. 1436 -1 means server layer, for eg:- in case of 1438 Overlay and Underlay, Underlay is server layer for 1439 Overlay Test Point. 1440 +1 means client layer, for eg:- in case of 1441 Service OAM and Transport OAM, Service OAM is client 1442 layer to Transport OAM."; 1443 } 1444 description 1445 "connectionless related OAM layer"; 1446 } 1448 grouping tp-technology { 1449 choice technology { 1450 default technology-null; 1451 case technology-null { 1452 description 1453 "this is a placeholder when no technology is needed."; 1454 leaf tech-null { 1455 type empty; 1456 description 1457 "there is no technology define"; 1458 } 1459 } 1460 description 1461 "technology choice null"; 1462 case technology-string { 1463 description 1464 "oam technology string"; 1465 leaf ipv4-icmp { 1466 type string; 1467 description 1468 "name to identify oam technology"; 1469 } 1470 } 1471 } 1472 description 1473 "OAM Technology"; 1474 } 1476 grouping tp-tools { 1477 description 1478 "Test Point OAM Toolset."; 1479 choice tools { 1480 default tools-empty; 1481 config false; 1482 description 1483 "choice of test point tools. 1484 Empty tools means based on Test Point it's implicit 1485 all OAM tools are present and no further configuration 1486 is supported."; 1488 case tools-empty { 1489 description 1490 "this is a placeholder when oam toolset is not needed."; 1491 leaf tools-null { 1492 type empty; 1493 description 1494 "there is no oam toolset defined."; 1495 } 1496 } 1497 case tools-ip{ 1498 description 1499 "Oam Toolset for Ip"; 1500 leaf rfc792 { 1501 type boolean; 1502 description 1503 "rfc792 (icmpv4) supported."; 1504 } 1505 leaf rfc4443 { 1506 type boolean; 1507 description 1508 "rfc4443 supported."; 1509 } 1510 leaf rfc4884 { 1511 type boolean; 1512 description 1513 "rfc4884 supported."; 1514 } 1515 leaf rfc5837 { 1516 type boolean; 1517 description 1518 "rfc5837 supported."; 1519 } 1521 } 1522 case tools-bfd { 1523 leaf rfc5881 { 1524 type boolean; 1525 description 1526 "rfc5881 supported."; 1527 } 1528 leaf rfc5883 { 1529 type boolean; 1530 description 1531 "rfc5883 supported."; 1532 } 1533 leaf rfc5884 { 1534 type boolean; 1535 description 1537 "rfc5884 supported."; 1538 } 1539 leaf rfc5885 { 1540 type boolean; 1541 description 1542 "rfc5885 supported."; 1543 } 1544 } 1545 case tools-mpls { 1546 description 1547 "Oam Toolset for mpls"; 1548 leaf rfc4379 { 1549 type boolean; 1550 description 1551 "rfc4379 supported."; 1552 } 1553 leaf rfc4687 { 1554 type boolean; 1555 description 1556 "rfc4687 supported."; 1557 } 1558 leaf rfc4950 { 1559 type boolean; 1560 description 1561 "rfc4950 supported."; 1562 } 1563 leaf mpls-rfc5884 { 1564 type boolean; 1565 description 1566 "rfc5884 supported."; 1567 } 1568 } 1569 case tools-pw { 1570 description 1571 "Oam Toolset for pw oam."; 1572 leaf rfc5085 { 1573 type boolean; 1574 description 1575 "rfc5085 supported."; 1576 } 1577 leaf pw_rfc5885 { 1578 type boolean; 1579 description 1580 "rfc5885 supported."; 1581 } 1582 leaf rfc6423 { 1583 type boolean; 1584 description 1585 "rfc6423 supported."; 1586 } 1587 leaf rfc6310 { 1588 type boolean; 1589 description 1590 "rfc6310 supported."; 1591 } 1592 leaf rfc7023 { 1593 type boolean; 1594 description 1595 "rfc7023 supported."; 1596 } 1597 } 1598 } 1599 } 1601 grouping test-point-location-info { 1602 uses tp-technology; 1603 uses tp-tools; 1604 uses connectionless-oam-layers; 1605 description 1606 "Test point Location"; 1607 } 1609 grouping test-point-locations { 1610 description "Group of test point locations."; 1611 leaf tp-address-type-value { 1613 type identityref { 1614 base tp-address-type; 1615 } 1616 description "Test point address type."; 1618 } 1619 choice location-type { 1620 case ipv4-location-type { 1621 when "'tp-address-type-value' = 'ipv4-address-type'" { 1622 description 1623 "when test point address is equal to ipv4 address."; 1624 } 1625 container test-point-ipv4-location-list { 1626 list test-point-locations { 1627 key "ipv4-location"; 1628 leaf ipv4-location { 1629 type inet:ipv4-address; 1630 description 1631 "Ipv4 Address."; 1632 } 1633 leaf vrf { 1634 type routing-instance-ref; 1635 description 1636 "The vrf is used to describe the 1637 corresponding network instance"; 1638 } 1639 uses test-point-location-info; 1640 ordered-by user; 1641 description 1642 "list of test point locations."; 1643 } 1644 description 1645 "Serves as top-level container for test point location list."; 1646 } 1647 } 1648 case ipv6-location-type { 1649 when "'tp-address-type-value' = 'ipv6-address-type'" { 1650 description 1651 "when test point address is equal to ipv6 address"; 1652 } 1653 container test-point-ipv6-location-list { 1654 list test-point-locations { 1655 key "ipv6-location"; 1656 leaf ipv6-location { 1657 type inet:ipv6-address; 1658 description 1659 "Ipv6 Address."; 1660 } 1661 leaf vrf { 1663 type routing-instance-ref; 1664 description 1665 "The vrf is used to describe the 1666 corresponding network instance"; 1667 } 1668 uses test-point-location-info; 1669 ordered-by user; 1670 description 1671 "list of test point locations."; 1672 } 1673 description 1674 "Serves as top-level container for test point location list."; 1675 } 1676 } 1677 case mac-location-type { 1678 when "'tp-address-type-value' = 'mac-address-type'" { 1679 description 1680 "when test point address is equal to mac address."; 1681 } 1682 container test-point-mac-address-location-list { 1683 list test-point-locations { 1684 key "mac-address-location"; 1685 leaf mac-address-location { 1686 type yang:mac-address; 1687 description 1688 "MAC Address"; 1689 } 1690 uses test-point-location-info; 1691 ordered-by user; 1692 description 1693 "list of test point locations."; 1694 } 1695 description 1696 "Serves as top-level container for test point location list."; 1697 } 1698 } 1699 case tunnel-location-type { 1700 when "'tp-address-type-value' = 'tunnel-address-type'" { 1701 description 1702 "when test point address is equal to tunnel type."; 1703 } 1704 container test-point-tunnel-address-location-list { 1705 list test-point-locations { 1706 key "tunnel-location"; 1707 leaf tunnel-location { 1708 type uint32; 1709 description 1710 "VPN Prefix"; 1712 } 1713 leaf vrf { 1714 type routing-instance-ref; 1715 description 1716 "The vrf is used to describe the 1717 corresponding network instance"; 1718 } 1719 uses test-point-location-info; 1720 ordered-by user; 1721 description 1722 "list of test point locations."; 1723 } 1724 description 1725 "Serves as top-level container for test point location list."; 1726 } 1727 } 1728 case ip-prefix-location-type { 1729 when "'tp-address-type-value' = 'ip-prefix-address-type'" { 1730 description 1731 "when test point address is equal to ip prefix."; 1732 } 1733 container test-point-ip-prefix-location-list { 1734 list test-point-locations { 1735 key "ip-prefix-location"; 1736 leaf ip-prefix-location { 1737 type inet:ip-prefix; 1738 description 1739 "IP Prefix"; 1740 } 1741 leaf vrf { 1742 type routing-instance-ref; 1743 description 1744 "The vrf is used to describe the 1745 corresponding network instance"; 1746 } 1747 uses test-point-location-info; 1748 ordered-by user; 1749 description 1750 "list of test point locations."; 1751 } 1752 description 1753 "Serves as top-level container for test point location list."; 1754 } 1755 } 1756 case route-distinguisher-location-type { 1757 when "'tp-address-type-value' = 'route-distinguisher-address-type'" { 1758 description "when test point address is equal to 1759 route distinguiher."; 1761 } 1762 container test-point-route-dist-location-list { 1763 list test-point-locations { 1764 key "route-dist-location"; 1765 leaf route-dist-location { 1766 type uint32; 1767 description 1768 "Route Distinguisher(8 octets)."; 1769 } 1770 leaf vrf { 1771 type routing-instance-ref; 1772 description 1773 "The vrf is used to describe the 1774 corresponding network instance"; 1775 } 1776 uses test-point-location-info; 1777 ordered-by user; 1778 description 1779 "list of test point locations."; 1780 } 1781 description 1782 "Serves as top-level container for test point location list."; 1783 } 1784 } 1785 case group-ip-address-location-type { 1786 when "'tp-address-type-value' = 'group-ip-address-type'" { 1787 description "when test point address is equal to 1788 group ip address."; 1789 } 1790 container test-point-group-ip-address-location-list { 1791 list test-point-locations { 1792 key "group-ip-address-location"; 1793 leaf group-ip-address-location { 1794 type IP-Multicast-Group-Address; 1795 description 1796 "Group IP address."; 1797 } 1798 leaf vrf { 1799 type routing-instance-ref; 1800 description 1801 "The vrf is used to describe the 1802 corresponding network instance"; 1803 } 1804 uses test-point-location-info; 1805 ordered-by user; 1806 description 1807 "list of test point locations."; 1808 } 1809 description 1810 "Serves as top-level container for test point location list."; 1811 } 1812 } 1813 case group-as-number-location-type { 1814 when "'tp-address-type-value' = 'as-number-address-type'" { 1815 description "when test point address is equal to 1816 as-number."; 1817 } 1818 container test-point-as-number-location-list { 1819 list test-point-locations { 1820 key "as-number-location"; 1821 leaf as-number-location { 1822 type inet:as-number; 1823 description 1824 "AS number."; 1825 } 1826 leaf vrf { 1827 type routing-instance-ref; 1828 description 1829 "The vrf is used to describe the 1830 corresponding network instance"; 1831 } 1832 uses test-point-location-info; 1833 ordered-by user; 1834 description 1835 "list of test point locations."; 1836 } 1837 description 1838 "Serves as top-level container for test point location list."; 1839 } 1840 } 1841 case group-lsp-id-location-type { 1842 when "'tp-address-type-value' = 'lsp-id-address-type'" { 1843 description "when test point address is equal to lspid."; 1844 } 1845 container test-point-lsp-id-location-list { 1846 list test-point-locations { 1847 key "lsp-id-location"; 1848 leaf lsp-id-location { 1849 type string; 1850 description 1851 "LSP Id."; 1852 } 1853 leaf vrf { 1854 type routing-instance-ref; 1855 description 1856 "The vrf is used to describe the 1857 corresponding network instance"; 1858 } 1859 uses test-point-location-info; 1860 ordered-by user; 1861 description 1862 "list of test point locations."; 1863 } 1864 description 1865 "Serves as top-level container for test point location list."; 1866 } 1867 } 1868 case group-system-id-location-type { 1869 when "'tp-address-type-value' = 'system-id-address-type'" { 1870 description "when test point address is equal to 1871 system info."; 1872 } 1873 container test-point-system-info-location-list { 1874 list test-point-locations { 1875 key "system-id-location"; 1876 leaf system-id-location { 1877 type inet:uri; 1878 description 1879 "System Id."; 1880 } 1881 leaf vrf { 1882 type routing-instance-ref; 1883 description 1884 "The vrf is used to describe the 1885 corresponding network instance"; 1886 } 1887 uses test-point-location-info; 1888 ordered-by user; 1889 description 1890 "list of test point locations."; 1891 } 1892 description 1893 "Serves as top-level container for test point location list."; 1894 } 1895 } 1896 description 1897 "Choice of address types."; 1898 } 1899 } 1901 augment "/nd:networks/nd:network/nd:node"{ 1902 description 1903 "Augment test points of connectionless oam."; 1904 uses test-point-locations; 1906 } 1908 grouping path-discovery-data { 1909 description "Path discovery related data output from nodes."; 1910 container src-test-point { 1911 description "Source test point."; 1912 uses tp-address-vrf; 1913 } 1914 container dest-test-point { 1915 description "Destination test point."; 1916 uses tp-address-vrf; 1917 } 1918 leaf sequence-number { 1919 type uint64; 1920 description "Sequence number in data packets."; 1921 } 1922 leaf hop-cnt { 1923 type uint8; 1924 description "hop count."; 1925 } 1927 uses session-packet-statistics; 1928 uses session-error-statistics; 1929 uses session-delay-statistics; 1930 uses session-jitter-statistics; 1932 container path-verification { 1933 description "Optional path verification related information."; 1934 leaf flow-info { 1935 type string; 1936 description 1937 "ACL name that refers to the flow, if any."; 1938 } 1939 uses session-path-verification-statistics; 1940 } 1942 container path-trace-info { 1943 description "Optional path trace per-hop test point information. 1944 The list has typically a single element for per-hop 1945 cases like path-discovery RPC but allows a list of 1946 hop related information for other types of 1947 data retrieval methods."; 1948 list path-trace-info-list { 1949 key "index"; 1950 description 1951 "Path trace information list."; 1952 leaf index { 1953 type uint32; 1954 description "Trace information index."; 1955 } 1957 uses tp-address-vrf; 1959 leaf timestamp-val { 1960 type yang:date-and-time; 1961 description "Timestamp value"; 1962 } 1963 leaf ingress-intf-name { 1964 type if:interface-ref; 1965 description 1966 "Ingress interface name"; 1967 } 1968 leaf egress-intf-name { 1969 type if:interface-ref; 1970 description 1971 "Egress interface name"; 1972 } 1973 leaf app-meta-data { 1974 type uint32; 1975 description 1976 "Application specific data added by node."; 1977 } 1978 } 1979 } 1980 } 1982 grouping continuity-check-data { 1983 description "Continuity check data output from nodes."; 1984 container src-test-point { 1985 description "Source test point."; 1986 uses tp-address-vrf; 1988 leaf egress-intf-name { 1989 type if:interface-ref; 1990 description 1991 "Egress interface name"; 1992 } 1993 } 1994 container dest-test-point { 1995 description "Destination test point."; 1996 uses tp-address-vrf; 1998 leaf ingress-intf-name { 1999 type if:interface-ref; 2000 description 2001 "Ingress interface name"; 2003 } 2004 } 2005 leaf sequence-number { 2006 type uint64; 2007 description "Sequence number."; 2008 } 2009 leaf hop-cnt { 2010 type uint8; 2011 description "hop count."; 2012 } 2014 uses session-packet-statistics; 2015 uses session-error-statistics; 2016 uses session-delay-statistics; 2017 uses session-jitter-statistics; 2018 } 2020 container oper { 2021 if-feature continuity-check; 2022 config "false"; 2023 description "cc operational information."; 2024 container cc-ipv4-sessions-statistics { 2025 description "cc ipv4 sessions"; 2026 uses cc-session-statsitics; 2027 } 2028 container cc-ipv6-sessions-statistics { 2029 description "cc ipv6 sessions"; 2030 uses cc-session-statsitics; 2031 } 2032 } 2033 } 2035 YANG module of OAM 2037 2039 5. CL model applicability 2041 ietf-connectionless-oam model defined in this document provides 2042 technology-independent abstraction of key OAM constructs for 2043 connectionless protocols. This model can be further extended to 2044 include technology specific details, e.g., adding new data nodes with 2045 technology specific functions and parameters into proper anchor 2046 points of the base model, so as to develop a technology-specific 2047 connectionless OAM model. 2049 This section demonstrates the usability of the connectionless YANG 2050 OAM data model to various connectionless OAM technologies, e.g., BFD, 2051 LSP ping. Note that, in this section, we only present several 2052 snippets of technology-specific model extensions for illustrative 2053 purposes. The complete model extensions should be worked on in 2054 respective protocol working groups. 2056 5.1. BFD Extension 2058 The following sections shows how the "ietf-connectionless-oam" model 2059 can be extended to cover BFD technology. For this purpose, a set of 2060 extension are introduced such as technology-type extension and test- 2061 point attributes extension. 2063 Note that in BFD WG, there is a BFD yang data model 2064 [I-D.ietf-bfd-yang] to be produced. Users can choose to use both BFD 2065 model and "ietf-connectioless-oam" as basis and augment the "ietf- 2066 connectionless-oam" model with bfd specific details. The bfd 2067 specific details can be the grouping defined in the BFD model. 2069 5.1.1. technology type extension 2071 No BFD technology type has been defined in the "ietf-connectionless- 2072 oam" model. Therefore a technology type extension is required in the 2073 LIME BFD model. 2075 The snippet below depicts an example of augmenting "bfd" type into 2076 the ietf-connectionless-oam": 2078 augment "/nd:networks/nd:network/nd:node/" 2079 +"coam:location-type/coam:ipv4-location-type" 2080 +"/coam:test-point-ipv4-location-list/" 2081 +"coam:test-point-locations/coam:technology" 2082 +"/coam:technology-string" 2083 { 2084 leaf bfd{ 2085 type string; 2086 } 2087 } 2089 5.1.2. test point attributes extension 2091 To derive a model for bfd technology, the "ietf-connectionless-oam" 2092 model can be extended. Some data nodes for bfd specific parameters 2093 can be defined and inserted into the proper "test-point-location" 2094 list. Or some new "location-type" cases can be added to support the 2095 some bfd technologies such as "bfd over MPLS-TE", etc. 2097 5.1.2.1. Define and insert new nodes into corresponding test-point- 2098 location 2100 In the "ietf-connectionless-oam" model, multiple "test-point- 2101 location" lists are defined under the "location-type" choice node. 2102 Therefore, to derive model for some bfd technologies( such as ip 2103 single-hop, ip multi-hops, etc), data nodes for bfd specific details 2104 can be defined and inserted into corresponding "test-point-locations" 2105 list. In this section, we reuse some groupings which are defined in 2106 [I-D.ietf-bfd-yang] to derive following example. 2108 The snippet below shows how the "ietf-connectionless-oam" model can 2109 be extended to "BFD IP single-hop": 2111 augment "/nd:networks/nd:network/nd:node/" 2112 +"coam:location-type/coam:ipv4-location-type" 2113 +"/coam:test-point-ipv4-location-list/" 2114 +"coam:test-point-locations" 2115 { 2116 container session-cfg { 2117 description "BFD IP single-hop session configuration"; 2118 list sessions { 2119 key "interface dest-addr"; 2120 description "List of IP single-hop sessions"; 2121 leaf interface { 2122 type if:interface-ref; 2123 description 2124 "Interface on which the BFD session is running."; 2125 } 2126 leaf dest-addr { 2127 type inet:ip-address; 2128 description "IP address of the peer"; 2129 } 2131 uses bfd:bfd-grouping-common-cfg-parms; 2132 uses bfd:bfd-grouping-echo-cfg-parms; 2133 } 2134 } 2135 } 2137 Edit note: To prevent new attribute to be defined in the CL extension 2138 model,[I-D.ietf-bfd-yang] should define the attributes that are used 2139 by CL model as grouping, then CL extension model can reuse these 2140 grouping. We will make accordingly change when these grouping are 2141 available in the BFD model. 2143 Similar augmentations can be defined to support other BFD 2144 technologies such as BFD IP multi-hop, BFD over MPLS, etc. 2146 5.1.2.2. Add new location-type cases 2148 In the "ietf-connectionless-oam" model, If no a proper "test-point- 2149 locations" can be extended, new "location-type" cases can be defined 2150 and inserted into the "location-type" choice node. 2152 Therefore, the model user can flexible add "location-type" to support 2153 other kinds of test point which are not defined in the "ietf- 2154 connectionless-oam" model. In this section, we add a new "location- 2155 type" case and reuse some groupings which are defined in 2156 [I-D.ietf-bfd-yang] to derive the following example. 2158 The snippet below shows how the "ietf-connectionless-oam" model can 2159 be extended to "BFD over MPLS-TE": 2161 augment "/nd:networks/nd:network/nd:node/coam:location-type"{ 2162 case te-location{ 2163 list test-point-location-list{ 2164 key "tunnel-name"; 2165 leaf tunnel-name{ 2166 type leafref{ 2167 path "/te:te/te:tunnels/te:tunnel/te:name"; 2168 } 2169 description 2170 "point to a te instance."; 2171 } 2172 uses bfd:bfd-grouping-common-cfg-parms; 2173 uses bfd-mpls:bfd-encap-cfg; 2174 } 2175 } 2176 } 2178 Similar augmentations can be defined to support other BFD 2179 technologies such as BFD over LAG, etc. 2181 5.2. LSP ping extension 2183 The following sections shows how the "ietf-connectionless-oam" model 2184 can be extended to cover LSP ping technology. For this purpose, a 2185 set of extension are introduced such as technology-type extension and 2186 test-point attributes extension. 2188 Note that in MPLS WG, there is a LSP Ping yang data model 2189 [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can 2190 choose to use both LSP Ping model and "ietf-connectioless-oam" as 2191 basis and augment the "ietf-connectionless-oam" model with LSP Ping 2192 specific details. The LSP Ping specific details can be the grouping 2193 defined in the LSP ping model. 2195 5.2.1. technology type extension 2197 No lsp-ping technology type has been defined in the "ietf- 2198 connectionless-oam" model. Therefore a technology type extension is 2199 required in the LIME LSP ping model. 2201 The snippet below depicts an example of augmenting "lsp-ping" type 2202 into the "ietf-connectionless-oam": 2204 augment "/nd:networks/nd:network/nd:node/" 2205 +"coam:location-type/coam:ipv4-location-type" 2206 +"/coam:test-point-ipv4-location-list/" 2207 +"coam:test-point-locations/coam:technology" 2208 +"/coam:technology-string" 2209 { 2210 leaf lsp-ping{ 2211 type string; 2212 } 2213 } 2215 5.2.2. test point attributes extension 2217 In order to derive a model for lsp-ping, the "ietf-connectionless- 2218 oam" model can be extended. Some data nodes for lsp-ping specific 2219 parameters can be defined and inserted into the proper "test-point- 2220 location" list. 2222 User can reuse the attributes or groupings which are defined in 2223 [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] to derive the "lime lsp 2224 ping" model. 2226 The snippet below depicts an example of augmenting lsp ping 2227 attributes into the "test-point-locations" list: 2229 augment "/nd:networks/nd:network/nd:node/" 2230 +"coam:location-type/coam:ipv4-location-type" 2231 +"/coam:test-point-ipv4-location-list/" 2232 +"coam:test-point-locations" 2233 { 2234 list lsp-ping { 2235 key "lsp-ping-name"; 2236 leaf lsp-ping-name { 2237 type string { 2238 length "1..31"; 2239 } 2240 mandatory "true"; 2241 description "LSP Ping test name."; 2242 ...... 2243 } 2245 Edit note: To prevent new attribute to be defined in the CL extension 2246 model,[I-D.draft-zheng-mpls-lsp-ping-yang-cfg] should define the 2247 attributes that are used by CL model as grouping, then CL extension 2248 model can reuse these grouping. We will make accordingly change when 2249 these grouping are available in the LSP ping model. 2251 6. Security Considerations 2253 TBD. 2255 7. IANA Considerations 2257 This document registers a URI in the IETF XML registry [RFC3688] 2258 [RFC3688]. Following the format in RFC 3688, the following 2259 registration is requested to be made: 2261 URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2263 Registrant Contact: The IESG. 2265 XML: N/A, the requested URI is an XML namespace. 2267 This document registers a YANG module in the YANG Module Names 2268 registry [RFC6020]. 2270 name: ietf-connectionless-oam namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam 2271 prefix: goam reference: RFC XXXX 2273 8. Normative References 2275 [I-D.draft-ietf-i2rs-yang-network-topo] 2276 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 2277 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 2278 Network Topologies", I-D draft-ietf-i2rs-yang-network- 2279 topo-05, July 2016. 2281 [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] 2282 Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. 2283 Rahman, "Yang Data Model for LSP-PING", I-D draft-zheng- 2284 mpls-lsp-ping-yang-cfg-03, March 2016. 2286 [I-D.ietf-bfd-yang] 2287 Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and 2288 G. Mirsky, "Yang Data Model for Bidirectional Forwarding 2289 Detection (BFD)", draft-ietf-bfd-yang-03 (work in 2290 progress), July 2016. 2292 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2293 Requirement Levels", BCP 14, RFC 2119, 2294 DOI 10.17487/RFC2119, March 1997, 2295 . 2297 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2298 the Network Configuration Protocol (NETCONF)", RFC 6020, 2299 DOI 10.17487/RFC6020, October 2010, 2300 . 2302 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2303 and A. Bierman, Ed., "Network Configuration Protocol 2304 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2305 . 2307 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2308 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2309 . 2311 [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, 2312 September 1981. 2314 Authors' Addresses 2315 Deepak Kumar 2316 CISCO Systems 2317 510 McCarthy Blvd 2318 Milpitas, CA 95035 2319 USA 2321 Email: dekumar@cisco.com 2323 Michael Wang 2324 Huawei Technologies,Co.,Ltd 2325 101 Software Avenue, Yuhua District 2326 Nanjing 210012 2327 China 2329 Email: wangzitao@huawei.com 2331 Qin Wu 2332 Huawei 2333 101 Software Avenue, Yuhua District 2334 Nanjing, Jiangsu 210012 2335 China 2337 Email: bill.wu@huawei.com 2339 Reshad Rahman 2340 CISCO Systems 2341 2000 Innovation Drive 2342 KANATA, ONTARIO K2K 3E8 2343 CANADA 2345 Email: rrahman@cisco.com 2347 Srihari Raghavan 2348 CISCO Systems 2349 TRIL INFOPARK SEZ, Ramanujan IT City 2350 NEVILLE BLOCK, 2nd floor, Old Mahabalipuram Road 2351 CHENNAI, TAMIL NADU 600113 2352 INDIA 2354 Email: srihari@cisco.com