678 lines
17 KiB
YANG
678 lines
17 KiB
YANG
submodule openconfig-qos-interfaces {
|
|
|
|
belongs-to openconfig-qos {
|
|
prefix "oc-qos";
|
|
}
|
|
|
|
// import openconfig-qos-elements { prefix oc-qos; }
|
|
import openconfig-extensions { prefix oc-ext; }
|
|
import openconfig-interfaces { prefix oc-if; }
|
|
import openconfig-yang-types { prefix oc-yang; }
|
|
|
|
include openconfig-qos-elements;
|
|
|
|
// meta
|
|
organization
|
|
"OpenConfig working group";
|
|
|
|
contact
|
|
"OpenConfig working group
|
|
netopenconfig@googlegroups.com";
|
|
|
|
description
|
|
"This submodule defines data related to quality-of-service
|
|
configuration and operational state associated with
|
|
interfaces.";
|
|
|
|
oc-ext:openconfig-version "0.2.3";
|
|
|
|
revision "2019-11-28" {
|
|
description
|
|
"Fix xpaths in when statements";
|
|
reference "0.2.3";
|
|
}
|
|
|
|
revision "2019-08-20" {
|
|
description
|
|
"Fix typo in classifiers container name";
|
|
reference "0.2.2";
|
|
}
|
|
|
|
revision "2018-11-21" {
|
|
description
|
|
"Add OpenConfig module metadata extensions.";
|
|
reference "0.2.1";
|
|
}
|
|
|
|
revision "2016-12-16" {
|
|
description
|
|
"Fix incorrect interface-ref placement";
|
|
reference "0.2.0";
|
|
}
|
|
|
|
revision "2016-06-03" {
|
|
description
|
|
"Initial revision";
|
|
reference "0.1.0";
|
|
}
|
|
|
|
grouping qos-interface-classifier-match-config {
|
|
description
|
|
"Configuration data for match terms in the classifier
|
|
associated with an interface";
|
|
|
|
leaf id {
|
|
type leafref {
|
|
// Current location:
|
|
// /qos/interfaces/interface/input/classifiers/classifier/
|
|
// terms/term/config/id
|
|
path "../../../../../../../../../classifiers/" +
|
|
"classifier[name=current()/../../../../config/name]/" +
|
|
"terms/term/config/id";
|
|
|
|
}
|
|
description
|
|
"Reference to match terms in the classifier";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-classifier-match-state {
|
|
description
|
|
"Operational state data for match terms in the classifier
|
|
associated with an interface";
|
|
|
|
leaf matched-packets {
|
|
type oc-yang:counter64;
|
|
description
|
|
"Count of the number of packets matching this classifier
|
|
match term on the interface.";
|
|
}
|
|
|
|
leaf matched-octets {
|
|
type oc-yang:counter64;
|
|
description
|
|
"Count of the number of octets (bytes) matching this
|
|
classifier match term on the interface.";
|
|
}
|
|
|
|
}
|
|
|
|
grouping qos-interface-classifier-match-top {
|
|
description
|
|
"Top-level grouping for match terms in the classifier
|
|
associated with an interface";
|
|
|
|
container terms {
|
|
description
|
|
"Enclosing container for the list of match terms in the
|
|
classifier";
|
|
|
|
list term {
|
|
key "id";
|
|
description
|
|
"List of match terms in the classifier associated with the
|
|
interface";
|
|
|
|
leaf id {
|
|
type leafref {
|
|
path "../config/id";
|
|
}
|
|
description
|
|
"Reference to match term id list key";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration data for match terms in the classifier
|
|
associated with an interface";
|
|
|
|
uses qos-interface-classifier-match-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state data for match terms in the classifier
|
|
associated with an interface";
|
|
|
|
uses qos-interface-classifier-match-config;
|
|
uses qos-interface-classifier-match-state;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-classifier-top {
|
|
description
|
|
"Top-level grouping for a QoS classifier associated with an
|
|
interface";
|
|
|
|
container classifiers {
|
|
description
|
|
"Classifiers to be applied to the interface.";
|
|
|
|
list classifier {
|
|
key "type";
|
|
|
|
description
|
|
"A list of classifiers that should be applied to the interface";
|
|
|
|
leaf type {
|
|
type leafref {
|
|
path "../config/type";
|
|
}
|
|
description
|
|
"Reference to the classifier name.";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters for the list of classifiers.";
|
|
uses qos-interface-classifiers-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters for the list of classifiers.";
|
|
uses qos-interface-classifiers-config;
|
|
}
|
|
|
|
uses qos-interface-classifier-match-top;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-classifiers-config {
|
|
description
|
|
"Configuration parameters for the list of classifiers";
|
|
|
|
leaf name {
|
|
type leafref {
|
|
// current loc: /qos/interfaces/interface/input/classifiers/
|
|
// classifier/config/name
|
|
path "../../../../../../../classifiers/classifier/config/name";
|
|
}
|
|
description
|
|
"Reference to the classifier to be applied to ingress traffic on
|
|
the interface";
|
|
}
|
|
|
|
leaf type {
|
|
type enumeration {
|
|
enum IPV4 {
|
|
description
|
|
"Classifier matches IPv4 packets.";
|
|
value 4;
|
|
}
|
|
enum IPV6 {
|
|
description
|
|
"Classifier matches IPv6 packets.";
|
|
value 6;
|
|
}
|
|
enum MPLS {
|
|
description
|
|
"Classifier matches MPLS packets.";
|
|
}
|
|
}
|
|
description
|
|
"Type of packets matched by the classifier.";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-queue-config {
|
|
description
|
|
"Configuration data for the queue associated with the
|
|
interface";
|
|
|
|
leaf name {
|
|
// TODO(robjs): Previously we proposed that the queue name here is
|
|
// only a queue that has been configured. However, in some cases we
|
|
// may want to have queues that have not been configured exist.
|
|
//type leafref {
|
|
// path "../../../../../../queues/queue/config/name";
|
|
//}
|
|
type string;
|
|
description
|
|
"Reference to the queue associated with this interface.
|
|
A queue may be explicitly configured, or implicitly created
|
|
by the system based on default queues that are instantiated
|
|
by a hardware component, or are assumed to be default on
|
|
the system.";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-queue-state {
|
|
description
|
|
"Operational state data for the queue associated with the
|
|
interface";
|
|
|
|
leaf max-queue-len {
|
|
type oc-yang:counter64;
|
|
units bytes;
|
|
description
|
|
"Maximum observed queue length";
|
|
}
|
|
|
|
leaf avg-queue-len {
|
|
type oc-yang:counter64;
|
|
units bytes;
|
|
description
|
|
"Average observed queue length";
|
|
|
|
}
|
|
|
|
leaf transmit-pkts {
|
|
type oc-yang:counter64;
|
|
description
|
|
"Number of packets transmitted by this queue";
|
|
}
|
|
|
|
leaf transmit-octets {
|
|
type oc-yang:counter64;
|
|
description
|
|
"Number of octets trasmitted by this queue";
|
|
}
|
|
|
|
leaf dropped-pkts {
|
|
type oc-yang:counter64;
|
|
description
|
|
"Number of packets dropped by the queue due to overrun";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-queue-top {
|
|
description
|
|
"Top-level grouping for the queue associated with the
|
|
interface";
|
|
|
|
container queues {
|
|
description
|
|
"Surrounding container for a list of queues that are
|
|
instantiated on an interface.";
|
|
|
|
list queue {
|
|
key "name";
|
|
|
|
description
|
|
"Top-level container for the queue associated with this
|
|
interface";
|
|
|
|
leaf name {
|
|
type leafref {
|
|
path "../config/name";
|
|
}
|
|
description
|
|
"Reference to the name of the queue
|
|
instantiated on the interface.";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration data for the queue associated with the
|
|
interface";
|
|
|
|
uses qos-interface-queue-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state data for the queue associated with the
|
|
interface";
|
|
|
|
uses qos-interface-queue-config;
|
|
uses qos-interface-queue-state;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-voqs-top {
|
|
description
|
|
"Structural grouping of virtual-output-queue operational state
|
|
for an interface.";
|
|
|
|
container virtual-output-queues {
|
|
description
|
|
"Surrounding container for the list of egress interfaces
|
|
for which virtual output queues are instantiated on this
|
|
interface.";
|
|
|
|
list voq-interface {
|
|
key "name";
|
|
|
|
description
|
|
"List of egress interfaces for which a virtual output
|
|
queue is instantiated at this interface.";
|
|
|
|
leaf name {
|
|
type leafref {
|
|
path "../config/name";
|
|
}
|
|
description
|
|
"Name used to refer to the egress interface.";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters relating to the interface
|
|
for which the VOQs are instantiated.";
|
|
uses qos-voqs-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters relating to the interface
|
|
for which the VOQs are instantiated.";
|
|
uses qos-voqs-config;
|
|
}
|
|
|
|
uses qos-interface-queue-top;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping qos-voqs-config {
|
|
description
|
|
"Configuration parameters relating to an egress interface for which
|
|
VOQs are established on an interface.";
|
|
|
|
leaf name {
|
|
type string;
|
|
description
|
|
"Name used to refer to the egress interface.";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-scheduler-policy-config {
|
|
description
|
|
"Configuration data for schedulers associated with
|
|
the interface";
|
|
|
|
leaf name {
|
|
type leafref {
|
|
// current loc:
|
|
// /qos/interfaces/interface/input/schedulers/scheduler/config/name
|
|
path "../../../../../../scheduler-policies/scheduler-policy/" +
|
|
"config/name";
|
|
}
|
|
description
|
|
"The scheduler policy to be applied to traffic on this interface.";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-scheduler-state {
|
|
description
|
|
"Operational state data for a scheduler within
|
|
a scheduler group applied to an interface.";
|
|
|
|
leaf sequence {
|
|
type leafref {
|
|
// current loc: /qos/interfaces/interface/input/scheduler-policy/
|
|
// schedulers/scheduler/state/sequence
|
|
path "../../../../../../../../scheduler-policies/" +
|
|
"scheduler-policy[name=current()/../../../../config/name]" +
|
|
"/schedulers/scheduler/config/sequence";
|
|
}
|
|
description
|
|
"Reference to the sequence ID of the scheduler within
|
|
the current scheduler policy.";
|
|
}
|
|
|
|
uses qos-scheduler-common-state;
|
|
}
|
|
|
|
grouping qos-scheduler-common-state {
|
|
description
|
|
"Common definitions of counters used in schedulers.";
|
|
|
|
leaf conforming-pkts {
|
|
type oc-yang:counter64;
|
|
description
|
|
"The number of packets that were considered conforming by
|
|
the scheduler.";
|
|
}
|
|
|
|
leaf conforming-octets {
|
|
type oc-yang:counter64;
|
|
description
|
|
"The number of octets in packets that were considered
|
|
conforming by the scheduler.";
|
|
}
|
|
|
|
leaf exceeding-pkts {
|
|
type oc-yang:counter64;
|
|
description
|
|
"The number of packets that were considered exceeding by
|
|
the scheduler.";
|
|
}
|
|
|
|
leaf exceeding-octets {
|
|
type oc-yang:counter64;
|
|
description
|
|
"The number of octets in packets that were considered
|
|
exceeding by the scheduler.";
|
|
}
|
|
|
|
leaf violating-pkts {
|
|
type oc-yang:counter64;
|
|
description
|
|
"The number of packets that were considered violating by
|
|
the policer.";
|
|
}
|
|
|
|
leaf violating-octets {
|
|
type oc-yang:counter64;
|
|
description
|
|
"The number of octets in packets that were considered
|
|
violating by the policer.";
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-scheduler-top {
|
|
description
|
|
"Top-level grouping ";
|
|
|
|
container scheduler-policy {
|
|
description
|
|
"Scheduler policy associated with the interface.";
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters relating to a scheduler policy on
|
|
an interface.";
|
|
uses qos-interface-scheduler-policy-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters relating to a scheduler policy
|
|
on an interface.";
|
|
uses qos-interface-scheduler-policy-config;
|
|
}
|
|
|
|
container schedulers {
|
|
config false;
|
|
description
|
|
"Schedulers within the applied scheduler-policy.";
|
|
|
|
list scheduler {
|
|
key "sequence";
|
|
description
|
|
"List of the schedulers that are part of the scheduler-policy
|
|
specified.";
|
|
|
|
leaf sequence {
|
|
type leafref {
|
|
path "../state/sequence";
|
|
}
|
|
description
|
|
"Reference to the sequence ID for the scheduler.";
|
|
}
|
|
|
|
container state {
|
|
description
|
|
"Operational state parameters relating to the scheduler
|
|
policy.";
|
|
|
|
uses qos-interface-scheduler-state;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping qos-interfaces-config {
|
|
description
|
|
"Configuration data for interfaces referenced in the QoS
|
|
model";
|
|
|
|
leaf interface-id {
|
|
type string;
|
|
description
|
|
"Identifier for the interface.";
|
|
}
|
|
}
|
|
|
|
grouping qos-interfaces-state {
|
|
description
|
|
"Operational state data for interfaces referenced in the QoS
|
|
model";
|
|
|
|
// definitions per-interface counters for QoS
|
|
}
|
|
|
|
grouping qos-interface-input-config {
|
|
description
|
|
"Configuration data for QoS on ingress interface";
|
|
}
|
|
|
|
grouping qos-interface-input-state {
|
|
description
|
|
"Operational state data for QoS on ingress interface";
|
|
}
|
|
|
|
grouping qos-interface-input-top {
|
|
description
|
|
"Top-level grouping for QoS on ingress interface";
|
|
|
|
container input {
|
|
description
|
|
"Top-level container for QoS data for the ingress
|
|
interface";
|
|
|
|
container config {
|
|
description
|
|
"Configuration data for QoS on ingress interface";
|
|
|
|
uses qos-interface-input-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state data for QoS on ingress interface";
|
|
|
|
uses qos-interface-input-config;
|
|
uses qos-interface-input-state;
|
|
}
|
|
|
|
uses qos-interface-classifier-top;
|
|
uses qos-interface-queue-top;
|
|
uses qos-interface-scheduler-top;
|
|
uses qos-interface-voqs-top;
|
|
}
|
|
}
|
|
|
|
grouping qos-interface-output-config {
|
|
description
|
|
"Configuration data for QoS on the egress interface";
|
|
}
|
|
|
|
grouping qos-interface-output-state {
|
|
description
|
|
"Operational state data for QoS on the egress interface";
|
|
}
|
|
|
|
grouping qos-interface-output-top {
|
|
description
|
|
"Top-level grouping for QoS on the egress interface";
|
|
|
|
container output {
|
|
description
|
|
"Top-level container for QoS data related to the egress
|
|
interface";
|
|
|
|
container config {
|
|
description
|
|
"Configuration data for QoS on the egress interface";
|
|
|
|
uses qos-interface-output-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state data for QoS on the egress interface";
|
|
|
|
uses qos-interface-output-config;
|
|
uses qos-interface-output-state;
|
|
}
|
|
|
|
uses oc-if:interface-ref;
|
|
uses qos-interface-classifier-top;
|
|
uses qos-interface-queue-top;
|
|
uses qos-interface-scheduler-top;
|
|
}
|
|
}
|
|
|
|
grouping qos-interfaces-top {
|
|
description
|
|
"Top-level grouping for interfaces referenced in the QoS
|
|
model";
|
|
|
|
container interfaces {
|
|
description
|
|
"Enclosing container for the list of interface references";
|
|
|
|
list interface {
|
|
key "interface-id";
|
|
description
|
|
"List of interfaces referenced by QoS entities.";
|
|
|
|
leaf interface-id {
|
|
type leafref {
|
|
path "../config/interface-id";
|
|
}
|
|
description
|
|
"Reference to the interface-id list key";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration data ";
|
|
|
|
uses qos-interfaces-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state data ";
|
|
|
|
uses qos-interfaces-config;
|
|
uses qos-interfaces-state;
|
|
}
|
|
|
|
uses oc-if:interface-ref;
|
|
uses qos-interface-input-top;
|
|
uses qos-interface-output-top;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
} |