module ietf-qos-action {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-qos-action";
prefix action;
import ietf-inet-types {
prefix inet;
}
import ietf-qos-policy {
prefix policy;
}
organization "IETF RTG (Routing Area) Working Group";
contact
"WG Web:
WG List:
WG Chair: Chris Bowers
WG Chair: Jeff Tantsura
Editor: Aseem Choudhary
Editor: Mahesh Jethanandani
Editor: Norm Strahle
";
description
"This module contains a collection of YANG definitions for
configuring qos specification implementations.
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
revision 2018-06-17 {
description
"Latest revision for qos actions";
reference "RFC XXXX";
}
feature meter-template-support {
description
" This feature allows support of meter-template.";
}
feature meter-inline-feature {
description
"This feature allows support of meter-inline configuration.";
}
feature meter-reference-feature {
description
"This feature allows support of meter by reference
configuration.";
}
feature queue-action-support {
description
" This feature allows support of queue action configuration
in policy.";
}
feature scheduler-action-support {
description
" This feature allows support of scheduler configuration
in policy.";
}
feature child-policy-feature {
description
" This feature allows configuration of hierarchical policy.";
}
feature count-feature {
description
"This feature allows action configuration to enable
counter in a classifier";
}
feature named-counter-feature {
description
"This feature allows action configuration to enable
named counter in a classifier";
}
feature burst-time-unit-support {
description
"This feature allows burst unit to be configured as
time duration.";
}
identity rate-unit-type {
description
"base rate-unit type";
}
identity bits-per-second {
base rate-unit-type;
description
"bits per second identity";
}
identity kilo-bits-per-second {
base rate-unit-type;
description
"kilo bits per second identity";
}
identity mega-bits-per-second {
base rate-unit-type;
description
"mega bits per second identity";
}
identity giga-bits-per-second {
base rate-unit-type;
description
"mega bits per second identity";
}
identity percent {
base rate-unit-type;
description
"percentage";
}
identity burst-unit-type {
description
"base burst-unit type";
}
identity bytes {
base burst-unit-type;
description
"bytes";
}
identity kilo-bytes {
base burst-unit-type;
description
"kilo bytes";
}
identity mega-bytes {
base burst-unit-type;
description
"mega bytes";
}
identity millisecond {
base burst-unit-type;
if-feature burst-time-unit-support;
description
"milli seconds";
}
identity microsecond {
base burst-unit-type;
if-feature burst-time-unit-support;
description
"micro seconds";
}
identity dscp-marking {
base policy:action-type;
description
"dscp marking action type";
}
identity meter-inline {
base policy:action-type;
if-feature meter-inline-feature;
description
"meter-inline action type";
}
identity meter-reference {
base policy:action-type;
if-feature meter-reference-feature;
description
"meter reference action type";
}
identity queue {
base policy:action-type;
if-feature queue-action-support;
description
"queue action type";
}
identity scheduler {
base policy:action-type;
if-feature scheduler-action-support;
description
"scheduler action type";
}
identity discard {
base policy:action-type;
description
"discard action type";
}
identity child-policy {
base policy:action-type;
if-feature child-policy-feature;
description
"child-policy action type";
}
identity count {
base policy:action-type;
if-feature count-feature;
description
"count action type";
}
identity named-counter {
base policy:action-type;
if-feature named-counter-feature;
description
"name counter action type";
}
identity meter-type {
description
"This base identity type defines meter types";
}
identity one-rate-two-color-meter-type {
base meter-type;
description
"one rate two color meter type";
}
identity one-rate-tri-color-meter-type {
base meter-type;
description
"one rate three color meter type";
}
identity two-rate-tri-color-meter-type {
base meter-type;
description
"two rate three color meter action type";
}
identity drop-type {
description
"drop algorithm";
}
identity tail-drop {
base drop-type;
description
"tail drop algorithm";
}
identity conform-2color-meter-action-type {
description
"action type in a meter";
}
identity exceed-2color-meter-action-type {
description
"action type in a meter";
}
identity conform-3color-meter-action-type {
description
"action type in a meter";
}
identity exceed-3color-meter-action-type {
description
"action type in a meter";
}
identity violate-3color-meter-action-type {
description
"action type in a meter";
}
grouping rate-value-unit {
leaf rate-value {
type uint64;
description
"rate value";
}
leaf rate-unit {
type identityref {
base rate-unit-type;
}
description
"rate unit";
}
description
"rate value and unit grouping";
}
grouping burst {
description
"burst value and unit configuration";
leaf burst-value {
type uint64;
description
"burst value";
}
leaf burst-unit {
type identityref {
base burst-unit-type;
}
description
"burst unit";
}
}
grouping threshold {
description
"Threshold Parameters";
container threshold {
description
"threshold";
choice threshold-type {
case size {
leaf threshold-size {
type uint64;
units "bytes";
description
"Threshold size";
}
}
case interval {
leaf threshold-interval {
type uint64;
units "microsecond";
description
"Threshold interval";
}
}
description
"Choice of threshold type";
}
}
}
grouping drop {
container drop-cfg {
leaf drop-action {
type empty;
description
"always drop algorithm";
}
description
"the drop action";
}
description
"always drop grouping";
}
grouping queuelimit {
container qlimit-thresh {
uses threshold;
description
"the queue limit";
}
description
"the queue limit beyond which queue will not hold any packet";
}
grouping conform-2color-meter-action-params {
description
"meter action parameters";
list conform-2color-meter-action-params {
key "conform-2color-meter-action-type";
ordered-by user;
description
"Configuration of basic-meter & associated actions";
leaf conform-2color-meter-action-type {
type identityref {
base conform-2color-meter-action-type;
}
description
"meter action type";
}
choice conform-2color-meter-action-val {
description
" meter action based on choice of meter action type";
}
}
}
grouping exceed-2color-meter-action-params {
description
"meter action parameters";
list exceed-2color-meter-action-params {
key "exceed-2color-meter-action-type";
ordered-by user;
description
"Configuration of basic-meter & associated actions";
leaf exceed-2color-meter-action-type {
type identityref {
base exceed-2color-meter-action-type;
}
description
"meter action type";
}
choice exceed-2color-meter-action-val {
description
" meter action based on choice of meter action type";
}
}
}
grouping conform-3color-meter-action-params {
description
"meter action parameters";
list conform-3color-meter-action-params {
key "conform-3color-meter-action-type";
ordered-by user;
description
"Configuration of basic-meter & associated actions";
leaf conform-3color-meter-action-type {
type identityref {
base conform-3color-meter-action-type;
}
description
"meter action type";
}
choice conform-3color-meter-action-val {
description
" meter action based on choice of meter action type";
}
}
}
grouping exceed-3color-meter-action-params {
description
"meter action parameters";
list exceed-3color-meter-action-params {
key "exceed-3color-meter-action-type";
ordered-by user;
description
"Configuration of basic-meter & associated actions";
leaf exceed-3color-meter-action-type {
type identityref {
base exceed-3color-meter-action-type;
}
description
"meter action type";
}
choice exceed-3color-meter-action-val {
description
" meter action based on choice of meter action type";
}
}
}
grouping violate-3color-meter-action-params {
description
"meter action parameters";
list violate-3color-meter-action-params {
key "violate-3color-meter-action-type";
ordered-by user;
description
"Configuration of basic-meter & associated actions";
leaf violate-3color-meter-action-type {
type identityref {
base violate-3color-meter-action-type;
}
description
"meter action type";
}
choice violate-3color-meter-action-val {
description
" meter action based on choice of meter action type";
}
}
}
grouping one-rate-two-color-meter {
container one-rate-two-color-meter {
description
"single rate two color marker meter";
leaf committed-rate-value {
type uint64;
description
"committed rate value";
}
leaf committed-rate-unit {
type identityref {
base rate-unit-type;
}
description
"committed rate unit";
}
leaf committed-burst-value {
type uint64;
description
"burst value";
}
leaf committed-burst-unit {
type identityref {
base burst-unit-type;
}
description
"committed burst unit";
}
container conform-action {
uses conform-2color-meter-action-params;
description
"conform action";
}
container exceed-action {
uses exceed-2color-meter-action-params;
description
"exceed action";
}
}
description
"single rate two color marker meter attributes";
}
grouping one-rate-tri-color-meter {
container one-rate-tri-color-meter {
description
"single rate three color meter";
leaf committed-rate-value {
type uint64;
description
"meter rate";
}
leaf committed-rate-unit {
type identityref {
base rate-unit-type;
}
description
"committed rate unit";
}
leaf committed-burst-value {
type uint64;
description
"committed burst size";
}
leaf committed-burst-unit {
type identityref {
base burst-unit-type;
}
description
"committed burst unit";
}
leaf excess-burst-value {
type uint64;
description
"excess burst size";
}
leaf excess-burst-unit {
type identityref {
base burst-unit-type;
}
description
"excess burst unit";
}
container conform-action {
uses conform-3color-meter-action-params;
description
"conform, or green action";
}
container exceed-action {
uses exceed-3color-meter-action-params;
description
"exceed, or yellow action";
}
container violate-action {
uses violate-3color-meter-action-params;
description
"violate, or red action";
}
}
description
"one-rate-tri-color-meter attributes";
}
grouping two-rate-tri-color-meter {
container two-rate-tri-color-meter {
description
"two rate three color meter";
leaf committed-rate-value {
type uint64;
units "bits-per-second";
description
"committed rate";
}
leaf committed-rate-unit {
type identityref {
base rate-unit-type;
}
description
"committed rate unit";
}
leaf committed-burst-value {
type uint64;
description
"commited burst size";
}
leaf committed-burst-unit {
type identityref {
base burst-unit-type;
}
description
"committed burst unit";
}
leaf peak-rate-value {
type uint64;
description
"peak rate";
}
leaf peak-rate-unit {
type identityref {
base rate-unit-type;
}
description
"committed rate unit";
}
leaf peak-burst-value {
type uint64;
description
"commited burst size";
}
leaf peak-burst-unit {
type identityref {
base burst-unit-type;
}
description
"peak burst unit";
}
container conform-action {
uses conform-3color-meter-action-params;
description
"conform, or green action";
}
container exceed-action {
uses exceed-3color-meter-action-params;
description
"exceed, or yellow action";
}
container violate-action {
uses violate-3color-meter-action-params;
description
"exceed, or red action";
}
}
description
"two-rate-tri-color-meter attributes";
}
grouping meter {
choice meter-type {
case one-rate-two-color-meter-type {
uses one-rate-two-color-meter;
description
"basic meter";
}
case one-rate-tri-color-meter-type {
uses one-rate-tri-color-meter;
description
"one rate tri-color meter";
}
case two-rate-tri-color-meter-type {
uses two-rate-tri-color-meter;
description
"two rate tri-color meter";
}
description
" meter action based on choice of meter action type";
}
description
"meter attributes";
}
container meter-template {
description
"list of meter templates";
list meter-entry {
if-feature meter-template-support;
key "meter-name";
description
"meter entry template";
leaf meter-name {
type string;
description
"meter identifier";
}
uses meter;
}
}
grouping meter-reference {
container meter-reference-cfg {
leaf meter-reference-name {
type string ;
mandatory true;
description
"This leaf defines name of the meter referenced";
}
leaf meter-type {
type identityref {
base meter-type;
}
mandatory true;
description
"This leaf defines type of the meter";
}
description
"meter reference name";
}
description
"meter reference";
}
grouping count {
container count-cfg {
if-feature count-feature;
leaf count-action {
type empty;
description
"count action";
}
description
"the count action";
}
description
"the count action grouping";
}
grouping named-counter {
container named-counter-cfg {
if-feature named-counter-feature;
leaf count-name-action {
type string;
description
"count action";
}
description
"the count action";
}
description
"the count action grouping";
}
grouping discard {
container discard-cfg {
leaf discard {
type empty;
description
"discard action";
}
description
"discard action";
}
description
"discard grouping";
}
grouping priority {
container priority-cfg {
leaf priority-level {
type uint8;
description
"priority level";
}
description
"priority attributes";
}
description
"priority attributes grouping";
}
grouping min-rate {
container min-rate-cfg {
uses rate-value-unit;
description
"min guaranteed bandwidth";
}
description
"minimum rate grouping";
}
grouping dscp-marking {
container dscp-cfg {
leaf dscp {
type inet:dscp;
description
"dscp marking";
}
description
"dscp marking container";
}
description
"dscp marking grouping";
}
grouping child-policy {
container child-policy-cfg {
if-feature child-policy-feature;
leaf policy-name {
type string;
description
"Hierarchical Policy";
}
description
"Hierarchical Policy configuration container";
}
description
"Grouping of Hierarchical Policy configuration";
}
grouping max-rate {
container max-rate-cfg {
uses rate-value-unit;
uses burst;
description
"maximum rate attributes container";
}
description
"maximum rate attributes";
}
grouping queue {
container queue-cfg {
uses priority;
uses min-rate;
uses max-rate;
container algorithmic-drop-cfg {
choice drop-algorithm {
case tail-drop {
container tail-drop-cfg {
leaf tail-drop-alg {
type empty;
description
"tail drop algorithm";
}
description
"Tail Drop configuration container";
}
description
"Tail Drop choice";
}
description
"Choice of Drop Algorithm";
}
description
"Algorithmic Drop configuration container";
}
description
"Queue configuration container";
}
description
"Queue grouping";
}
grouping scheduler {
container scheduler-cfg {
uses min-rate;
uses max-rate;
description
"Schedular configuration container";
}
description
"Schedular configuration grouping";
}
}