argus-netconf-exporter/exp/yangcli/h3c-yang/openconfig-qos-interfaces@2019-11-28.yang
2025-11-28 14:35:21 +08:00

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;
}
}
}
}