module ietf-qos-action {
namespace "urn:ietf:params:xml:ns:yang:ietf-qos-action";
prefix action;
import ietf-inet-types {
prefix inet;
}
import ietf-qos-classifier {
prefix classifier;
}
import ietf-qos-policy {
prefix policy;
}
organization "IETF NETMOD (Netmod Working Group) Working Group";
contact
"WG Web:
WG List:
WG Chair: Jurgen Schonwalder
WG Chair: Lou Berger
WG Chair: Kent Watsen
Editor: Aseem Choudhary
Editor: Mahesh Jethanandani
";
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 2016-03-03 {
description
"Latest revision for qos actions";
reference "RFC XXXX";
}
feature meter-template-support {
description
" This feature allows support of meter-template.";
}
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";
}
}
}
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";
}
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";
}
identity queue {
base policy:action-type;
description
"queue action type";
}
identity dscp-marking {
base policy:action-type;
description
"dscp marking action type";
}
identity meter {
base policy:action-type;
description
"meter action type";
}
identity srtcm-meter {
base policy:action-type;
description
"single rate three color meter action type";
}
identity trtcm-meter {
base policy:action-type;
description
"two rate three color meter action type";
}
identity schedular {
base policy:action-type;
description
"schedular action type";
}
identity always-drop {
base policy:action-type;
description
"always drop algorithm";
}
identity tail-drop {
base policy:action-type;
description
"tail drop algorithm";
}
identity random-detect {
base policy:action-type;
description
"random detect algorithm";
}
identity meter-action-type {
description
"action type in a meter";
}
identity meter-action-drop {
base meter-action-type;
description
"drop action type in a meter";
}
identity meter-action-dscp-set {
base meter-action-type;
description
"dscp mark action type in a meter";
}
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 meter-action-params {
leaf meter-action-type {
type identityref {
base meter-action-type;
}
description
"meter action type";
}
choice val {
case meter-action-dscp-mark {
uses dscp-marking;
description
"meter action: mark";
}
case meter-action-drop {
description
"meter action: drop";
uses drop;
}
description
" meter action based on choice of meter action type";
}
description
"meter action parameters";
}
grouping generic-meter {
leaf meter-id {
type uint16;
description
"meter identifier";
}
uses rate-value-unit;
uses burst;
container color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
container succeed-action {
uses meter-action-params;
leaf next-meter-id {
type uint16;
description
"next meter identifier";
}
description
"confirm action";
}
container fail-action {
uses meter-action-params;
leaf next-meter-id {
type uint16;
description
"next meter identifier";
}
description
"exceed action";
}
description
"meter attributes";
}
grouping one-rate-tri-color-meter {
container srtcm {
leaf committed-rate {
type uint64;
units "bits-per-second";
description
"committed 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 meter-action-params;
description
"conform action";
}
container conform-color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
container exceed-action {
uses meter-action-params;
description
"exceed action";
}
container exceed-color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
container violate-action {
uses meter-action-params;
description
"violate action";
}
container violate-color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
description
"one-rate-tri-color-meter attributes";
}
description
"one-rate-tri-color-meter grouping";
}
grouping two-rate-tri-color-meter {
container trtcm {
leaf committed-rate {
type uint64;
units "bits-per-second";
description
"committed meter rate";
}
leaf committed-burst {
type uint64;
units "byes";
description
"commited burst size";
}
leaf peak-rate {
type uint64;
units "bits-per-second";
description
"peak meter rate";
}
leaf peak-burst {
type uint64;
units "byes";
description
"peak burst size";
}
container conform-action {
uses meter-action-params;
description
"conform action";
}
container conform-color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
container exceed-action {
uses meter-action-params;
description
"exceed action";
}
container exceed-color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
container violate-action {
uses meter-action-params;
description
"violate action";
}
container violate-color {
uses classifier:classifier-entry-generic-attr;
description
"color aware & color blind attributes container";
}
description
"two-rate-tri-color-meter attributes";
}
description
"two-rate-tri-color-meter 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 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 always-drop {
uses drop;
description
"Always Drop configuration container";
}
case tail-drop {
container tail-drop-cfg {
uses queuelimit;
description
"Tail Drop configuration container";
}
}
description
"Choice of Drop Algorithm";
}
description
"Algorithmic Drop configuration container";
}
description
"Queue configuration container";
}
description
"Queue configuration grouping";
}
grouping schedular {
container schedular-cfg {
uses min-rate;
uses max-rate;
description
"Schedular configuration container";
}
description
"Schedular configuration grouping";
}
grouping generic-metering {
container generic-meter-cfg {
list meter-list {
key "meter-id";
uses generic-meter;
description
"Generic Meter configuration";
}
description
"Generic Meter list configuration container";
}
description
"Generic Meter configuration container grouping";
}
grouping metering {
choice meter-type {
case srtcm {
uses one-rate-tri-color-meter;
description
"one rate tri-color meter";
}
case trtcm {
uses two-rate-tri-color-meter;
description
"two rate tri-color meter";
}
case generic-meter {
uses generic-metering;
description
"generic meter";
}
description
" meter action based on choice of meter action type";
}
description
"meter attributes";
}
container meter-template {
if-feature meter-template-support;
description
"list of meter-entry templates";
list meter-entry {
key "meter-name";
description
"meter entry template";
leaf meter-name {
type string;
description
"basic meter identifier";
}
uses metering;
}
}
}