idnits 2.17.1 draft-asechoud-rtgwg-qos-model-00.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: ---------------------------------------------------------------------------- == It seems as if not all pages are separated by form feeds - found 0 form feeds but 72 pages Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 189 has weird spacing: '...cal-not boo...' == Line 211 has weird spacing: '...cal-not boo...' == Line 213 has weird spacing: '...on-type ide...' == Line 233 has weird spacing: '...on-type ide...' == Line 237 has weird spacing: '...on-type ide...' == (26 more instances...) -- The document date (October 28, 2016) is 2731 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Downref: Normative reference to an Informational RFC: RFC 2697 ** Downref: Normative reference to an Informational RFC: RFC 2698 ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) Summary: 4 errors (**), 0 flaws (~~), 8 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Choudhary 3 Internet-Draft M. Jethanandani 4 Intended status: Standards Track Cisco Systems 5 Expires: May 1, 2017 N. Strahle 6 E. Aries 7 Juniper Networks 8 I. Chen 9 Kuatro Technologies 10 October 28, 2016 12 YANG Model for QoS 13 draft-asechoud-rtgwg-qos-model-00 15 Abstract 17 This document describes a YANG model for Quality of Service (QoS) 18 configuration and operational parameters. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on May 1, 2017. 37 Copyright Notice 39 Copyright (c) 2016 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 56 3. QoS Model Design . . . . . . . . . . . . . . . . . . . . . . 3 57 4. DiffServ Model Design . . . . . . . . . . . . . . . . . . . . 3 58 5. Modules Tree Structure . . . . . . . . . . . . . . . . . . . 4 59 6. Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 60 6.1. IETF-QOS-CLASSIFIER . . . . . . . . . . . . . . . . . . . 9 61 6.2. IETF-QOS-POLICY . . . . . . . . . . . . . . . . . . . . . 15 62 6.3. IETF-QOS-ACTION . . . . . . . . . . . . . . . . . . . . . 18 63 6.4. IETF-QOS-TARGET . . . . . . . . . . . . . . . . . . . . . 30 64 6.5. IETF-DIFFSERV . . . . . . . . . . . . . . . . . . . . . . 36 65 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 40 66 8. Security Considerations . . . . . . . . . . . . . . . . . . . 40 67 9. Revision Tracking . . . . . . . . . . . . . . . . . . . . . . 40 68 9.1. Changes since Revision 00 . . . . . . . . . . . . . . . . 40 69 10. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 40 70 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 71 11.1. Normative References . . . . . . . . . . . . . . . . . . 40 72 11.2. Informative References . . . . . . . . . . . . . . . . . 41 73 Appendix A. Company A, Company B and Company C examples . . . . 41 74 A.1. Example of Company A Diffserv Model . . . . . . . . . . . 42 75 A.2. Example of Company B Diffserv Model . . . . . . . . . . . 52 76 A.3. Example of Company C Diffserv Model . . . . . . . . . . . 65 77 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 72 79 1. Introduction 81 This document defines a base YANG [RFC6020] data module for Quality 82 of Service (QoS) configuration and operational parameters. 83 Differentiated Services (DiffServ) module is an augmentation of the 84 base QoS model. Remote Procedure Calls (RPC) or notification 85 definition is currently not part of this document and will be added 86 later if necessary. QoS base modules define a basic building blocks 87 to define a classifier, policy, action and target. The base modules 88 have been augmented to include packet match fields, action 89 parameters, and statistics data to define the DiffServ module. It is 90 left up to individual vendors to stitch actions like queues, random- 91 detect (RED) and vendor specific parameters of the DiffServ policy 92 definitions. Designing the module in this manner allows for a very 93 flexible and extensible module that should fit in with most of the 94 vendor requirements. The DiffServ model is based on DiffServ 95 architecture, and various references have been made to available 96 standard architecture documents. 98 DiffServ is a preferred approach for network service providers to 99 offer services to different customers based on their network Quality- 100 of-Service (QoS) objectives. The traffic streams are differentiated 101 based on DiffServ Code Points (DSCP) carried in the IP header of each 102 packet. The DSCP markings are applied by upstream node or by the 103 edge router on entry to the DiffServ network. 105 2. Terminology 107 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 108 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 109 document are to be interpreted as described in [RFC2119]. 111 3. QoS Model Design 113 A classifier consists of packets which may be grouped when a logical 114 set of rules are applied on different packet header fields. The 115 grouping may be based on different values or range of values of same 116 packet header field, presence or absence of some values or range of 117 values of a packet field or a combination thereof. The QoS 118 classifier is defined in the ietf-qos-classifier module. 120 A classifier entry contains one or more packet conditioning 121 functions. A packet conditioning function is typically based on 122 direction of traffic and may drop, mark or delay network packets. A 123 set of classifier entries with corresponding conditioning functions 124 when arranged in order of priority represents a QoS policy. A QoS 125 policy may contain one or more classifier entries. These are defined 126 in ietf-qos-policy module. 128 Actions are configured in line with respect to the policy module. 129 These include marking, dropping or shaping. Actions are defined in 130 the ietf-qos-action module. 132 A meter qualifies if the traffic arrival rate is based on agreed upon 133 rate and variability. A meter is modeled based on commonly used 134 alogrithms in industry, Single Rate Tri Color Marking (srTCM) 135 [RFC2697] meter, Two Rate Tri Color Marking (trTCM) [RFC2698] meter, 136 and Single Rate Two Color Marking meter. Different vendors can 137 extend it with other types of meters as well. 139 4. DiffServ Model Design 141 DiffServ architecture [RFC3289] and [RFC2475] describe the 142 architecture as a simple model where traffic entering a network is 143 classified and possibly conditioned at the boundary of the network 144 and assigned a different Behavior Aggregate (BA). Each BA is 145 identified by a specific value of DSCP, and is used to select a Per 146 Hop Behavior (PHB). 148 The packet classification policy identifies the subset of traffic 149 which may receive a DiffServ by being conditioned or mapped. Packet 150 classifiers select packets within a stream based on the content of 151 some portion of the packet header. There are two types of 152 classifiers, the BA classifier, and the Multi-Field (MF) classifier 153 which selects packets based on a value which is combination of one or 154 more header fields. In the ietf-diffserv module, this is realized by 155 augmenting the QoS classification module. 157 Traffic conditioning includes metering, shaping and/or marking. A 158 meter is used to measure the traffic against a given traffic profile. 159 The traffic profile specifies the temporal property of the traffic. 160 A packet that arrives is first determined to be in or out of the 161 profile, which will result in the action of marked, dropped or 162 shaped. This is realized in vendor specific modules based on the 163 parameters defined in action module. The metering parameters are 164 augmented to the QoS policy module when metering is defined inline, 165 and to the metering template when metering profile is referred in 166 policy module. 168 Finally, statistics are realized in the ietf-diffserv module by 169 augmenting the QoS target module. 171 5. Modules Tree Structure 173 This document defines five YANG modules - four QoS base modules and 174 one DiffServ module. 176 ietf-qos-classifier consists of classifier entries identified by a 177 classifier entry name. Each entry MAY contain a list of filter 178 entries. When no filter entry is present in a classifier entry, it 179 matches all traffic. 181 module: ietf-qos-classifier 182 +--rw classifiers 183 +--rw classifier-entry* [classifier-entry-name] 184 +--rw classifier-entry-name string 185 +--rw classifier-entry-descr? string 186 +--rw classifier-entry-filter-operation? identityref 187 +--rw filter-entry* [filter-type filter-logical-not] 188 +--rw filter-type identityref 189 +--rw filter-logical-not boolean 191 An ietf-qos-policy module contains list of policy objects identified 192 by a policy name and policy type which MUST be provided. With 193 different values of policy types, each vendor MAY define their own 194 construct of policy for different QoS functionalities. Each vendor 195 MAY augment classifier entry in a policy definition with a set of 196 actions. 198 module: ietf-qos-policy 199 +--rw policies 200 +--rw policy-entry* [policy-name policy-type] 201 +--rw policy-name string 202 +--rw policy-type identityref 203 +--rw policy-descr? string 204 +--rw classifier-entry* [classifier-entry-name] 205 +--rw classifier-entry-name string 206 +--rw classifier-entry-inline? boolean 207 +--rw classifier-entry-filter-oper? identityref 208 +--rw filter-entry* [filter-type filter-logical-not] 209 {policy-inline-classifier-config}? 210 | +--rw filter-type identityref 211 | +--rw filter-logical-not boolean 212 +--rw classifier-action-entry-cfg* [action-type] 213 +--rw action-type identityref 214 +--rw (action-cfg-params)? 216 ietf-qos-action module contains grouping of set of QoS actions. 217 These include metering, marking, dropping and shaping. Marking sets 218 DiffServ codepoint value in the classified packet. Color-aware and 219 Color-blind meters are augmented by vendor specific modules based on 220 the parameters defined in action module. 222 module: ietf-qos-action 223 +--rw meter-template 224 +--rw meter-entry* [meter-name] {meter-template-support}? 225 +--rw meter-name string 226 +--rw (meter-type)? 227 +--:(one-rate-two-color-meter-type) 228 | +--rw one-rate-two-color-meter 229 | +--rw meter-rate? uint64 230 | +--rw meter-burst? uint64 231 | +--rw conform-action 232 | | +--rw meter-action-params* [meter-action-type] 233 | | +--rw meter-action-type identityref 234 | | +--rw (meter-action-val)? 235 | +--rw exceed-action 236 | +--rw meter-action-params* [meter-action-type] 237 | +--rw meter-action-type identityref 238 | +--rw (meter-action-val)? 239 +--:(one-rate-tri-color-meter-type) 240 | +--rw one-rate-tri-color-meter 241 | +--rw committed-rate? uint64 242 | +--rw committed-burst? uint64 243 | +--rw excess-burst? uint64 244 | +--rw conform-action 245 | | +--rw meter-action-params* [meter-action-type] 246 | | +--rw meter-action-type identityref 247 | | +--rw (meter-action-val)? 248 | +--rw exceed-action 249 | | +--rw meter-action-params* [meter-action-type] 250 | | +--rw meter-action-type identityref 251 | | +--rw (meter-action-val)? 252 | +--rw violate-action 253 | +--rw meter-action-params* [meter-action-type] 254 | +--rw meter-action-type identityref 255 | +--rw (meter-action-val)? 256 +--:(two-rate-tri-color-meter-type) 257 +--rw two-rate-tri-color-meter 258 +--rw committed-rate? uint64 259 +--rw committed-burst? uint64 260 +--rw peak-rate? uint64 261 +--rw peak-burst? uint64 262 +--rw conform-action 263 | +--rw meter-action-params* [meter-action-type] 264 | +--rw meter-action-type identityref 265 | +--rw (meter-action-val)? 266 +--rw exceed-action 267 | +--rw meter-action-params* [meter-action-type] 268 | +--rw meter-action-type identityref 269 | +--rw (meter-action-val)? 270 +--rw violate-action 271 +--rw meter-action-params* [meter-action-type] 272 +--rw meter-action-type identityref 273 +--rw (meter-action-val)? 275 ietf-qos-target module contains reference of qos-policy for either 276 direction of network traffic and augments ietf-interfaces [RFC7223] 277 module. Classifier counters are associated with a target. 279 module: ietf-qos-target 280 augment /if:interfaces/if:interface: 281 +--rw qos-target-entry* [direction policy-type] 282 +--rw direction identityref 283 +--rw policy-type identityref 284 +--rw policy-name string 285 +--ro qos-target-classifier-statistics* 286 +--ro classifier-entry-name? string 287 +--ro classifier-entry-statistics 288 +--ro classified-pkts? uint64 289 +--ro classified-bytes? uint64 290 +--ro classified-rate? uint64 292 Diffserv module augments QoS classifier module. Many of the YANG 293 types defined in [RFC6991] are represented as leafs in the classifier 294 module. 296 Metering and marking actions are realized by augmenting the QoS 297 policy-module. Any queuing, AQM and scheduling actions are part of 298 vendor specific augmentation. Statistics are realized by augmenting 299 the QoS target module. 301 module: ietf-diffserv 302 augment /classifier:classifiers/classifier:classifier-entry 303 /classifier:filter-entry: 304 +--rw (filter-param)? 305 +--:(dscp) 306 | +--rw dscp-cfg* [dscp-min dscp-max] 307 | +--rw dscp-min inet:dscp 308 | +--rw dscp-max inet:dscp 309 +--:(source-ip-address) 310 | +--rw source-ip-address-cfg* [source-ip-addr] 311 | +--rw source-ip-addr inet:ip-prefix 312 +--:(destination-ip-address) 313 | +--rw destination-ip-address-cfg* [destination-ip-addr] 314 | +--rw destination-ip-addr inet:ip-prefix 315 +--:(source-port) 316 | +--rw source-port-cfg* [source-port-min source-port-max] 317 | +--rw source-port-min inet:port-number 318 | +--rw source-port-max inet:port-number 319 +--:(destination-port) 320 | +--rw destination-port-cfg* 321 [destination-port-min destination-port-max] 322 | +--rw destination-port-min inet:port-number 323 | +--rw destination-port-max inet:port-number 324 +--:(protocol) 325 +--rw protocol-cfg* [protocol-min protocol-max] 326 +--rw protocol-min uint8 327 +--rw protocol-max uint8 328 augment /policy:policies/policy:policy-entry 329 /policy:classifier-entry/policy:filter-entry: 330 +--rw (filter-params)? 331 +--:(dscp) 332 | +--rw dscp-cfg* [dscp-min dscp-max] 333 | +--rw dscp-min inet:dscp 334 | +--rw dscp-max inet:dscp 335 +--:(source-ip-address) 336 | +--rw source-ip-address-cfg* [source-ip-addr] 337 | +--rw source-ip-addr inet:ip-prefix 338 +--:(destination-ip-address) 339 | +--rw destination-ip-address-cfg* [destination-ip-addr] 340 | +--rw destination-ip-addr inet:ip-prefix 341 +--:(source-port) 342 | +--rw source-port-cfg* [source-port-min source-port-max] 343 | +--rw source-port-min inet:port-number 344 | +--rw source-port-max inet:port-number 345 +--:(destination-port) 346 | +--rw destination-port-cfg* 347 [destination-port-min destination-port-max] 348 | +--rw destination-port-min inet:port-number 349 | +--rw destination-port-max inet:port-number 350 +--:(protocol) 351 +--rw protocol-cfg* [protocol-min protocol-max] 352 +--rw protocol-min uint8 353 +--rw protocol-max uint8 354 augment /policy:policies/policy:policy-entry 355 /policy:classifier-entry/policy:classifier-action-entry-cfg: 356 +--rw (action-cfg-params)? 357 +--:(dscp-marking) 358 +--rw dscp-cfg 359 +--rw dscp? inet:dscp 360 augment /if:interfaces/if:interface/target:qos-target-entry 361 /target:qos-target-classifier-statistics: 362 +--ro diffserv-action-statistics 363 +--ro one-rate-two-color-meter-statistics 364 | +--ro conform-pkts? uint64 365 | +--ro conform-bytes? uint64 366 | +--ro conform-rate? uint64 367 | +--ro exceed-pkts? uint64 368 | +--ro exceed-bytes? uint64 369 | +--ro exceed-rate? uint64 370 +--ro one-rate-tri-color-meter-statistics 371 | +--ro conform-pkts? uint64 372 | +--ro conform-bytes? uint64 373 | +--ro conform-rate? uint64 374 | +--ro exceed-pkts? uint64 375 | +--ro exceed-bytes? uint64 376 | +--ro exceed-rate? uint64 377 | +--ro violate-pkts? uint64 378 | +--ro violate-bytes? uint64 379 | +--ro violate-rate? uint64 380 +--ro two-rate-tri-color-meter-statistics 381 +--ro conform-pkts? uint64 382 +--ro conform-bytes? uint64 383 +--ro conform-rate? uint64 384 +--ro exceed-pkts? uint64 385 +--ro exceed-bytes? uint64 386 +--ro exceed-rate? uint64 387 +--ro violate-pkts? uint64 388 +--ro violate-bytes? uint64 389 +--ro violate-rate? uint64 391 6. Modules 393 6.1. IETF-QOS-CLASSIFIER 395 file "ietf-qos-classifier@2016-03-03.yang" 396 module ietf-qos-classifier { 397 yang-version 1; 398 namespace "urn:ietf:params:xml:ns:yang:ietf-qos-classifier"; 399 prefix classifier; 400 import ietf-inet-types { 401 prefix inet; 402 } 403 organization "IETF RTG (Routing Area) Working Group"; 404 contact 405 "WG Web: 406 WG List: 407 WG Chair: Chris Bowers 408 409 WG Chair: Jeff Tantsura 410 411 Editor: Aseem Choudhary 412 413 Editor: Mahesh Jethanandani 414 415 Editor: Norm Strahle 416 "; 417 description 418 "This module contains a collection of YANG definitions for 419 configuring qos specification implementations. 420 Copyright (c) 2014 IETF Trust and the persons identified as 421 authors of the code. All rights reserved. 422 Redistribution and use in source and binary forms, with or 423 without modification, is permitted pursuant to, and subject 424 to the license terms contained in, the Simplified BSD License 425 set forth in Section 4.c of the IETF Trust's Legal Provisions 426 Relating to IETF Documents 427 (http://trustee.ietf.org/license-info). 428 This version of this YANG module is part of RFC XXXX; see 429 the RFC itself for full legal notices."; 430 revision 2016-03-03 { 431 description 432 "Latest revision of qos base classifier module"; 433 reference "RFC XXXX"; 434 } 435 feature policy-inline-classifier-config { 436 description 437 " This feature allows classifier configuration 438 directly under policy."; 439 } 440 identity filter-type { 441 description 442 "This is identity of base filter-type"; 443 } 444 identity dscp { 445 base filter-type; 446 description 447 "Differentiated services code point filter-type"; 448 } 449 identity source-ip-address { 450 base filter-type; 451 description 452 "source ipv4 and ipv6 address filter-type"; 453 } 454 identity destination-ip-address { 455 base filter-type; 456 description 457 "destination ipv4 and ipv6 address filter-type"; 458 } 459 identity source-port { 460 base filter-type; 461 description 462 "source port filter-type"; 463 } 464 identity destination-port { 465 base filter-type; 466 description 467 "destination port filter-type"; 468 } 469 identity protocol { 470 base filter-type; 471 description 472 "protocol type filter-type"; 473 } 474 identity classifier-entry-filter-operation-type { 475 description 476 "Classifier entry filter logical operation"; 477 } 478 identity match-any-filter { 479 base classifier-entry-filter-operation-type; 480 description 481 "Classifier entry filter logical OR operation"; 482 } 483 identity match-all-filter { 484 base classifier-entry-filter-operation-type; 485 description 486 "Classifier entry filter logical AND operation"; 487 } 488 grouping dscp-cfg { 489 list dscp-cfg { 490 key "dscp-min dscp-max"; 491 description 492 "list of dscp ranges"; 493 leaf dscp-min { 494 type inet:dscp; 495 description 496 "Minimum value of dscp min-max range"; 497 } 498 leaf dscp-max { 499 type inet:dscp; 500 description 501 "maximum value of dscp min-max range"; 502 } 503 } 504 description 505 "Filter grouping containing list of dscp ranges"; 506 } 507 grouping source-ip-address-cfg { 508 list source-ip-address-cfg { 509 key "source-ip-addr"; 510 description 511 "list of source ipv4 or ipv6 address"; 512 leaf source-ip-addr { 513 type inet:ip-prefix; 514 description 515 "source ipv4 or ipv6 prefix"; 516 } 517 } 518 description 519 "Filter grouping containing list of source ip addresses"; 520 } 521 grouping destination-ip-address-cfg { 522 list destination-ip-address-cfg { 523 key "destination-ip-addr"; 524 description 525 "list of destination ipv4 or ipv6 address"; 526 leaf destination-ip-addr { 527 type inet:ip-prefix; 528 description 529 "destination ipv4 or ipv6 prefix"; 530 } 531 } 532 description 533 "Filter grouping containing list of destination ip address"; 534 } 535 grouping source-port-cfg { 536 list source-port-cfg { 537 key "source-port-min source-port-max"; 538 description 539 "list of ranges of source port"; 540 leaf source-port-min { 541 type inet:port-number; 542 description 543 "minimum value of source port range"; 544 } 545 leaf source-port-max { 546 type inet:port-number; 547 description 548 "maximum value of source port range"; 549 } 550 } 551 description 552 "Filter grouping containing list of source port ranges"; 553 } 554 grouping destination-port-cfg { 555 list destination-port-cfg { 556 key "destination-port-min destination-port-max"; 557 description 558 "list of ranges of destination port"; 559 leaf destination-port-min { 560 type inet:port-number; 561 description 562 "minimum value of destination port range"; 563 } 564 leaf destination-port-max { 565 type inet:port-number; 566 description 567 "maximum value of destination port range"; 568 } 569 } 570 description 571 "Filter grouping containing list of destination port ranges"; 572 } 573 grouping protocol-cfg { 574 list protocol-cfg { 575 key "protocol-min protocol-max"; 576 description 577 "list of ranges of protocol values"; 578 leaf protocol-min { 579 type uint8 { 580 range "0..255"; 581 } 582 description 583 "minimum value of protocol range"; 584 } 585 leaf protocol-max { 586 type uint8 { 587 range "0..255"; 588 } 589 description 590 "maximum value of protocol range"; 591 } 592 } 593 description 594 "Filter grouping containing list of Protocol ranges"; 595 } 596 grouping filters { 597 description 598 "Filters types in a Classifier entry"; 599 leaf filter-type { 600 type identityref { 601 base filter-type; 602 } 603 description 604 "This leaf defines type of the filter"; 605 } 606 leaf filter-logical-not { 607 type boolean; 608 description 609 " 610 This is logical-not operator for a filter. When true, it 611 indicates filter looks for absence of a pattern defined 612 by the filter 613 "; 614 } 616 } 617 grouping classifier-entry-generic-attr { 618 description 619 " 620 Classifier generic attributes like name, 621 description, operation type 622 "; 623 leaf classifier-entry-name { 624 type string; 625 description 626 "classifier entry name"; 627 } 628 leaf classifier-entry-descr { 629 type string; 630 description 631 "classifier entry description statement"; 632 } 633 leaf classifier-entry-filter-operation { 634 type identityref { 635 base classifier-entry-filter-operation-type; 636 } 637 default "match-any-filter"; 638 description 639 "Filters are applicable as match-any or match-all filters"; 640 } 641 } 642 grouping classifier-entry-inline-attr { 643 description 644 "attributes of inline classifier in a policy"; 645 leaf classifier-entry-inline { 646 type boolean; 647 default "false"; 648 description 649 "Indication of inline classifier entry"; 650 } 651 leaf classifier-entry-filter-oper { 652 type identityref { 653 base classifier-entry-filter-operation-type; 654 } 655 default "match-all-filter"; 656 description 657 "Filters are applicable as match-any or match-all filters"; 658 } 659 list filter-entry { 660 if-feature policy-inline-classifier-config; 661 must "classifier-entry-inline == true" { 662 description 663 "For inline filter configuration, inline attribute 664 must be true"; 665 } 666 key "filter-type filter-logical-not"; 667 uses filters; 668 description 669 "Filters configured inline in a policy"; 670 } 671 } 672 container classifiers { 673 description 674 "list of classifier entry"; 675 list classifier-entry { 676 key "classifier-entry-name"; 677 description 678 "each classifier entry contains a list of filters"; 679 uses classifier-entry-generic-attr; 680 list filter-entry { 681 key "filter-type filter-logical-not"; 682 uses filters; 683 description 684 "Filter entry configuration"; 685 } 686 } 687 } 688 } 689 691 6.2. IETF-QOS-POLICY 693 file "ietf-qos-policy@2016-03-03.yang" 694 module ietf-qos-policy { 695 yang-version 1; 696 namespace "urn:ietf:params:xml:ns:yang:ietf-qos-policy"; 697 prefix policy; 698 import ietf-qos-classifier { 699 prefix classifier; 700 } 701 organization "IETF RTG (Routing Area) Working Group"; 702 contact 703 "WG Web: 704 WG List: 705 WG Chair: Chris Bowers 706 707 WG Chair: Jeff Tantsura 708 709 Editor: Aseem Choudhary 710 711 Editor: Mahesh Jethanandani 712 713 Editor: Norm Strahle 714 "; 715 description 716 "This module contains a collection of YANG definitions for 717 configuring qos specification implementations. 718 Copyright (c) 2014 IETF Trust and the persons identified as 719 authors of the code. All rights reserved. 720 Redistribution and use in source and binary forms, with or 721 without modification, is permitted pursuant to, and subject 722 to the license terms contained in, the Simplified BSD License 723 set forth in Section 4.c of the IETF Trust's Legal Provisions 724 Relating to IETF Documents 725 (http://trustee.ietf.org/license-info). 726 This version of this YANG module is part of RFC XXXX; see 727 the RFC itself for full legal notices."; 728 revision 2016-03-03 { 729 description 730 "Latest revision of qos policy"; 731 reference "RFC XXXX"; 732 } 733 identity policy-type { 734 description 735 "This base identity type defines policy-types"; 736 } 737 grouping policy-generic-attr { 738 description 739 "Policy Attributes"; 740 leaf policy-name { 741 type string; 742 description 743 "policy name"; 744 } 745 leaf policy-type { 746 type identityref { 747 base policy-type; 748 } 749 description 750 "policy type"; 751 } 752 leaf policy-descr { 753 type string; 754 description 755 "policy description"; 756 } 757 } 758 identity action-type { 759 description 760 "This base identity type defines action-types"; 761 } 762 grouping classifier-action-entry-cfg { 763 description 764 "List of Configuration of classifier & associated actions"; 765 list classifier-action-entry-cfg { 766 key "action-type"; 767 ordered-by user; 768 description 769 "Configuration of classifier & associated actions"; 770 leaf action-type { 771 type identityref { 772 base action-type; 773 } 774 description 775 "This defines action type "; 776 } 777 choice action-cfg-params { 778 description 779 "Choice of action types"; 780 } 781 } 782 } 783 container policies { 784 description 785 "list of policy templates"; 786 list policy-entry { 787 key "policy-name policy-type"; 788 description 789 "policy template"; 790 uses policy-generic-attr; 791 list classifier-entry { 792 key "classifier-entry-name"; 793 ordered-by user; 794 description 795 "Classifier entry configuration in a policy"; 796 leaf classifier-entry-name { 797 type string; 798 description 799 "classifier entry name"; 800 } 801 uses classifier:classifier-entry-inline-attr; 802 uses classifier-action-entry-cfg; 803 } 804 } 805 } 806 } 807 809 6.3. IETF-QOS-ACTION 811 file "ietf-qos-action@2016-06-15.yang" 812 module ietf-qos-action { 813 namespace "urn:ietf:params:xml:ns:yang:ietf-qos-action"; 814 prefix action; 815 import ietf-inet-types { 816 prefix inet; 817 } 818 import ietf-qos-policy { 819 prefix policy; 820 } 821 organization "IETF RTG (Routing Area) Working Group"; 822 contact 823 "WG Web: 824 WG List: 825 WG Chair: Chris Bowers 826 827 WG Chair: Jeff Tantsura 828 829 Editor: Aseem Choudhary 830 831 Editor: Mahesh Jethanandani 832 833 Editor: Norm Strahle 834 "; 835 description 836 "This module contains a collection of YANG definitions for 837 configuring qos specification implementations. 838 Copyright (c) 2014 IETF Trust and the persons identified as 839 authors of the code. All rights reserved. 840 Redistribution and use in source and binary forms, with or 841 without modification, is permitted pursuant to, and subject 842 to the license terms contained in, the Simplified BSD License 843 set forth in Section 4.c of the IETF Trust's Legal Provisions 844 Relating to IETF Documents 845 (http://trustee.ietf.org/license-info). 846 This version of this YANG module is part of RFC XXXX; see 847 the RFC itself for full legal notices."; 848 revision 2016-06-15 { 849 description 850 "Latest revision for qos actions"; 851 reference "RFC XXXX"; 852 } 853 feature meter-template-support { 854 description 855 " This feature allows support of meter-template."; 856 } 857 identity rate-unit-type { 858 description 859 "base rate-unit type"; 860 } 861 identity bits-per-second { 862 base rate-unit-type; 863 description 864 "bits per second identity"; 865 } 866 identity kilo-bits-per-second { 867 base rate-unit-type; 868 description 869 "kilo bits per second identity"; 870 } 871 identity mega-bits-per-second { 872 base rate-unit-type; 873 description 874 "mega bits per second identity"; 875 } 876 identity giga-bits-per-second { 877 base rate-unit-type; 878 description 879 "mega bits per second identity"; 880 } 881 identity percent { 882 base rate-unit-type; 883 description 884 "percentage"; 885 } 887 identity dscp-marking { 888 base policy:action-type; 889 description 890 "dscp marking action type"; 891 } 892 identity meter-inline { 893 base policy:action-type; 894 description 895 "meter-inline action type"; 896 } 897 identity meter-reference { 898 base policy:action-type; 899 description 900 "meter reference action type"; 901 } 902 identity min-rate { 903 base policy:action-type; 904 description 905 "min-rate action type"; 906 } 907 identity max-rate { 908 base policy:action-type; 909 description 910 "max-rate action type"; 911 } 912 identity queue { 913 base policy:action-type; 914 description 915 "queue action type"; 916 } 917 identity schedular { 918 base policy:action-type; 919 description 920 "schedular action type"; 921 } 922 identity discard { 923 base policy:action-type; 924 description 925 "discard action type"; 926 } 927 identity child-policy { 928 base policy:action-type; 929 description 930 "child-policy action type"; 931 } 932 identity count { 933 base policy:action-type; 934 description 935 "discard action type"; 936 } 938 identity meter-type { 939 description 940 "This base identity type defines meter types"; 941 } 942 identity one-rate-two-color-meter-type { 943 base meter-type; 944 description 945 "one rate two color meter type"; 946 } 947 identity one-rate-tri-color-meter-type { 948 base meter-type; 949 description 950 "one rate three color meter type"; 951 } 952 identity two-rate-tri-color-meter-type { 953 base meter-type; 954 description 955 "two rate three color meter action type"; 956 } 958 identity drop-type { 959 description 960 "drop algorithm"; 961 } 962 identity tail-drop { 963 base drop-type; 964 description 965 "tail drop algorithm"; 966 } 967 identity random-detect { 968 base drop-type; 969 description 970 "random detect algorithm"; 971 } 973 identity meter-action-type { 974 description 975 "action type in a meter"; 976 } 977 identity meter-action-drop { 978 base meter-action-type; 979 description 980 "drop action type in a meter"; 981 } 982 identity meter-action-mark-dscp { 983 base meter-action-type; 984 description 985 "dscp mark action type in a meter"; 986 } 988 grouping rate-value-unit { 989 leaf rate-value { 990 type uint64; 991 description 992 "rate value"; 993 } 994 leaf rate-unit { 995 type identityref { 996 base rate-unit-type; 997 } 998 description 999 "rate unit"; 1000 } 1001 description 1002 "rate value and unit grouping"; 1003 } 1004 grouping burst { 1005 description 1006 "burst size or interval configuration"; 1007 choice burst-type { 1008 case size { 1009 leaf burst-size { 1010 type uint64; 1011 units "bytes"; 1012 description 1013 "burst size"; 1014 } 1015 } 1016 case interval { 1017 leaf burst-interval { 1018 type uint64; 1019 units "microsecond"; 1020 description 1021 "burst interval"; 1022 } 1023 } 1024 description 1025 "Choice of burst type"; 1026 } 1027 } 1029 grouping threshold { 1030 description 1031 "Threshold Parameters"; 1032 container threshold { 1033 description 1034 "threshold"; 1035 choice threshold-type { 1036 case size { 1037 leaf threshold-size { 1038 type uint64; 1039 units "bytes"; 1040 description 1041 "Threshold size"; 1042 } 1043 } 1044 case interval { 1045 leaf threshold-interval { 1046 type uint64; 1047 units "microsecond"; 1048 description 1049 "Threshold interval"; 1050 } 1051 } 1052 description 1053 "Choice of threshold type"; 1054 } 1055 } 1056 } 1058 grouping drop { 1059 container drop-cfg { 1060 leaf drop-action { 1061 type empty; 1062 description 1063 "always drop algorithm"; 1064 } 1065 description 1066 "the drop action"; 1067 } 1068 description 1069 "always drop grouping"; 1070 } 1072 grouping queuelimit { 1073 container qlimit-thresh { 1074 uses threshold; 1075 description 1076 "the queue limit"; 1077 } 1078 description 1079 "the queue limit beyond which queue will not hold any packet"; 1080 } 1082 grouping meter-action-params { 1083 description 1084 "meter action parameters"; 1085 list meter-action-params { 1086 key "meter-action-type"; 1087 ordered-by user; 1088 description 1089 "Configuration of basic-meter & associated actions"; 1090 leaf meter-action-type { 1091 type identityref { 1092 base meter-action-type; 1093 } 1094 description 1095 "meter action type"; 1096 } 1097 choice meter-action-val { 1098 description 1099 " meter action based on choice of meter action type"; 1100 } 1101 } 1102 } 1104 grouping one-rate-two-color-meter { 1105 container one-rate-two-color-meter { 1106 description 1107 "single rate two color marker meter"; 1108 leaf meter-rate { 1109 type uint64; 1110 units "bits-per-second"; 1111 description 1112 "meter rate"; 1113 } 1114 leaf meter-burst { 1115 type uint64; 1116 units "byes"; 1117 description 1118 "burst size"; 1119 } 1120 container conform-action { 1121 uses meter-action-params; 1122 description 1123 "conform action"; 1124 } 1125 container exceed-action { 1126 uses meter-action-params; 1127 description 1128 "exceed action"; 1129 } 1130 } 1131 description 1132 "single rate two color marker meter attributes"; 1133 } 1135 grouping one-rate-tri-color-meter { 1136 container one-rate-tri-color-meter { 1137 description 1138 "single rate three color meter"; 1139 leaf committed-rate { 1140 type uint64; 1141 units "bits-per-second"; 1142 description 1143 "meter rate"; 1144 } 1145 leaf committed-burst { 1146 type uint64; 1147 units "byes"; 1148 description 1149 "commited burst size"; 1150 } 1151 leaf excess-burst { 1152 type uint64; 1153 units "byes"; 1154 description 1155 "excess burst size"; 1156 } 1157 container conform-action { 1158 uses meter-action-params; 1159 description 1160 "conform, or green action"; 1161 } 1162 container exceed-action { 1163 uses meter-action-params; 1164 description 1165 "exceed, or yellow action"; 1166 } 1167 container violate-action { 1168 uses meter-action-params; 1169 description 1170 "violate, or red action"; 1171 } 1172 } 1173 description 1174 "one-rate-tri-color-meter attributes"; 1175 } 1177 grouping two-rate-tri-color-meter { 1178 container two-rate-tri-color-meter { 1179 description 1180 "two rate three color meter"; 1181 leaf committed-rate { 1182 type uint64; 1183 units "bits-per-second"; 1184 description 1185 "meter rate"; 1186 } 1187 leaf committed-burst { 1188 type uint64; 1189 units "byes"; 1190 description 1191 "commited burst size"; 1192 } 1193 leaf peak-rate { 1194 type uint64; 1195 units "bits-per-second"; 1196 description 1197 "meter rate"; 1198 } 1199 leaf peak-burst { 1200 type uint64; 1201 units "byes"; 1202 description 1203 "commited burst size"; 1204 } 1205 container conform-action { 1206 uses meter-action-params; 1207 description 1208 "conform, or green action"; 1209 } 1210 container exceed-action { 1211 uses meter-action-params; 1212 description 1213 "exceed, or yellow action"; 1214 } 1215 container violate-action { 1216 uses meter-action-params; 1217 description 1218 "exceed, or red action"; 1219 } 1220 } 1221 description 1222 "two-rate-tri-color-meter attributes"; 1223 } 1225 grouping meter { 1226 choice meter-type { 1227 case one-rate-two-color-meter-type { 1228 uses one-rate-two-color-meter; 1229 description 1230 "basic meter"; 1231 } 1232 case one-rate-tri-color-meter-type { 1233 uses one-rate-tri-color-meter; 1234 description 1235 "one rate tri-color meter"; 1236 } 1237 case two-rate-tri-color-meter-type { 1238 uses two-rate-tri-color-meter; 1239 description 1240 "two rate tri-color meter"; 1242 } 1243 description 1244 " meter action based on choice of meter action type"; 1245 } 1246 description 1247 "meter attributes"; 1248 } 1250 container meter-template { 1251 description 1252 "list of meter templates"; 1253 list meter-entry { 1254 if-feature meter-template-support; 1255 key "meter-name"; 1256 description 1257 "meter entry template"; 1258 leaf meter-name { 1259 type string; 1260 description 1261 "meter identifier"; 1262 } 1263 uses meter; 1264 } 1265 } 1267 grouping meter-reference { 1268 container meter-reference-cfg { 1269 leaf meter-type { 1270 type identityref { 1271 base meter-type; 1272 } 1273 description 1274 "This leaf defines type of the filter"; 1275 } 1276 description 1277 "meter reference"; 1278 } 1279 description 1280 "meter reference"; 1281 } 1283 grouping count { 1284 container count-cfg { 1285 leaf count-action { 1286 type empty; 1287 description 1288 "count action"; 1289 } 1290 description 1291 "the count action"; 1292 } 1293 description 1294 "the count action grouping"; 1295 } 1297 grouping discard { 1298 container discard-cfg { 1299 leaf discard { 1300 type empty; 1301 description 1302 "discard action"; 1303 } 1304 description 1305 "discard action"; 1306 } 1307 description 1308 "discard grouping"; 1309 } 1310 grouping priority { 1311 container priority-cfg { 1312 leaf priority-level { 1313 type uint8; 1314 description 1315 "priority level"; 1316 } 1317 description 1318 "priority attributes"; 1319 } 1320 description 1321 "priority attributes grouping"; 1322 } 1323 grouping min-rate { 1324 container min-rate-cfg { 1325 uses rate-value-unit; 1326 description 1327 "min guaranteed bandwidth"; 1328 } 1329 description 1330 "minimum rate grouping"; 1331 } 1332 grouping dscp-marking { 1333 container dscp-cfg { 1334 leaf dscp { 1335 type inet:dscp; 1336 description 1337 "dscp marking"; 1339 } 1340 description 1341 "dscp marking container"; 1342 } 1343 description 1344 "dscp marking grouping"; 1345 } 1346 grouping max-rate { 1347 container max-rate-cfg { 1348 uses rate-value-unit; 1349 uses burst; 1350 description 1351 "maximum rate attributes container"; 1352 } 1353 description 1354 "maximum rate attributes"; 1355 } 1356 grouping queue { 1357 container queue-cfg { 1358 uses priority; 1359 uses min-rate; 1360 uses max-rate; 1361 container algorithmic-drop-cfg { 1362 choice drop-algorithm { 1363 case tail-drop { 1364 container tail-drop-cfg { 1365 leaf tail-drop-alg { 1366 type empty; 1367 description 1368 "tail drop algorithm"; 1369 } 1370 description 1371 "Tail Drop configuration container"; 1372 } 1373 description 1374 "Tail Drop choice"; 1375 } 1376 description 1377 "Choice of Drop Algorithm"; 1378 } 1379 description 1380 "Algorithmic Drop configuration container"; 1381 } 1382 description 1383 "Queue configuration container"; 1384 } 1385 description 1386 "Queue grouping"; 1388 } 1389 grouping schedular { 1390 container schedular-cfg { 1391 uses min-rate; 1392 uses max-rate; 1393 description 1394 "Schedular configuration container"; 1395 } 1396 description 1397 "Schedular configuration grouping"; 1398 } 1399 } 1400 1402 6.4. IETF-QOS-TARGET 1404 file "ietf-qos-target@2016-06-15.yang" 1405 module ietf-qos-target { 1406 yang-version 1; 1407 namespace "urn:ietf:params:xml:ns:yang:ietf-qos-target"; 1408 prefix target; 1409 import ietf-interfaces { 1410 prefix if; 1411 } 1412 import ietf-qos-policy { 1413 prefix policy; 1414 } 1415 organization "IETF RTG (Routing Area) Working Group"; 1416 contact 1417 "WG Web: 1418 WG List: 1419 WG Chair: Chris Bowers 1420 1421 WG Chair: Jeff Tantsura 1422 1423 Editor: Aseem Choudhary 1424 1425 Editor: Mahesh Jethanandani 1426 "; 1429 description 1430 "This module contains a collection of YANG definitions for 1431 configuring qos specification implementations. 1432 Copyright (c) 2014 IETF Trust and the persons identified as 1433 authors of the code. All rights reserved. 1434 Redistribution and use in source and binary forms, with or 1435 without modification, is permitted pursuant to, and subject 1436 to the license terms contained in, the Simplified BSD License 1437 set forth in Section 4.c of the IETF Trust's Legal Provisions 1438 Relating to IETF Documents 1439 (http://trustee.ietf.org/license-info). 1440 This version of this YANG module is part of RFC XXXX; see 1441 the RFC itself for full legal notices."; 1442 revision 2016-06-15 { 1443 description 1444 "Latest revision qos based policy applied to a target"; 1445 reference "RFC XXXX"; 1446 } 1447 identity direction { 1448 description 1449 "This is identity of traffic direction"; 1450 } 1451 identity inbound { 1452 base direction; 1453 description 1454 "Direction of traffic coming into the network entry"; 1455 } 1456 identity outbound { 1457 base direction; 1458 description 1459 "Direction of traffic going out of the network entry"; 1460 } 1461 feature target-inline-policy-config { 1462 description 1463 "This feature allows the policy configuration 1464 directly under a target."; 1465 } 1466 grouping wred-stats { 1467 description 1468 "WRED Counters"; 1469 leaf early-drop-pkts { 1470 type uint64; 1471 description 1472 "Early drop packets "; 1473 } 1474 leaf early-drop-bytes { 1475 type uint64; 1476 description 1477 "Early drop bytes "; 1478 } 1479 } 1480 grouping classifier-entry-stats { 1481 description 1482 "Classifier Counters"; 1483 container classifier-entry-statistics { 1484 config false; 1485 description 1486 " 1487 This group defines the classifier filter statistics of 1488 each classifier entry 1489 "; 1490 leaf classified-pkts { 1491 type uint64; 1492 description 1493 " Number of total packets which filtered 1494 to the classifier-entry"; 1495 } 1496 leaf classified-bytes { 1497 type uint64; 1498 description 1499 " Number of total bytes which filtered 1500 to the classifier-entry"; 1501 } 1502 leaf classified-rate { 1503 type uint64; 1504 units "bits-per-second"; 1505 description 1506 " Rate of average data flow through the 1507 classifier-entry"; 1508 } 1509 } 1510 } 1511 grouping queuing-stats { 1512 description 1513 "Queuing Counters"; 1514 container queuing-statistics { 1515 description 1516 "queue related statistics "; 1517 leaf output-pkts { 1518 type uint64; 1519 description 1520 "Number of packets transmitted from queue "; 1521 } 1522 leaf output-bytes { 1523 type uint64; 1524 description 1525 "Number of bytes transmitted from queue "; 1526 } 1527 leaf queue-size-pkts { 1528 type uint64; 1529 description 1530 "Number of packets currently buffered "; 1531 } 1532 leaf queue-size-bytes { 1533 type uint64; 1534 description 1535 "Number of bytes currently buffered "; 1536 } 1537 leaf drop-pkts { 1538 type uint64; 1539 description 1540 "Total number of packets dropped "; 1541 } 1542 leaf drop-bytes { 1543 type uint64; 1544 description 1545 "Total number of bytes dropped "; 1546 } 1547 container wred-stats { 1548 uses wred-stats; 1549 description 1550 "Container for WRED statistics"; 1551 } 1552 } 1553 } 1554 grouping two-color-marking-meter-stats { 1555 description 1556 "Two-Color-Marking Metering Counters"; 1557 leaf conform-pkts { 1558 type uint64; 1559 description 1560 "Number of conform packets"; 1561 } 1562 leaf conform-bytes { 1563 type uint64; 1564 description 1565 "Bytes of conform packets"; 1566 } 1567 leaf conform-rate { 1568 type uint64; 1569 units "bits-per-second"; 1570 description 1571 "Traffic Rate measured as conformimg"; 1572 } 1573 leaf exceed-pkts { 1574 type uint64; 1575 description 1576 "Number of packets counted as exceeding"; 1577 } 1578 leaf exceed-bytes { 1579 type uint64; 1580 description 1581 "Bytes of packets counted as exceeding"; 1582 } 1583 leaf exceed-rate { 1584 type uint64; 1585 units "bits-per-second"; 1586 description 1587 "Traffic Rate measured as exceeding"; 1588 } 1589 } 1590 grouping tri-color-marking-meter-stats { 1591 description 1592 "Tri-Color-Marking Metering Counters"; 1593 leaf conform-pkts { 1594 type uint64; 1595 description 1596 "Number of conform packets"; 1597 } 1598 leaf conform-bytes { 1599 type uint64; 1600 description 1601 "Bytes of conform packets"; 1602 } 1603 leaf conform-rate { 1604 type uint64; 1605 units "bits-per-second"; 1606 description 1607 "Traffic Rate measured as conformimg"; 1608 } 1609 leaf exceed-pkts { 1610 type uint64; 1611 description 1612 "Number of packets counted as exceeding"; 1613 } 1614 leaf exceed-bytes { 1615 type uint64; 1616 description 1617 "Bytes of packets counted as exceeding"; 1618 } 1619 leaf exceed-rate { 1620 type uint64; 1621 units "bits-per-second"; 1622 description 1623 "Traffic Rate measured as exceeding"; 1624 } 1625 leaf violate-pkts { 1626 type uint64; 1627 description 1628 "Number of packets counted as violating"; 1629 } 1630 leaf violate-bytes { 1631 type uint64; 1632 description 1633 "Bytes of packets counted as violating"; 1634 } 1635 leaf violate-rate { 1636 type uint64; 1637 units "bits-per-second"; 1638 description 1639 "Traffic Rate measured as violating"; 1640 } 1641 } 1642 grouping meter-stats { 1643 description 1644 "Metering Counters"; 1645 container one-rate-two-color-meter-statistics { 1646 uses two-color-marking-meter-stats; 1647 description 1648 "One rate two color marker meter statistics"; 1649 } 1650 container one-rate-tri-color-meter-statistics { 1651 uses tri-color-marking-meter-stats; 1652 description 1653 "One rate tri color marker meter statistics"; 1654 } 1655 container two-rate-tri-color-meter-statistics { 1656 uses tri-color-marking-meter-stats; 1657 description 1658 "Two rate tri color marker meter statistics"; 1659 } 1660 } 1661 augment "/if:interfaces/if:interface" { 1662 description 1663 "Augments Diffserv Target Entry to Interface module"; 1664 list qos-target-entry { 1665 key "direction policy-type"; 1666 description 1667 "policy target for inbound or outbound direction"; 1668 leaf direction { 1669 type identityref { 1670 base direction; 1671 } 1672 description 1673 "Direction fo the traffic flow either inbound or outbound"; 1674 } 1675 leaf policy-type { 1676 type identityref { 1677 base policy:policy-type; 1678 } 1679 description 1680 "Policy entry type"; 1681 } 1682 leaf policy-name { 1683 type string; 1684 mandatory true; 1685 description 1686 "Policy entry name"; 1687 } 1688 list qos-target-classifier-statistics { 1689 config false; 1690 description 1691 "Statistics for each Classifier Entry in a Policy"; 1692 leaf classifier-entry-name { 1693 type string; 1694 description 1695 "Classifier Entry Name"; 1696 } 1697 uses classifier-entry-stats; 1698 } 1699 } 1700 } 1701 } 1702 1704 6.5. IETF-DIFFSERV 1706 file "ietf-diffserv@2016-06-15.yang" 1707 module ietf-diffserv { 1708 yang-version 1; 1709 namespace "urn:ietf:params:xml:ns:yang:ietf-diffserv"; 1710 prefix diffserv; 1711 import ietf-interfaces { 1712 prefix if; 1713 } 1714 import ietf-qos-classifier { 1715 prefix classifier; 1716 } 1717 import ietf-qos-policy { 1718 prefix policy; 1719 } 1720 import ietf-qos-action { 1721 prefix action; 1722 } 1723 import ietf-qos-target { 1724 prefix target; 1725 } 1726 organization "IETF RTG (Routing Area) Working Group"; 1727 contact 1728 "WG Web: 1729 WG List: 1730 WG Chair: Chris Bowers 1731 1732 WG Chair: Jeff Tantsura 1733 1734 Editor: Aseem Choudhary 1735 1736 Editor: Mahesh Jethanandani 1737 "; 1740 description 1741 "This module contains a collection of YANG definitions for 1742 configuring diffserv specification implementations. 1743 Copyright (c) 2014 IETF Trust and the persons identified as 1744 authors of the code. All rights reserved. 1745 Redistribution and use in source and binary forms, with or 1746 without modification, is permitted pursuant to, and subject 1747 to the license terms contained in, the Simplified BSD License 1748 set forth in Section 4.c of the IETF Trust's Legal Provisions 1749 Relating to IETF Documents 1750 (http://trustee.ietf.org/license-info). 1751 This version of this YANG module is part of RFC XXXX; see 1752 the RFC itself for full legal notices."; 1753 revision 2016-06-15 { 1754 description 1755 "Latest revision of diffserv based classifier"; 1756 reference "RFC XXXX"; 1757 } 1758 augment "/classifier:classifiers/classifier:classifier-entry/" + 1759 "classifier:filter-entry" { 1760 choice filter-param { 1761 description 1762 "Choice of filter types"; 1763 case dscp { 1764 uses classifier:dscp-cfg; 1765 description 1766 "Filter containing list of dscp ranges"; 1767 } 1768 case source-ip-address { 1769 uses classifier:source-ip-address-cfg; 1770 description 1771 "Filter containing list of source ip addresses"; 1773 } 1774 case destination-ip-address { 1775 uses classifier:destination-ip-address-cfg; 1776 description 1777 "Filter containing list of destination ip address"; 1778 } 1779 case source-port { 1780 uses classifier:source-port-cfg; 1781 description 1782 "Filter containing list of source-port ranges"; 1783 } 1784 case destination-port { 1785 uses classifier:destination-port-cfg; 1786 description 1787 "Filter containing list of destination-port ranges"; 1788 } 1789 case protocol { 1790 uses classifier:protocol-cfg; 1791 description 1792 "Filter Type Protocol"; 1793 } 1794 } 1795 description 1796 "augments diffserv filters to qos classifier"; 1797 } 1799 augment "/policy:policies" + 1800 "/policy:policy-entry" + 1801 "/policy:classifier-entry" + 1802 "/policy:filter-entry" { 1803 choice filter-params { 1804 description 1805 "Choice of action types"; 1806 case dscp { 1807 uses classifier:dscp-cfg; 1808 description 1809 "Filter containing list of dscp ranges"; 1810 } 1811 case source-ip-address { 1812 uses classifier:source-ip-address-cfg; 1813 description 1814 "Filter containing list of source ip addresses"; 1815 } 1816 case destination-ip-address { 1817 uses classifier:destination-ip-address-cfg; 1818 description 1819 "Filter containing list of destination ip address"; 1820 } 1821 case source-port { 1822 uses classifier:source-port-cfg; 1823 description 1824 "Filter containing list of source-port ranges"; 1825 } 1826 case destination-port { 1827 uses classifier:destination-port-cfg; 1828 description 1829 "Filter containing list of destination-port ranges"; 1830 } 1831 case protocol { 1832 uses classifier:protocol-cfg; 1833 description 1834 "Filter Type Protocol"; 1835 } 1836 } 1837 description 1838 "Augments Diffserv Classifier with common filter types"; 1839 } 1840 augment "/policy:policies/policy:policy-entry/" + 1841 "policy:classifier-entry/" + 1842 "policy:classifier-action-entry-cfg" { 1843 choice action-cfg-params { 1844 description 1845 "Choice of action types"; 1846 case dscp-marking { 1847 uses action:dscp-marking; 1848 } 1849 } 1850 description 1851 "augments dscp-marking and meter to qos policy"; 1852 } 1853 augment "/if:interfaces/if:interface/target:qos-target-entry/" + 1854 "target:qos-target-classifier-statistics" { 1855 container diffserv-action-statistics { 1856 uses target:meter-stats; 1857 description 1858 "meter statistics"; 1859 } 1860 description 1861 "augments meter stats to qos target module"; 1862 } 1863 } 1864 1866 7. Open Issues 1868 The model is still work in progress, and the authors are working on 1869 further refinements. List of open issues. 1871 o Support of reading statistics, e.g. classifier and queue 1872 statistics. 1874 o Interface bindings. We need more agreement, e.g. on handling 1875 multiple policies of same type on an interface. 1877 o Continued discussion on what can go into the base modes, what will 1878 fall into DiffServ model and what will have to go into the vendor 1879 specific model, which results in different configurations on 1880 different devices for the devices to provide the same 1881 functionality. While we strive to find common ground, the large 1882 diffServ scope and differences in the provisioning and the 1883 underlying architecture differences leave us no option but to move 1884 things into vendor specific models. 1886 o Security considerations. 1888 8. Security Considerations 1890 9. Revision Tracking 1892 9.1. Changes since Revision 00 1894 o In action module, modification to meter definition. Removed 1895 generic meter type and added one-rate-two-color meter. Some 1896 associated modifications to all 3 meter types. Moved color-aware 1897 to vendor specific. 1899 o The queue definition modifications - removed "always drop", moved 1900 queue size handling to vendor specific. 1902 o In target module, generic meter stats removed, added stats for the 1903 one-rate-two-color meter. 1905 10. Acknowledgement 1907 11. References 1909 11.1. Normative References 1911 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1912 Requirement Levels", BCP 14, RFC 2119, 1913 DOI 10.17487/RFC2119, March 1997, 1914 . 1916 [RFC2697] Heinanen, J. and R. Guerin, "A Single Rate Three Color 1917 Marker", RFC 2697, DOI 10.17487/RFC2697, September 1999, 1918 . 1920 [RFC2698] Heinanen, J. and R. Guerin, "A Two Rate Three Color 1921 Marker", RFC 2698, DOI 10.17487/RFC2698, September 1999, 1922 . 1924 [RFC3289] Baker, F., Chan, K., and A. Smith, "Management Information 1925 Base for the Differentiated Services Architecture", 1926 RFC 3289, DOI 10.17487/RFC3289, May 2002, 1927 . 1929 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1930 the Network Configuration Protocol (NETCONF)", RFC 6020, 1931 DOI 10.17487/RFC6020, October 2010, 1932 . 1934 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1935 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1936 . 1938 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1939 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1940 . 1942 11.2. Informative References 1944 [RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., 1945 and W. Weiss, "An Architecture for Differentiated 1946 Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, 1947 . 1949 Appendix A. Company A, Company B and Company C examples 1951 Company A, Company B and Company C Diffserv modules augments all the 1952 filter types of the QoS classifier module as well as the QoS policy 1953 module that allow it to define marking, metering, min-rate, max-rate 1954 actions. Queuing and metering counters are realized by augmenting of 1955 the QoS target module. 1957 A.1. Example of Company A Diffserv Model 1959 The following Company A vendor example augments the qos and diffserv 1960 model, demonstrating some of the following functionality: 1962 - use of template based classifier definitions 1964 - use of single policy type modelling queue, scheduler policy, and a 1965 filter policy. All of these policies either augment the qos policy 1966 or the diffserv modules 1968 - support of hierarchial policy. 1970 - use of inline actions in a policy 1972 - flexibility in marking dscp or metadata at ingress and/or egress. 1974 module example-compa-diffserv { 1975 namespace "urn:ietf:params:xml:ns:yang:example-compa-diffserv"; 1976 prefix example; 1978 import ietf-interfaces { 1979 prefix if; 1980 } 1981 import ietf-qos-classifier { 1982 prefix classifier; 1983 } 1984 import ietf-qos-policy { 1985 prefix policy; 1986 } 1987 import ietf-qos-action { 1988 prefix action; 1989 } 1990 import ietf-qos-target { 1991 prefix target; 1992 } 1993 import ietf-diffserv { 1994 prefix diffserv; 1995 } 1997 organization "Company A"; 1998 contact 1999 "Editor: XYZ 2000 "; 2001 description 2002 "This module contains a collection of YANG definitions of 2003 companyA diffserv specification extension."; 2004 revision 2016-06-15 { 2005 description 2006 "Initial revision for diffserv actions on network packets"; 2007 reference 2008 "RFC 6020: YANG - A Data Modeling Language for the 2009 Network Configuration Protocol (NETCONF)"; 2010 } 2012 identity default-policy-type { 2013 base policy:policy-type; 2014 description 2015 "This defines default policy-type"; 2016 } 2018 identity qos-group { 2019 base classifier:filter-type; 2020 description 2021 "qos-group filter-type"; 2022 } 2024 grouping qos-group-cfg { 2025 list qos-group-cfg { 2026 key "qos-group-min qos-group-max"; 2027 description 2028 "list of dscp ranges"; 2029 leaf qos-group-min { 2030 type uint8; 2031 description 2032 "Minimum value of qos-group range"; 2033 } 2034 leaf qos-group-max { 2035 type uint8; 2036 description 2037 "maximum value of qos-group range"; 2038 } 2039 } 2040 description 2041 "Filter containing list of qos-group ranges"; 2042 } 2044 grouping wred-threshold { 2045 container wred-min-thresh { 2046 uses action:threshold; 2047 description 2048 "Minimum threshold"; 2049 } 2050 container wred-max-thresh { 2051 uses action:threshold; 2052 description 2053 "Maximum threshold"; 2054 } 2055 leaf mark-probability { 2056 type uint32 { 2057 range "1..1000"; 2058 } 2059 description 2060 "Mark probability"; 2061 } 2062 description 2063 "WRED threshold attributes"; 2064 } 2066 grouping randomdetect { 2067 leaf exp-weighting-const { 2068 type uint32; 2069 description 2070 "Exponential weighting constant factor for wred profile"; 2071 } 2072 uses wred-threshold; 2073 description 2074 "Random detect attributes"; 2075 } 2077 /************************************************* 2078 * Augmentation to Classifier Module 2079 *************************************************/ 2081 augment "/classifier:classifiers/" + 2082 "classifier:classifier-entry/" + 2083 "classifier:filter-entry/diffserv:filter-param" { 2084 case qos-group { 2085 uses qos-group-cfg; 2086 description 2087 "Filter containing list of qos-group ranges. 2088 Qos-group represent packet metadata information 2089 in a device. "; 2090 } 2091 description 2092 "augmentation of classifier filters"; 2093 } 2095 /************************************************* 2096 * Augmentation to Policy Module 2097 *************************************************/ 2099 augment "/policy:policies/policy:policy-entry/" + 2100 "policy:classifier-entry/" + 2101 "policy:classifier-action-entry-cfg/" + 2102 "policy:action-cfg-params" { 2103 case priority { 2104 uses action:priority; 2105 } 2106 case min-rate { 2107 uses action:min-rate; 2108 } 2109 case max-rate { 2110 uses action:max-rate; 2111 } 2112 case random-detect { 2113 uses randomdetect; 2114 } 2115 case meter-inline { 2116 uses action:meter; 2117 } 2118 case child-policy { 2119 leaf child-policy { 2120 type leafref { 2121 path "/policy:policies/policy:policy-entry/" + 2122 "policy:policy-name"; 2123 } 2124 description 2125 "Child Policy in the hierarchial configuration"; 2126 } 2127 } 2128 description 2129 "Augment the actions to policy entry"; 2130 } 2132 augment "/policy:policies" + 2133 "/policy:policy-entry" + 2134 "/policy:classifier-entry" + 2135 "/policy:classifier-action-entry-cfg" + 2136 "/policy:action-cfg-params" + 2137 "/example:meter-inline" + 2138 "/example:meter-type" + 2139 "/example:one-rate-two-color-meter-type" + 2140 "/example:one-rate-two-color-meter" + 2141 "/example:conform-action" + 2142 "/example:meter-action-params" + 2143 "/example:meter-action-val" { 2145 description 2146 "augment the one-rate-two-color meter conform 2147 with actions"; 2148 case meter-action-drop { 2149 description 2150 "meter drop"; 2151 uses action:drop; 2152 } 2153 case meter-action-mark-dscp { 2154 description 2155 "meter action dscp marking"; 2156 uses action:dscp-marking; 2157 } 2158 } 2159 augment "/policy:policies" + 2160 "/policy:policy-entry" + 2161 "/policy:classifier-entry" + 2162 "/policy:classifier-action-entry-cfg" + 2163 "/policy:action-cfg-params" + 2164 "/example:meter-inline" + 2165 "/example:meter-type" + 2166 "/example:one-rate-two-color-meter-type" + 2167 "/example:one-rate-two-color-meter" + 2168 "/example:exceed-action" + 2169 "/example:meter-action-params" + 2170 "/example:meter-action-val" { 2172 description 2173 "augment the one-rate-two-color meter exceed 2174 with actions"; 2175 case meter-action-drop { 2176 description 2177 "meter drop"; 2178 uses action:drop; 2179 } 2180 case meter-action-mark-dscp { 2181 description 2182 "meter action dscp marking"; 2183 uses action:dscp-marking; 2184 } 2185 } 2186 augment "/policy:policies" + 2187 "/policy:policy-entry" + 2188 "/policy:classifier-entry" + 2189 "/policy:classifier-action-entry-cfg" + 2190 "/policy:action-cfg-params" + 2191 "/example:meter-inline" + 2192 "/example:meter-type" + 2193 "/example:one-rate-tri-color-meter-type" + 2194 "/example:one-rate-tri-color-meter" + 2195 "/example:conform-action" + 2196 "/example:meter-action-params" + 2197 "/example:meter-action-val" { 2199 description 2200 "augment the one-rate-tri-color meter conform 2201 with actions"; 2202 case meter-action-drop { 2203 description 2204 "meter drop"; 2205 uses action:drop; 2206 } 2207 case meter-action-mark-dscp { 2208 description 2209 "meter action dscp marking"; 2210 uses action:dscp-marking; 2211 } 2212 } 2213 augment "/policy:policies" + 2214 "/policy:policy-entry" + 2215 "/policy:classifier-entry" + 2216 "/policy:classifier-action-entry-cfg" + 2217 "/policy:action-cfg-params" + 2218 "/example:meter-inline" + 2219 "/example:meter-type" + 2220 "/example:one-rate-tri-color-meter-type" + 2221 "/example:one-rate-tri-color-meter" + 2222 "/example:exceed-action" + 2223 "/example:meter-action-params" + 2224 "/example:meter-action-val" { 2226 description 2227 "augment the one-rate-tri-color meter exceed 2228 with actions"; 2229 case meter-action-drop { 2230 description 2231 "meter drop"; 2232 uses action:drop; 2233 } 2234 case meter-action-mark-dscp { 2235 description 2236 "meter action dscp marking"; 2237 uses action:dscp-marking; 2238 } 2239 } 2240 augment "/policy:policies" + 2241 "/policy:policy-entry" + 2242 "/policy:classifier-entry" + 2243 "/policy:classifier-action-entry-cfg" + 2244 "/policy:action-cfg-params" + 2245 "/example:meter-inline" + 2246 "/example:meter-type" + 2247 "/example:one-rate-tri-color-meter-type" + 2248 "/example:one-rate-tri-color-meter" + 2249 "/example:violate-action" + 2250 "/example:meter-action-params" + 2251 "/example:meter-action-val" { 2252 description 2253 "augment the one-rate-tri-color meter conform 2254 with actions"; 2255 case meter-action-drop { 2256 description 2257 "meter drop"; 2258 uses action:drop; 2259 } 2260 case meter-action-mark-dscp { 2261 description 2262 "meter action dscp marking"; 2263 uses action:dscp-marking; 2264 } 2265 } 2267 augment "/policy:policies" + 2268 "/policy:policy-entry" + 2269 "/policy:classifier-entry" + 2270 "/policy:classifier-action-entry-cfg" + 2271 "/policy:action-cfg-params" + 2272 "/example:meter-inline" + 2273 "/example:meter-type" + 2274 "/example:two-rate-tri-color-meter-type" + 2275 "/example:two-rate-tri-color-meter" + 2276 "/example:conform-action" + 2277 "/example:meter-action-params" + 2278 "/example:meter-action-val" { 2280 description 2281 "augment the one-rate-tri-color meter conform 2282 with actions"; 2283 case meter-action-drop { 2284 description 2285 "meter drop"; 2286 uses action:drop; 2287 } 2288 case meter-action-mark-dscp { 2289 description 2290 "meter action dscp marking"; 2291 uses action:dscp-marking; 2292 } 2294 } 2295 augment "/policy:policies" + 2296 "/policy:policy-entry" + 2297 "/policy:classifier-entry" + 2298 "/policy:classifier-action-entry-cfg" + 2299 "/policy:action-cfg-params" + 2300 "/example:meter-inline" + 2301 "/example:meter-type" + 2302 "/example:two-rate-tri-color-meter-type" + 2303 "/example:two-rate-tri-color-meter" + 2304 "/example:exceed-action" + 2305 "/example:meter-action-params" + 2306 "/example:meter-action-val" { 2308 description 2309 "augment the two-rate-tri-color meter exceed 2310 with actions"; 2311 case meter-action-drop { 2312 description 2313 "meter drop"; 2314 uses action:drop; 2315 } 2316 case meter-action-mark-dscp { 2317 description 2318 "meter action dscp marking"; 2319 uses action:dscp-marking; 2320 } 2321 } 2322 augment "/policy:policies" + 2323 "/policy:policy-entry" + 2324 "/policy:classifier-entry" + 2325 "/policy:classifier-action-entry-cfg" + 2326 "/policy:action-cfg-params" + 2327 "/example:meter-inline" + 2328 "/example:meter-type" + 2329 "/example:two-rate-tri-color-meter-type" + 2330 "/example:two-rate-tri-color-meter" + 2331 "/example:violate-action" + 2332 "/example:meter-action-params" + 2333 "/example:meter-action-val" { 2334 description 2335 "augment the two-rate-tri-color meter violate 2336 with actions"; 2337 case meter-action-drop { 2338 description 2339 "meter drop"; 2340 uses action:drop; 2341 } 2342 case meter-action-mark-dscp { 2343 description 2344 "meter action dscp marking"; 2345 uses action:dscp-marking; 2346 } 2347 } 2348 augment "/policy:policies" + 2349 "/policy:policy-entry" + 2350 "/policy:classifier-entry" + 2351 "/policy:classifier-action-entry-cfg" + 2352 "/policy:action-cfg-params" + 2353 "/example:meter-inline" + 2354 "/example:meter-type" + 2355 "/example:one-rate-two-color-meter-type" + 2356 "/example:one-rate-two-color-meter" { 2357 description 2358 "augment the one-rate-two-color meter with" + 2359 "color classifiers"; 2360 container conform-color { 2361 uses classifier:classifier-entry-generic-attr; 2362 description 2363 "conform color classifier container"; 2364 } 2365 container exceed-color { 2366 uses classifier:classifier-entry-generic-attr; 2367 description 2368 "exceed color classifier container"; 2369 } 2370 } 2371 augment "/policy:policies" + 2372 "/policy:policy-entry" + 2373 "/policy:classifier-entry" + 2374 "/policy:classifier-action-entry-cfg" + 2375 "/policy:action-cfg-params" + 2376 "/example:meter-inline" + 2377 "/example:meter-type" + 2378 "/example:one-rate-tri-color-meter-type" + 2379 "/example:one-rate-tri-color-meter" { 2380 description 2381 "augment the one-rate-tri-color meter with" + 2382 "color classifiers"; 2383 container conform-color { 2384 uses classifier:classifier-entry-generic-attr; 2385 description 2386 "conform color classifier container"; 2387 } 2388 container exceed-color { 2389 uses classifier:classifier-entry-generic-attr; 2390 description 2391 "exceed color classifier container"; 2392 } 2393 container violate-color { 2394 uses classifier:classifier-entry-generic-attr; 2395 description 2396 "violate color classifier container"; 2397 } 2398 } 2399 augment "/policy:policies" + 2400 "/policy:policy-entry" + 2401 "/policy:classifier-entry" + 2402 "/policy:classifier-action-entry-cfg" + 2403 "/policy:action-cfg-params" + 2404 "/example:meter-inline" + 2405 "/example:meter-type" + 2406 "/example:two-rate-tri-color-meter-type" + 2407 "/example:two-rate-tri-color-meter" { 2408 description 2409 "augment the two-rate-tri-color meter with" + 2410 "color classifiers"; 2411 container conform-color { 2412 uses classifier:classifier-entry-generic-attr; 2413 description 2414 "conform color classifier container"; 2415 } 2416 container exceed-color { 2417 uses classifier:classifier-entry-generic-attr; 2418 description 2419 "exceed color classifier container"; 2420 } 2421 container violate-color { 2422 uses classifier:classifier-entry-generic-attr; 2423 description 2424 "violate color classifier container"; 2425 } 2426 } 2428 /************************************************* 2429 * Augmentation to Target Module 2430 *************************************************/ 2432 augment "/if:interfaces/if:interface/" + 2433 "target:qos-target-entry/" + 2434 "target:qos-target-classifier-statistics/" + 2435 "diffserv:diffserv-action-statistics" { 2436 uses target:queuing-stats; 2437 description 2438 "Augment the statistics to policy entry"; 2439 } 2440 augment "/if:interfaces/if:interface/" + 2441 "target:qos-target-entry/" + 2442 "target:qos-target-classifier-statistics" { 2443 leaf relative-path { 2444 type string; 2445 description 2446 "Relative Path of the classifier entry in the 2447 hierarchial policy"; 2448 } 2449 description 2450 "Augment the statistics to policy entry"; 2451 } 2452 } 2454 A.2. Example of Company B Diffserv Model 2456 The following vendor example augments the qos and diffserv model, 2457 demonstrating some of the following functionality: 2459 - use of inline classifier definitions (defined inline in the policy 2460 vs referencing an externally defined classifier) 2462 - use of mulitple policy types, e.g. a queue policy, a scheduler 2463 policy, and a filter policy. All of these policies either augment 2464 the qos policy or the diffserv modules 2466 - use of a queue module, which uses and extends the queue grouping 2467 from the ietf-qos-action module 2469 - use of meter templates (v.s. meter inline) 2471 - use of internal meta data for classification and marking 2473 module example-compb-diffserv-filter-policy { 2474 yang-version 1; 2475 namespace "urn:ietf:params:xml:ns:yang:" + 2476 "example-compb-diffserv-filter-policy"; 2477 prefix compb-filter-policy; 2479 import ietf-qos-classifier { 2480 prefix classifier; 2481 } 2482 import ietf-qos-policy { 2483 prefix policy; 2484 } 2485 import ietf-qos-action { 2486 prefix action; 2487 } 2488 import ietf-diffserv { 2489 prefix diffserv; 2490 } 2492 organization "Company B"; 2493 contact 2494 "Editor: XYZ 2495 "; 2497 description 2498 "This module contains a collection of YANG definitions for 2499 configuring diffserv specification implementations. 2500 Copyright (c) 2014 IETF Trust and the persons identified as 2501 authors of the code. All rights reserved. 2502 Redistribution and use in source and binary forms, with or 2503 without modification, is permitted pursuant to, and subject 2504 to the license terms contained in, the Simplified BSD License 2505 set forth in Section 4.c of the IETF Trust's Legal Provisions 2506 Relating to IETF Documents 2507 (http://trustee.ietf.org/license-info). 2508 This version of this YANG module is part of RFC XXXX; see 2509 the RFC itself for full legal notices."; 2511 revision 2015-04-07 { 2512 description 2513 "Latest revision of diffserv policy"; 2514 reference "RFC XXXX"; 2515 } 2517 /* 2518 * The policy must be of either type v4 or v6. Corresponding 2519 * address types must be used. Enforce with "must" statement? 2520 */ 2521 identity v4-diffserv-policy-type { 2522 base policy:policy-type; 2523 description 2524 "This defines default policy-type"; 2525 } 2527 identity v6-diffserv-policy-type { 2528 base policy:policy-type; 2529 description 2530 "This defines default policy-type"; 2531 } 2532 /************************************************* 2533 * Classification types 2534 *************************************************/ 2536 identity forwarding-class { 2537 base classifier:filter-type; 2538 description 2539 "Forwarding class filter type"; 2540 } 2542 identity internal-loss-priority { 2543 base classifier:filter-type; 2544 description 2545 "Internal loss priority filter type"; 2546 } 2548 grouping forwarding-class-cfg { 2549 list forwarding-class-cfg { 2550 key "forwarding-class"; 2551 description 2552 "list of forwarding-classes"; 2553 leaf forwarding-class { 2554 type string; 2555 description 2556 "Forwarding class name"; 2557 } 2558 } 2559 description 2560 "Filter containing list of forwarding classes"; 2561 } 2563 grouping loss-priority-cfg { 2564 list loss-priority-cfg { 2565 key "loss-priority"; 2566 description 2567 "list of loss-priorities"; 2568 leaf loss-priority { 2569 type enumeration { 2570 enum high { 2571 description "High Loss Priority"; 2572 } 2573 enum medium-high { 2574 description "Medium-high Loss Priority"; 2575 } 2576 enum medium-low { 2577 description "Medium-low Loss Priority"; 2578 } 2579 enum low { 2580 description "Low Loss Priority"; 2581 } 2582 } 2583 description 2584 "Loss-priority"; 2585 } 2586 } 2587 description 2588 "Filter containing list of loss priorities"; 2589 } 2591 augment "/policy:policies" + 2592 "/policy:policy-entry" + 2593 "/policy:classifier-entry" + 2594 "/policy:filter-entry" + 2595 "/diffserv:filter-params" { 2596 case forwarding-class { 2597 uses forwarding-class-cfg; 2598 description 2599 "Filter Type Internal-loss-priority"; 2600 } 2601 case internal-loss-priority { 2602 uses loss-priority-cfg; 2603 description 2604 "Filter Type Internal-loss-priority"; 2605 } 2606 description 2607 "Augments Diffserv Classifier with vendor" + 2608 " specific types"; 2609 } 2611 /************************************************* 2612 * Actions 2613 *************************************************/ 2615 identity mark-fwd-class { 2616 base policy:action-type; 2617 description 2618 "mark forwarding class action type"; 2619 } 2621 identity mark-loss-priority { 2622 base policy:action-type; 2623 description 2624 "mark loss-priority action type"; 2625 } 2627 grouping mark-fwd-class { 2628 container mark-fwd-class-cfg { 2629 leaf forwarding-class { 2630 type string; 2631 description 2632 "Forwarding class name"; 2633 } 2634 description 2635 "mark-fwd-class container"; 2636 } 2637 description 2638 "mark-fwd-class grouping"; 2639 } 2641 grouping mark-loss-priority { 2642 container mark-loss-priority-cfg { 2643 leaf loss-priority { 2644 type enumeration { 2645 enum high { 2646 description "High Loss Priority"; 2647 } 2648 enum medium-high { 2649 description "Medium-high Loss Priority"; 2650 } 2651 enum medium-low { 2652 description "Medium-low Loss Priority"; 2653 } 2654 enum low { 2655 description "Low Loss Priority"; 2656 } 2657 } 2658 description 2659 "Loss-priority"; 2660 } 2661 description 2662 "mark-loss-priority container"; 2663 } 2664 description 2665 "mark-loss-priority grouping"; 2666 } 2668 augment "/policy:policies" + 2669 "/policy:policy-entry" + 2670 "/policy:classifier-entry" + 2671 "/policy:classifier-action-entry-cfg" + 2672 "/diffserv:action-cfg-params" { 2673 case mark-fwd-class { 2674 uses mark-fwd-class; 2675 description 2676 "Mark forwarding class in the packet"; 2677 } 2678 case mark-loss-priority { 2679 uses mark-loss-priority; 2680 description 2681 "Mark loss priority in the packet"; 2682 } 2683 case meter-reference { 2684 uses action:meter-reference; 2685 description 2686 "Assign a meter as an action"; 2687 } 2688 case discard { 2689 uses action:discard; 2690 description 2691 "Discard action"; 2692 } 2693 case count { 2694 uses action:count; 2695 description 2696 "Count action - explicit count configuration"; 2697 } 2698 description 2699 "Augments common diffserv policy actions"; 2700 } 2702 augment "/action:meter-template" + 2703 "/action:meter-entry" + 2704 "/action:meter-type" + 2705 "/action:one-rate-tri-color-meter-type" + 2706 "/action:one-rate-tri-color-meter" { 2707 leaf one-rate-color-aware { 2708 type boolean; 2709 description 2710 "This defines if the meter is color-aware"; 2711 } 2712 } 2713 augment "/action:meter-template" + 2714 "/action:meter-entry" + 2715 "/action:meter-type" + 2716 "/action:two-rate-tri-color-meter-type" + 2717 "/action:two-rate-tri-color-meter" { 2718 leaf two-rate-color-aware { 2719 type boolean; 2720 description 2721 "This defines if the meter is color-aware"; 2722 } 2723 } 2724 /* example of augmenting a meter template with a 2725 /* vendor specific action */ 2726 augment "/action:meter-template" + 2727 "/action:meter-entry" + 2728 "/action:meter-type" + 2729 "/action:one-rate-two-color-meter-type" + 2730 "/action:one-rate-two-color-meter" + 2731 "/action:exceed-action" + 2732 "/action:meter-action-params" + 2733 "/action:meter-action-val" { 2734 case meter-action-drop { 2735 description 2736 "meter drop"; 2737 uses action:drop; 2738 } 2740 description 2741 "Augment the actions to basic meter"; 2742 } 2744 } 2746 module example-compb-queue-policy { 2747 yang-version 1; 2748 namespace "urn:ietf:params:xml:ns:yang:example-compb-queue-policy"; 2749 prefix queue-plcy; 2751 import ietf-qos-classifier { 2752 prefix classifier; 2753 } 2754 import ietf-qos-policy { 2755 prefix policy; 2756 } 2758 organization "Company B"; 2759 contact 2760 "Editor: XYZ 2761 "; 2763 description 2764 "This module defines a queue policy. The classification 2765 is based on aforwarding class, and the actions are queues. 2766 Copyright (c) 2014 IETF Trust and the persons identified as 2767 authors of the code. All rights reserved. 2768 Redistribution and use in source and binary forms, with or 2769 without modification, is permitted pursuant to, and subject 2770 to the license terms contained in, the Simplified BSD License 2771 set forth in Section 4.c of the IETF Trust's Legal Provisions 2772 Relating to IETF Documents 2773 (http://trustee.ietf.org/license-info). 2774 This version of this YANG module is part of RFC XXXX; see 2775 the RFC itself for full legal notices."; 2777 revision 2015-04-07 { 2778 description 2779 "Latest revision of diffserv policy"; 2780 reference "RFC XXXX"; 2781 } 2783 identity forwarding-class { 2784 base classifier:filter-type; 2785 description 2786 "Forwarding class filter type"; 2787 } 2789 grouping forwarding-class-cfg { 2790 leaf forwarding-class-cfg { 2791 type string; 2792 description 2793 "forwarding-class name"; 2794 } 2795 description 2796 "Forwarding class filter"; 2797 } 2799 augment "/policy:policies" + 2800 "/policy:policy-entry" + 2801 "/policy:classifier-entry" + 2802 "/policy:filter-entry" { 2803 /* Does NOT support "logical-not" of forwarding class. 2804 Use "must"? */ 2805 choice filter-params { 2806 description 2807 "Choice of filters"; 2808 case forwarding-class-cfg { 2809 uses forwarding-class-cfg; 2810 description 2811 "Filter Type Internal-loss-priority"; 2812 } 2813 } 2814 description 2815 "Augments Diffserv Classifier with fwd class filter"; 2816 } 2818 identity compb-queue { 2819 base policy:action-type; 2820 description 2821 "compb-queue action type"; 2822 } 2824 grouping compb-queue-name { 2825 container queue-name { 2826 leaf name { 2827 type string; 2828 description 2829 "Queue class name"; 2830 } 2831 description 2832 "compb queue container"; 2833 } 2834 description 2835 "compb-queue grouping"; 2836 } 2838 augment "/policy:policies" + 2839 "/policy:policy-entry" + 2840 "/policy:classifier-entry" + 2841 "/policy:classifier-action-entry-cfg" { 2842 choice action-cfg-params { 2843 description 2844 "Choice of action types"; 2845 case compb-queue { 2846 uses compb-queue-name; 2847 } 2848 } 2849 description 2850 "Augment the queue actions to queue policy entry"; 2851 } 2852 } 2854 module example-compb-queue { 2855 yang-version 1; 2856 namespace "urn:ietf:params:xml:ns:yang:ietf-compb-queue"; 2857 prefix compb-queue; 2859 import ietf-qos-action { 2860 prefix action; 2861 } 2863 organization "Company B"; 2864 contact 2865 "Editor: XYZ 2866 "; 2868 description 2869 "This module describes a compb queue module. This is a 2870 template for a queue within a queue policy, referenced 2871 by name. 2873 This version of this YANG module is part of RFC XXXX; see 2874 the RFC itself for full legal notices."; 2876 revision 2015-04-07 { 2877 description 2878 "Latest revision of diffserv based classifier"; 2879 reference "RFC XXXX"; 2880 } 2882 container compb-queue { 2883 description 2884 "Queue used in compb architecture"; 2885 leaf name { 2886 type string; 2887 description 2888 "A unique name identifying this queue"; 2889 } 2890 uses action:queue; 2891 container excess-rate { 2892 choice excess-rate-type { 2893 case percent { 2894 leaf excess-rate-percent { 2895 type uint32 { 2896 range "1..100"; 2897 } 2898 description 2899 "excess-rate-percent"; 2900 } 2901 } 2902 case proportion { 2903 leaf excess-rate-poroportion { 2904 type uint32 { 2905 range "1..1000"; 2906 } 2907 description 2908 "excess-rate-poroportion"; 2909 } 2910 } 2911 description 2912 "Choice of excess-rate type"; 2913 } 2914 description 2915 "Excess rate value"; 2917 } 2918 leaf excess-priority { 2919 type enumeration { 2920 enum high { 2921 description "High Loss Priority"; 2922 } 2923 enum medium-high { 2924 description "Medium-high Loss Priority"; 2925 } 2926 enum medium-low { 2927 description "Medium-low Loss Priority"; 2928 } 2929 enum low { 2930 description "Low Loss Priority"; 2931 } 2932 enum none { 2933 description "No excess priority"; 2934 } 2935 } 2936 description 2937 "Priority of excess (above guaranted rate) traffic"; 2938 } 2939 container buffer-size { 2940 choice buffer-size-type { 2941 case percent { 2942 leaf buffer-size-percent { 2943 type uint32 { 2944 range "1..100"; 2945 } 2946 description 2947 "buffer-size-percent"; 2948 } 2949 } 2950 case temporal { 2951 leaf buffer-size-temporal { 2952 type uint64; 2953 units "microsecond"; 2954 description 2955 "buffer-size-temporal"; 2956 } 2957 } 2958 case remainder { 2959 leaf buffer-size-remainder { 2960 type empty; 2961 description 2962 "use remaining of buffer"; 2963 } 2964 } 2965 description 2966 "Choice of buffer size type"; 2967 } 2968 description 2969 "Buffer size value"; 2970 } 2971 } 2973 augment 2974 "/compb-queue" + 2975 "/queue-cfg" + 2976 "/algorithmic-drop-cfg" + 2977 "/drop-algorithm" { 2978 case random-detect { 2979 list drop-profile-list { 2980 key "priority"; 2981 description 2982 "map of priorities to drop-algorithms"; 2983 leaf priority { 2984 type enumeration { 2985 enum any { 2986 description "Any priority mapped here"; 2987 } 2988 enum high { 2989 description "High Priority Packet"; 2990 } 2991 enum medium-high { 2992 description "Medium-high Priority Packet"; 2993 } 2994 enum medium-low { 2995 description "Medium-low Priority Packet"; 2996 } 2997 enum low { 2998 description "Low Priority Packet"; 2999 } 3000 } 3001 description 3002 "Priority of guaranteed traffic"; 3003 } 3004 leaf drop-profile { 3005 type string; 3006 description 3007 "drop profile to use for this priority"; 3008 } 3009 } 3010 } 3011 description 3012 "compb random detect drop algorithm config"; 3014 } 3015 } 3017 module example-compb-scheduler-policy { 3018 yang-version 1; 3019 namespace "urn:ietf:params:xml:ns:yang:" + 3020 "example-compb-scheduler-policy"; 3021 prefix scheduler-plcy; 3023 import ietf-qos-action { 3024 prefix action; 3025 } 3027 import ietf-qos-policy { 3028 prefix policy; 3029 } 3031 organization "Company B"; 3032 contact 3033 "Editor: XYZ 3034 "; 3036 description 3037 "This module defines a scheduler policy. The classification 3038 is based on classifier-any, and the action is a scheduler."; 3040 revision 2015-04-07 { 3041 description 3042 "Latest revision of diffserv policy"; 3043 reference "RFC XXXX"; 3044 } 3046 identity queue-policy { 3047 base policy:action-type; 3048 description 3049 "forwarding-class-queue action type"; 3050 } 3052 grouping queue-policy-name { 3053 container compb-queue-policy-name { 3054 leaf name { 3055 type string; 3056 description 3057 "Queue policy name"; 3058 } 3059 description 3060 "compb-queue-policy container"; 3061 } 3062 description 3063 "compb-queue policy grouping"; 3064 } 3066 augment "/policy:policies" + 3067 "/policy:policy-entry" + 3068 "/policy:classifier-entry" + 3069 "/policy:classifier-action-entry-cfg" { 3070 choice action-cfg-params { 3071 case schedular { 3072 uses action:schedular; 3073 } 3074 case queue-policy { 3075 uses queue-policy-name; 3076 } 3077 description 3078 "Augment the scheduler policy with a queue policy"; 3079 } 3080 } 3081 } 3083 A.3. Example of Company C Diffserv Model 3085 Company C vendor augmentation is based on Ericsson's implementation 3086 differentiated QoS. This implementation first sorts traffic based on 3087 a classifier, which can sort traffic into one or more traffic 3088 forwarding classes. Then, a policer or meter policy references the 3089 classifier and its traffic forwarding classes to specify different 3090 service levels for each traffic forwarding class. 3092 Because each classifier sorts traffic into one or more traffic 3093 forwarding classes, this type of classifier does not align with ietf- 3094 qos-classifier.yang, which defines one traffic forwarding class per 3095 classifier. Additionally, Company C's policing and metering policies 3096 relies on the classifier's pre-defined traffic forwarding classes to 3097 provide differentiated services, rather than redefining the patterns 3098 within a policing or metering policy, as is defined in ietf- 3099 diffserv.yang. 3101 Due to these differences, even though Company C uses all the building 3102 blocks of classifier and policy, Company C's augmentation does not 3103 use ietf-diffserv.yang to provide differentiated service levels. 3104 Instead, Company C's augmentation uses the basic building blocks, 3105 ietf-qos-policy.yang to provide differentiated services. 3107 module example-compc-qos-policy { 3108 yang-version 1.1; 3109 namespace "urn:example-compc-qos-policy"; 3110 prefix "compcqos"; 3112 import ietf-qos-policy { 3113 prefix "pol"; 3114 } 3116 import ietf-qos-action { 3117 prefix "action"; 3118 } 3120 organization ""; 3121 contact ""; 3122 description ""; 3124 revision 2016-09-26 { 3125 description ""; 3126 reference ""; 3127 } 3129 /* identities */ 3131 identity compc-qos-policy { 3132 base pol:policy-type; 3133 } 3135 identity mdrr-queuing-policy { 3136 base compc-qos-policy; 3137 } 3139 identity pwfq-queuing-policy { 3140 base compc-qos-policy; 3141 } 3143 identity policing-policy { 3144 base compc-qos-policy; 3145 } 3147 identity metering-policy { 3148 base compc-qos-policy; 3149 } 3151 identity forwarding-policy { 3152 base compc-qos-policy; 3153 } 3155 identity overhead-profile-policy { 3156 base compc-qos-policy; 3157 } 3158 identity resource-profile-policy { 3159 base compc-qos-policy; 3160 } 3162 identity protocol-rate-limit-policy { 3163 base compc-qos-policy; 3164 } 3166 identity compc-qos-action { 3167 base pol:action-type; 3168 } 3170 /* groupings */ 3172 grouping redirect-action-grp { 3173 container redirect { 3174 /* Redirect options */ 3175 } 3176 } 3178 /* deviations */ 3180 deviation "/pol:policies/pol:policy-entry" { 3181 deviate add { 3182 must "pol:type = compc-qos-policy" { 3183 description 3184 "Only policy types drived from compc-qos-policy " + 3185 "are supported"; 3186 } 3187 } 3188 } 3190 deviation "/pol:policies/pol:policy-entry/pol:classifier-entry" { 3191 deviate add { 3192 must "../per-class-action = 'true'" { 3193 description 3194 "Only policies with per-class actions have classifiers"; 3195 } 3196 must "((../sub-type != 'mdrr-queuing-policy') and " + 3197 " (../sub-type != 'pwfq-queuing-policy')) or " + 3198 "(((../sub-type = 'mdrr-queuing-policy') or " + 3199 " (../sub-type = 'pwfq-queueing-policy')) and " + 3200 " ((classifier-entry-name = '0') or " + 3201 " (classifier-entry-name = '1') or " + 3202 " (classifier-entry-name = '2') or " + 3203 " (classifier-entry-name = '3') or " + 3204 " (classifier-entry-name = '4') or " + 3205 " (classifier-entry-name = '5') or " + 3206 " (classifier-entry-name = '6') or " + 3207 " (classifier-entry-name = '7') or " + 3208 " (classifier-entry-name = '8')))" { 3209 description 3210 "MDRR queuing policy's or PWFQ queuing policy's " + 3211 "classifier-entry-name is limited to the listed values"; 3212 } 3213 } 3214 } 3216 deviation "/pol:policies/pol:policy-entry/pol:classifier-entry" + 3217 "/pol:classifier-action-entry-cfg" { 3218 deviate add { 3219 max-elements 1; 3220 must "action-type = 'compc-qos-action'" { 3221 description 3222 "Only compc-qos-action is allowed"; 3223 } 3224 } 3225 } 3227 /* augments */ 3229 augment "/pol:policies/pol:policy-entry" { 3230 when "pol:type = 'compc-qos-policy')" { 3231 description 3232 "Additional nodes only for diffserv-policy"; 3233 } 3234 leaf sub-type { 3235 type identityref { 3236 base compc-qos-policy; 3237 } 3238 mandatory true; 3239 /* The value of this leaf must not change once configured */ 3240 } 3241 leaf per-class-action { 3242 mandatory true; 3243 type boolean; 3244 must "(((. = 'true') and " + 3245 " ((../sub-type = 'policing-policy') or " + 3246 " (../sub-type = 'metering-policy') or " + 3247 " (../sub-type = 'mdrr-queuing-policy') or " + 3248 " (../sub-type = 'pwfq-queuing-policy') or " + 3249 " (../sub-type = 'forwarding-policy'))) or " + 3250 " ((. = 'false') and " + 3251 " ((../sub-type = 'overhead-profile-policy') or " + 3252 " (../sub-type = 'resource-profile-policy') or " + 3253 " (../sub-type = 'protocol-rate-limit-policy')))" { 3255 description 3256 "Only certain policies have per-class action"; 3257 } 3258 } 3259 container traffic-classifier { 3260 presence true; 3261 when "../sub-type = 'policing-policy' or " + 3262 "../sub-type = 'metering-policy' or " + 3263 "../sub-type = 'forwarding-policy'" { 3264 description 3265 "A classifier for policing-policy or metering-policy"; 3266 } 3267 leaf name { 3268 type string; 3269 mandatory true; 3270 description 3271 "Traffic classifier name"; 3272 } 3273 leaf type { 3274 type enumeration { 3275 enum 'internal-dscp-only-classifier' { 3276 value 0; 3277 description 3278 "Classify traffic based on (internal) dscp only"; 3279 } 3280 enum 'ipv4-header-based-classifier' { 3281 value 1; 3282 description 3283 "Classify traffic based on IPv4 packet header fields"; 3284 } 3285 enum 'ipv6-header-based-classifier' { 3286 value 2; 3287 description 3288 "Classify traffic based on IPv6 packet header fields"; 3289 } 3290 } 3291 mandatory true; 3292 description 3293 "Traffic classifier type"; 3294 } 3295 } 3296 container traffic-queue { 3297 when "(../sub-type = 'mdrr-queuing-policy') or " + 3298 "(../sub-type = 'pwfq-queuing-policy')" { 3299 description 3300 "Queuing policy properties"; 3301 } 3302 leaf queue-map { 3303 type string; 3304 description 3305 "Traffic queue map for queuing policy"; 3306 } 3307 } 3308 container overhead-profile { 3309 when "../sub-type = 'overhead-profile-policy'" { 3310 description 3311 "Overhead profile policy properties"; 3312 } 3313 } 3314 container resource-profile { 3315 when "../sub-type = 'resource-profile-policy'" { 3316 description 3317 "Resource profile policy properties"; 3318 } 3319 } 3320 container protocol-rate-limit { 3321 when "../sub-type = 'protocol-rate-limit-policy'" { 3322 description 3323 "Protocol rate limit policy properties"; 3324 } 3325 } 3326 } 3328 augment "/pol:policies/pol:policy-entry/pol:classifier-entry" + 3329 "/pol:classifier-action-entry-cfg/pol:action-cfg-params" { 3330 when "../../../pol:type = 'compc-qos-policy')" { 3331 description 3332 "Configurations for a classifier-policy-type policy"; 3333 } 3334 case metering-or-policing-policy { 3335 when "../../../sub-type = 'policing-policy' or " 3336 + "../../../sub-type = 'metering-policy'" { 3337 } 3338 container dscp-marking { 3339 uses action:dscp-marking; 3340 } 3341 container precedence-marking { 3342 uses action:dscp-marking; 3343 } 3344 container priority-marking { 3345 uses action:priority; 3346 } 3347 container rate-limiting { 3348 uses action:one-rate-two-color-meter; 3349 } 3350 } 3351 case mdrr-queuing-policy { 3352 when "../../../sub-type = 'mdrr-queuing-policy'" { 3353 description 3354 "MDRR queue handling properties for the traffic " + 3355 "classified into current queue"; 3356 } 3357 leaf mdrr-queue-weight { 3358 type uint8 { 3359 range "20..100"; 3360 } 3361 units percentage; 3362 } 3363 } 3364 case pwfq-queuing-policy { 3365 when "../../../sub-type = 'pwfq-queuing-policy'" { 3366 description 3367 "PWFQ queue handling properties for traffic " + 3368 "classified into current queue"; 3369 } 3370 leaf pwfq-queue-weight { 3371 type uint8 { 3372 range "20..100"; 3373 } 3374 units percentage; 3375 } 3376 leaf pwfq-queue-priority { 3377 type uint8; 3378 } 3379 leaf pwfq-queue-rate { 3380 type uint8; 3381 } 3382 } 3383 case forwarding-policy { 3384 when "../../../sub-type = 'forwarding-policy'" { 3385 description 3386 "Forward policy handling properties for traffic " + 3387 "in this classifier"; 3388 } 3389 uses redirect-action-grp; 3390 } 3391 description 3392 "Add the classify action configuration"; 3393 } 3395 } 3397 Authors' Addresses 3399 Aseem Choudhary 3400 Cisco Systems 3401 170 W. Tasman Drive 3402 San Jose, CA 95134 3403 US 3405 Email: asechoud@cisco.com 3407 Mahesh Jethanandani 3408 Cisco Systems 3409 170 W. Tasman Drive 3410 San Jose, CA 95134 3411 US 3413 Email: mjethanandani@gmail.com 3415 Norm Strahle 3416 Juniper Networks 3417 1194 North Mathilda Avenue 3418 Sunnyvale, CA 94089 3419 US 3421 Email: nstrahle@juniper.net 3423 Ebben Aries 3424 Juniper Networks 3425 1194 North Mathilda Avenue 3426 Sunnyvale, CA 94089 3427 US 3429 Email: exa@juniper.net 3431 Ing-Wher Chen 3432 Kuatro Technologies 3434 Email: ichen@kuatrotech.com