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-03-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 min-rate-action-support {
description
" This feature allows support of min rate configuration
in policy.";
}
feature max-rate-action-support {
description
" This feature allows support of max rate configuration
in policy.";
}
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";
}
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 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 min-rate {
base policy:action-type;
description
"min-rate action type";
}
identity max-rate {
base policy:action-type;
description
"max-rate action type";
}
identity queue {
base policy:action-type;
description
"queue action type";
}
identity schedular {
base policy:action-type;
description
"schedular 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 size or interval configuration";
choice burst-type {
case size {
leaf burst-size {
type uint64;
units "bytes";
description
"burst size";
}
}
case interval {
leaf burst-interval {
type uint64;
units "microsecond";
description
"burst interval";
}
}
description
"Choice of burst type";
}
}
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 meter-rate {
type uint64;
units "bits-per-second";
description
"meter rate";
}
leaf meter-burst {
type uint64;
units "byes";
description
"burst size";
}
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 {
type uint64;
units "bits-per-second";
description
"meter rate";
}
leaf committed-burst {
type uint64;
units "byes";
description
"commited burst size";
}
leaf excess-burst {
type uint64;
units "byes";
description
"excess burst size";
}
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 {
type uint64;
units "bits-per-second";
description
"meter rate";
}
leaf committed-burst {
type uint64;
units "byes";
description
"commited burst size";
}
leaf peak-rate {
type uint64;
units "bits-per-second";
description
"meter rate";
}
leaf peak-burst {
type uint64;
units "byes";
description
"commited burst size";
}
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 {
leaf count-action {
type empty;
description
"count action";
}
description
"the count action";
}
description
"the count action grouping";
}
grouping named-counter {
container named-counter-cfg {
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 schedular {
container schedular-cfg {
uses min-rate;
uses max-rate;
description
"Schedular configuration container";
}
description
"Schedular configuration grouping";
}
}