idnits 2.17.1 draft-asechoud-rtgwg-qos-oper-model-07.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 14 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 == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 09, 2020) is 1384 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-12) exists of draft-ietf-rtgwg-qos-model-01 ** Downref: Normative reference to an Informational RFC: RFC 2697 ** Downref: Normative reference to an Informational RFC: RFC 2698 Summary: 3 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Choudhary 3 Internet-Draft Cisco Systems 4 Intended status: Standards Track I. Chen 5 Expires: January 10, 2021 The MITRE Corporation 6 July 09, 2020 8 YANG Model for QoS Operational Parameters 9 draft-asechoud-rtgwg-qos-oper-model-07 11 Abstract 13 This document describes a YANG model for Quality of Service (QoS) 14 operational parameters. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at https://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on January 10, 2021. 33 Copyright Notice 35 Copyright (c) 2020 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (https://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 51 1.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 2 52 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 53 3. QoS Operational Model Design . . . . . . . . . . . . . . . . 3 54 4. Modules Tree Structure . . . . . . . . . . . . . . . . . . . 4 55 5. Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 56 5.1. IETF-QOS-OPER . . . . . . . . . . . . . . . . . . . . . . 6 57 6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 58 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 13 59 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 60 8.1. Normative References . . . . . . . . . . . . . . . . . . 13 61 8.2. Informative References . . . . . . . . . . . . . . . . . 14 62 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 64 1. Introduction 66 This document defines a base YANG [RFC6020] [RFC7950] data module for 67 Quality of Service (QoS) operational parameters. Remote Procedure 68 Calls (RPC) or notification definition is currently not part of this 69 document and will be added later if necessary. QoS configuration 70 modules are defined by [I-D.ietf-rtgwg-qos-model]. 72 This document doesn't include operational parameters for random- 73 detect (RED), which is left to individual vendor to augment it. 75 Editorial Note: (To be removed by RFC Editor) 77 This draft contains several placeholder values that need to be 78 replaced with finalized values at the time of publication. Please 79 apply the following replacements: o "XXXX" --> the assigned RFC value 80 for this draft both in this draft and in the YANG models under the 81 revision statement. o The "revision" date in model, in the format 82 XXXX-XX-XX, needs to be updated with the date the draft gets 83 approved. 85 The YANG modules in this document conform to the Network Management 86 Datastore Architecture (NMDA) [RFC8342]. 88 1.1. Tree Diagrams 90 Tree diagrams used in this document follow the notation defined in 91 [RFC8340] 93 2. Terminology 95 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 96 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 97 "OPTIONAL" in this document are to be interpreted as described in BCP 98 14 [RFC2119] [RFC8174] when, and only when, they appear in all 99 capitals, as shown here. 101 3. QoS Operational Model Design 103 QoS operational model include QoS policy applied to an interface in 104 each direction of traffic. For each QoS policy applied to an 105 interface the model further includes counters for associated 106 Classifiers, Meters and Queues in a particular direction. To 107 modularize and for reusability, grouping have been defined for 108 various counters of classifier, Meters and Queues. The target is 109 assumed to be interface but the groupings can be used for any other 110 target type where QoS policy is applied. 112 [I-D.ietf-rtgwg-qos-model] defines various building blocks for 113 applying a QoS Policy on a target. It includes QoS Policy 114 configuration, which is a container of various classifiers and 115 corresponding actions which are configured for traffic conditioning. 116 This drafts defines the various counters for these building blocks. 117 ietf-qos-oper module defined in this draft augments ietf-interfaces 118 [RFC8343] module. 120 Classifier statistics contains counters for packets and bytes matched 121 to the traffic in a direction and also average rate at which traffic 122 is hitting a classifier. Classification criterion may be based on 123 IP, MPLS or Ethernet. Counters defined in this draft are agnostic to 124 underlying data plane technology. 126 Statistics of meter is modeled based on commonly used algorithms in 127 industry, Single Rate Tri Color Marking (srTCM) [RFC2697] meter, Two 128 Rate Tri Color Marking (trTCM) [RFC2698] meter. Metering statistics 129 includes counters corresponding to various rates configured. A 130 metering container is referred by a metering identifier. This 131 identifier could be a classifier name if the metering configuration 132 is inline with classifier or it could be metering template name if 133 the metering is configured as separate entity and associated with the 134 classifier. 136 Queuing statistics includes counters corresponding to various queues 137 associated with the policy. A queuing container is referred by 138 queuing identifier. This identifier could be a classifier name if 139 the queuing configuration is inline with classifier and hence there 140 is one-to-one mapping between a classifier and a queue or it could be 141 a separate queue identifier if one or more than one classifiers are 142 associated with a queue. 144 4. Modules Tree Structure 146 This document defines counters for classifiers, meters and queues. 148 Classifier statistics consists of list of classifier entries 149 identified by a classifier entry name. Classifier counters include 150 matched packets, bytes and average rate of traffic matching a 151 particular classifier. 153 Metering statistics consists of meters identified by an identifier. 154 Metering counters include conform, exceed, violate and drop packets 155 and bytes. 157 Queuing counters include instantaneous, peak, average queue length, 158 as well as output conform, exceed, tail drop packets and bytes. 160 Named statistics is defined as statistics which are tagged by a name. 161 This could be aggregated or non-aggregated. Aggregated named 162 statistics is defined as counters which are aggregated across 163 classifier entries in a policy applied to an interface in a 164 particular direction. Non-aggregated named statistics are counters 165 of classifier, metering or queuing which have the same tag name but 166 maintained separately. 168 module: ietf-qos-oper 169 augment /if:interfaces/if:interface: 170 +--ro qos-interface-statistics 171 +--ro stats-per-direction* [] 172 +--ro direction? identityref 173 +--ro policy-name? string 174 +--ro classifier-statistics* [] 175 | +--ro classifier-entry-name? string 176 | +--ro classified-pkts? uint64 177 | +--ro classified-bytes? uint64 178 | +--ro classified-rate? uint64 179 +--ro named-statistics* [] 180 | +--ro stats-name? string 181 | +--ro aggregated 182 | | +--ro pkts? uint64 183 | | +--ro bytes? uint64 184 | | +--ro rate? uint64 185 | +--ro non-aggregated 186 | +--ro classifier-statistics* [] 187 | | +--ro classifier-entry-name? string 188 | | +--ro classified-pkts? uint64 189 | | +--ro classified-bytes? uint64 190 | | +--ro classified-rate? uint64 191 | +--ro metering-statistics* [] 192 | | +--ro meter-id? string 193 | | +--ro conform-pkts? uint64 194 | | +--ro conform-bytes? uint64 195 | | +--ro conform-rate? uint64 196 | | +--ro exceed-pkts? uint64 197 | | +--ro exceed-bytes? uint64 198 | | +--ro exceed-rate? uint64 199 | | +--ro violate-pkts? uint64 200 | | +--ro violate-bytes? uint64 201 | | +--ro violate-rate? uint64 202 | | +--ro meter-drop-pkts? uint64 203 | | +--ro meter-drop-bytes? uint64 204 | +--ro queueing-statistics* [] 205 | +--ro queue-id? string 206 | +--ro output-conform-pkts? uint64 207 | +--ro output-conform-bytes? uint64 208 | +--ro output-exceed-pkts? uint64 209 | +--ro output-exceed-bytes? uint64 210 | +--ro queue-current-size-bytes? uint64 211 | +--ro queue-average-size-bytes? uint64 212 | +--ro queue-peak-size-bytes? uint64 213 | +--ro tailed-drop-pkts? uint64 214 | +--ro tailed-drop-bytes? uint64 215 +--ro metering-statistics* [] 216 | +--ro meter-id? string 217 | +--ro conform-pkts? uint64 218 | +--ro conform-bytes? uint64 219 | +--ro conform-rate? uint64 220 | +--ro exceed-pkts? uint64 221 | +--ro exceed-bytes? uint64 222 | +--ro exceed-rate? uint64 223 | +--ro violate-pkts? uint64 224 | +--ro violate-bytes? uint64 225 | +--ro violate-rate? uint64 226 | +--ro meter-drop-pkts? uint64 227 | +--ro meter-drop-bytes? uint64 228 +--ro queueing-statistics* [] 229 +--ro queue-id? string 230 +--ro output-conform-pkts? uint64 231 +--ro output-conform-bytes? uint64 232 +--ro output-exceed-pkts? uint64 233 +--ro output-exceed-bytes? uint64 234 +--ro queue-current-size-bytes? uint64 235 +--ro queue-average-size-bytes? uint64 236 +--ro queue-peak-size-bytes? uint64 237 +--ro tailed-drop-pkts? uint64 238 +--ro tailed-drop-bytes? uint64 240 5. Modules 242 5.1. IETF-QOS-OPER 244 file "ietf-qos-oper.yang" 246 module ietf-qos-oper { 247 yang-version 1.1; 248 namespace "urn:ietf:params:xml:ns:yang:ietf-qos-oper"; 249 prefix oper; 250 import ietf-interfaces { 251 prefix if; 252 } 253 organization "IETF RTG (Routing Area) Working Group"; 254 contact 255 "WG Web: 256 WG List: 257 Editor: Aseem Choudhary 258 "; 259 description 260 "This module contains a collection of YANG definitions for 261 qos operational specification. 262 Copyright (c) 2019 IETF Trust and the persons identified as 263 authors of the code. All rights reserved. 264 Redistribution and use in source and binary forms, with or 265 without modification, is permitted pursuant to, and subject 266 to the license terms contained in, the Simplified BSD License 267 set forth in Section 4.c of the IETF Trust's Legal Provisions 268 Relating to IETF Documents 269 (http://trustee.ietf.org/license-info). 270 This version of this YANG module is part of RFC XXXX; see 271 the RFC itself for full legal notices."; 272 revision 2019-10-28 { 273 description 274 "Latest revision for qos operational statistics"; 275 reference "RFC XXXX"; 276 } 277 identity direction { 278 description 279 "This is identity of traffic direction"; 280 } 281 identity inbound { 282 base direction; 283 description 284 "Direction of traffic coming into the network entry"; 285 } 286 identity outbound { 287 base direction; 288 description 289 "Direction of traffic going out of the network entry"; 290 } 291 grouping classifier-entry-stats { 292 description 293 " 294 This group defines the classifier filter counters of 295 each classifier entry 296 "; 297 leaf classified-pkts { 298 type uint64; 299 description 300 " Number of total packets which filtered 301 to a classifier-entry"; 302 } 303 leaf classified-bytes { 304 type uint64; 305 description 306 " Number of total bytes which filtered 307 to a classifier-entry"; 308 } 309 leaf classified-rate { 310 type uint64; 311 units "bits-per-second"; 312 description 313 " Rate of average data flow through a 314 classifier-entry"; 315 } 316 } 317 grouping named-stats { 318 description 319 "QoS matching statistics associated with a stats-name"; 320 leaf pkts { 321 type uint64; 322 description 323 " Number of total matched packets associated 324 to a statistics name"; 325 } 326 leaf bytes { 327 type uint64; 328 description 329 " Number of total matched bytes associated 330 to a statistics name"; 332 } 333 leaf rate { 334 type uint64; 335 units "bits-per-second"; 336 description 337 " Rate of average matched data which is associated 338 to a statistics name"; 339 } 340 } 341 grouping queue-stats { 342 description 343 "Queuing Counters"; 344 leaf output-conform-pkts { 345 type uint64; 346 description 347 "Number of packets transmitted from queue "; 348 } 349 leaf output-conform-bytes { 350 type uint64; 351 description 352 "Number of bytes transmitted from queue "; 353 } 354 leaf output-exceed-pkts { 355 type uint64; 356 description 357 "Number of packets transmitted from queue "; 358 } 359 leaf output-exceed-bytes { 360 type uint64; 361 description 362 "Number of bytes transmitted from queue "; 363 } 364 leaf queue-current-size-bytes { 365 type uint64; 366 description 367 "Number of bytes currently buffered "; 368 } 369 leaf queue-average-size-bytes { 370 type uint64; 371 description 372 "Average queue size in number of bytes"; 373 } 374 leaf queue-peak-size-bytes { 375 type uint64; 376 description 377 "Peak buffer queue size in bytes "; 378 } 379 leaf tailed-drop-pkts { 380 type uint64; 381 description 382 "Total number of packets tail-dropped "; 383 } 384 leaf tailed-drop-bytes { 385 type uint64; 386 description 387 "Total number of bytes tail-dropped "; 388 } 389 } 390 grouping meter-stats { 391 description 392 "Metering counters"; 393 leaf conform-pkts { 394 type uint64; 395 description 396 "Number of conform packets"; 397 } 398 leaf conform-bytes { 399 type uint64; 400 description 401 "Bytes of conform packets"; 402 } 403 leaf conform-rate { 404 type uint64; 405 units "bits-per-second"; 406 description 407 "Traffic Rate measured as conformimg"; 408 } 409 leaf exceed-pkts { 410 type uint64; 411 description 412 "Number of packets counted as exceeding"; 413 } 414 leaf exceed-bytes { 415 type uint64; 416 description 417 "Bytes of packets counted as exceeding"; 418 } 419 leaf exceed-rate { 420 type uint64; 421 units "bits-per-second"; 422 description 423 "Traffic Rate measured as exceeding"; 424 } 425 leaf violate-pkts { 426 type uint64; 427 description 428 "Number of packets counted as violating"; 429 } 430 leaf violate-bytes { 431 type uint64; 432 description 433 "Bytes of packets counted as violating"; 434 } 435 leaf violate-rate { 436 type uint64; 437 units "bits-per-second"; 438 description 439 "Traffic Rate measured as violating"; 440 } 441 leaf meter-drop-pkts { 442 type uint64; 443 description 444 "Number of packets dropped by meter"; 445 } 446 leaf meter-drop-bytes { 447 type uint64; 448 description 449 "Bytes of packets dropped by meter"; 450 } 451 } 452 grouping classifier-entry-statistics { 453 description 454 "Statistics for a classifier entry"; 455 leaf classifier-entry-name { 456 type string; 457 description 458 "Classifier Entry Name"; 459 } 460 uses classifier-entry-stats; 461 } 463 grouping queuing-stats { 464 description 465 "Statistics for a queue"; 466 leaf queue-id { 467 type string; 468 description 469 "Queue Identifier"; 470 } 471 uses queue-stats; 472 } 474 grouping metering-stats { 475 description 476 "Statistics for a meter"; 477 leaf meter-id { 478 type string; 479 description 480 "Meter Identifier"; 481 } 482 uses meter-stats; 483 } 485 augment "/if:interfaces/if:interface" { 486 description 487 "Augments Qos Target Entry to Interface module"; 489 container qos-interface-statistics { 490 config false; 491 description 492 "Qos Interface statistics"; 494 list stats-per-direction { 495 description 496 "Qos Interface statistics for ingress or egress direction"; 498 leaf direction { 499 type identityref { 500 base direction; 501 } 502 description 503 "Direction fo the traffic flow either inbound or 504 outbound"; 505 } 506 leaf policy-name { 507 type string; 508 description 509 "Policy entry name for single level policy as well as 510 for Hierarchical policies. For Hierarchical policies, 511 this represent relative path as well as the last level 512 policy name."; 513 } 515 list classifier-statistics { 516 description 517 "Classifier Statistics for each Classifier Entry in a 518 Policy applied in a particular direction"; 519 uses classifier-entry-statistics; 520 } 521 list named-statistics { 522 config false; 523 description 524 "Statistics for a statistics-name"; 525 leaf stats-name { 526 type string; 527 description 528 "Statistics name"; 529 } 530 container aggregated { 531 description 532 "Matched aggregated statistics for a statistics-name"; 533 uses named-stats; 534 } 535 container non-aggregated { 536 description 537 "Statistics for non-aggregated statistics-name"; 538 list classifier-statistics { 539 description 540 "Classifier Statistics for each Classifier Entry in a 541 Policy applied in a particular direction"; 542 uses classifier-entry-statistics; 543 } 544 list metering-statistics { 545 config false; 546 description 547 "Statistics for each Meter associated with 548 the Policy"; 549 uses metering-stats; 550 } 551 list queueing-statistics { 552 config false; 553 description 554 "Statistics for each Queue associated with 555 the Policy"; 556 uses queuing-stats; 557 } 558 } 559 } 560 list metering-statistics { 561 config false; 562 description 563 "Statistics for each Meter associated with the Policy"; 564 uses metering-stats; 565 } 566 list queueing-statistics { 567 config false; 568 description 569 "Statistics for each Queue associated with the Policy"; 570 uses queuing-stats; 571 } 573 } 574 } 575 } 576 } 578 580 6. Security Considerations 582 7. Acknowledgement 584 MITRE has approved this document for Public Release, Distribution 585 Unlimited, with Public Release Case Number 20-0518. The author's 586 affiliation with The MITRE Corporation is provided for identification 587 purposes only, and is not intended to convey or imply MITRE's 588 concurrence with, or support for, the positions, opinions or 589 viewpoints expressed by the author. 591 8. References 593 8.1. Normative References 595 [I-D.ietf-rtgwg-qos-model] 596 Choudhary, A., Jethanandani, M., Strahle, N., Aries, E., 597 and I. Chen, "YANG Model for QoS", draft-ietf-rtgwg-qos- 598 model-01 (work in progress), April 2020. 600 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 601 Requirement Levels", BCP 14, RFC 2119, 602 DOI 10.17487/RFC2119, March 1997, 603 . 605 [RFC2697] Heinanen, J. and R. Guerin, "A Single Rate Three Color 606 Marker", RFC 2697, DOI 10.17487/RFC2697, September 1999, 607 . 609 [RFC2698] Heinanen, J. and R. Guerin, "A Two Rate Three Color 610 Marker", RFC 2698, DOI 10.17487/RFC2698, September 1999, 611 . 613 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 614 the Network Configuration Protocol (NETCONF)", RFC 6020, 615 DOI 10.17487/RFC6020, October 2010, 616 . 618 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 619 RFC 7950, DOI 10.17487/RFC7950, August 2016, 620 . 622 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 623 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 624 May 2017, . 626 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 627 and R. Wilton, "Network Management Datastore Architecture 628 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 629 . 631 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 632 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 633 . 635 8.2. Informative References 637 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 638 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 639 . 641 Authors' Addresses 643 Aseem Choudhary 644 Cisco Systems 645 170 W. Tasman Drive 646 San Jose, CA 95134 647 US 649 Email: asechoud@cisco.com 651 Ing-Wher Chen 652 The MITRE Corporation 654 Email: ingwherchen@mitre.org